12311Sjkh/* Copyright 1993,1994 by Paul Vixie
22311Sjkh * All rights reserved
32311Sjkh *
42311Sjkh * Distribute freely, except: don't remove my name from the source or
52311Sjkh * documentation (don't take credit for my work), mark your changes (don't
62311Sjkh * get me blamed for your possible bugs), don't alter or remove this
72311Sjkh * notice.  May be sold if buildable source is provided to buyer.  No
82311Sjkh * warrantee of any kind, express or implied, is included with this
92311Sjkh * software; use at your own risk, responsibility for damages (if any) to
102311Sjkh * anyone resulting from the use of this software rests entirely with the
112311Sjkh * user.
122311Sjkh *
132311Sjkh * Send bug reports, bug fixes, enhancements, requests, flames, etc., and
142311Sjkh * I'll try to keep a version up to date.  I can be reached as follows:
152311Sjkh * Paul Vixie          <paul@vix.com>          uunet!decwrl!vixie!paul
162311Sjkh */
172311Sjkh
182311Sjkh/*
1950479Speter * $FreeBSD$
202311Sjkh */
212311Sjkh
222311Sjkh#ifndef __P
232311Sjkh# ifdef __STDC__
242311Sjkh#  define __P(x) x
252311Sjkh# else
262311Sjkh#  define __P(x) ()
272311Sjkh#  define const
282311Sjkh# endif
292311Sjkh#endif
302311Sjkh
312311Sjkh#if defined(UNIXPC) || defined(unixpc)
322311Sjkh# define UNIXPC 1
332311Sjkh# define ATT 1
342311Sjkh#endif
352311Sjkh
362311Sjkh#if defined(hpux) || defined(_hpux) || defined(__hpux)
372311Sjkh# define HPUX 1
382311Sjkh# define seteuid(e) setresuid(-1,e,-1)
392311Sjkh# define setreuid(r,e)	setresuid(r,e,-1)
402311Sjkh#endif
412311Sjkh
422311Sjkh#if defined(_IBMR2)
432311Sjkh# define AIX 1
442311Sjkh#endif
452311Sjkh
462311Sjkh#if defined(__convex__)
472311Sjkh# define CONVEX 1
482311Sjkh#endif
492311Sjkh
502311Sjkh#if defined(sgi) || defined(_sgi) || defined(__sgi)
512311Sjkh# define IRIX 1
522311Sjkh/* IRIX 4 hdrs are broken: one cannot #include both <stdio.h>
532311Sjkh * and <stdlib.h> because they disagree on system(), perror().
542311Sjkh * Therefore we must zap the "const" keyword BEFORE including
552311Sjkh * either of them.
562311Sjkh */
572311Sjkh# define const
582311Sjkh#endif
592311Sjkh
602311Sjkh#if defined(_UNICOS)
612311Sjkh# define UNICOS 1
622311Sjkh#endif
632311Sjkh
642311Sjkh#ifndef POSIX
652311Sjkh# if (BSD >= 199103) || defined(__linux) || defined(ultrix) || defined(AIX) ||\
662311Sjkh	defined(HPUX) || defined(CONVEX) || defined(IRIX)
672311Sjkh#  define POSIX
682311Sjkh# endif
692311Sjkh#endif
702311Sjkh
712311Sjkh#ifndef BSD
722311Sjkh# if defined(ultrix)
732311Sjkh#  define BSD 198902
742311Sjkh# endif
752311Sjkh#endif
762311Sjkh
772311Sjkh/*****************************************************************/
782311Sjkh
792311Sjkh#if !defined(BSD) && !defined(HPUX) && !defined(CONVEX) && !defined(__linux)
802311Sjkh# define NEED_VFORK
812311Sjkh#endif
822311Sjkh
832311Sjkh#if (!defined(BSD) || (BSD < 198902)) && !defined(__linux) && \
842311Sjkh	!defined(IRIX) && !defined(NeXT) && !defined(HPUX)
852311Sjkh# define NEED_STRCASECMP
862311Sjkh#endif
872311Sjkh
882311Sjkh#if (!defined(BSD) || (BSD < 198911)) && !defined(__linux) &&\
892311Sjkh	!defined(IRIX) && !defined(UNICOS) && !defined(HPUX)
902311Sjkh# define NEED_STRDUP
912311Sjkh#endif
922311Sjkh
932311Sjkh#if (!defined(BSD) || (BSD < 198911)) && !defined(POSIX) && !defined(NeXT)
942311Sjkh# define NEED_STRERROR
952311Sjkh#endif
962311Sjkh
972311Sjkh#if defined(HPUX) || defined(AIX) || defined(UNIXPC)
982311Sjkh# define NEED_FLOCK
992311Sjkh#endif
1002311Sjkh
1012311Sjkh#ifndef POSIX
1022311Sjkh# define NEED_SETSID
1032311Sjkh#endif
1042311Sjkh
1052311Sjkh#if (defined(POSIX) && !defined(BSD)) && !defined(__linux)
1062311Sjkh# define NEED_GETDTABLESIZE
1072311Sjkh#endif
1082311Sjkh
1098169Sache#ifdef POSIX
1108169Sache#include <unistd.h>
1118169Sache#ifdef _POSIX_SAVED_IDS
1122311Sjkh# define HAVE_SAVED_UIDS
1132311Sjkh#endif
1148169Sache#endif
1152311Sjkh
1162311Sjkh#if !defined(ATT) && !defined(__linux) && !defined(IRIX) && !defined(UNICOS)
1172311Sjkh# define USE_SIGCHLD
1182311Sjkh#endif
1192311Sjkh
1202311Sjkh#if !defined(AIX) && !defined(UNICOS)
1212311Sjkh# define SYS_TIME_H 1
1222311Sjkh#else
1232311Sjkh# define SYS_TIME_H 0
1242311Sjkh#endif
1252311Sjkh
1262311Sjkh#if defined(BSD) && !defined(POSIX)
1272311Sjkh# define USE_UTIMES
1282311Sjkh#endif
1292311Sjkh
1302311Sjkh#if defined(AIX) || defined(HPUX) || defined(IRIX)
1312311Sjkh# define NEED_SETENV
1322311Sjkh#endif
1332311Sjkh
1342311Sjkh#if !defined(UNICOS) && !defined(UNIXPC)
1352311Sjkh# define HAS_FCHOWN
1362311Sjkh#endif
1372311Sjkh
1382311Sjkh#if !defined(UNICOS) && !defined(UNIXPC)
1392311Sjkh# define HAS_FCHMOD
1402311Sjkh#endif
141