Annotation of 43BSD/contrib/mh/mts/sendmail/smail.h, revision 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.