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 enum 17 { 18 Elemlen= 28, 19 Errlen= 128, 20 Pathlen= 256, 21 }; 22 23 /* 24 * routines in mail.c 25 */ 26 extern int print_header(Biobuf*, char*, char*); 27 extern int print_remote_header(Biobuf*, char*, char*, char*); 28 extern int parse_header(char*, String*, String*); 29 30 /* 31 * routines in aux.c 32 */ 33 extern String *abspath(char*, char*, String*); 34 extern String *mboxpath(char*, char*, String*, int); 35 extern char *basename(char*); 36 extern int delivery_status(String*); 37 extern void append_match(Resub*, String*, int); 38 extern int shellchars(char*); 39 extern String* escapespecial(String*); 40 extern String* unescapespecial(String*); 41 extern int returnable(char*); 42 43 /* mailbox types */ 44 #define MF_NORMAL 0 45 #define MF_PIPE 1 46 #define MF_FORWARD 2 47 #define MF_NOMBOX 3 48 #define MF_NOTMBOX 4 49 50 /* a pipe between parent and child*/ 51 typedef struct { 52 Biobuf bb; 53 Biobuf *fp; /* parent process end*/ 54 int fd; /* child process end*/ 55 } stream; 56 57 /* a child process*/ 58 typedef struct process{ 59 stream *std[3]; /* standard fd's*/ 60 int pid; /* process identifier*/ 61 int status; /* exit status*/ 62 } process; 63 64 extern stream *instream(void); 65 extern stream *outstream(void); 66 extern void stream_free(stream*); 67 extern process *noshell_proc_start(char**, stream*, stream*, stream*, int, char*); 68 extern process *proc_start(char*, stream*, stream*, stream*, int, char*); 69 extern int proc_wait(process*); 70 extern int proc_free(process*); 71 extern int proc_kill(process*); 72 73 /* tell compiler we're using a value so it won't complain */ 74 #define USE(x) if(x) 75