| #include "sys.h" | 
 |  | 
 | /* format of REMOTE FROM lines */ | 
 | extern char *REMFROMRE; | 
 | extern int REMSENDERMATCH; | 
 | extern int REMDATEMATCH; | 
 | extern int REMSYSMATCH; | 
 |  | 
 | /* format of mailbox FROM lines */ | 
 | #define IS_HEADER(p) ((p)[0]=='F'&&(p)[1]=='r'&&(p)[2]=='o'&&(p)[3]=='m'&&(p)[4]==' ') | 
 | #define IS_TRAILER(p) ((p)[0]=='m'&&(p)[1]=='o'&&(p)[2]=='r'&&(p)[3]=='F'&&(p)[4]=='\n') | 
 | extern char *FROMRE; | 
 | extern int SENDERMATCH; | 
 | extern int DATEMATCH; | 
 |  | 
 | enum | 
 | { | 
 | 	Elemlen= 28, | 
 | 	Errlen=	128, | 
 | 	Pathlen= 256, | 
 | 	 | 
 | 	RetryCode = 2 | 
 | }; | 
 |  | 
 | /* | 
 |  *  routines in mail.c | 
 |  */ | 
 | extern int	print_header(Biobuf*, char*, char*); | 
 | extern int	print_remote_header(Biobuf*, char*, char*, char*); | 
 | extern int	parse_header(char*, String*, String*); | 
 |  | 
 | /* | 
 |  *  routines in aux.c | 
 |  */ | 
 | extern String	*abspath(char*, char*, String*); | 
 | extern String	*mboxpath(char*, char*, String*, int); | 
 | extern char	*basename(char*); | 
 | extern int	delivery_status(String*); | 
 | extern void	append_match(Resub*, String*, int); | 
 | extern int	shellchars(char*); | 
 | extern String*	escapespecial(String*); | 
 | extern String*	unescapespecial(String*); | 
 | extern int	returnable(char*); | 
 |  | 
 | /* in copymessage */ | 
 | extern int	appendfiletombox(int, int); | 
 | extern int	appendfiletofile(int, int); | 
 |  | 
 | /* mailbox types */ | 
 | #define MF_NORMAL 0 | 
 | #define MF_PIPE 1 | 
 | #define MF_FORWARD 2 | 
 | #define MF_NOMBOX 3 | 
 | #define MF_NOTMBOX 4 | 
 |  | 
 | /* a pipe between parent and child*/ | 
 | typedef struct { | 
 | 	Biobuf	bb; | 
 | 	Biobuf	*fp;	/* parent process end*/ | 
 | 	int	fd;	/* child process end*/ | 
 | } stream; | 
 |  | 
 | /* a child process*/ | 
 | typedef struct process{ | 
 | 	stream	*std[3];	/* standard fd's*/ | 
 | 	int	pid;		/* process identifier*/ | 
 | 	int	status;		/* exit status*/ | 
 | 	Waitmsg	*waitmsg; | 
 | } process; | 
 |  | 
 | extern stream	*instream(void); | 
 | extern stream	*outstream(void); | 
 | extern void	stream_free(stream*); | 
 | extern process	*noshell_proc_start(char**, stream*, stream*, stream*, int, char*); | 
 | extern process	*proc_start(char*, stream*, stream*, stream*, int, char*); | 
 | extern int	proc_wait(process*); | 
 | extern int	proc_free(process*); | 
 | extern int	proc_kill(process*); | 
 |  | 
 |  |