xref: /plan9/sys/src/cmd/upas/common/common.h (revision 21887c0b3fa083db468c32f3247dbe932cf708df)
13e12c5d1SDavid du Colombier #include "sys.h"
23e12c5d1SDavid du Colombier 
33e12c5d1SDavid du Colombier /* format of REMOTE FROM lines */
43e12c5d1SDavid du Colombier extern char *REMFROMRE;
53e12c5d1SDavid du Colombier extern int REMSENDERMATCH;
63e12c5d1SDavid du Colombier extern int REMDATEMATCH;
73e12c5d1SDavid du Colombier extern int REMSYSMATCH;
83e12c5d1SDavid du Colombier 
93e12c5d1SDavid du Colombier /* format of mailbox FROM lines */
103e12c5d1SDavid du Colombier #define IS_HEADER(p) ((p)[0]=='F'&&(p)[1]=='r'&&(p)[2]=='o'&&(p)[3]=='m'&&(p)[4]==' ')
113e12c5d1SDavid du Colombier #define IS_TRAILER(p) ((p)[0]=='m'&&(p)[1]=='o'&&(p)[2]=='r'&&(p)[3]=='F'&&(p)[4]=='\n')
123e12c5d1SDavid du Colombier extern char *FROMRE;
133e12c5d1SDavid du Colombier extern int SENDERMATCH;
143e12c5d1SDavid du Colombier extern int DATEMATCH;
153e12c5d1SDavid du Colombier 
169a747e4fSDavid du Colombier enum
179a747e4fSDavid du Colombier {
189a747e4fSDavid du Colombier 	Elemlen= 28,
19*21887c0bSDavid du Colombier 	Errlen=	ERRMAX,
209a747e4fSDavid du Colombier 	Pathlen= 256,
219a747e4fSDavid du Colombier };
2204c2b4eaSDavid du Colombier enum { Atnoteunknown, Atnoterecog };
239a747e4fSDavid du Colombier 
243e12c5d1SDavid du Colombier /*
253e12c5d1SDavid du Colombier  *  routines in mail.c
263e12c5d1SDavid du Colombier  */
273e12c5d1SDavid du Colombier extern int	print_header(Biobuf*, char*, char*);
283e12c5d1SDavid du Colombier extern int	print_remote_header(Biobuf*, char*, char*, char*);
293e12c5d1SDavid du Colombier extern int	parse_header(char*, String*, String*);
303e12c5d1SDavid du Colombier 
313e12c5d1SDavid du Colombier /*
323e12c5d1SDavid du Colombier  *  routines in aux.c
333e12c5d1SDavid du Colombier  */
343e12c5d1SDavid du Colombier extern String	*abspath(char*, char*, String*);
353e12c5d1SDavid du Colombier extern String	*mboxpath(char*, char*, String*, int);
363e12c5d1SDavid du Colombier extern char	*basename(char*);
373e12c5d1SDavid du Colombier extern int	delivery_status(String*);
383e12c5d1SDavid du Colombier extern void	append_match(Resub*, String*, int);
393e12c5d1SDavid du Colombier extern int	shellchars(char*);
407dd7cddfSDavid du Colombier extern String*	escapespecial(String*);
417dd7cddfSDavid du Colombier extern String*	unescapespecial(String*);
427dd7cddfSDavid du Colombier extern int	returnable(char*);
433e12c5d1SDavid du Colombier 
44ba64361bSDavid du Colombier /* in copymessage */
45ba64361bSDavid du Colombier extern int	appendfiletombox(int, int);
46ba64361bSDavid du Colombier extern int	appendfiletofile(int, int);
47ba64361bSDavid du Colombier 
483e12c5d1SDavid du Colombier /* mailbox types */
493e12c5d1SDavid du Colombier #define MF_NORMAL 0
503e12c5d1SDavid du Colombier #define MF_PIPE 1
513e12c5d1SDavid du Colombier #define MF_FORWARD 2
523e12c5d1SDavid du Colombier #define MF_NOMBOX 3
533e12c5d1SDavid du Colombier #define MF_NOTMBOX 4
543e12c5d1SDavid du Colombier 
553e12c5d1SDavid du Colombier /* a pipe between parent and child*/
563e12c5d1SDavid du Colombier typedef struct {
573e12c5d1SDavid du Colombier 	Biobuf	bb;
583e12c5d1SDavid du Colombier 	Biobuf	*fp;	/* parent process end*/
593e12c5d1SDavid du Colombier 	int	fd;	/* child process end*/
603e12c5d1SDavid du Colombier } stream;
613e12c5d1SDavid du Colombier 
623e12c5d1SDavid du Colombier /* a child process*/
633e12c5d1SDavid du Colombier typedef struct process{
643e12c5d1SDavid du Colombier 	stream	*std[3];	/* standard fd's*/
653e12c5d1SDavid du Colombier 	int	pid;		/* process identifier*/
663e12c5d1SDavid du Colombier 	int	status;		/* exit status*/
672b7fd5adSDavid du Colombier 	Waitmsg	*waitmsg;
683e12c5d1SDavid du Colombier } process;
693e12c5d1SDavid du Colombier 
703e12c5d1SDavid du Colombier extern stream	*instream(void);
713e12c5d1SDavid du Colombier extern stream	*outstream(void);
723e12c5d1SDavid du Colombier extern void	stream_free(stream*);
737dd7cddfSDavid du Colombier extern process	*noshell_proc_start(char**, stream*, stream*, stream*, int, char*);
747dd7cddfSDavid du Colombier extern process	*proc_start(char*, stream*, stream*, stream*, int, char*);
753e12c5d1SDavid du Colombier extern int	proc_wait(process*);
763e12c5d1SDavid du Colombier extern int	proc_free(process*);
773e12c5d1SDavid du Colombier extern int	proc_kill(process*);
783e12c5d1SDavid du Colombier 
793e12c5d1SDavid du Colombier /* tell compiler we're using a value so it won't complain */
803e12c5d1SDavid du Colombier #define USE(x)	if(x)
81