DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T r

⟦a5c1ddcaf⟧ TextFile

    Length: 7246 (0x1c4e)
    Types: TextFile
    Names: »retcode.h«

Derivation

└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
    └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« 
        └─⟦e5a54fb17⟧ 
            └─⟦this⟧ »pp-5.0/h/retcode.h« 

TextFile

/* retcode.h: reply & status codes used throughout pp */

/*
 * @(#) $Header: /cs/research/pp/hubris/pp-beta/h/RCS/retcode.h,v 5.0 90/09/20 16:51:05 pp Exp Locker: pp $
 *
 * $Log:	retcode.h,v $
 * Revision 5.0  90/09/20  16:51:05  pp
 * rcsforce : 5.0 public release
 * 
 *
 */



#ifndef _H_RETCODE
#define _H_RETCODE



/*
------------------------------------------------------------------------------

			Reply Codes for PP

 Based on: "Revised FTP Reply Codes", by Jon Postel & Nancy Neigus Arpanet
     RFC 640 / NIC 30843, in the "Arpanet Protocol Handbook", E.  Feinler
     and J. Postel (eds.), NIC 7104, Network Information Center, SRI
     International:  Menlo Park, CA.  (NTIS AD-A0038901)

 Basic format:

     0yz: positive completion; entire action done
     1yz: positive intermediate; only part done
     2yz: Transient negative completion; may work later
     3yz: Permanent negative completion; you lose forever

     x0z: syntax
     x1z: general; doesn't fit any other category
     x2z: connections; truly transfer-related
     x3z: user/authentication/account
     x4x: mail
     x5z: file system

     3-bit z field is unique to the reply.  In the following,
     the RP_xVAL defines are available for masking to obtain a field.

------------------------------------------------------------------------------
*/


/*\f

++++++++++++++  Field Definitions & Basic Values  +++++++++++++++++++++ */


/*
Field 1:  Basic degree of success (2-bits)
*/

#define RP_BTYP         0200            /* good vs. bad; on => bad */

#define RP_BVAL         0300            /* basic degree of success */

#define RP_BOK          0000            /* went fine; all done */
#define RP_BPOK         0100            /* only the first part got done */
#define RP_BTNO         0200            /* temporary failure; try later */
#define RP_BNO          0300            /* not now, nor never; you lose */


/*
Field 2:  Basic domain of discourse (3-bits)
*/

#define RP_CVAL         0070            /* basic category (domain) of reply */

#define RP_CSYN         0000            /* purely a matter of form */
#define RP_CGEN         0010            /* couldn't find place for it */
#define RP_CCON         0020            /* data-transfer-related issue */
#define RP_CUSR         0030            /* pertaining to the user */
#define RP_CMAI         0040            /* specific to mail semantics */
#define RP_CFIL         0050            /* file system */
#define RP_CLIO         0060            /* local i/o system */

/*
Field 3:  Specific value for this reply (3-bits)
*/

#define RP_SVAL         0007            /* specific value of reply */


/*\f

++++++++++++++++++++  Specific Success Values  ++++++++++++++++++++++++ */


/*
Complete Success
*/

#define RP_DONE         (RP_BOK | RP_CGEN | 0000)
			/* done (e.g., w/transaction) */
#define RP_OK           (RP_BOK | RP_CGEN | 0001)
			/* general-purpose OK */
#define RP_MOK          (RP_BOK | RP_CMAI | 0000)
			/* message is accepted (w/text) */
#define RP_DOK          (RP_BOK | RP_CGEN | 0003)
			/* accepted for the delayed submission channel  */


/*
Partial Success
*/

#define RP_MAST         (RP_BPOK| RP_CGEN | 0000)
			/* you are the requestor */
#define RP_SLAV         (RP_BPOK| RP_CGEN | 0001)
			/* you are the requestee */
#define RP_AOK          (RP_BPOK| RP_CMAI | 0000)
			/* message address is accepted */
#define RP_HOK          (RP_BPOK| RP_CMAI | 0001)
			/* host processing completed */


/*\f

++++++++++++++++++++  Specific Failure Values  ++++++++++++++++++++++++ */


/*
Partial Failure
*/

#define RP_AGN          (RP_BTNO | RP_CGEN | 0000)
			/* not now; maybe later */
#define RP_TIME         (RP_BTNO | RP_CGEN | 0001)
			/* timeout */
#define RP_NOOP         (RP_BTNO | RP_CGEN | 0002)
			/* no-op; nothing done, this time */
#define RP_EOF          (RP_BTNO | RP_CGEN | 0003)
			/* encountered an end of file */
#define RP_NET          (RP_BTNO | RP_CCON | 0000)
			/* channel went bad */
#define RP_BHST         (RP_BTNO | RP_CCON | 0001)
			/* foreign host screwed up */
#define RP_DHST         (RP_BTNO | RP_CCON | 0002)
			/* host went away */
#define RP_NIO          (RP_BTNO | RP_CCON | 0004)
			/* general net i/o problem */
#define RP_NS           (RP_BTNO | RP_CCON | 0005)
			/* temporary nameserver failure */
#define RP_FIO          (RP_BTNO | RP_CFIL | 0000)
			/* error reading/writing file */
#define RP_FCRT         (RP_BTNO | RP_CFIL | 0001)
			/* unable to create file */
#define RP_FOPN         (RP_BTNO | RP_CFIL | 0002)
			/* unable to open file */
#define RP_LIO          (RP_BTNO | RP_CLIO | 0000)
			/* general local i/o problem */
#define RP_LOCK         (RP_BTNO | RP_CLIO | 0001)
			/* resource currently locked */


/*
Complete Failure
*/

#define RP_MECH         (RP_BNO | RP_CGEN | 0000)
			/* bad mechanism/path; try alternate? */
#define RP_NO           (RP_BNO | RP_CGEN | 0001)
			/* general-purpose NO */
#define RP_BAD          (RP_BNO | RP_CGEN | 0002)
			/* another general purpose NO */
#define RP_PROT         (RP_BNO | RP_CCON | 0000)
			/* general prototocol error */
#define RP_RPLY         (RP_BNO | RP_CCON | 0001)
			/* bad reply code (PERMANENT ERROR)   */
#define RP_NAUTH        (RP_BNO | RP_CUSR  | 0001)
			/* bad authorisation */
			/* SEK this will be used for user checks*/
#define RP_NDEL         (RP_BNO | RP_CMAI | 0000)
			/* couldn't deliver */
#define RP_HUH          (RP_BNO | RP_CSYN | 0000)
			/* couldn't parse the request */
#define RP_NCMD         (RP_BNO | RP_CSYN | 0001)
			/* no such command defined */
#define RP_PARM         (RP_BNO | RP_CSYN | 0002)
			/* bad parameter */
#define RP_UCMD         (RP_BNO | RP_CSYN | 0003)
			/* command not implemented */
#define RP_PARSE        (RP_BNO| RP_CSYN | 0004)
			/* address parse error */
#define RP_USER         (RP_BNO | RP_CUSR | 0000)
			/* unknown user */


/*
Structure of a Reply String
*/


struct rp_construct     /* for constant reply conditions */
{
    unsigned char       rp_cval;
    char                rp_cline[50];
};


struct rp_bufstruct     /* for reading reply strings */
{
    unsigned char       rp_val;
    char                rp_line[256];
};


typedef struct rp_bufstruct     RP_Buf;

#define rp_conlen(bufnam) (strlen (bufnam.rp_cline) + sizeof (bufnam.rp_cval))



/*
Pseudo-functions to access reply info
*/

#define rp_gval(val)    ((val) & 0377)
			/* get the value of the return code */
/*
The next three give the field's bits, within the whole value
*/

#define rp_gbval(val)   ((val) & RP_BVAL)
			/* get the basic part of return value */
#define rp_gcval(val)   ((val) & RP_CVAL)
			/* get the domain part of value */
#define rp_gsval(val)   ((val) & RP_SVAL)
			/* get the specific part of value */

/*
The next three give the numeric value withing the field
*/

#define rp_gbbit(val)   (((val) >> 6) & 03)
			/* get the basic part right-shifted */
#define rp_gcbit(val)   (((val) >> 3 ) & 07)
			/* get the domain part right-shifted */
#define rp_gsbit(val)   ((val) & 07)
			/* get the specific part right-shifted */
#define rp_isgood(val)  (! rp_isbad(val))
			/* is return value positive? */
#define rp_isbad(val)   ((val) & 0200)
			/* is return value negative? */

extern char *rp_valstr ();


#endif