plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

send.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);