xref: /original-bsd/usr.sbin/sendmail/src/conf.h (revision 30b872a4)
1 /*
2  * Copyright (c) 1983 Eric P. Allman
3  * Copyright (c) 1988, 1993
4  *	The Regents of the University of California.  All rights reserved.
5  *
6  * %sccs.include.redist.c%
7  *
8  *	@(#)conf.h	8.50 (Berkeley) 11/14/93
9  */
10 
11 /*
12 **  CONF.H -- All user-configurable parameters for sendmail
13 */
14 
15 # include <sys/param.h>
16 # include <sys/types.h>
17 # include <sys/stat.h>
18 # include <sys/file.h>
19 # include <sys/wait.h>
20 # include <fcntl.h>
21 # include <signal.h>
22 
23 /**********************************************************************
24 **  Table sizes, etc....
25 **	There shouldn't be much need to change these....
26 **********************************************************************/
27 
28 # define MAXLINE	2048		/* max line length */
29 # define MAXNAME	256		/* max length of a name */
30 # define MAXPV		40		/* max # of parms to mailers */
31 # define MAXATOM	200		/* max atoms per address */
32 # define MAXMAILERS	25		/* maximum mailers known to system */
33 # define MAXRWSETS	100		/* max # of sets of rewriting rules */
34 # define MAXPRIORITIES	25		/* max values for Precedence: field */
35 # define MAXMXHOSTS	20		/* max # of MX records */
36 # define SMTPLINELIM	990		/* maximum SMTP line length */
37 # define MAXKEY		128		/* maximum size of a database key */
38 # define MEMCHUNKSIZE	1024		/* chunk size for memory allocation */
39 # define MAXUSERENVIRON	100		/* max envars saved, must be >= 3 */
40 # define MAXALIASDB	12		/* max # of alias databases */
41 # define PSBUFSIZE	(MAXLINE + MAXATOM)	/* size of prescan buffer */
42 
43 # ifndef QUEUESIZE
44 # define QUEUESIZE	1000		/* max # of jobs per queue run */
45 # endif
46 
47 /**********************************************************************
48 **  Compilation options.
49 **
50 **	#define these if they are available; comment them out otherwise.
51 **********************************************************************/
52 
53 # define LOG		1	/* enable logging */
54 # define UGLYUUCP	1	/* output ugly UUCP From lines */
55 # define NETUNIX	1	/* include unix domain support */
56 # define NETINET	1	/* include internet support */
57 # define SETPROCTITLE	1	/* munge argv to display current status */
58 # define NAMED_BIND	1	/* use Berkeley Internet Domain Server */
59 # define MATCHGECOS	1	/* match user names from gecos field */
60 # define XDEBUG		1	/* enable extended debugging */
61 
62 # ifdef NEWDB
63 # define USERDB		1	/* look in user database (requires NEWDB) */
64 # endif
65 
66 /*
67 **  Due to a "feature" in some operating systems such as Ultrix 4.3 and
68 **  HPUX 8.0, if you receive a "No route to host" message (ICMP message
69 **  ICMP_UNREACH_HOST) on _any_ connection, all connections to that host
70 **  are closed.  Some firewalls return this error if you try to connect
71 **  to the IDENT port (113), so you can't receive email from these hosts
72 **  on these systems.  The firewall really should use a more specific
73 **  message such as ICMP_UNREACH_PROTOCOL or _PORT or _NET_PROHIB.  This
74 **  will get #undefed below as needed.
75 */
76 
77 # define IDENTPROTO	1	/* use IDENT proto (RFC 1413) */
78 
79 /**********************************************************************
80 **  Operating system configuration.
81 **
82 **	Unless you are porting to a new OS, you shouldn't have to
83 **	change these.
84 **********************************************************************/
85 
86 /*
87 **  Per-Operating System defines
88 */
89 
90 
91 /*
92 **  HP-UX -- tested for 8.07
93 */
94 
95 # ifdef __hpux
96 /* avoid m_flags conflict between db.h & sys/sysmacros.h on HP 300 */
97 # undef m_flags
98 # define SYSTEM5	1	/* include all the System V defines */
99 # define HASINITGROUPS	1	/* has initgroups(3) call */
100 # define HASSTATFS	1	/* has the statfs(2) syscall */
101 # define HASSETREUID	1	/* has setreuid(2) call */
102 # define setreuid(r, e)		setresuid(r, e, -1)
103 # define LA_TYPE	LA_FLOAT
104 # define _PATH_UNIX	"/hp-ux"
105 # undef IDENTPROTO		/* TCP/IP implementation is broken */
106 # endif
107 
108 
109 /*
110 **  IBM AIX 3.x -- actually tested for 3.2.3
111 */
112 
113 # ifdef _AIX3
114 # define HASINITGROUPS	1	/* has initgroups(3) call */
115 # define HASSTATFS	1	/* has the statfs(2) syscall */
116 # define HASUNAME	1	/* use System V uname(2) system call */
117 # define FORK		fork	/* no vfork primitive available */
118 # undef  SETPROCTITLE		/* setproctitle confuses AIX */
119 # endif
120 
121 
122 /*
123 **  Silicon Graphics IRIX
124 **
125 **	Compiles on 4.0.1.
126 */
127 
128 # ifdef IRIX
129 # include <sys/sysmacros.h>
130 # define HASSETREUID	1	/* has setreuid(2) call */
131 # define HASINITGROUPS	1	/* has initgroups(3) call */
132 # define HASSTATFS	1	/* has the statfs(2) syscall */
133 # define FORK		fork	/* no vfork primitive available */
134 # define WAITUNION	1	/* use "union wait" as wait argument type */
135 # define setpgid	BSDsetpgrp
136 # define GIDSET_T	gid_t
137 # endif
138 
139 
140 /*
141 **  SunOS and Solaris
142 **
143 **	Tested on SunOS 4.1.x (a.k.a. Solaris 1.1.x) and
144 **	Solaris 2.2 (a.k.a. SunOS 5.2).
145 */
146 
147 #if defined(sun) && !defined(BSD)
148 
149 # define LA_TYPE	LA_INT
150 # define HASSETREUID	1	/* has setreuid(2) call */
151 # define HASINITGROUPS	1	/* has initgroups(3) call */
152 # define HASUNAME	1	/* use System V uname(2) system call */
153 
154 # ifdef SOLARIS_2_3
155 #  define SOLARIS
156 # endif
157 
158 # ifdef SOLARIS
159 			/* Solaris 2.x (a.k.a. SunOS 5.x) */
160 #  define SYSTEM5	1	/* use System V definitions */
161 #  define setreuid(r, e)	seteuid(e)
162 #  include <sys/time.h>
163 #  define gethostbyname	solaris_gethostbyname	/* get working version */
164 #  define gethostbyaddr	solaris_gethostbyaddr	/* get working version */
165 #  define _PATH_UNIX	"/kernel/unix"
166 #  ifndef _PATH_SENDMAILCF
167 #   define _PATH_SENDMAILCF	"/etc/mail/sendmail.cf"
168 #  endif
169 #  ifndef _PATH_SENDMAILPID
170 #   define _PATH_SENDMAILPID	"/etc/mail/sendmail.pid"
171 #  endif
172 
173 # else
174 			/* SunOS 4.1.x */
175 #  define HASSTATFS	1	/* has the statfs(2) syscall */
176 #  define HASFLOCK	1	/* has flock(2) call */
177 #  include <vfork.h>
178 
179 # endif
180 #endif
181 
182 /*
183 **  DG/UX
184 **
185 **	Tested on 5.4.2
186 */
187 
188 #ifdef	DGUX
189 # define SYSTEM5	1
190 # define LA_TYPE	LA_SUBR
191 # define HASSTATFS	1	/* has the statfs(2) syscall */
192 # define HASSETREUID	1	/* has setreuid(2) call */
193 # define HASUNAME	1	/* use System V uname(2) system call */
194 # define HASSETSID	1	/* has Posix setsid(2) call */
195 # define HASINITGROUPS	1	/* has initgroups(3) call */
196 # define HASSETVBUF	1	/* we have setvbuf(3) in libc */
197 # undef IDENTPROTO		/* TCP/IP implementation is broken */
198 # undef SETPROCTITLE
199 
200 /* these include files must be included early on DG/UX */
201 # include <netinet/in.h>
202 # include <arpa/inet.h>
203 
204 # define inet_addr	dgux_inet_addr
205 extern long	dgux_inet_addr();
206 #endif
207 
208 
209 /*
210 **  Digital Ultrix 4.2A or 4.3
211 **
212 **	Apparently, fcntl locking is broken on 4.2A, in that locks are
213 **	not dropped when the process exits.  This causes major problems,
214 **	so flock is the only alternative.
215 */
216 
217 #ifdef ultrix
218 # define HASSTATFS	1	/* has the statfs(2) syscall */
219 # define HASSETREUID	1	/* has setreuid(2) call */
220 # define HASUNSETENV	1	/* has unsetenv(3) call */
221 # define HASINITGROUPS	1	/* has initgroups(3) call */
222 # define HASFLOCK	1	/* has flock(2) call */
223 # define LA_TYPE	LA_INT
224 # define LA_AVENRUN	"avenrun"
225 # undef IDENTPROTO		/* TCP/IP implementation is broken */
226 #endif
227 
228 
229 /*
230 **  OSF/1 (tested on Alpha)
231 */
232 
233 #ifdef __osf__
234 # define HASSTATFS	1	/* has the statfs(2) syscall */
235 # define HASUNSETENV	1	/* has unsetenv(3) call */
236 # define HASSETREUID	1	/* has setreuid(2) call */
237 # define HASINITGROUPS	1	/* has initgroups(3) call */
238 # define HASFLOCK	1	/* has flock(2) call */
239 # define LA_TYPE	LA_INT
240 # ifndef _PATH_SENDMAILPID
241 #  define _PATH_SENDMAILPID	"/var/run/sendmial.pid"
242 # endif
243 #endif
244 
245 
246 /*
247 **  NeXTstep
248 */
249 
250 #ifdef NeXT
251 # define HASINITGROUPS	1	/* has initgroups(3) call */
252 # define HASFLOCK	1	/* has flock(2) call */
253 # define NEEDGETOPT	1	/* need a replacement for getopt(3) */
254 # define HASSTATFS	1	/* has the statfs(2) syscall */
255 # define WAITUNION	1	/* use "union wait" as wait argument type */
256 # define sleep		sleepX
257 # define setpgid	setpgrp
258 # ifndef LA_TYPE
259 #  define LA_TYPE	LA_MACH
260 # endif
261 # ifndef _POSIX_SOURCE
262 typedef int		pid_t;
263 #  undef WEXITSTATUS
264 #  undef WIFEXITED
265 # endif
266 # ifndef _PATH_SENDMAILCF
267 #  define _PATH_SENDMAILCF	"/etc/sendmail/sendmail.cf"
268 # endif
269 # ifndef _PATH_SENDMAILPID
270 #  define _PATH_SENDMAILPID	"/etc/sendmail/sendmail.pid"
271 # endif
272 #endif
273 
274 
275 /*
276 **  4.4 BSD
277 **
278 **	See also BSD defines.
279 */
280 
281 #ifdef BSD4_4
282 # define HASUNSETENV	1	/* has unsetenv(3) call */
283 # define HASSTATFS	1	/* has the statfs(2) syscall */
284 # include <sys/cdefs.h>
285 # define ERRLIST_PREDEFINED	/* don't declare sys_errlist */
286 # ifndef LA_TYPE
287 #  define LA_TYPE	LA_SUBR
288 # endif
289 #endif
290 
291 
292 /*
293 **  386BSD / FreeBSD 1.0E (works) / NetBSD (not tested)
294 **
295 **  4.3BSD clone, closer to 4.4BSD
296 **
297 **	See also BSD defines.
298 */
299 
300 #ifdef __386BSD__
301 # define HASUNSETENV	1	/* has unsetenv(3) call */
302 # define HASSETSID	1	/* has the setsid(2) POSIX syscall */
303 # define HASSTATFS	1	/* has the statfs(2) syscall */
304 # include <sys/cdefs.h>
305 # define ERRLIST_PREDEFINED	/* don't declare sys_errlist */
306 # ifndef LA_TYPE
307 #  define LA_TYPE	LA_SUBR
308 # endif
309 #endif
310 
311 
312 /*
313 **  Mach386
314 **
315 **	For mt Xinu's Mach386 system.
316 */
317 
318 #if defined(MACH) && defined(i386)
319 # define MACH386	1
320 # define HASUNSETENV	1	/* has unsetenv(3) call */
321 # define HASINITGROUPS	1	/* has initgroups(3) call */
322 # define HASFLOCK	1	/* has flock(2) call */
323 # define HASSTATFS	1	/* has the statfs(2) syscall */
324 # define NEEDGETOPT	1	/* need a replacement for getopt(3) */
325 # define NEEDSTRTOL	1	/* need the strtol() function */
326 # define setpgid	setpgrp
327 # ifndef LA_TYPE
328 #  define LA_TYPE	LA_FLOAT
329 # endif
330 # undef WEXITSTATUS
331 # undef WIFEXITED
332 # ifndef _PATH_SENDMAILCF
333 #  define _PATH_SENDMAILCF	"/usr/lib/sendmail.cf"
334 # endif
335 # ifndef _PATH_SENDMAILPID
336 #  define _PATH_SENDMAILPID	"/etc/sendmail.pid"
337 # endif
338 #endif
339 
340 
341 /*
342 **  4.3 BSD -- this is for very old systems
343 **
344 **	You'll also have to install a new resolver library.
345 **	I don't guarantee that support for this environment is complete.
346 */
347 
348 #ifdef oldBSD43
349 # define NEEDVPRINTF	1	/* need a replacement for vprintf(3) */
350 # define NEEDGETOPT	1	/* need a replacement for getopt(3) */
351 # define ARBPTR_T	char *
352 # define setpgid	setpgrp
353 # ifndef LA_TYPE
354 #  define LA_TYPE	LA_FLOAT
355 # endif
356 # ifndef _PATH_SENDMAILCF
357 #  define _PATH_SENDMAILCF	"/usr/lib/sendmail.cf"
358 # endif
359 # undef IDENTPROTO		/* TCP/IP implementation is broken */
360 # undef WEXITSTATUS
361 # undef WIFEXITED
362 typedef short		pid_t;
363 extern int		errno;
364 #endif
365 
366 
367 /*
368 **  SCO Unix
369 */
370 
371 #ifdef _SCO_unix_
372 # define SYSTEM5	1	/* include all the System V defines */
373 # define SYS5SIGNALS	1	/* SysV signal semantics -- reset on each sig */
374 # define HASSTATFS	1	/* has the statfs(2) syscall */
375 # define FORK		fork
376 # define MAXPATHLEN	PATHSIZE
377 # define LA_TYPE	LA_SHORT
378 # undef NETUNIX			/* no unix domain socket support */
379 #endif
380 
381 
382 /*
383 **  ConvexOS 11.0 and later
384 */
385 
386 #ifdef _CONVEX_SOURCE
387 # define BSD		1	/* include all the BSD defines */
388 # define HASUNAME	1	/* use System V uname(2) system call */
389 # define HASSTATFS	1	/* has the statfs(2) syscall */
390 # define HASSETSID	1	/* has POSIX setsid(2) call */
391 # define NEEDGETOPT	1	/* need replacement for getopt(3) */
392 # define LA_TYPE	LA_FLOAT
393 # undef IDENTPROTO
394 #endif
395 
396 
397 /*
398 **  RISC/os 4.51
399 **
400 **	Untested...
401 */
402 
403 #ifdef RISCOS
404 # define HASUNSETENV	1	/* has unsetenv(3) call */
405 # define HASFLOCK	1	/* has flock(2) call */
406 # define LA_TYPE	LA_INT
407 # define LA_AVENRUN	"avenrun"
408 # define _PATH_UNIX	"/unix"
409 #endif
410 
411 
412 /*
413 **  Linux 0.99pl10 and above...
414 **	From Karl London <karl@borg.demon.co.uk>.
415 */
416 
417 #ifdef __linux__
418 # define BSD		1	/* pretend to be BSD based today */
419 # undef  NEEDVPRINTF	1	/* need a replacement for vprintf(3) */
420 # define NEEDGETOPT	1	/* need a replacement for getopt(3) */
421 # define HASUNSETENV	1	/* has unsetenv(3) call */
422 # ifndef LA_TYPE
423 #  define LA_TYPE	LA_FLOAT
424 # endif
425 # include <sys/sysmacros.h>
426 #endif
427 
428 
429 /*
430 **  DELL SVR4 Issue 2.2, and others
431 **	From Kimmo Suominen <kim@grendel.lut.fi>
432 **
433 **	It's on #ifdef DELL_SVR4 because Solaris also gets __svr4__
434 **	defined, and the definitions conflict.
435 */
436 
437 #ifdef DELL_SVR4
438 # define SYSTEM5	1
439 /* # define setreuid(r, e)	seteuid(e) */
440 /* # include <sys/time.h> */
441 # define _PATH_UNIX	"/unix"
442 # ifndef _PATH_SENDMAILCF
443 #  define _PATH_SENDMAILCF	"/usr/ucblib/sendmail.cf"
444 # endif
445 # ifndef _PATH_SENDMAILPID
446 #  define _PATH_SENDMAILPID	"/usr/ucblib/sendmail.pid"
447 # endif
448 #endif
449 
450 
451 /*
452 **  Apple A/UX 3.0
453 */
454 
455 #ifdef _AUX_SOURCE
456 # include <sys/sysmacros.h>
457 # define BSD			/* has BSD routines */
458 # define HASSTATFS	1	/* has the statfs(2) syscall */
459 # define HASUNAME	1	/* use System V uname(2) system call */
460 # define HASUSTAT	1	/* use System V ustat(2) syscall */
461 # define HASSETVBUF	1	/* we have setvbuf(3) in libc */
462 # define SIGFUNC_DEFINED	/* sigfunc_t already defined */
463 # undef IDENTPROTO		/* TCP/IP implementation is broken */
464 # define FORK		fork
465 # ifndef _PATH_SENDMAILCF
466 #  define _PATH_SENDMAILCF	"/usr/lib/sendmail.cf"
467 # endif
468 # ifndef LA_TYPE
469 #  define LA_TYPE	LA_ZERO
470 # endif
471 # undef WIFEXITED
472 # undef WEXITSTATUS
473 #endif
474 
475 
476 /*
477 **  Encore UMAX V
478 **
479 **	Not extensively tested.
480 */
481 
482 #ifdef UMAXV
483 # include <limits.h>
484 # define HASUNAME	1	/* use System V uname(2) system call */
485 # define HASSTATFS	1	/* has the statfs(2) syscall */
486 # define HASSETVBUF	1	/* we have setvbuf(3) in libc */
487 # define HASINITGROUPS	1	/* has initgroups(3) call */
488 # define SYS5SIGNALS	1	/* SysV signal semantics -- reset on each sig */
489 # define SYS5SETPGRP	1	/* use System V setpgrp(2) syscall */
490 # define FORK		fork	/* no vfork(2) primitive available */
491 # define MAXPATHLEN	PATH_MAX
492 extern struct passwd	*getpwent(), *getpwnam(), *getpwuid();
493 extern struct group	*getgrent(), *getgrnam(), *getgrgid();
494 # undef WIFEXITED
495 # undef WEXITSTATUS
496 #endif
497 
498 
499 
500 /**********************************************************************
501 **  End of Per-Operating System defines
502 **********************************************************************/
503 
504 /**********************************************************************
505 **  More general defines
506 **********************************************************************/
507 
508 /* general BSD defines */
509 #ifdef BSD
510 # define HASGETDTABLESIZE 1	/* has getdtablesize(2) call */
511 # define HASSETREUID	1	/* has setreuid(2) call */
512 # define HASINITGROUPS	1	/* has initgroups(2) call */
513 # define HASFLOCK	1	/* has flock(2) call */
514 #endif
515 
516 /* general System V defines */
517 # ifdef SYSTEM5
518 # include <sys/sysmacros.h>
519 # define HASUNAME	1	/* use System V uname(2) system call */
520 # define HASUSTAT	1	/* use System V ustat(2) syscall */
521 # define SYS5SETPGRP	1	/* use System V setpgrp(2) syscall */
522 # ifndef LA_TYPE
523 #  define LA_TYPE	LA_INT
524 # endif
525 # define bcopy(s, d, l)		(memmove((d), (s), (l)))
526 # define bzero(d, l)		(memset((d), '\0', (l)))
527 # define bcmp(s, d, l)		(memcmp((s), (d), (l)))
528 # endif
529 
530 /* general "standard C" defines */
531 #if (defined(__STDC__) && !defined(MACH386)) || defined(SYSTEM5)
532 # define HASSETVBUF	1	/* we have setvbuf(3) in libc */
533 #endif
534 
535 /* general POSIX defines */
536 #ifdef _POSIX_VERSION
537 # define HASSETSID	1	/* has Posix setsid(2) call */
538 # define HASWAITPID	1	/* has Posix waitpid(2) call */
539 #endif
540 
541 /*
542 **  If no type for argument two of getgroups call is defined, assume
543 **  it's an integer -- unfortunately, there seem to be several choices
544 **  here.
545 */
546 
547 #ifndef GIDSET_T
548 # define GIDSET_T	int
549 #endif
550 
551 
552 /**********************************************************************
553 **  Remaining definitions should never have to be changed.  They are
554 **  primarily to provide back compatibility for older systems -- for
555 **  example, it includes some POSIX compatibility definitions
556 **********************************************************************/
557 
558 /* System 5 compatibility */
559 #ifndef S_ISREG
560 #define S_ISREG(foo)	((foo & S_IFREG) == S_IFREG)
561 #endif
562 #ifndef S_IWGRP
563 #define S_IWGRP		020
564 #endif
565 #ifndef S_IWOTH
566 #define S_IWOTH		002
567 #endif
568 
569 /*
570 **  Older systems don't have this error code -- it should be in
571 **  /usr/include/sysexits.h.
572 */
573 
574 # ifndef EX_CONFIG
575 # define EX_CONFIG	78	/* configuration error */
576 # endif
577 
578 /* pseudo-code used in server SMTP */
579 # define EX_QUIT	22	/* drop out of server immediately */
580 
581 
582 /*
583 **  These are used in a few cases where we need some special
584 **  error codes, but where the system doesn't provide something
585 **  reasonable.  They are printed in errstring.
586 */
587 
588 #ifndef E_PSEUDOBASE
589 # define E_PSEUDOBASE	256
590 #endif
591 
592 #define EOPENTIMEOUT	(E_PSEUDOBASE + 0)	/* timeout on open */
593 #define E_DNSBASE	(E_PSEUDOBASE + 20)	/* base for DNS h_errno */
594 
595 /* type of arbitrary pointer */
596 #ifndef ARBPTR_T
597 # define ARBPTR_T	void *
598 #endif
599 
600 #ifndef __P
601 # include "cdefs.h"
602 #endif
603 
604 /*
605 **  Do some required dependencies
606 */
607 
608 #if defined(NETINET) || defined(NETISO)
609 # define SMTP		1	/* enable user and server SMTP */
610 # define QUEUE		1	/* enable queueing */
611 # define DAEMON		1	/* include the daemon (requires IPC & SMTP) */
612 #endif
613 
614 
615 /*
616 **  Arrange to use either varargs or stdargs
617 */
618 
619 # ifdef __STDC__
620 
621 # include <stdarg.h>
622 
623 # define VA_LOCAL_DECL	va_list ap;
624 # define VA_START(f)	va_start(ap, f)
625 # define VA_END		va_end(ap)
626 
627 # else
628 
629 # include <varargs.h>
630 
631 # define VA_LOCAL_DECL	va_list ap;
632 # define VA_START(f)	va_start(ap)
633 # define VA_END		va_end(ap)
634 
635 # endif
636 
637 #ifdef HASUNAME
638 # include <sys/utsname.h>
639 # ifdef newstr
640 #  undef newstr
641 # endif
642 #else /* ! HASUNAME */
643 # define NODE_LENGTH 32
644 struct utsname
645 {
646 	char nodename[NODE_LENGTH+1];
647 };
648 #endif /* HASUNAME */
649 
650 #if !defined(MAXHOSTNAMELEN) && !defined(_SCO_unix_)
651 # define MAXHOSTNAMELEN	256
652 #endif
653 
654 #if !defined(SIGCHLD) && defined(SIGCLD)
655 # define SIGCHLD	SIGCLD
656 #endif
657 
658 #ifndef STDIN_FILENO
659 #define STDIN_FILENO	0
660 #endif
661 
662 #ifndef STDOUT_FILENO
663 #define STDOUT_FILENO	1
664 #endif
665 
666 #ifndef STDERR_FILENO
667 #define STDERR_FILENO	2
668 #endif
669 
670 #ifndef LOCK_SH
671 # define LOCK_SH	0x01	/* shared lock */
672 # define LOCK_EX	0x02	/* exclusive lock */
673 # define LOCK_NB	0x04	/* non-blocking lock */
674 # define LOCK_UN	0x08	/* unlock */
675 #endif
676 
677 #ifndef SIG_ERR
678 # define SIG_ERR	((void (*)()) -1)
679 #endif
680 
681 #ifndef WEXITSTATUS
682 # define WEXITSTATUS(st)	(((st) >> 8) & 0377)
683 #endif
684 #ifndef WIFEXITED
685 # define WIFEXITED(st)		(((st) & 0377) == 0)
686 #endif
687 
688 #ifndef SIGFUNC_DEFINED
689 typedef void		(*sigfunc_t) __P((int));
690 #endif
691 
692 /*
693 **  Size of tobuf (deliver.c)
694 **	Tweak this to match your syslog implementation.  It will have to
695 **	allow for the extra information printed.
696 */
697 
698 #ifndef TOBUFSIZE
699 # define TOBUFSIZE (1024 - 256)
700 #endif
701 
702 /* fork routine -- set above using #ifdef _osname_ or in Makefile */
703 # ifndef FORK
704 # define FORK		vfork		/* function to call to fork mailer */
705 # endif
706