1/*$Id: procmail.h,v 1.57 2001/08/25 04:38:40 guenther Exp $*/
2
3#include "includes.h"
4
5#ifdef console
6#define DEFverbose 1
7#else
8#define DEFverbose 0
9#endif
10
11#ifdef GROUP_PER_USER
12#define NO_CHECK_stgid 0
13#else
14#define NO_CHECK_stgid 1
15#endif
16
17#ifdef TOGGLE_SGID_OK
18#define CAN_toggle_sgid 1
19#else
20#define CAN_toggle_sgid 0
21#endif
22
23#ifndef DEFsendmail
24#define DEFsendmail SENDMAIL
25#endif
26#ifndef DEFflagsendmail
27#define DEFflagsendmail "-oi"
28#endif
29
30#ifndef DEFSPATH
31#define DEFSPATH	defSPATH
32#endif
33
34#ifndef DEFPATH
35#define DEFPATH		defPATH
36#endif
37
38#ifndef ETCRC
39#define ETCRC	0
40#endif
41
42#define mAX32	 ((long)(~(unsigned long)0>>1))			 /* LONG_MAX */
43#define maxMAX32 2147483647L		 /* the largest we'll use = (2^31)-1 */
44#define MAX32	 (mAX32>maxMAX32&&maxMAX32>0?maxMAX32:mAX32)   /* the minmax */
45#define MIN32	 (-(long)MAX32)
46
47#define XTRAlinebuf	2     /* surplus of LINEBUF (assumed by readparse()) */
48#ifdef MAXPATHLEN
49#if MAXPATHLEN>DEFlinebuf		/* to protect people from themselves */
50#undef DEFlinebuf
51#define DEFlinebuf MAXPATHLEN
52#endif
53#endif
54
55#define priv_DONTNEED	1			  /* don't need root to sgid */
56#define priv_START	2			       /* we might have root */
57
58#define MCDIRSEP	(dirsep+STRLEN(dirsep)-1)      /* most common DIRSEP */
59#define MCDIRSEP_	(dirsep+STRLEN(DIRSEP)-1)
60
61#define lck_DELAYSIG	1	  /* crosscheck the order of this with msg[] */
62#define lck_ALLOCLIB	2		      /* in sterminate() in retint.c */
63#define lck_MEMORY	4
64#define lck_FORK	8
65#define lck_FILDES	16
66#define lck_KERNEL	32
67#define lck_LOGGING	64
68#define lck__NOMSG	(lck_DELAYSIG|lck_ALLOCLIB|lck_LOGGING)
69
70extern struct varval{const char*const name;long val;}strenvvar[];
71#define locksleep	(strenvvar[0].val)
72#define locktimeout	(strenvvar[1].val)
73#define suspendv	(strenvvar[2].val)
74#define noresretry	(strenvvar[3].val)
75#define timeoutv	(strenvvar[4].val)
76#define verbose		(*(volatile long*)&strenvvar[5].val)
77#define lgabstract	(strenvvar[6].val)
78
79extern struct varstr{const char*const sname,*sval;}strenstr[];
80#define shellmetas	(strenstr[0].sval)
81#define lockext		(strenstr[1].sval)
82#define msgprefix	(strenstr[2].sval)
83#define traps		(strenstr[3].sval)
84#define shellflags	(strenstr[4].sval)
85#define fdefault	(*(const char*volatile*)&strenstr[5].sval)
86#define sendmail	(strenstr[6].sval)
87#define flagsendmail	(strenstr[7].sval)
88/* #define PM_version	(strenstr[8].sval) */
89
90
91extern char*buf,*buf2,*loclock,*thebody;
92extern const char shell[],lockfile[],newline[],binsh[],unexpeof[],*const*gargv,
93 *const*restargv,*sgetcp,pmrc[],*rcfile,dirsep[],devnull[],empty[],lgname[],
94 executing[],oquote[],cquote[],whilstwfor[],procmailn[],Mail[],home[],host[],
95 *defdeflock,*argv0,exceededlb[],curdir[],slogstr[],conflicting[],orgmail[],
96 insufprivs[],defpath[],errwwriting[],Version[];
97extern long filled,lastscore;
98extern int sh,pwait,retval,retvl2,rc,privileged,ignwerr,
99 lexitcode,accspooldir,crestarg,savstdout,berkeley,mailfilter,erestrict,
100 Deliverymode,ifdepth;
101extern struct dyna_array ifstack;
102extern size_t linebuf;
103extern volatile int nextexit,lcking;
104extern pid_t thepid;
105extern uid_t uid;
106extern gid_t gid,sgid;
107
108/*
109 *	External variables that are checked/changed by the signal handlers:
110 *	volatile time_t alrmtime;
111 *	pid_t pidfilt,pidchild;
112 *	volatile int nextexit,lcking;
113 *	size_t linebuf;
114 *	static volatile int mailread;	in mailfold.c
115 */
116