Annotation of 40BSD/cmd/delivermail/dlvrmail.h, revision 1.1.1.1

1.1       root        1: /*
                      2: **  DLVRMAIL.H -- Global definitions for delivermail.
                      3: **
                      4: **     Most of these are actually allocated in globals.c
                      5: **
                      6: **     @(#)dlvrmail.h  1.6     10/18/80
                      7: */
                      8: 
                      9: 
                     10: 
                     11: 
                     12: # include "useful.h"
                     13: 
                     14: /*
                     15: **  Manifest constants.
                     16: */
                     17: 
                     18: # define MAXLINE       256     /* maximum line length */
                     19: # define MAXNAME       128     /* maximum length of a name */
                     20: # define MAXFIELD      2500    /* maximum total length of a header field */
                     21: # define MAXPV         15      /* maximum # of parms to mailers */
                     22: # define MAXHOP                30      /* maximum value of HopCount */
                     23: # define ALIASFILE     "/usr/lib/aliases"      /* location of alias file */
                     24: 
                     25: 
                     26: 
                     27: 
                     28: 
                     29: /*
                     30: **  Mailer definition structure.
                     31: **     Every mailer known to the system is declared in this
                     32: **     structure.  It defines the pathname of the mailer, some
                     33: **     flags associated with it, and the argument vector to
                     34: **     pass to it.  The flags are defined in conf.c
                     35: **
                     36: **     The argument vector is expanded before actual use.  Every-
                     37: **     thing is passed through except for things starting with "$".
                     38: **     "$x" defines some interpolation, as described in conf.c
                     39: **     "$x" where x is unknown expands to "x", so use "$$" to get "$".
                     40: */
                     41: 
                     42: struct mailer
                     43: {
                     44:        char    *m_mailer;      /* pathname of the mailer to use */
                     45:        short   m_flags;        /* status flags, see below */
                     46:        short   m_badstat;      /* the status code to use on unknown error */
                     47:        char    **m_local;      /* list of local names for this host */
                     48:        char    *m_argv[MAXPV]; /* template argument vector */
                     49: };
                     50: 
                     51: # define M_FOPT                0001    /* mailer takes picky -f flag */
                     52: # define M_ROPT                0002    /* mailer takes picky -r flag */
                     53: # define M_QUIET       0004    /* don't print error on bad status */
                     54: # define M_RESTR       0010    /* must be daemon to execute */
                     55: # define M_HDR         0020    /* insert From line */
                     56: # define M_NOHOST      0040    /* ignore host in comparisons */
                     57: # define M_STRIPQ      0100    /* strip quote characters from user/host */
                     58: 
                     59: extern struct mailer Mailer[];
                     60: 
                     61: 
                     62: /*
                     63: **  Address structure.
                     64: **     Addresses are stored internally in this structure.
                     65: */
                     66: 
                     67: struct address
                     68: {
                     69:        char            *q_paddr;       /* the printname for the address */
                     70:        char            *q_user;        /* user name */
                     71:        char            *q_host;        /* host name */
                     72:        struct mailer   *q_mailer;      /* mailer to use */
                     73:        struct address  *q_next;        /* chain */
                     74:        struct address  *q_prev;        /* back pointer */
                     75: };
                     76: 
                     77: typedef struct address addrq;
                     78: 
                     79: /* some other primitives */
                     80: # define nxtinq(q)     ((q)->q_next)
                     81: # define clearq(q)     (q)->q_next = (q)->q_prev = NULL
                     82: 
                     83: extern addrq SendQ;            /* queue of people to send to */
                     84: extern addrq AliasQ;           /* queue of people that are aliases */
                     85: 
                     86: 
                     87: /*
                     88: **  Parse structure.
                     89: **     This table drives the parser which determines the network
                     90: **     to send the mail to.
                     91: */
                     92: 
                     93: struct parsetab
                     94: {
                     95:        char    p_char;         /* trigger character */
                     96:        char    p_mailer;       /* the index of the mailer to call */
                     97:        short   p_flags;        /* see below */
                     98:        char    *p_arg;         /* extra info needed for some flags */
                     99: };
                    100: 
                    101: # define P_MAP         0001    /* map p_char -> p_arg[0] */
                    102: # define P_HLAST       0002    /* host is last, & right associative */
                    103: # define P_ONE         0004    /* can only be one p_char in addr */
                    104: # define P_MOVE                0010    /* send untouched to host p_arg */
                    105: # define P_USR_UPPER   0020    /* don't map UPPER->lower in user names */
                    106: # define P_HST_UPPER   0040    /* don't map UPPER->lower in host names */
                    107: 
                    108: 
                    109: 
                    110: 
                    111: /*
                    112: **  Global variables.
                    113: */
                    114: 
                    115: extern bool    ArpaFmt;        /* if set, message is in arpanet fmt */
                    116: extern bool    FromFlag;       /* if set, "From" person is explicit */
                    117: extern bool    Debug;          /* if set, debugging info */
                    118: extern bool    MailBack;       /* mail back response on error */
                    119: extern bool    BerkNet;        /* called from BerkNet */
                    120: extern bool    WriteBack;      /* write back response on error */
                    121: extern bool    NoAlias;        /* if set, don't do any aliasing */
                    122: extern bool    ForceMail;      /* if set, mail even if already got a copy */
                    123: extern bool    MeToo;          /* send to the sender also */
                    124: extern bool    UseMsgId;       /* put msg-id's in all msgs [conf.c] */
                    125: extern bool    IgnrDot;        /* don't let dot end messages */
                    126: extern bool    SaveFrom;       /* save leading "From" lines */
                    127: extern int     Errors;         /* set if errors */
                    128: extern int     ExitStat;       /* exit status code */
                    129: extern char    InFileName[];   /* input file name */
                    130: extern char    Transcript[];   /* the transcript file name */
                    131: extern char    MsgId[];        /* the message id for this message */
                    132: extern addrq   From;           /* the person it is from */
                    133: extern char    *To;            /* the target person */
                    134: extern int     HopCount;       /* hop count */
                    135: 
                    136: 
                    137: # include      <sysexits.h>
                    138: 
                    139: # define flagset(bits, word)   ((bits) & (word))
                    140: # define setstat(s)            { if (ExitStat == EX_OK) ExitStat = s; }

unix.superglobalmegacorp.com

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