1 #include "sys.h" 2 3 /* format of REMOTE FROM lines */ 4 extern char *REMFROMRE; 5 extern int REMSENDERMATCH; 6 extern int REMDATEMATCH; 7 extern int REMSYSMATCH; 8 9 /* format of mailbox FROM lines */ 10 #define IS_HEADER(p) ((p)[0]=='F'&&(p)[1]=='r'&&(p)[2]=='o'&&(p)[3]=='m'&&(p)[4]==' ') 11 #define IS_TRAILER(p) ((p)[0]=='m'&&(p)[1]=='o'&&(p)[2]=='r'&&(p)[3]=='F'&&(p)[4]=='\n') 12 extern char *FROMRE; 13 extern int SENDERMATCH; 14 extern int DATEMATCH; 15 16 /* 17 * routines in mail.c 18 */ 19 extern int print_header(Biobuf*, char*, char*); 20 extern int print_remote_header(Biobuf*, char*, char*, char*); 21 extern int parse_header(char*, String*, String*); 22 23 /* 24 * routines in aux.c 25 */ 26 extern String *abspath(char*, char*, String*); 27 extern String *mboxpath(char*, char*, String*, int); 28 extern char *basename(char*); 29 extern int delivery_status(String*); 30 extern void append_match(Resub*, String*, int); 31 extern int shellchars(char*); 32 33 /* mailbox types */ 34 #define MF_NORMAL 0 35 #define MF_PIPE 1 36 #define MF_FORWARD 2 37 #define MF_NOMBOX 3 38 #define MF_NOTMBOX 4 39 40 /* a pipe between parent and child*/ 41 typedef struct { 42 Biobuf bb; 43 Biobuf *fp; /* parent process end*/ 44 int fd; /* child process end*/ 45 } stream; 46 47 /* a child process*/ 48 typedef struct process{ 49 stream *std[3]; /* standard fd's*/ 50 int pid; /* process identifier*/ 51 int status; /* exit status*/ 52 } process; 53 54 extern stream *instream(void); 55 extern stream *outstream(void); 56 extern void stream_free(stream*); 57 extern process *proc_start(char*, stream*, stream*, stream*, int, int); 58 extern int proc_wait(process*); 59 extern int proc_free(process*); 60 extern int proc_kill(process*); 61 62 /* tell compiler we're using a value so it won't complain */ 63 #define USE(x) if(x) 64