Annotation of 43BSD/contrib/mh/mts/sendmail/smail.h, revision 1.1.1.1

1.1       root        1: /* smail.h - definitions for the MH-SendMail/SMTP Interface */
                      2: 
                      3: 
                      4: #define        S_MAIL  0
                      5: #define        S_SEND  1
                      6: #define        S_SOML  2
                      7: #define        S_SAML  3
                      8: 
                      9: 
                     10: struct smtp {
                     11:     int     code;
                     12:     int     length;
                     13:     char    text[BUFSIZ];
                     14: };
                     15: 
                     16: 
                     17: int    client ();
                     18: int    sm_init (), sm_winit (), sm_wadr (), sm_waend (), sm_wtxt (),
                     19:        sm_wtend (), sm_end ();
                     20: char   *rp_string ();
                     21: 
                     22: /*  */
                     23: 
                     24: /* The remainder of this file is derived from "mmdf.h" */
                     25: 
                     26: /*
                     27:  *     Copyright (C) 1979,1980,1981,1982,1983  University of Delaware
                     28:  *     Used by permission, May, 1984.
                     29:  */
                     30: 
                     31: /*
                     32:  *     MULTI-CHANNEL MEMO DISTRIBUTION FACILITY  (MMDF)
                     33:  *     
                     34:  *
                     35:  *     Copyright (C) 1979,1980,1981,1982,1983  University of Delaware
                     36:  *     
                     37:  *     Department of Electrical Engineering
                     38:  *     University of Delaware
                     39:  *     Newark, Delaware  19711
                     40:  *
                     41:  *     Phone:  (302) 738-1163
                     42:  *     
                     43:  *     
                     44:  *     This program module was developed as part of the University
                     45:  *     of Delaware's Multi-Channel Memo Distribution Facility (MMDF).
                     46:  *     
                     47:  *     Acquisition, use, and distribution of this module and its listings
                     48:  *     are subject restricted to the terms of a license agreement.
                     49:  *     Documents describing systems using this module must cite its source.
                     50:  *
                     51:  *     The above statements must be retained with all copies of this
                     52:  *     program and may not be removed without the consent of the
                     53:  *     University of Delaware.
                     54:  *     
                     55:  */
                     56: 
                     57: /*                      Reply Codes for MMDF
                     58:  *
                     59:  *  Based on: "Revised FTP Reply Codes", by Jon Postel & Nancy Neigus Arpanet
                     60:  *      RFC 640 / NIC 30843, in the "Arpanet Protocol Handbook", E.  Feinler
                     61:  *      and J. Postel (eds.), NIC 7104, Network Information Center, SRI
                     62:  *      International:  Menlo Park, CA.  (NTIS AD-A0038901)
                     63:  *
                     64:  *  Actual values are different, but scheme is same.  Codes must fit into
                     65:  *  8-bits (to pass on exit() calls); fields are packed 2-3-3 and interpreted
                     66:  *  as octal numbers.
                     67:  *
                     68:  *  Basic format:
                     69:  *
                     70:  *      0yz: positive completion; entire action done
                     71:  *      1yz: positive intermediate; only part done
                     72:  *      2yz: Transient negative completion; may work later
                     73:  *      3yz: Permanent negative completion; you lose forever
                     74:  *
                     75:  *      x0z: syntax
                     76:  *      x1z: general; doesn't fit any other category
                     77:  *      x2z: connections; truly transfer-related
                     78:  *      x3z: user/authentication/account
                     79:  *      x4x: mail
                     80:  *      x5z: file system
                     81:  *
                     82:  *      3-bit z field is unique to the reply.  In the following,
                     83:  *      the RP_xVAL defines are available for masking to obtain a field.
                     84:  */
                     85: 
                     86: /*  */
                     87: 
                     88: /***************  FIELD DEFINITIONS & BASIC VALUES  ******************* */
                     89: 
                     90: /*          Field 1:  Basic degree of success (2-bits)                  */
                     91: 
                     92: #define RP_BTYP '\200'            /* good vs. bad; on => bad           */
                     93: 
                     94: #define RP_BVAL '\300'            /* basic degree of success           */
                     95: 
                     96: #define RP_BOK  '\000'            /* went fine; all done                */
                     97: #define RP_BPOK '\100'            /* only the first part got done       */
                     98: #define RP_BTNO '\200'            /* temporary failure; try later       */
                     99: #define RP_BNO  '\300'            /* not now, nor never; you lose       */
                    100: 
                    101: /*          Field 2:  Basic domain of discourse (3-bits)                */
                    102: 
                    103: #define RP_CVAL '\070'            /* basic category (domain) of reply   */
                    104: 
                    105: #define RP_CSYN '\000'            /* purely a matter of form            */
                    106: #define RP_CGEN '\010'            /* couldn't find anywhere else for it */
                    107: #define RP_CCON '\020'            /* data-transfer-related issue        */
                    108: #define RP_CUSR '\030'            /* pertaining to the user             */
                    109: #define RP_CMAI '\040'            /* specific to mail semantics         */
                    110: #define RP_CFIL '\050'            /* file system                        */
                    111: #define RP_CLIO '\060'            /* local i/o system                   */
                    112: 
                    113: /*          Field 3:  Specific value for this reply (3-bits)            */
                    114: 
                    115: #define RP_SVAL '\007'            /* specific value of reply            */
                    116: 
                    117: /*  */
                    118: 
                    119: /*********************  SPECIFIC SUCCESS VALUES  ********************** */
                    120: 
                    121: 
                    122: /*                        Complete Success                              */
                    123: 
                    124: #define RP_DONE (RP_BOK | RP_CGEN | '\000')
                    125:                                  /* done (e.g., w/transaction)         */
                    126: #define RP_OK   (RP_BOK | RP_CGEN | '\001')
                    127:                                  /* general-purpose OK                 */
                    128: 
                    129: #define RP_MOK  (RP_BOK | RP_CMAI | '\000')
                    130:                                  /* message is accepted (w/text)       */
                    131: 
                    132: 
                    133: /*                        Partial Success                               */
                    134: 
                    135: #define RP_MAST (RP_BPOK| RP_CGEN | '\000')
                    136:                                  /* you are the requestor              */
                    137: #define RP_SLAV (RP_BPOK| RP_CGEN | '\001')
                    138:                                  /* you are the requestee              */
                    139: #define RP_AOK  (RP_BPOK| RP_CMAI | '\000')
                    140:                                  /* message address is accepted        */
                    141: 
                    142: /*  */
                    143: 
                    144: /* ********************  SPECIFIC FALURE VALUES  ********************** */
                    145: 
                    146: 
                    147: /*                        Partial Failure                               */
                    148: 
                    149: #define RP_AGN  (RP_BTNO | RP_CGEN | '\000')
                    150:                                  /* not now; maybe later               */
                    151: #define RP_TIME (RP_BTNO | RP_CGEN | '\001')
                    152:                                  /* timeout                            */
                    153: #define RP_NOOP (RP_BTNO | RP_CGEN | '\002')
                    154:                                  /* no-op; nothing done, this time     */
                    155: #define RP_EOF  (RP_BTNO | RP_CGEN | '\003')
                    156:                                  /* encountered an end of file         */
                    157: 
                    158: #define RP_NET  (RP_BTNO | RP_CCON | '\000')
                    159:                                  /* channel went bad                   */
                    160: #define RP_BHST (RP_BTNO | RP_CCON | '\001')
                    161:                                  /* foreign host screwed up            */
                    162: #define RP_DHST (RP_BTNO | RP_CCON | '\002')
                    163:                                  /* host went away                     */
                    164: #define RP_NIO  (RP_BTNO | RP_CCON | '\004')
                    165:                                  /* general net i/o problem            */
                    166: 
                    167: #define RP_FIO  (RP_BTNO | RP_CFIL | '\000')
                    168:                                  /* error reading/writing file         */
                    169: #define RP_FCRT (RP_BTNO | RP_CFIL | '\001')
                    170:                                  /* unable to create file              */
                    171: #define RP_FOPN (RP_BTNO | RP_CFIL | '\002')
                    172:                                  /* unable to open file                */
                    173: #define RP_LIO  (RP_BTNO | RP_CLIO | '\000')
                    174:                                  /* general local i/o problem          */
                    175: #define RP_LOCK (RP_BTNO | RP_CLIO | '\001')
                    176:                                  /* resource currently locked          */
                    177: 
                    178: 
                    179: /*                       Complete Failure                               */
                    180: 
                    181: #define RP_MECH (RP_BNO | RP_CGEN | '\000')
                    182:                                  /* bad mechanism/path; try alternate? */
                    183: #define RP_NO   (RP_BNO | RP_CGEN | '\001')
                    184:                                  /* general-purpose NO                 */
                    185: 
                    186: #define RP_PROT (RP_BNO | RP_CCON | '\000')
                    187:                                  /* general prototocol error           */
                    188: 
                    189: #define RP_RPLY (RP_BNO | RP_CCON | '\001')
                    190:                                  /* bad reply code (PERMANENT ERROR)   */
                    191: 
                    192: #define RP_NDEL (RP_BNO | RP_CMAI | '\000')
                    193:                                  /* couldn't deliver                   */
                    194: 
                    195: #define RP_HUH  (RP_BNO | RP_CSYN | '\000')
                    196:                                  /* couldn't parse the request         */
                    197: #define RP_NCMD (RP_BNO | RP_CSYN | '\001')
                    198:                                  /* no such command defined            */
                    199: #define RP_PARM (RP_BNO | RP_CSYN | '\002')
                    200:                                  /* bad parameter                      */
                    201: #define RP_UCMD (RP_BNO | RP_CSYN | '\003')
                    202:                                  /* command not implemented            */
                    203: #define RP_USER (RP_BNO | RP_CUSR | '\000')
                    204:                                  /* unknown user                       */
                    205: 
                    206: /*  */
                    207: 
                    208: /*              PSEUDO-FUNCTIONS TO ACCESS REPLY INFO                   */
                    209: 
                    210: #define rp_gval(val)    ((char) (val))
                    211:                                  /* get the entire return value        */
                    212: 
                    213: 
                    214: /*  The next three give the field's bits, within the whole value        */
                    215: 
                    216: #define rp_gbval(val)   (rp_gval (val) & RP_BVAL)
                    217:                                  /* get the basic part of return value */
                    218: #define rp_gcval(val)   (rp_gval (val) & RP_CVAL)
                    219:                                  /* get the domain part of value       */
                    220: #define rp_gsval(val)   (rp_gval (val) & RP_SVAL)
                    221:                                  /* get the specific part of value     */
                    222: 
                    223: 
                    224: /*  The next three give the numeric value withing the field             */
                    225: 
                    226: #define rp_gbbit(val)   ((rp_gval (val) >> 6) & 03)
                    227:                                  /* get the basic part right-shifted   */
                    228: #define rp_gcbit(val)   ((rp_gval (val) >> 3 ) & 07)
                    229:                                  /* get the domain part right-shifted  */
                    230: #define rp_gsbit(val)   (rp_gval (val) & 07)
                    231:                                  /* get the specific part right-shifted */
                    232: 
                    233: 
                    234: /* MACHINE DEPENDENCY:  The following treat the value as strictly numeric.
                    235:  *                      It relies on the negative values being numerically
                    236:  *                      negative.
                    237:  */
                    238: 
                    239: #define rp_isgood(val)  (rp_gval (val) >= 0)
                    240:                                  /* is return value positive?          */
                    241: #define rp_isbad(val)   (rp_gval (val) < 0)
                    242:                                  /* is return value negative?          */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.