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