Annotation of coherent/a/tmp/smail/refs, revision 1.1.1.1

1.1       root        1: alias(pargc, argv)
                      2:        int *pargc;
                      3:        char **argv;
                      4: v_search(user)
                      5:        char *user;
                      6: h_search(head, str)
                      7:        node *head;
                      8:        char *str;
                      9: load_alias(head, filename)
                     10:        node *head;
                     11:        char *filename;
                     12: ** add each word in a string (*p) of recipients
                     13:        ** to the (horizontal) linked list associated with 'h'
                     14:        */
                     15:        
                     16:        recipients(h, p)
                     17:        node *h;
                     18:        char *p;
                     19: ** strip out the stuff in ()'s
                     20:        **
                     21:        */
                     22:        
                     23:        void
                     24:        strip_comments(p)
                     25:        char *p;
                     26: add_vert(head, str)
                     27:        node *head;
                     28:        char *str;
                     29: add_horz(head, str)
                     30:        node *head;
                     31:        char *str;
                     32: pop(head)
                     33:        node *head;
                     34: ** at a time (e.g., 4.1 /bin/mail).  To disable the batching, set MAXCLEN
                     35:        ** a small value (like 0).
                     36:        */
                     37:        
                     38:        #define MAXCLEN                 512     /* longest command allowed (approx.)
                     39:                                        /* this is to keep other's buffers
                     40:                                        ** from overflowing
                     41:                                        */
                     42:        
                     43:        /* GATEWAY_NAME should only be used on gateway machines into the .ATT.COM
                     44:        ** domain. Since mail will appear to come from att.ATT.COM, there is no
                     45:        ** way of knowing WHICH gateway it came from. deliver.c was changed
                     46:        ** such that the GATEWAY_NAME was placed in the headers in a non-dangerous
                     47:        ** place so that it could be determined which gateway was used.
                     48:        ** If smail is not being run on a gateway, don't use this definition,
                     49:        **
                     50:        **  T. G. Thompson               Thu Apr  7 13:47:36 EDT 1988
                     51:        */
                     52:        /* #define GATEWAY_NAME "att-ih"        /* gateway name other than "att" */
                     53:        
                     54:        
                     55:        
                     56:        /*
                     57:        ** PLEASE DON'T TOUCH THE REST
                     58:        */
                     59:        
                     60:        #define SMLBUF  512     /* small buffer (handle one item) */
                     61:        #define BIGBUF  4096    /* handle lots of items */
                     62:         
                     63:        #define MAXPATH 32      /* number of elements in ! path */
                     64:        #define MAXDOMS 16      /* number of subdomains in . domain */
                     65:        #define MAXARGS 500     /* number of arguments */
                     66:        #define WS      " \t"   /* white space for paths file */
                     67:        #ifndef NULL
                     68:        #define NULL    0
                     69:        #endif
                     70:        
                     71:        #define DEBUG           if (debug==YES) (void) printf
                     72:        #define ADVISE          if (debug!=NO) (void) printf
                     73:        #define error(stat,msg,a)       { (void) fprintf(stderr, msg, a); exit(stat); }
                     74:        #define lower(c)                ( isupper(c) ? c-'A'+'a' : c )
                     75:        
                     76:        
                     77:        enum eform {    /* format of addresses */
                     78:        ERROR,          /* bad or invalidated format */
                     79:        LOCAL,          /* just a local name */
                     80:        DOMAIN,         /* user@domain or domain!user */
                     81:        UUCP,           /* host!address */
                     82:        ROUTE,          /* intermediate form - to be routed */
                     83:        SENT            /* sent to a mailer on a previous pass */
                     84:        };
                     85:        
                     86:        enum ehandle {  /* what addresses can we handle? (don't kick to LMAIL) */
                     87:        ALL,            /* UUCP and DOMAIN addresses */
                     88:        JUSTUUCP,       /* UUCP only; set by -l  */
                     89:        NONE            /* all mail is LOCAL; set by -L */
                     90:        };
                     91:        
                     92:        enum erouting { /* when to route A!B!C!D */
                     93:        JUSTDOMAIN,     /* route A if A is a domain */
                     94:        ALWAYS,         /* route A always; set by -r */
                     95:        REROUTE         /* route C, B, or A (whichever works); set by -R */
                     96:        };
                     97:        
                     98:        enum edebug {   /* debug modes */
                     99:        NO,             /* normal deliver */
                    100:        VERBOSE,        /* talk alot */
                    101:        YES             /* talk and don't deliver */
                    102:        };
                    103:        
                    104:        #ifdef BSD
                    105:        
                    106:        #include <strings.h>
                    107:        #include <sysexits.h>
                    108:        
                    109:        #else
                    110:        
                    111:        #include <string.h>
                    112:        #include "sysexits.h"
                    113:        #define index   strchr
                    114:        #define rindex  strrchr
                    115:        
                    116:        #endif
                    117:        extern void exit(), perror();
                    118:        extern unsigned sleep();
                    119: **  deliver():  hand the letter to the proper mail programs.
                    120:        **
                    121:        **  Issues one command for each different host of <hostv>,
                    122:        **  constructing the proper command for LOCAL or UUCP mail.
                    123:        **  Note that LOCAL mail has blank host names.
                    124:        **
                    125:        **  The <userv> names for each host are arguments to the command.
                    126:        ** 
                    127:        **  Prepends a "From" line to the letter just before going 
                    128:        **  out, with a "remote from <hostname>" if it is a UUCP letter.
                    129:        **
                    130:        */
                    131:        
                    132:        deliver(argc, hostv, userv, formv, costv)
                    133:        int argc;                               /* number of addresses          */
                    134:        char *hostv[];                          /* host names                   */
                    135:        char *userv[];                          /* user names                   */
                    136:        enum eform formv[];                     /* form for each address        */
                    137:        int costv[];                            /* cost vector                  */
                    138: return_mail(from, fcommand, form)
                    139:        char *from, *fcommand;
                    140:        enum eform form;
                    141: int gethostname(name, bufsize)
                    142:        unsigned char *name;
                    143:        int bufsize;
                    144: int getdomain(name, bufsize)
                    145:        unsigned char *name;
                    146:        int bufsize;
                    147: getopt(argc, argv, opts)
                    148:        int     argc;
                    149:        char    **argv, *opts;
                    150: ** getpath(): look up key in ascii sorted path database.
                    151:        **
                    152:        */
                    153:        
                    154:        getpath( key, path , cost)
                    155:        char *key;              /* what we are looking for */
                    156:        char *path;             /* where the path results go */
                    157:        int *cost;              /* where the cost results go */
                    158: ** parse(): parse <address> into <domain, user, form>.
                    159:        **
                    160:        **      input           form
                    161:        **      -----           ----
                    162:        **      user            LOCAL
                    163:        **      domain!user     DOMAIN
                    164:        **      user@domain     DOMAIN
                    165:        **      @domain,address LOCAL   (just for sendmail)
                    166:        **      host!address    UUCP
                    167:        **
                    168:        */
                    169:        
                    170:        enum eform
                    171:        parse(address, domain, user)
                    172:        char *address;          /* input address        */
                    173:        char *domain;           /* output domain        */
                    174:        char *user;             /* output user          */
                    175: build(domain, user, form, result)
                    176:        char *domai

unix.superglobalmegacorp.com

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