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