No empty .Rs/.Re
[netbsd-mini2440.git] / external / ibm-public / postfix / dist / src / util / sys_defs.h
blobedfd184bdeda9143436a29b15ebbfa70b0919830
1 /* $NetBSD$ */
3 #ifndef _SYS_DEFS_H_INCLUDED_
4 #define _SYS_DEFS_H_INCLUDED_
6 /*++
7 /* NAME
8 /* sys_defs 3h
9 /* SUMMARY
10 /* portability header
11 /* SYNOPSIS
12 /* #include <sys_defs.h>
13 /* DESCRIPTION
14 /* .nf
17 * Specific platforms. Major release numbers differ for a good reason. So be
18 * a good girl, plan for the future, and at least include the major release
19 * number in the system type (for example, SUNOS5 or FREEBSD2). The system
20 * type is determined by the makedefs shell script in the top-level
21 * directory. Adding support for a new system type means updating the
22 * makedefs script, and adding a section below for the new system.
26 * 4.4BSD and close derivatives.
28 #if defined(FREEBSD2) || defined(FREEBSD3) || defined(FREEBSD4) \
29 || defined(FREEBSD5) || defined(FREEBSD6) || defined(FREEBSD7) \
30 || defined(BSDI2) || defined(BSDI3) || defined(BSDI4) \
31 || defined(OPENBSD2) || defined(OPENBSD3) || defined(OPENBSD4) \
32 || defined(NETBSD1) || defined(NETBSD2) || defined(NETBSD3) \
33 || defined(NETBSD4) \
34 || defined(EKKOBSD1)
35 #define SUPPORTED
36 #include <sys/types.h>
37 #include <sys/param.h>
38 #define UINT32_TYPE unsigned int
39 #define UINT16_TYPE unsigned short
40 #define USE_PATHS_H
41 #define HAS_FLOCK_LOCK
42 #define HAS_FCNTL_LOCK
43 #define INTERNAL_LOCK MYFLOCK_STYLE_FLOCK
44 #define DEF_MAILBOX_LOCK "flock, dotlock"
45 #define HAS_SUN_LEN
46 #define HAS_FSYNC
47 #define HAS_DB
48 #define HAS_SA_LEN
49 #define DEF_DB_TYPE "hash"
50 #if (defined(__NetBSD_Version__) && __NetBSD_Version__ >= 104250000)
51 #define ALIAS_DB_MAP "hash:/etc/mail/aliases" /* sendmail 8.10 */
52 #endif
53 #if (defined(OpenBSD) && OpenBSD >= 200006)
54 #define ALIAS_DB_MAP "hash:/etc/mail/aliases" /* OpenBSD 2.7 */
55 #endif
56 #ifndef ALIAS_DB_MAP
57 #define ALIAS_DB_MAP "hash:/etc/aliases"
58 #endif
59 #define GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *) 0)
60 #define ROOT_PATH "/bin:/usr/bin:/sbin:/usr/sbin"
61 #if (defined(__NetBSD_Version__) && __NetBSD_Version__ > 299000900)
62 # define USE_STATVFS
63 # define STATVFS_IN_SYS_STATVFS_H
64 #else
65 # define USE_STATFS
66 # define STATFS_IN_SYS_MOUNT_H
67 #endif
68 #define HAS_POSIX_REGEXP
69 #define HAS_ST_GEN /* struct stat contains inode
70 * generation number */
71 #define NATIVE_SENDMAIL_PATH "/usr/sbin/sendmail"
72 #define NATIVE_MAILQ_PATH "/usr/bin/mailq"
73 #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases"
74 #define NATIVE_COMMAND_DIR "/usr/sbin"
75 #define NATIVE_DAEMON_DIR "/usr/libexec/postfix"
76 #endif
78 #ifdef FREEBSD2
79 #define getsid(p) getpgrp()
80 #ifndef CMSG_SPACE
81 #define CMSG_SPACE(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + CMSG_ALIGN(len))
82 #endif
83 #ifndef CMSG_LEN
84 #define CMSG_LEN(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + (len))
85 #endif
86 #ifndef CMSG_ALIGN
87 #define CMSG_ALIGN(n) ALIGN(n)
88 #endif
89 #endif /* FREEBSD2 */
91 #ifdef BSDI4
92 /* #define HAS_IPV6 find out interface lookup method */
93 #endif
95 /* __FreeBSD_version version is major+minor */
97 #if __FreeBSD_version >= 220000
98 #define PREFERRED_RAND_SOURCE "dev:/dev/urandom" /* introduced 2.1.5 */
99 #endif
101 #if __FreeBSD_version >= 300000
102 #define HAS_ISSETUGID
103 #define HAS_FUTIMES
104 #endif
106 #if __FreeBSD_version >= 400000
107 #define SOCKADDR_SIZE socklen_t
108 #define SOCKOPT_SIZE socklen_t
109 #endif
111 #if __FreeBSD_version >= 420000
112 #define HAS_DUPLEX_PIPE /* 4.1 breaks with kqueue(2) */
113 #endif
115 /* OpenBSD version is year+month */
117 #if OpenBSD >= 199805 /* XXX */
118 #define HAS_FUTIMES /* XXX maybe earlier */
119 #endif
121 #if (defined(OpenBSD) && OpenBSD >= 199608)
122 #define PREFERRED_RAND_SOURCE "dev:/dev/arandom" /* XXX earlier */
123 #endif
125 #if OpenBSD >= 200000 /* XXX */
126 #define HAS_ISSETUGID
127 #endif
129 #if OpenBSD >= 200200 /* XXX */
130 #define SOCKADDR_SIZE socklen_t
131 #define SOCKOPT_SIZE socklen_t
132 #endif
134 #if OpenBSD >= 200405 /* 3.5 */
135 #define HAS_CLOSEFROM
136 #endif
138 /* __NetBSD_Version__ is major+minor */
140 #if __NetBSD_Version__ >= 103000000 /* XXX maybe earlier */
141 #undef DEF_MAILBOX_LOCK
142 #define DEF_MAILBOX_LOCK "flock, dotlock"
143 #define PREFERRED_RAND_SOURCE "dev:/dev/urandom" /* XXX maybe earlier */
144 #endif
146 #if __NetBSD_Version__ >= 105000000
147 #define HAS_ISSETUGID /* XXX maybe earlier */
148 #endif
150 #if __NetBSD_Version__ >= 106000000 /* XXX maybe earlier */
151 #define SOCKADDR_SIZE socklen_t
152 #define SOCKOPT_SIZE socklen_t
153 #endif
155 #if __NetBSD_Version__ >= 299000900 /* 2.99.9 */
156 #define HAS_CLOSEFROM
157 #endif
159 #if (defined(__NetBSD_Version__) && __NetBSD_Version__ >= 102000000)
160 #define HAS_FUTIMES
161 #endif
163 #if (defined(__NetBSD_Version__) && __NetBSD_Version__ >= 105000000) \
164 || (defined(__FreeBSD__) && __FreeBSD__ >= 4) \
165 || (defined(OpenBSD) && OpenBSD >= 200003) \
166 || defined(USAGI_LIBINET6)
167 #ifndef NO_IPV6
168 # define HAS_IPV6
169 # define HAVE_GETIFADDRS
170 #endif
172 #if (defined(__FreeBSD_version) && __FreeBSD_version >= 300000) \
173 || (defined(__NetBSD_Version__) && __NetBSD_Version__ >= 103000000) \
174 || (defined(OpenBSD) && OpenBSD >= 199700) /* OpenBSD 2.0?? */
175 # define USE_SYSV_POLL
176 #endif
178 #ifndef NO_KQUEUE
179 # if (defined(__FreeBSD_version) && __FreeBSD_version >= 410000) \
180 || (defined(__NetBSD_Version__) && __NetBSD_Version__ >= 200000000) \
181 || (defined(OpenBSD) && OpenBSD >= 200105) /* OpenBSD 2.9 */
182 # define EVENTS_STYLE EVENTS_STYLE_KQUEUE
183 # endif
184 #endif
186 #endif
189 * UNIX on MAC.
191 #if defined(RHAPSODY5) || defined(MACOSX)
192 #define SUPPORTED
193 #include <sys/types.h>
194 #define UINT32_TYPE unsigned int
195 #define UINT16_TYPE unsigned short
196 #define USE_PATHS_H
197 #define HAS_FLOCK_LOCK
198 #define HAS_FCNTL_LOCK
199 #define INTERNAL_LOCK MYFLOCK_STYLE_FLOCK
200 #define DEF_MAILBOX_LOCK "flock, dotlock"
201 #define HAS_SUN_LEN
202 #define HAS_FSYNC
203 #define HAS_DB
204 #define HAS_SA_LEN
205 #define DEF_DB_TYPE "hash"
206 #define ALIAS_DB_MAP "hash:/etc/aliases"
207 #define GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *) 0)
208 #define RESOLVE_H_NEEDS_NAMESER8_COMPAT_H
209 #define ROOT_PATH "/bin:/usr/bin:/sbin:/usr/sbin"
210 #define USE_STATFS
211 #define STATFS_IN_SYS_MOUNT_H
212 #define HAS_POSIX_REGEXP
213 #define NORETURN void
214 #define PRINTFLIKE(x,y)
215 #define SCANFLIKE(x,y)
216 #ifndef NO_NETINFO
217 # define HAS_NETINFO
218 #endif
219 #ifndef NO_IPV6
220 # define HAS_IPV6
221 # define HAVE_GETIFADDRS
222 #endif
223 #define HAS_FUTIMES /* XXX Guessing */
224 #define NATIVE_SENDMAIL_PATH "/usr/sbin/sendmail"
225 #define NATIVE_MAILQ_PATH "/usr/bin/mailq"
226 #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases"
227 #define NATIVE_COMMAND_DIR "/usr/sbin"
228 #define NATIVE_DAEMON_DIR "/usr/libexec/postfix"
229 #define SOCKADDR_SIZE socklen_t
230 #define SOCKOPT_SIZE socklen_t
231 #ifndef NO_KQUEUE
232 # define EVENTS_STYLE EVENTS_STYLE_KQUEUE
233 # define USE_SYSV_POLL
234 #endif
236 #endif
239 * Ultrix 4.x, a sort of 4.[1-2] BSD system with System V.2 compatibility
240 * and POSIX.
242 #ifdef ULTRIX4
243 #define SUPPORTED
244 #define UINT32_TYPE unsigned int
245 #define UINT16_TYPE unsigned short
246 /* Ultrix by default has only 64 descriptors per process */
247 #ifndef FD_SETSIZE
248 #define FD_SETSIZE 96
249 #endif
250 #include <sys/types.h>
251 #define _PATH_MAILDIR "/var/spool/mail"
252 #define _PATH_BSHELL "/bin/sh"
253 #define _PATH_DEFPATH "/bin:/usr/bin:/usr/ucb"
254 #define _PATH_STDPATH "/bin:/usr/bin:/usr/etc:/usr/ucb"
255 #define HAS_FLOCK_LOCK
256 #define HAS_FCNTL_LOCK
257 #define INTERNAL_LOCK MYFLOCK_STYLE_FLOCK
258 #define DEF_MAILBOX_LOCK "flock, dotlock"
259 #define HAS_FSYNC
260 /* might be set by makedef */
261 #ifdef HAS_DB
262 #define DEF_DB_TYPE "hash"
263 #define ALIAS_DB_MAP "hash:/etc/aliases"
264 #else
265 #define HAS_DBM
266 #define DEF_DB_TYPE "dbm"
267 #define ALIAS_DB_MAP "dbm:/etc/aliases"
268 #endif
269 extern int optind;
270 extern char *optarg;
271 extern int opterr;
272 extern int h_errno;
274 #define MISSING_STRFTIME_E
275 #define HAS_NIS
276 #define GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *) 0)
277 #define ROOT_PATH "/bin:/usr/bin:/etc:/usr/etc:/usr/ucb"
278 #define USE_STATFS
279 #define USE_STRUCT_FS_DATA
280 #define STATFS_IN_SYS_MOUNT_H
281 /* Ultrix misses just S_ISSOCK, the others are there */
282 #define S_ISSOCK(mode) (((mode) & (S_IFMT)) == (S_IFSOCK))
283 #define DUP2_DUPS_CLOSE_ON_EXEC
284 #define MISSING_USLEEP
285 #define NO_HERRNO
286 #define NATIVE_SENDMAIL_PATH "/usr/lib/sendmail"
287 #define NATIVE_COMMAND_DIR "/usr/etc"
288 #define NATIVE_DAEMON_DIR "/usr/libexec/postfix"
289 #endif
292 * OSF, then Digital UNIX, then Compaq. A BSD-flavored hybrid.
294 #ifdef OSF1
295 #define SUPPORTED
296 #include <sys/types.h>
297 #define UINT32_TYPE unsigned int
298 #define UINT16_TYPE unsigned short
299 #define MISSING_SETENV
300 #define USE_PATHS_H
301 #define _PATH_DEFPATH "/usr/bin:/usr/ucb"
302 #define HAS_FLOCK_LOCK
303 #define HAS_FCNTL_LOCK
304 #define INTERNAL_LOCK MYFLOCK_STYLE_FLOCK
305 #define DEF_MAILBOX_LOCK "flock, dotlock"
306 #define HAS_FSYNC
307 #define HAVE_BASENAME
308 #define HAS_DBM
309 #define DEF_DB_TYPE "dbm"
310 #define ALIAS_DB_MAP "dbm:/var/adm/sendmail/aliases"
311 extern int optind; /* XXX use <getopt.h> */
312 extern char *optarg; /* XXX use <getopt.h> */
313 extern int opterr; /* XXX use <getopt.h> */
315 #define HAS_NIS
316 #define GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *) 0)
317 #define ROOT_PATH "/bin:/usr/bin:/sbin:/usr/sbin:/usr/ucb"
318 #define USE_STATFS
319 #define STATFS_IN_SYS_MOUNT_H
320 #define HAS_POSIX_REGEXP
321 #define BROKEN_WRITE_SELECT_ON_NON_BLOCKING_PIPE
322 #define NO_MSGHDR_MSG_CONTROL
323 #ifndef NO_IPV6
324 # define HAS_IPV6
325 #endif
327 #endif
330 * SunOS 4.x, a mostly 4.[2-3] BSD system with System V.2 compatibility and
331 * POSIX support.
333 #ifdef SUNOS4
334 #define SUPPORTED
335 #include <sys/types.h>
336 #include <memory.h>
337 #define UINT32_TYPE unsigned int
338 #define UINT16_TYPE unsigned short
339 #define UNSAFE_CTYPE
340 #define fpos_t long
341 #define MISSING_SETENV
342 #define MISSING_STRERROR
343 #define MISSING_STRTOUL
344 #define _PATH_MAILDIR "/var/spool/mail"
345 #define _PATH_BSHELL "/bin/sh"
346 #define _PATH_DEFPATH "/usr/bin:/usr/ucb"
347 #define _PATH_STDPATH "/usr/bin:/usr/etc:/usr/ucb"
348 #define HAS_FLOCK_LOCK
349 #define HAS_FCNTL_LOCK
350 #define INTERNAL_LOCK MYFLOCK_STYLE_FLOCK
351 #define DEF_MAILBOX_LOCK "flock, dotlock"
352 #define HAS_FSYNC
353 #define HAS_DBM
354 #define DEF_DB_TYPE "dbm"
355 #define ALIAS_DB_MAP "dbm:/etc/aliases"
356 extern int optind;
357 extern char *optarg;
358 extern int opterr;
360 #define HAS_NIS
361 #define GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *) 0)
362 #define ROOT_PATH "/bin:/usr/bin:/etc:/usr/etc:/usr/ucb"
363 #define USE_STATFS
364 #define STATFS_IN_SYS_VFS_H
365 #define memmove(d,s,l) bcopy(s,d,l)
366 #define NO_HERRNO
367 #define NATIVE_SENDMAIL_PATH "/usr/lib/sendmail"
368 #define NATIVE_MAILQ_PATH "/usr/ucb/mailq"
369 #define NATIVE_NEWALIAS_PATH "/usr/ucb/newaliases"
370 #define NATIVE_COMMAND_DIR "/usr/etc"
371 #define NATIVE_DAEMON_DIR "/usr/libexec/postfix"
372 #define STRCASECMP_IN_STRINGS_H
373 #define OCTAL_TO_UNSIGNED(res, str) sscanf((str), "%o", &(res))
374 #define size_t unsigned
375 #define ssize_t int
376 #define getsid getpgrp
377 #endif
380 * SunOS 5.x, mostly System V Release 4.
382 #ifdef SUNOS5
383 #define SUPPORTED
384 #define _SVID_GETTOD /* Solaris 2.5, XSH4.2 versus SVID */
385 #include <sys/types.h>
386 #define UINT32_TYPE unsigned int
387 #define UINT16_TYPE unsigned short
388 #define MISSING_SETENV
389 #define _PATH_MAILDIR "/var/mail"
390 #define _PATH_BSHELL "/bin/sh"
391 #define _PATH_DEFPATH "/usr/bin:/usr/ucb"
392 #define _PATH_STDPATH "/usr/bin:/usr/sbin:/usr/ucb"
393 #define HAS_FCNTL_LOCK
394 #define INTERNAL_LOCK MYFLOCK_STYLE_FCNTL
395 #define DEF_MAILBOX_LOCK "fcntl, dotlock"
396 #define HAS_FSYNC
397 #define HAS_DBM
398 #define DEF_DB_TYPE "dbm"
399 #define ALIAS_DB_MAP "dbm:/etc/mail/aliases"
400 #define HAS_NIS
401 #define HAS_NISPLUS
402 #define USE_SYS_SOCKIO_H /* Solaris 2.5, changed sys/ioctl.h */
403 #define GETTIMEOFDAY(t) gettimeofday(t)
404 #define ROOT_PATH "/bin:/usr/bin:/sbin:/usr/sbin:/usr/ucb"
405 #define FIONREAD_IN_SYS_FILIO_H
406 #define USE_STATVFS
407 #define STATVFS_IN_SYS_STATVFS_H
408 #define INT_MAX_IN_LIMITS_H
409 #define STREAM_CONNECTIONS /* avoid UNIX-domain sockets */
410 #define LOCAL_LISTEN stream_listen
411 #define LOCAL_ACCEPT stream_accept
412 #define LOCAL_CONNECT stream_connect
413 #define LOCAL_TRIGGER stream_trigger
414 #define LOCAL_SEND_FD stream_send_fd
415 #define LOCAL_RECV_FD stream_recv_fd
416 #define HAS_VOLATILE_LOCKS
417 #define BROKEN_READ_SELECT_ON_TCP_SOCKET
418 #define CANT_WRITE_BEFORE_SENDING_FD
419 #ifndef NO_POSIX_REGEXP
420 # define HAS_POSIX_REGEXP
421 #endif
422 #ifndef NO_IPV6
423 # define HAS_IPV6
424 # define HAS_SIOCGLIF
425 #endif
426 #ifndef NO_CLOSEFROM
427 # define HAS_CLOSEFROM
428 #endif
429 #ifndef NO_DEV_URANDOM
430 # define PREFERRED_RAND_SOURCE "dev:/dev/urandom"
431 #endif
432 #ifndef NO_FUTIMESAT
433 # define HAS_FUTIMESAT
434 #endif
435 #define USE_SYSV_POLL
436 #ifndef NO_DEVPOLL
437 # define EVENTS_STYLE EVENTS_STYLE_DEVPOLL
438 #endif
441 * Allow build environment to override paths.
443 #define NATIVE_SENDMAIL_PATH "/usr/lib/sendmail"
444 #define NATIVE_MAILQ_PATH "/usr/bin/mailq"
445 #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases"
446 #define NATIVE_COMMAND_DIR "/usr/sbin"
447 #define NATIVE_DAEMON_DIR "/usr/libexec/postfix"
448 #endif
451 * UnixWare, System Release 4.
453 #ifdef UW7 /* UnixWare 7 */
454 #define SUPPORTED
455 #include <sys/types.h>
456 #define UINT32_TYPE unsigned int
457 #define UINT16_TYPE unsigned short
458 #define _PATH_MAILDIR "/var/mail"
459 #define _PATH_BSHELL "/bin/sh"
460 #define _PATH_DEFPATH "/usr/bin:/usr/ucb"
461 #define _PATH_STDPATH "/usr/bin:/usr/sbin:/usr/ucb"
462 #define MISSING_SETENV
463 #define HAS_FCNTL_LOCK
464 #define INTERNAL_LOCK MYFLOCK_STYLE_FCNTL
465 #define DEF_MAILBOX_LOCK "fcntl, dotlock"
466 #define HAS_FSYNC
467 #define HAS_DBM
468 #define DEF_DB_TYPE "dbm"
469 #define ALIAS_DB_MAP "dbm:/etc/mail/aliases"
470 #define HAS_NIS
471 #define USE_SYS_SOCKIO_H
472 #define GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *) 0)
473 #define ROOT_PATH "/bin:/usr/bin:/sbin:/usr/sbin:/usr/ucb"
474 #define FIONREAD_IN_SYS_FILIO_H
475 #define DBM_NO_TRAILING_NULL
476 #define USE_STATVFS
477 #define STATVFS_IN_SYS_STATVFS_H
478 #define STRCASECMP_IN_STRINGS_H
479 #define SET_H_ERRNO(err) (set_h_errno(err))
480 #endif
482 #ifdef UW21 /* UnixWare 2.1.x */
483 #define SUPPORTED
484 #include <sys/types.h>
485 #define UINT32_TYPE unsigned int
486 #define UINT16_TYPE unsigned short
487 #define _PATH_MAILDIR "/var/mail"
488 #define _PATH_BSHELL "/bin/sh"
489 #define _PATH_DEFPATH "/usr/bin:/usr/ucb"
490 #define _PATH_STDPATH "/usr/bin:/usr/sbin:/usr/ucb"
491 #define MISSING_SETENV
492 #define HAS_FCNTL_LOCK
493 #define INTERNAL_LOCK MYFLOCK_STYLE_FCNTL
494 #define DEF_MAILBOX_LOCK "fcntl, dotlock"
495 #define HAS_FSYNC
496 #define HAS_DBM
497 #define DEF_DB_TYPE "dbm"
498 #define ALIAS_DB_MAP "dbm:/etc/mail/aliases"
499 /* Uncomment the following line if you have NIS package installed
500 #define HAS_NIS */
501 #define USE_SYS_SOCKIO_H
502 #define GETTIMEOFDAY(t) gettimeofday(t,NULL)
503 #define ROOT_PATH "/bin:/usr/bin:/sbin:/usr/sbin:/usr/ucb"
504 #define FIONREAD_IN_SYS_FILIO_H
505 #define DBM_NO_TRAILING_NULL
506 #define USE_STATVFS
507 #define STATVFS_IN_SYS_STATVFS_H
508 #endif
511 * AIX: a SYSV-flavored hybrid. NB: fcntl() and flock() access the same
512 * underlying locking primitives.
514 #ifdef AIX5
515 #define SUPPORTED
516 #include <sys/types.h>
517 #define UINT32_TYPE unsigned int
518 #define UINT16_TYPE unsigned short
519 #define MISSING_SETENV
520 #define USE_PATHS_H
521 #ifndef _PATH_BSHELL
522 #define _PATH_BSHELL "/bin/sh"
523 #endif
524 #ifndef _PATH_MAILDIR
525 #define _PATH_MAILDIR "/var/spool/mail" /* paths.h lies */
526 #endif
527 #ifndef _PATH_DEFPATH
528 #define _PATH_DEFPATH "/usr/bin:/usr/ucb"
529 #endif
530 #ifndef _PATH_STDPATH
531 #define _PATH_STDPATH "/usr/bin:/usr/sbin:/usr/ucb"
532 #endif
533 #define HAS_FCNTL_LOCK
534 #define INTERNAL_LOCK MYFLOCK_STYLE_FCNTL
535 #define DEF_MAILBOX_LOCK "fcntl, dotlock"
536 #define USE_SYS_SELECT_H
537 #define HAS_FSYNC
538 #define HAS_DBM
539 #define DEF_DB_TYPE "dbm"
540 #define ALIAS_DB_MAP "dbm:/etc/aliases"
541 #define HAS_NIS
542 #define HAS_SA_LEN
543 #define GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *) 0)
544 #define ROOT_PATH "/bin:/usr/bin:/sbin:/usr/sbin:/usr/ucb"
545 #define SOCKADDR_SIZE socklen_t
546 #define SOCKOPT_SIZE socklen_t
547 #define USE_STATVFS
548 #define STATVFS_IN_SYS_STATVFS_H
549 #define NATIVE_SENDMAIL_PATH "/usr/sbin/sendmail"
550 #define NATIVE_MAILQ_PATH "/usr/sbin/mailq"
551 #define NATIVE_NEWALIAS_PATH "/usr/sbin/newaliases"
552 #define NATIVE_COMMAND_DIR "/usr/sbin"
553 #define NATIVE_DAEMON_DIR "/usr/libexec/postfix"
556 * XXX Need CMSG_SPACE() and CMSG_LEN() but don't want to drag in everything
557 * that comes with _LINUX_SOURCE_COMPAT.
559 #include <sys/socket.h>
560 #ifndef CMSG_SPACE
561 #define CMSG_SPACE(len) (_CMSG_ALIGN(sizeof(struct cmsghdr)) + _CMSG_ALIGN(len))
562 #endif
563 #ifndef CMSG_LEN
564 #define CMSG_LEN(len) (_CMSG_ALIGN(sizeof(struct cmsghdr)) + (len))
565 #endif
566 #ifndef NO_IPV6
567 # define HAS_IPV6
568 #endif
569 #define BROKEN_AI_PASSIVE_NULL_HOST
570 #define BROKEN_AI_NULL_SERVICE
571 #define USE_SYSV_POLL
572 #endif
574 #ifdef AIX4
575 #define SUPPORTED
576 #include <sys/types.h>
577 #define UINT32_TYPE unsigned int
578 #define UINT16_TYPE unsigned short
579 #define MISSING_SETENV
580 #define _PATH_BSHELL "/bin/sh"
581 #define _PATH_MAILDIR "/var/spool/mail" /* paths.h lies */
582 #define _PATH_DEFPATH "/usr/bin:/usr/ucb"
583 #define _PATH_STDPATH "/usr/bin:/usr/sbin:/usr/ucb"
584 #define HAS_FCNTL_LOCK
585 #define INTERNAL_LOCK MYFLOCK_STYLE_FCNTL
586 #define DEF_MAILBOX_LOCK "fcntl, dotlock"
587 #define USE_SYS_SELECT_H
588 #define HAS_FSYNC
589 #define HAS_DBM
590 #define DEF_DB_TYPE "dbm"
591 #define ALIAS_DB_MAP "dbm:/etc/aliases"
592 #define HAS_NIS
593 #define HAS_SA_LEN
594 #define GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *) 0)
595 #define RESOLVE_H_NEEDS_STDIO_H
596 #define ROOT_PATH "/bin:/usr/bin:/sbin:/usr/sbin:/usr/ucb"
597 #define SOCKADDR_SIZE size_t
598 #define SOCKOPT_SIZE size_t
599 #define USE_STATVFS
600 #define STATVFS_IN_SYS_STATVFS_H
601 #define STRCASECMP_IN_STRINGS_H
602 #if 0
603 extern time_t time(time_t *);
604 extern int seteuid(uid_t);
605 extern int setegid(gid_t);
606 extern int initgroups(const char *, int);
608 #endif
609 #define NATIVE_SENDMAIL_PATH "/usr/lib/sendmail"
610 #define NATIVE_MAILQ_PATH "/usr/sbin/mailq"
611 #define NATIVE_NEWALIAS_PATH "/usr/sbin/newaliases"
612 #define NATIVE_COMMAND_DIR "/usr/sbin"
613 #define NATIVE_DAEMON_DIR "/usr/libexec/postfix"
615 #define CANT_USE_SEND_RECV_MSG
616 #endif
618 #ifdef AIX3
619 #define SUPPORTED
620 #include <sys/types.h>
621 #define UINT32_TYPE unsigned int
622 #define UINT16_TYPE unsigned short
623 #define MISSING_SETENV
624 #define _PATH_BSHELL "/bin/sh"
625 #define _PATH_MAILDIR "/var/spool/mail" /* paths.h lies */
626 #define _PATH_DEFPATH "/usr/bin:/usr/ucb"
627 #define _PATH_STDPATH "/usr/bin:/usr/sbin:/usr/ucb"
628 #define HAS_FCNTL_LOCK
629 #define INTERNAL_LOCK MYFLOCK_STYLE_FCNTL
630 #define DEF_MAILBOX_LOCK "fcntl, dotlock"
631 #define USE_SYS_SELECT_H
632 #define HAS_FSYNC
633 #define HAS_DBM
634 #define DEF_DB_TYPE "dbm"
635 #define ALIAS_DB_MAP "dbm:/etc/aliases"
636 #define HAS_NIS
637 #define HAS_SA_LEN
638 #define GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *) 0)
639 #define RESOLVE_H_NEEDS_STDIO_H
640 #define ROOT_PATH "/bin:/usr/bin:/sbin:/usr/sbin:/usr/ucb"
641 #define SOCKADDR_SIZE size_t
642 #define SOCKOPT_SIZE size_t
643 #define USE_STATFS
644 #define STATFS_IN_SYS_STATFS_H
645 #define STRCASECMP_IN_STRINGS_H
646 extern time_t time(time_t *);
647 extern int seteuid(uid_t);
648 extern int setegid(gid_t);
649 extern int initgroups(const char *, int);
651 #define NATIVE_SENDMAIL_PATH "/usr/lib/sendmail"
653 #define CANT_USE_SEND_RECV_MSG
654 #endif
657 * IRIX, a mix of System V Releases.
659 #if defined(IRIX5) || defined(IRIX6)
660 #define SUPPORTED
661 #include <sys/types.h>
662 #define UINT32_TYPE unsigned int
663 #define UINT16_TYPE unsigned short
664 #define MISSING_SETENV
665 #define _PATH_MAILDIR "/var/mail"
666 #define _PATH_BSHELL "/bin/sh"
667 #define _PATH_DEFPATH "/usr/bin:/usr/bsd"
668 #define _PATH_STDPATH "/usr/bin:/usr/sbin:/usr/bsd"
669 #define HAS_FCNTL_LOCK
670 #define INTERNAL_LOCK MYFLOCK_STYLE_FCNTL
671 #define DEF_MAILBOX_LOCK "fcntl, dotlock"
672 #define HAS_FSYNC
673 #define HAS_DBM
674 #define DEF_DB_TYPE "dbm"
675 #define ALIAS_DB_MAP "dbm:/etc/aliases"
676 #define HAS_NIS
677 #define USE_SYS_SOCKIO_H /* XXX check */
678 #define GETTIMEOFDAY(t) gettimeofday(t)
679 #define ROOT_PATH "/bin:/usr/bin:/sbin:/usr/sbin:/usr/bsd"
680 #define FIONREAD_IN_SYS_FILIO_H /* XXX check */
681 #define DBM_NO_TRAILING_NULL /* XXX check */
682 #define USE_STATVFS
683 #define STATVFS_IN_SYS_STATVFS_H
684 #define BROKEN_WRITE_SELECT_ON_NON_BLOCKING_PIPE
685 #define CANT_USE_SEND_RECV_MSG
686 #endif
688 #if defined(IRIX5)
689 #define MISSING_USLEEP
690 #endif
692 #if defined(IRIX6)
693 #ifndef NO_IPV6
694 # define HAS_IPV6
695 #endif
696 #define HAS_POSIX_REGEXP
697 #define PIPES_CANT_FIONREAD
698 #endif
701 * LINUX.
703 #ifdef LINUX2
704 #define SUPPORTED
705 #include <sys/types.h>
706 #define UINT32_TYPE unsigned int
707 #define UINT16_TYPE unsigned short
708 #include <features.h>
709 #define USE_PATHS_H
710 #define HAS_FLOCK_LOCK
711 #define HAS_FCNTL_LOCK
712 #define INTERNAL_LOCK MYFLOCK_STYLE_FLOCK
713 #define DEF_MAILBOX_LOCK "fcntl, dotlock" /* RedHat >= 4.x */
714 #define HAS_FSYNC
715 #define HAS_DB
716 #define DEF_DB_TYPE "hash"
717 #define ALIAS_DB_MAP "hash:/etc/aliases"
718 #define HAS_NIS
719 #define GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *) 0)
720 #define ROOT_PATH "/bin:/usr/bin:/sbin:/usr/sbin"
721 #define FIONREAD_IN_TERMIOS_H
722 #define USE_STATFS
723 #define STATFS_IN_SYS_VFS_H
724 #define PREPEND_PLUS_TO_OPTSTRING
725 #define HAS_POSIX_REGEXP
726 #define NATIVE_SENDMAIL_PATH "/usr/sbin/sendmail"
727 #define NATIVE_MAILQ_PATH "/usr/bin/mailq"
728 #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases"
729 #define NATIVE_COMMAND_DIR "/usr/sbin"
730 #define NATIVE_DAEMON_DIR "/usr/libexec/postfix"
731 #ifdef __GLIBC_PREREQ
732 # define HAVE_GLIBC_API_VERSION_SUPPORT(maj, min) __GLIBC_PREREQ(maj, min)
733 #else
734 # define HAVE_GLIBC_API_VERSION_SUPPORT(maj, min) \
735 ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
736 #endif
737 #if HAVE_GLIBC_API_VERSION_SUPPORT(2, 1)
738 # define SOCKADDR_SIZE socklen_t
739 # define SOCKOPT_SIZE socklen_t
740 #endif
741 #ifndef NO_IPV6
742 # define HAS_IPV6
743 # if HAVE_GLIBC_API_VERSION_SUPPORT(2, 4)
744 /* Really 2.3.3 or later, but there's no __GLIBC_MICRO version macro. */
745 # define HAVE_GETIFADDRS
746 # else
747 # define HAS_PROCNET_IFINET6
748 # define _PATH_PROCNET_IFINET6 "/proc/net/if_inet6"
749 # endif
750 #endif
751 #include <linux/version.h>
752 #if !defined(KERNEL_VERSION)
753 # define KERNEL_VERSION(a,b,c) (LINUX_VERSION_CODE + 1)
754 #endif
755 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,2,0)) \
756 || (__GLIBC__ < 2)
757 # define CANT_USE_SEND_RECV_MSG
758 # define DEF_SMTP_CACHE_DEMAND 0
759 #else
760 # define CANT_WRITE_BEFORE_SENDING_FD
761 #endif
762 #define PREFERRED_RAND_SOURCE "dev:/dev/urandom" /* introduced in 1.1 */
763 #ifndef NO_EPOLL
764 # define EVENTS_STYLE EVENTS_STYLE_EPOLL /* introduced in 2.5 */
765 #endif
766 #define USE_SYSV_POLL
767 #endif
769 #ifdef LINUX1
770 #define SUPPORTED
771 #include <sys/types.h>
772 #define UINT32_TYPE unsigned int
773 #define UINT16_TYPE unsigned short
774 #define USE_PATHS_H
775 #define HAS_FLOCK_LOCK
776 #define HAS_FCNTL_LOCK
777 #define INTERNAL_LOCK MYFLOCK_STYLE_FLOCK
778 #define DEF_MAILBOX_LOCK "dotlock" /* verified RedHat 3.03 */
779 #define HAS_FSYNC
780 #define HAS_DB
781 #define DEF_DB_TYPE "hash"
782 #define ALIAS_DB_MAP "hash:/etc/aliases"
783 #define HAS_NIS
784 #define GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *) 0)
785 #define ROOT_PATH "/bin:/usr/bin:/sbin:/usr/sbin"
786 #define FIONREAD_IN_TERMIOS_H /* maybe unnecessary */
787 #define USE_STATFS
788 #define STATFS_IN_SYS_VFS_H
789 #define PREPEND_PLUS_TO_OPTSTRING
790 #define HAS_POSIX_REGEXP
791 #define NATIVE_SENDMAIL_PATH "/usr/sbin/sendmail"
792 #define NATIVE_MAILQ_PATH "/usr/bin/mailq"
793 #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases"
794 #define NATIVE_COMMAND_DIR "/usr/sbin"
795 #define NATIVE_DAEMON_DIR "/usr/libexec/postfix"
796 #define CANT_USE_SEND_RECV_MSG
797 #define DEF_SMTP_CACHE_DEMAND 0
798 #endif
801 * GNU.
803 #ifdef GNU0
804 #define SUPPORTED
805 #include <sys/types.h>
806 #include <features.h>
807 #define USE_PATHS_H
808 #define HAS_FCNTL_LOCK
809 #define INTERNAL_LOCK MYFLOCK_STYLE_FCNTL
810 #define DEF_MAILBOX_LOCK "fcntl, dotlock" /* RedHat >= 4.x */
811 #define HAS_FSYNC
812 #define HAS_DB
813 #define DEF_DB_TYPE "hash"
814 #define ALIAS_DB_MAP "hash:/etc/aliases"
815 #define HAS_NIS
816 #define GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *) 0)
817 #define ROOT_PATH "/bin:/usr/bin:/sbin:/usr/sbin"
818 #define FIONREAD_IN_TERMIOS_H
819 #define USE_STATFS
820 #define STATFS_IN_SYS_VFS_H
821 #define UNIX_DOMAIN_CONNECT_BLOCKS_FOR_ACCEPT
822 #define PREPEND_PLUS_TO_OPTSTRING
823 #define HAS_POSIX_REGEXP
824 #define HAS_DLOPEN
825 #define NATIVE_SENDMAIL_PATH "/usr/sbin/sendmail"
826 #define NATIVE_MAILQ_PATH "/usr/bin/mailq"
827 #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases"
828 #define NATIVE_COMMAND_DIR "/usr/sbin"
829 #ifdef DEBIAN
830 #define NATIVE_DAEMON_DIR "/usr/lib/postfix"
831 #ifndef DEF_MANPAGE_DIR
832 #define DEF_MANPAGE_DIR "/usr/share/man"
833 #endif
834 #ifndef DEF_SAMPLE_DIR
835 #define DEF_SAMPLE_DIR "/usr/share/doc/postfix/examples"
836 #endif
837 #ifndef DEF_README_DIR
838 #define DEF_README_DIR "/usr/share/doc/postfix"
839 #endif
840 #else
841 #define NATIVE_DAEMON_DIR "/usr/libexec/postfix"
842 #endif
843 #define SOCKADDR_SIZE socklen_t
844 #define SOCKOPT_SIZE socklen_t
845 #ifdef __FreeBSD_kernel__
846 # define HAS_DUPLEX_PIPE
847 # define HAS_ISSETUGID
848 #endif
849 #ifndef NO_IPV6
850 # define HAS_IPV6
851 # ifdef __FreeBSD_kernel__
852 # define HAVE_GETIFADDRS
853 # else
854 # define HAS_PROCNET_IFINET6
855 # define _PATH_PROCNET_IFINET6 "/proc/net/if_inet6"
856 # endif
857 #endif
858 #define CANT_USE_SEND_RECV_MSG
859 #define DEF_SMTP_CACHE_DEMAND 0
860 #define PREFERRED_RAND_SOURCE "dev:/dev/urandom"
861 #endif
864 * HPUX11 was copied from HPUX10, but can perhaps be trimmed down a bit.
866 #ifdef HPUX11
867 #define SUPPORTED
868 #define USE_SIG_RETURN
869 #include <sys/types.h>
870 #define UINT32_TYPE unsigned int
871 #define UINT16_TYPE unsigned short
872 #define HAS_DBM
873 #define HAS_FCNTL_LOCK
874 #define INTERNAL_LOCK MYFLOCK_STYLE_FCNTL
875 #define DEF_MAILBOX_LOCK "fcntl, dotlock"
876 #define HAS_FSYNC
877 #define DEF_DB_TYPE "dbm"
878 #define ALIAS_DB_MAP "dbm:/etc/mail/aliases"
879 #define ROOT_PATH "/usr/bin:/sbin:/usr/sbin"
880 #define MISSING_SETENV
881 #define HAS_NIS
882 #define GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *) 0)
883 #define _PATH_BSHELL "/bin/sh"
884 #define _PATH_MAILDIR "/var/mail"
885 #define _PATH_DEFPATH "/usr/bin"
886 #define _PATH_STDPATH "/usr/bin:/sbin:/usr/sbin"
887 #define MISSING_SETEUID
888 #define HAVE_SETRESUID
889 #define MISSING_SETEGID
890 #define HAVE_SETRESGID
891 extern int h_errno; /* <netdb.h> imports too much stuff */
893 #define USE_STATFS
894 #define STATFS_IN_SYS_VFS_H
895 #define HAS_POSIX_REGEXP
896 #define NATIVE_SENDMAIL_PATH "/usr/sbin/sendmail"
897 #define NATIVE_MAILQ_PATH "/usr/bin/mailq"
898 #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases"
899 #define NATIVE_COMMAND_DIR "/usr/sbin"
900 #define NATIVE_DAEMON_DIR "/usr/libexec/postfix"
901 #endif
903 #ifdef HPUX10
904 #define SUPPORTED
905 #define USE_SIG_RETURN
906 #include <sys/types.h>
907 #define UINT32_TYPE unsigned int
908 #define UINT16_TYPE unsigned short
909 #define HAS_DBM
910 #define HAS_FCNTL_LOCK
911 #define INTERNAL_LOCK MYFLOCK_STYLE_FCNTL
912 #define DEF_MAILBOX_LOCK "fcntl, dotlock"
913 #define HAS_FSYNC
914 #define DEF_DB_TYPE "dbm"
915 #define ALIAS_DB_MAP "dbm:/etc/mail/aliases"
916 #define ROOT_PATH "/usr/bin:/sbin:/usr/sbin"
917 #define MISSING_SETENV
918 #define HAS_NIS
919 #define GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *) 0)
920 #define _PATH_BSHELL "/bin/sh"
921 #define _PATH_MAILDIR "/var/mail"
922 #define _PATH_DEFPATH "/usr/bin"
923 #define _PATH_STDPATH "/usr/bin:/sbin:/usr/sbin"
924 #define MISSING_SETEUID
925 #define HAVE_SETRESUID
926 #define MISSING_SETEGID
927 #define HAVE_SETRESGID
928 extern int h_errno; /* <netdb.h> imports too much stuff */
930 #define USE_STATFS
931 #define STATFS_IN_SYS_VFS_H
932 #define HAS_POSIX_REGEXP
933 #define NATIVE_SENDMAIL_PATH "/usr/sbin/sendmail"
934 #define NATIVE_MAILQ_PATH "/usr/bin/mailq"
935 #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases"
936 #define NATIVE_COMMAND_DIR "/usr/sbin"
937 #define NATIVE_DAEMON_DIR "/usr/libexec/postfix"
938 #endif
940 #ifdef HPUX9
941 #define SUPPORTED
942 #define USE_SIG_RETURN
943 #include <sys/types.h>
944 #define UINT32_TYPE unsigned int
945 #define UINT16_TYPE unsigned short
946 #define HAS_DBM
947 #define HAS_FCNTL_LOCK
948 #define INTERNAL_LOCK MYFLOCK_STYLE_FCNTL
949 #define DEF_MAILBOX_LOCK "fcntl, dotlock"
950 #define HAS_FSYNC
951 #define HAS_NIS
952 #define MISSING_SETENV
953 #define MISSING_RLIMIT_FSIZE
954 #define GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *) 0)
955 #define DEF_DB_TYPE "dbm"
956 #define ALIAS_DB_MAP "dbm:/usr/lib/aliases"
957 #define ROOT_PATH "/bin:/usr/bin:/etc"
958 #define _PATH_BSHELL "/bin/sh"
959 #define _PATH_MAILDIR "/usr/mail"
960 #define _PATH_DEFPATH "/bin:/usr/bin"
961 #define _PATH_STDPATH "/bin:/usr/bin:/etc"
962 #define MISSING_SETEUID
963 #define HAVE_SETRESUID
964 #define MISSING_SETEGID
965 #define HAVE_SETRESGID
966 extern int h_errno;
968 #define USE_ULIMIT /* no setrlimit() */
969 #define USE_STATFS
970 #define STATFS_IN_SYS_VFS_H
971 #define HAS_POSIX_REGEXP
972 #define NATIVE_SENDMAIL_PATH "/usr/bin/sendmail"
973 #define NATIVE_MAILQ_PATH "/usr/bin/mailq"
974 #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases"
975 #define NATIVE_DAEMON_DIR "/usr/libexec/postfix"
976 #endif
979 * NEXTSTEP3, without -lposix, because its naming service is broken.
981 #ifdef NEXTSTEP3
982 #define SUPPORTED
983 #include <sys/types.h>
984 #define UINT32_TYPE unsigned int
985 #define UINT16_TYPE unsigned short
986 #define HAS_DBM
987 #define HAS_FLOCK_LOCK
988 #define INTERNAL_LOCK MYFLOCK_STYLE_FLOCK
989 #define DEF_MAILBOX_LOCK "flock, dotlock"
990 #define USE_STATFS
991 #define HAVE_SYS_DIR_H
992 #define STATFS_IN_SYS_VFS_H
993 #define HAS_FSYNC
994 #define HAS_NIS
995 #define HAS_NETINFO
996 #define MISSING_SETENV_PUTENV
997 #define MISSING_MKFIFO
998 #define MISSING_SIGSET_T
999 #define MISSING_SIGACTION
1000 #define MISSING_STD_FILENOS
1001 #define MISSING_SETSID
1002 #define MISSING_WAITPID
1003 #define MISSING_UTIMBUF
1004 #define HAS_WAIT4
1005 #define WAIT_STATUS_T union wait
1006 #define NORMAL_EXIT_STATUS(x) (WIFEXITED(x) && !WEXITSTATUS (x))
1007 #define GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *) 0)
1008 #define _PATH_MAILDIR "/usr/spool/mail"
1009 #define _PATH_BSHELL "/bin/sh"
1010 #define _PATH_DEFPATH "/bin:/usr/bin:/usr/ucb"
1011 #define _PATH_STDPATH "/bin:/usr/bin:/usr/ucb"
1012 #define ROOT_PATH "/bin:/usr/bin:/usr/etc:/usr/ucb"
1013 #define DEF_DB_TYPE "dbm"
1014 #define ALIAS_DB_MAP "netinfo:/aliases"
1015 #include <libc.h>
1016 #define MISSING_POSIX_S_IS
1017 #define MISSING_POSIX_S_MODES
1018 /* It's amazing what is all missing... */
1019 #define isascii(c) ((unsigned)(c)<=0177)
1020 extern int opterr;
1021 typedef unsigned short mode_t;
1023 #define MISSING_PID_T
1024 #define MISSING_STRFTIME_E
1025 #define FD_CLOEXEC 1
1026 #define O_NONBLOCK O_NDELAY
1027 #define WEXITSTATUS(x) ((x).w_retcode)
1028 #define WTERMSIG(x) ((x).w_termsig)
1029 #endif
1032 * OPENSTEP does not have posix (some fix...)
1034 #ifdef OPENSTEP4
1035 #define SUPPORTED
1036 #include <sys/types.h>
1037 #define UINT32_TYPE unsigned int
1038 #define UINT16_TYPE unsigned short
1039 #define HAS_DBM
1040 #define HAS_FLOCK_LOCK
1041 #define INTERNAL_LOCK MYFLOCK_STYLE_FLOCK
1042 #define DEF_MAILBOX_LOCK "flock, dotlock"
1043 #define USE_STATFS
1044 #define HAVE_SYS_DIR_H
1045 #define STATFS_IN_SYS_VFS_H
1046 #define HAS_FSYNC
1047 #define HAS_NIS
1048 #define HAS_NETINFO
1049 #define MISSING_SETENV_PUTENV
1050 #define MISSING_MKFIFO
1051 #define MISSING_SIGSET_T
1052 #define MISSING_SIGACTION
1053 #define MISSING_STD_FILENOS
1054 #define MISSING_SETSID
1055 #define MISSING_WAITPID
1056 #define MISSING_UTIMBUF
1057 #define HAS_WAIT4
1058 #define WAIT_STATUS_T union wait
1059 #define NORMAL_EXIT_STATUS(x) (WIFEXITED(x) && !WEXITSTATUS (x))
1060 #define GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *) 0)
1061 #define _PATH_MAILDIR "/usr/spool/mail"
1062 #define _PATH_BSHELL "/bin/sh"
1063 #define _PATH_DEFPATH "/bin:/usr/bin:/usr/ucb"
1064 #define _PATH_STDPATH "/bin:/usr/bin:/usr/ucb"
1065 #define ROOT_PATH "/bin:/usr/bin:/usr/etc:/usr/ucb"
1066 #define DEF_DB_TYPE "dbm"
1067 #define ALIAS_DB_MAP "netinfo:/aliases"
1068 #include <libc.h>
1069 #define MISSING_POSIX_S_IS
1070 #define MISSING_POSIX_S_MODES
1071 /* It's amazing what is all missing... */
1072 #define isascii(c) ((unsigned)(c)<=0177)
1073 extern int opterr;
1074 typedef unsigned short mode_t;
1076 #define MISSING_PID_T
1077 #define MISSING_STRFTIME_E
1078 #define FD_CLOEXEC 1
1079 #define O_NONBLOCK O_NDELAY
1080 #define WEXITSTATUS(x) ((x).w_retcode)
1081 #define WTERMSIG(x) ((x).w_termsig)
1082 #define NORETURN /* the native compiler */
1083 #define PRINTFLIKE(x,y)
1084 #define SCANFLIKE(x,y)
1085 #endif
1087 #ifdef ReliantUnix543
1088 #define SUPPORTED
1089 #include <sys/types.h>
1090 #define UINT32_TYPE unsigned int
1091 #define UINT16_TYPE unsigned short
1092 #define MISSING_SETENV
1093 #define _PATH_DEFPATH "/usr/bin:/usr/ucb"
1094 #define _PATH_BSHELL "/bin/sh"
1095 #define _PATH_MAILDIR "/var/spool/mail"
1096 #define HAS_FCNTL_LOCK
1097 #define INTERNAL_LOCK MYFLOCK_STYLE_FCNTL
1098 #define DEF_MAILBOX_LOCK "fcntl, dotlock"
1099 #define HAS_FSYNC
1100 #define FIONREAD_IN_SYS_FILIO_H
1101 #define USE_SYS_SOCKIO_H
1102 #define HAS_DBM
1103 #define DEF_DB_TYPE "dbm"
1104 #define ALIAS_DB_MAP "dbm:/var/adm/sendmail/aliases"
1105 extern int optind; /* XXX use <getopt.h> */
1106 extern char *optarg; /* XXX use <getopt.h> */
1107 extern int opterr; /* XXX use <getopt.h> */
1109 #define HAS_NIS
1110 #define GETTIMEOFDAY(t) gettimeofday(t)
1111 #define ROOT_PATH "/bin:/usr/bin:/sbin:/usr/sbin:/usr/ucb"
1112 #define USE_STATVFS
1113 #define STATVFS_IN_SYS_STATVFS_H
1114 #define MISSING_USLEEP
1115 #endif
1117 #ifdef DCOSX1 /* Siemens Pyramid */
1118 #define SUPPORTED
1119 #include <sys/types.h>
1120 #define UINT32_TYPE unsigned int
1121 #define UINT16_TYPE unsigned short
1122 #define _PATH_MAILDIR "/var/mail"
1123 #define _PATH_BSHELL "/bin/sh"
1124 #define _PATH_DEFPATH "/usr/bin:/usr/ucb"
1125 #define _PATH_STDPATH "/usr/bin:/usr/sbin:/usr/ucb"
1126 #define MISSING_SETENV
1127 #define HAS_FCNTL_LOCK
1128 #define INTERNAL_LOCK MYFLOCK_STYLE_FCNTL
1129 #define DEF_MAILBOX_LOCK "fcntl, dotlock"
1130 #define HAS_FSYNC
1131 #define DEF_DB_TYPE "hash"
1132 #define ALIAS_DB_MAP "hash:/etc/aliases"
1133 /* Uncomment the following line if you have NIS package installed */
1134 /* #define HAS_NIS */
1135 #define USE_SYS_SOCKIO_H
1136 #define GETTIMEOFDAY(t) gettimeofday(t,NULL)
1137 #define ROOT_PATH "/bin:/usr/bin:/sbin:/usr/sbin:/usr/ucb"
1138 #define FIONREAD_IN_SYS_FILIO_H
1139 #define DBM_NO_TRAILING_NULL
1140 #define USE_STATVFS
1141 #define STATVFS_IN_SYS_STATVFS_H
1142 #ifndef S_ISSOCK
1143 #define S_ISSOCK(mode) ((mode&0xF000) == 0xC000)
1144 #endif
1145 #endif
1147 #ifdef SCO5
1148 #define SUPPORTED
1149 #include <sys/types.h>
1150 #include <sys/socket.h>
1151 extern int h_errno;
1153 #define UINT32_TYPE unsigned int
1154 #define UINT16_TYPE unsigned short
1155 #define _PATH_MAILDIR "/usr/spool/mail"
1156 #define _PATH_BSHELL "/bin/sh"
1157 #define _PATH_DEFPATH "/bin:/usr/bin"
1158 #define USE_PATHS_H
1159 #define HAS_FCNTL_LOCK
1160 #define INTERNAL_LOCK MYFLOCK_STYLE_FCNTL
1161 #define DEF_MAILBOX_LOCK "fcntl, dotlock"
1162 #define HAS_FSYNC
1163 #define HAS_DBM
1164 #define DEF_DB_TYPE "dbm"
1165 #define ALIAS_DB_MAP "dbm:/etc/mail/aliases"
1166 #define DBM_NO_TRAILING_NULL
1167 #define HAS_NIS
1168 #define GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *) 0)
1169 #define ROOT_PATH "/bin:/etc:/usr/bin:/tcb/bin"
1170 #define USE_STATVFS
1171 #define STATVFS_IN_SYS_STATVFS_H
1172 #define MISSING_SETENV
1173 #define STRCASECMP_IN_STRINGS_H
1174 /* SCO5 misses just S_ISSOCK, the others are there
1175 * Use C_ISSOCK definition from cpio.h.
1177 #include <cpio.h>
1178 #define S_ISSOCK(mode) (((mode) & (S_IFMT)) == (C_ISSOCK))
1179 #define CANT_USE_SEND_RECV_MSG
1180 #define DEF_SMTP_CACHE_DEMAND 0
1181 #endif
1184 * We're not going to try to guess like configure does.
1186 #ifndef SUPPORTED
1187 #error "unsupported platform"
1188 #endif
1191 * Allow command line flags to override native settings
1193 #ifndef DEF_COMMAND_DIR
1194 #ifdef NATIVE_COMMAND_DIR
1195 #define DEF_COMMAND_DIR NATIVE_COMMAND_DIR
1196 #endif
1197 #endif
1199 #ifndef DEF_DAEMON_DIR
1200 #ifdef NATIVE_DAEMON_DIR
1201 #define DEF_DAEMON_DIR NATIVE_DAEMON_DIR
1202 #endif
1203 #endif
1205 #ifndef DEF_SENDMAIL_PATH
1206 #ifdef NATIVE_SENDMAIL_PATH
1207 #define DEF_SENDMAIL_PATH NATIVE_SENDMAIL_PATH
1208 #endif
1209 #endif
1211 #ifndef DEF_MAILQ_PATH
1212 #ifdef NATIVE_MAILQ_PATH
1213 #define DEF_MAILQ_PATH NATIVE_MAILQ_PATH
1214 #endif
1215 #endif
1217 #ifndef DEF_NEWALIAS_PATH
1218 #ifdef NATIVE_NEWALIAS_PATH
1219 #define DEF_NEWALIAS_PATH NATIVE_NEWALIAS_PATH
1220 #endif
1221 #endif
1223 #define CAST_CHAR_PTR_TO_INT(cptr) ((int) (long) (cptr))
1224 #define CAST_INT_TO_CHAR_PTR(ival) ((char *) (long) (ival))
1226 #ifdef DUP2_DUPS_CLOSE_ON_EXEC
1227 /* dup2_pass_on_exec() can be found in util/sys_compat.c */
1228 extern int dup2_pass_on_exec(int oldd, int newd);
1230 #define DUP2 dup2_pass_on_exec
1231 #else
1232 #define DUP2 dup2
1233 #endif
1235 #ifdef PREPEND_PLUS_TO_OPTSTRING
1236 #define GETOPT(argc, argv, str) getopt((argc), (argv), "+" str)
1237 #else
1238 #define GETOPT(argc, argv, str) getopt((argc), (argv), (str))
1239 #endif
1240 #define OPTIND (optind > 0 ? optind : 1)
1243 * Check for required but missing definitions.
1245 #if !defined(HAS_FCNTL_LOCK) && !defined(HAS_FLOCK_LOCK)
1246 #error "define HAS_FCNTL_LOCK and/or HAS_FLOCK_LOCK"
1247 #endif
1249 #if !defined(DEF_MAILBOX_LOCK)
1250 #error "define DEF_MAILBOX_LOCK"
1251 #endif
1253 #if !defined(INTERNAL_LOCK)
1254 #error "define INTERNAL_LOCK"
1255 #endif
1257 #if defined(USE_STATFS) && defined(USE_STATVFS)
1258 #error "define USE_STATFS or USE_STATVFS, not both"
1259 #endif
1261 #if !defined(USE_STATFS) && !defined(USE_STATVFS)
1262 #error "define USE_STATFS or USE_STATVFS"
1263 #endif
1266 * Defaults for systems that pre-date IPv6 support.
1268 #ifndef HAS_IPV6
1269 #define EMULATE_IPV4_ADDRINFO
1270 #define MISSING_INET_PTON
1271 #define MISSING_INET_NTOP
1272 extern const char *inet_ntop(int, const void *, char *, size_t);
1273 extern int inet_pton(int, const char *, void *);
1275 #endif
1278 * Defaults for systems without kqueue, /dev/poll or epoll support.
1279 * master/multi-server.c and *qmgr/qmgr_transport.c depend on this.
1281 #if !defined(EVENTS_STYLE)
1282 #define EVENTS_STYLE EVENTS_STYLE_SELECT
1283 #endif
1285 #define EVENTS_STYLE_SELECT 1 /* Traditional BSD select */
1286 #define EVENTS_STYLE_KQUEUE 2 /* FreeBSD kqueue */
1287 #define EVENTS_STYLE_DEVPOLL 3 /* Solaris /dev/poll */
1288 #define EVENTS_STYLE_EPOLL 4 /* Linux epoll */
1290 #if !defined(USE_SYSV_POLL) && (EVENTS_STYLE != EVENTS_STYLE_SELECT)
1291 #error "need USE_SYSV_POLL with EVENTS_STYLE != EVENTS_STYLE_SELECT"
1292 #endif
1295 * Defaults for all systems.
1297 #ifndef DEF_INET_PROTOCOLS
1298 #define DEF_INET_PROTOCOLS "ipv4"
1299 #endif
1302 * Defaults for systems that pre-date POSIX socklen_t.
1304 #ifndef SOCKADDR_SIZE
1305 #define SOCKADDR_SIZE int
1306 #endif
1308 #ifndef SOCKOPT_SIZE
1309 #define SOCKOPT_SIZE int
1310 #endif
1313 * Defaults for normal systems.
1315 #ifndef LOCAL_LISTEN
1316 #define LOCAL_LISTEN unix_listen
1317 #define LOCAL_ACCEPT unix_accept
1318 #define LOCAL_CONNECT unix_connect
1319 #define LOCAL_TRIGGER unix_trigger
1320 #define LOCAL_SEND_FD unix_send_fd
1321 #define LOCAL_RECV_FD unix_recv_fd
1322 #endif
1324 #ifndef PASS_LISTEN
1325 #define PASS_LISTEN upass_listen
1326 #define PASS_ACCEPT upass_accept
1327 #define PASS_TRIGGER upass_trigger
1328 #endif
1330 #if !defined (HAVE_SYS_NDIR_H) && !defined (HAVE_SYS_DIR_H) \
1331 && !defined (HAVE_NDIR_H)
1332 #define HAVE_DIRENT_H
1333 #endif
1335 #ifndef WAIT_STATUS_T
1336 typedef int WAIT_STATUS_T;
1338 #define NORMAL_EXIT_STATUS(status) ((status) == 0)
1339 #endif
1341 #ifndef OCTAL_TO_UNSIGNED
1342 #define OCTAL_TO_UNSIGNED(res, str) ((res) = strtoul((str), (char **) 0, 8))
1343 #endif
1346 * Avoid useless type mis-matches when using sizeof in an integer context.
1348 #define INT_SIZEOF(foo) ((int) sizeof(foo))
1351 * Turn on the compatibility stuff.
1353 #ifdef MISSING_UTIMBUF
1354 struct utimbuf {
1355 time_t actime;
1356 time_t modtime;
1359 #endif
1361 #ifdef MISSING_STRERROR
1362 extern const char *strerror(int);
1364 #endif
1366 #if defined (MISSING_SETENV) || defined (MISSING_SETENV_PUTENV)
1367 extern int setenv(const char *, const char *, int);
1369 #endif
1371 #ifdef MISSING_SETEUID
1372 extern int seteuid(uid_t euid);
1374 #endif
1376 #ifdef MISSING_SETEGID
1377 extern int setegid(gid_t egid);
1379 #endif
1381 #ifdef MISSING_MKFIFO
1382 extern int mkfifo(char *, int);
1384 #endif
1386 #ifdef MISSING_WAITPID
1387 extern int waitpid(int, WAIT_STATUS_T *status, int options);
1389 #endif
1391 #ifdef MISSING_SETSID
1392 extern int setsid(void);
1394 #endif
1396 #ifndef HAS_CLOSEFROM
1397 extern int closefrom(int);
1399 #endif
1401 #ifdef MISSING_STD_FILENOS
1402 #define STDIN_FILENO 0
1403 #define STDOUT_FILENO 1
1404 #define STDERR_FILENO 2
1405 #endif
1407 #ifdef MISSING_PID_T
1408 typedef int pid_t;
1410 #endif
1412 #ifdef MISSING_POSIX_S_IS
1413 #define S_ISBLK(mode) (((mode) & (_S_IFMT)) == (_S_IFBLK))
1414 #define S_ISCHR(mode) (((mode) & (_S_IFMT)) == (_S_IFCHR))
1415 #define S_ISDIR(mode) (((mode) & (_S_IFMT)) == (_S_IFDIR))
1416 #define S_ISSOCK(mode) (((mode) & (_S_IFMT)) == (_S_IFSOCK))
1417 #define S_ISFIFO(mode) (((mode) & (_S_IFMT)) == (_S_IFIFO))
1418 #define S_ISREG(mode) (((mode) & (_S_IFMT)) == (_S_IFREG))
1419 #define S_ISLNK(mode) (((mode) & (_S_IFMT)) == (_S_IFLNK))
1420 #endif
1422 #ifdef MISSING_POSIX_S_MODES
1423 #define S_IRUSR _S_IRUSR
1424 #define S_IRGRP 0000040
1425 #define S_IROTH 0000004
1426 #define S_IWUSR _S_IWUSR
1427 #define S_IWGRP 0000020
1428 #define S_IWOTH 0000002
1429 #define S_IXUSR _S_IXUSR
1430 #define S_IXGRP 0000010
1431 #define S_IXOTH 0000001
1432 #define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
1433 #endif
1436 * Memory alignment of memory allocator results. By default we align for
1437 * doubles.
1439 #ifndef ALIGN_TYPE
1440 # if defined(__hpux) && defined(__ia64)
1441 # define ALIGN_TYPE __float80
1442 # elif defined(__ia64__)
1443 # define ALIGN_TYPE long double
1444 # else
1445 # define ALIGN_TYPE double
1446 # endif
1447 #endif
1450 * Need to specify what functions never return, so that the compiler can
1451 * warn for missing initializations and other trouble. However, OPENSTEP4
1452 * gcc 2.7.x cannot handle this so we define this only if NORETURN isn't
1453 * already defined above.
1455 * Data point: gcc 2.7.2 has __attribute__ (Wietse Venema) but gcc 2.6.3 does
1456 * not (Clive Jones). So we'll set the threshold at 2.7.
1458 #ifndef NORETURN
1459 #if (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) || __GNUC__ >= 3
1460 #define NORETURN void __attribute__((__noreturn__))
1461 #endif
1462 #endif
1464 #ifndef NORETURN
1465 #define NORETURN void
1466 #endif
1469 * Turn on format string argument checking. This is more accurate than
1470 * printfck, but it misses #ifdef-ed code. XXX I am just guessing at what
1471 * gcc versions support this. In order to turn this off for some platforms,
1472 * specify #define PRINTFLIKE and #define SCANFLIKE in the system-dependent
1473 * sections above.
1475 #ifndef PRINTFLIKE
1476 #if (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) || __GNUC__ == 3
1477 #define PRINTFLIKE(x,y) __attribute__ ((format (printf, (x), (y))))
1478 #else
1479 #define PRINTFLIKE(x,y)
1480 #endif
1481 #endif
1483 #ifndef SCANFLIKE
1484 #if (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) || __GNUC__ == 3
1485 #define SCANFLIKE(x,y) __attribute__ ((format (scanf, (x), (y))))
1486 #else
1487 #define SCANFLIKE(x,y)
1488 #endif
1489 #endif
1492 * ISO C says that the "volatile" qualifier protects against optimizations
1493 * that cause longjmp() to clobber local variables.
1495 #ifndef NOCLOBBER
1496 #define NOCLOBBER volatile
1497 #endif
1500 * Bit banging!! There is no official constant that defines the INT_MAX
1501 * equivalent of the off_t type. Wietse came up with the following macro
1502 * that works as long as off_t is some two's complement number.
1504 #include <limits.h>
1505 #define __MAXINT__(T) ((T) (((((T) 1) << ((sizeof(T) * CHAR_BIT) - 1)) ^ ((T) -1))))
1506 #ifndef OFF_T_MAX
1507 #define OFF_T_MAX __MAXINT__(off_t)
1508 #endif
1511 * Setting globals like h_errno can be problematic when Postfix is linked
1512 * with multi-threaded libraries.
1514 #ifndef SET_H_ERRNO
1515 #define SET_H_ERRNO(err) (h_errno = (err))
1516 #endif
1519 * Don't mix socket message send/receive calls with socket stream read/write
1520 * calls. The fact that you can get away with it only on some stacks implies
1521 * that there is no long-term guarantee.
1523 #ifndef CAN_WRITE_BEFORE_SENDING_FD
1524 #define CANT_WRITE_BEFORE_SENDING_FD
1525 #endif
1528 * FreeBSD sendmsg(2) says that after sending a file descriptor, the sender
1529 * must not immediately close the descriptor, otherwise it may close the
1530 * descriptor before it is actually sent.
1532 #ifndef DONT_WAIT_AFTER_SENDING_FD
1533 #define MUST_READ_AFTER_SENDING_FD
1534 #endif
1537 * Hope for the best.
1539 #ifndef UINT32_TYPE
1540 #define UINT32_TYPE uint32_t
1541 #define UINT16_TYPE uint16_t
1542 #endif
1543 #define UINT32_SIZE 4
1544 #define UINT16_SIZE 2
1547 * Safety. On some systems, ctype.h misbehaves with non-ASCII or negative
1548 * characters. More importantly, Postfix uses the ISXXX() macros to ensure
1549 * protocol compliance, so we have to rule out non-ASCII characters.
1551 * XXX The (unsigned char) casts in isalnum() etc arguments are unnecessary
1552 * because the ISASCII() guard already ensures that the values are
1553 * non-negative; the casts are done anyway to shut up chatty compilers.
1555 #define ISASCII(c) isascii(_UCHAR_(c))
1556 #define _UCHAR_(c) ((unsigned char)(c))
1557 #define ISALNUM(c) (ISASCII(c) && isalnum((unsigned char)(c)))
1558 #define ISALPHA(c) (ISASCII(c) && isalpha((unsigned char)(c)))
1559 #define ISCNTRL(c) (ISASCII(c) && iscntrl((unsigned char)(c)))
1560 #define ISDIGIT(c) (ISASCII(c) && isdigit((unsigned char)(c)))
1561 #define ISGRAPH(c) (ISASCII(c) && isgraph((unsigned char)(c)))
1562 #define ISLOWER(c) (ISASCII(c) && islower((unsigned char)(c)))
1563 #define ISPRINT(c) (ISASCII(c) && isprint((unsigned char)(c)))
1564 #define ISPUNCT(c) (ISASCII(c) && ispunct((unsigned char)(c)))
1565 #define ISSPACE(c) (ISASCII(c) && isspace((unsigned char)(c)))
1566 #define ISUPPER(c) (ISASCII(c) && isupper((unsigned char)(c)))
1567 #define TOLOWER(c) (ISUPPER(c) ? tolower((unsigned char)(c)) : (c))
1568 #define TOUPPER(c) (ISLOWER(c) ? toupper((unsigned char)(c)) : (c))
1571 * Scaffolding. I don't want to lose messages while the program is under
1572 * development.
1574 extern int REMOVE(const char *);
1576 /* LICENSE
1577 /* .ad
1578 /* .fi
1579 /* The Secure Mailer license must be distributed with this software.
1580 /* AUTHOR(S)
1581 /* Wietse Venema
1582 /* IBM T.J. Watson Research
1583 /* P.O. Box 704
1584 /* Yorktown Heights, NY 10598, USA
1585 /*--*/
1587 #endif