URI:
       tsend.h - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tsend.h (3265B)
       ---
            1 #define MAXSAME 16
            2 #define MAXSAMECHAR 1024
            3 
            4 /* status of a destination*/
            5 typedef enum {
            6         d_undefined,        /* address has not been matched*/
            7         d_pipe,                /* repl1|repl2 == delivery command, rep*/
            8         d_cat,                /* repl1 == mail file */
            9         d_translate,        /* repl1 == translation command*/
           10         d_alias,        /* repl1 == translation*/
           11         d_auth,                /* repl1 == command to authorize*/
           12         d_syntax,        /* addr contains illegal characters*/
           13         d_unknown,        /* addr does not match a rewrite rule*/
           14         d_loop,                /* addressing loop*/
           15         d_eloop,        /* external addressing loop*/
           16         d_noforward,        /* forwarding not allowed*/
           17         d_badmbox,        /* mailbox badly formatted*/
           18         d_resource,        /* ran out of something we needed*/
           19         d_pipeto,        /* pipe to from a mailbox*/
           20 } d_status;
           21 
           22 /* a destination*/
           23 typedef struct dest dest;
           24 struct dest {
           25         dest        *next;                /* for chaining*/
           26         dest        *same;                /* dests with same cmd*/
           27         dest        *parent;        /* destination we're a translation of*/
           28         String        *addr;                /* destination address*/
           29         String        *repl1;                /* substitution field 1*/
           30         String        *repl2;                /* substitution field 2*/
           31         int        pstat;                /* process status*/
           32         d_status status;        /* delivery status*/
           33         int        authorized;        /* non-zero if we have been authorized*/
           34         int        nsame;                /* number of same dests chained to this entry*/
           35         int        nchar;                /* number of characters in the command*/
           36 };
           37 
           38 typedef struct message message;
           39 struct message {
           40         String        *sender;
           41         String        *replyaddr;
           42         String        *date;
           43         String        *body;
           44         String        *tmp;                /* name of temp file */
           45         String        *to;
           46         int        size;
           47         int        fd;                /* if >= 0, the file the message is stored in*/
           48         char        haveto;
           49         String        *havefrom;
           50         String        *havesender;
           51         String        *havereplyto;
           52         char        havedate;
           53         char        havemime;
           54         String        *havesubject;
           55         char        bulk;                /* if Precedence: Bulk in header */
           56         char        rfc822headers;
           57         int        received;        /* number of received lines */
           58         char        *boundary;        /* bondary marker for attachments */
           59 };
           60 
           61 /*
           62  *  exported variables
           63  */
           64 extern int rmail;
           65 extern int onatty;
           66 extern char *thissys, *altthissys;
           67 extern int xflg;
           68 extern int nflg;
           69 extern int tflg;
           70 extern int debug;
           71 extern int nosummary;
           72 
           73 /*
           74  *  exported procedures
           75  */
           76 extern void        authorize(dest*);
           77 extern int        cat_mail(dest*, message*);
           78 extern dest        *up_bind(dest*, message*, int);
           79 extern int        ok_to_forward(char*);
           80 extern int        lookup(char*, char*, Biobuf**, char*, Biobuf**);
           81 extern dest        *d_new(String*);
           82 extern void        d_free(dest*);
           83 extern dest        *d_rm(dest**);
           84 extern void        d_insert(dest**, dest*);
           85 extern dest        *d_rm_same(dest**);
           86 extern void        d_same_insert(dest**, dest*);
           87 extern String        *d_to(dest*);
           88 extern dest        *s_to_dest(String*, dest*);
           89 extern void        gateway(message*);
           90 extern dest        *expand_local(dest*);
           91 extern void        logdelivery(dest*, char*, message*);
           92 extern void        loglist(dest*, message*, char*);
           93 extern void        logrefusal(dest*, message*, char*);
           94 extern int        default_from(message*);
           95 extern message        *m_new(void);
           96 extern void        m_free(message*);
           97 extern message        *m_read(Biobuf*, int, int);
           98 extern int        m_get(message*, long, char**);
           99 extern int        m_print(message*, Biobuf*, char*, int);
          100 extern int        m_bprint(message*, Biobuf*);
          101 extern String        *rule_parse(String*, char*, int*);
          102 extern int        getrules(void);
          103 extern int        rewrite(dest*, message*);
          104 extern void        dumprules(void);
          105 extern void        regerror(char*);
          106 extern dest        *translate(dest*);
          107 extern char*        skipequiv(char*);
          108 extern int        refuse(dest*, message*, char*, int, int);