plan9port

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

common.h (1973B)


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