138494Sobrien/* 2310490Scy * Copyright (c) 1997-2014 Erez Zadok 338494Sobrien * Copyright (c) 1990 Jan-Simon Pendry 438494Sobrien * Copyright (c) 1990 Imperial College of Science, Technology & Medicine 538494Sobrien * Copyright (c) 1990 The Regents of the University of California. 638494Sobrien * All rights reserved. 738494Sobrien * 838494Sobrien * This code is derived from software contributed to Berkeley by 938494Sobrien * Jan-Simon Pendry at Imperial College, London. 1038494Sobrien * 1138494Sobrien * Redistribution and use in source and binary forms, with or without 1238494Sobrien * modification, are permitted provided that the following conditions 1338494Sobrien * are met: 1438494Sobrien * 1. Redistributions of source code must retain the above copyright 1538494Sobrien * notice, this list of conditions and the following disclaimer. 1638494Sobrien * 2. Redistributions in binary form must reproduce the above copyright 1738494Sobrien * notice, this list of conditions and the following disclaimer in the 1838494Sobrien * documentation and/or other materials provided with the distribution. 19310490Scy * 3. Neither the name of the University nor the names of its contributors 2038494Sobrien * may be used to endorse or promote products derived from this software 2138494Sobrien * without specific prior written permission. 2238494Sobrien * 2338494Sobrien * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2438494Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2538494Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2638494Sobrien * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2738494Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2838494Sobrien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2938494Sobrien * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3038494Sobrien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 3138494Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3238494Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3338494Sobrien * SUCH DAMAGE. 3438494Sobrien * 3538494Sobrien * 36174299Sobrien * File: am-utils/include/am_defs.h 37131706Smbr * $Id: am_defs.h,v 1.15.2.16 2004/05/12 15:54:31 ezk Exp $ 3851300Sobrien * $FreeBSD: stable/10/contrib/amd/include/am_defs.h 310490 2016-12-23 22:42:14Z cy $ 3938494Sobrien * 4038494Sobrien */ 4138494Sobrien 4238494Sobrien/* 4338494Sobrien * Definitions that are not specific to the am-utils package, but 4438494Sobrien * are rather generic, and can be used elsewhere. 4538494Sobrien */ 4638494Sobrien 4738494Sobrien#ifndef _AM_DEFS_H 4838494Sobrien#define _AM_DEFS_H 4938494Sobrien 5038494Sobrien/* 5138494Sobrien * Actions to take if ANSI C. 5238494Sobrien */ 5338494Sobrien#if STDC_HEADERS 5438494Sobrien# include <string.h> 5538494Sobrien/* for function prototypes */ 5638494Sobrien# define P(x) x 5738494Sobrien# define P_void void 5838494Sobrien#else /* not STDC_HEADERS */ 5938494Sobrien/* empty function prototypes */ 6038494Sobrien# define P(x) () 6138494Sobrien# define P_void 6238494Sobrien# ifndef HAVE_STRCHR 6338494Sobrien# define strchr index 6438494Sobrien# define strrchr rindex 6538494Sobrien# endif /* not HAVE_STRCHR */ 66310490Scychar *strchr(), *strrchr(); 6738494Sobrien#endif /* not STDC_HEADERS */ 6838494Sobrien 6938494Sobrien/* 7051300Sobrien * Handle gcc __attribute__ if available. 7151300Sobrien */ 7251300Sobrien#ifndef __attribute__ 7351300Sobrien/* This feature is available in gcc versions 2.5 and later. */ 7451300Sobrien# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ 7551300Sobrien# define __attribute__(Spec) /* empty */ 7651300Sobrien# endif /* __GNUC__ < 2 ... */ 7751300Sobrien/* 7851300Sobrien * The __-protected variants of `format' and `printf' attributes 7951300Sobrien * are accepted by gcc versions 2.6.4 (effectively 2.7) and later. 8051300Sobrien */ 8151300Sobrien# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) 8251300Sobrien# define __format__ format 8351300Sobrien# define __printf__ printf 8451300Sobrien# endif /* __GNUC__ < 2 ... */ 8551300Sobrien#endif /* not __attribute__ */ 8651300Sobrien 87310490Scy#define __IGNORE(result) \ 88310490Scy __ignore((unsigned long)result) 89310490Scy 90310490Scystatic inline void 91310490Scy__ignore(unsigned long result) { 92310490Scy (void)&result; 93310490Scy} 94310490Scy 9551300Sobrien/* 9638494Sobrien * How to handle signals of any type 9738494Sobrien */ 9838494Sobrien#ifdef HAVE_SYS_WAIT_H 9938494Sobrien# include <sys/wait.h> 10038494Sobrien#endif /* HAVE_SYS_WAIT_H */ 10138494Sobrien#ifndef WEXITSTATUS 10238494Sobrien# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) 10338494Sobrien#endif /* not WEXITSTATUS */ 10438494Sobrien#ifndef WIFEXITED 10538494Sobrien# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) 10638494Sobrien#endif /* not WIFEXITED */ 10738494Sobrien 10838494Sobrien/* 10938494Sobrien * Actions to take regarding <time.h> and <sys/time.h>. 11038494Sobrien */ 11138494Sobrien#if TIME_WITH_SYS_TIME 11238494Sobrien# include <sys/time.h> 113174299Sobrien# ifdef _ALL_SOURCE 114174299Sobrien/* 115174299Sobrien * AIX 5.2 needs struct sigevent from signal.h to be defined, but I 116174299Sobrien * don't want to move the inclusion of signal.h this early into this 117174299Sobrien * file. Luckily, amd doesn't need the size of this structure in any 118174299Sobrien * other structure that it uses. So we sidestep it for now. 119174299Sobrien */ 120174299Sobrienstruct sigevent; 121174299Sobrien# endif /* _ALL_SOURCE */ 12238494Sobrien# include <time.h> 12338494Sobrien#else /* not TIME_WITH_SYS_TIME */ 12438494Sobrien# if HAVE_SYS_TIME_H 12538494Sobrien# include <sys/time.h> 12638494Sobrien# else /* not HAVE_SYS_TIME_H */ 12738494Sobrien# include <time.h> 12838494Sobrien# endif /* not HAVE_SYS_TIME_H */ 12938494Sobrien#endif /* not TIME_WITH_SYS_TIME */ 13038494Sobrien 13138494Sobrien/* 13238494Sobrien * Actions to take if <machine/endian.h> exists. 13338494Sobrien */ 13438494Sobrien#ifdef HAVE_MACHINE_ENDIAN_H 13538494Sobrien# include <machine/endian.h> 13638494Sobrien#endif /* HAVE_MACHINE_ENDIAN_H */ 13738494Sobrien 13838494Sobrien/* 13938494Sobrien * Big-endian or little-endian? 14038494Sobrien */ 141310490Scy#ifndef BYTE_ORDER 142310490Scy# if defined(WORDS_BIGENDIAN) 143310490Scy# define ARCH_ENDIAN "big" 144310490Scy# else /* not WORDS_BIGENDIAN */ 145310490Scy# define ARCH_ENDIAN "little" 146310490Scy# endif /* not WORDS_BIGENDIAN */ 147310490Scy#else 148310490Scy# if BYTE_ORDER == BIG_ENDIAN 149310490Scy# define ARCH_ENDIAN "big" 150310490Scy# else 151310490Scy# define ARCH_ENDIAN "little" 152310490Scy# endif 153310490Scy#endif 15438494Sobrien 15538494Sobrien/* 15638494Sobrien * Actions to take if HAVE_SYS_TYPES_H is defined. 15738494Sobrien */ 15838494Sobrien#if HAVE_SYS_TYPES_H 15938494Sobrien# include <sys/types.h> 16038494Sobrien#endif /* HAVE_SYS_TYPES_H */ 16138494Sobrien 16238494Sobrien/* 163174299Sobrien * Actions to take if HAVE_LIMITS_H is defined. 164174299Sobrien */ 165174299Sobrien#if HAVE_LIMITS_H_H 166174299Sobrien# include <limits.h> 167174299Sobrien#endif /* HAVE_LIMITS_H */ 168174299Sobrien 169174299Sobrien/* 17038494Sobrien * Actions to take if HAVE_UNISTD_H is defined. 17138494Sobrien */ 17238494Sobrien#if HAVE_UNISTD_H 17338494Sobrien# include <unistd.h> 17438494Sobrien#endif /* HAVE_UNISTD_H */ 17538494Sobrien 17638494Sobrien/* after <unistd.h>, check if this is a POSIX.1 system */ 17738494Sobrien#ifdef _POSIX_VERSION 17838494Sobrien/* Code for POSIX.1 systems. */ 17938494Sobrien#endif /* _POSIX_VERSION */ 18038494Sobrien 18138494Sobrien/* 18238494Sobrien * Variable length argument lists. 18338494Sobrien * Must use only one of the two! 18438494Sobrien */ 18538494Sobrien#ifdef HAVE_STDARG_H 18638494Sobrien# include <stdarg.h> 18738494Sobrien/* 18838494Sobrien * On Solaris 2.6, <sys/varargs.h> is included in <sys/fs/autofs.h> 18938494Sobrien * So this ensures that only one is included. 19038494Sobrien */ 19138494Sobrien# ifndef _SYS_VARARGS_H 19238494Sobrien# define _SYS_VARARGS_H 19338494Sobrien# endif /* not _SYS_VARARGS_H */ 19438494Sobrien#else /* not HAVE_STDARG_H */ 19538494Sobrien# ifdef HAVE_VARARGS_H 19638494Sobrien# include <varargs.h> 19738494Sobrien# endif /* HAVE_VARARGS_H */ 19838494Sobrien#endif /* not HAVE_STDARG_H */ 19938494Sobrien 20038494Sobrien/* 20138494Sobrien * Pick the right header file and macros for directory processing functions. 20238494Sobrien */ 20338494Sobrien#if HAVE_DIRENT_H 20438494Sobrien# include <dirent.h> 20538494Sobrien# define NAMLEN(dirent) strlen((dirent)->d_name) 20638494Sobrien#else /* not HAVE_DIRENT_H */ 20738494Sobrien# define dirent direct 20838494Sobrien# define NAMLEN(dirent) (dirent)->d_namlen 20938494Sobrien# if HAVE_SYS_NDIR_H 21038494Sobrien# include <sys/ndir.h> 21138494Sobrien# endif /* HAVE_SYS_NDIR_H */ 21238494Sobrien# if HAVE_SYS_DIR_H 21338494Sobrien# include <sys/dir.h> 21438494Sobrien# endif /* HAVE_SYS_DIR_H */ 21538494Sobrien# if HAVE_NDIR_H 21638494Sobrien# include <ndir.h> 21738494Sobrien# endif /* HAVE_NDIR_H */ 21838494Sobrien#endif /* not HAVE_DIRENT_H */ 21938494Sobrien 22038494Sobrien/* 22138494Sobrien * Actions to take if HAVE_FCNTL_H is defined. 22238494Sobrien */ 22338494Sobrien#if HAVE_FCNTL_H 22438494Sobrien# include <fcntl.h> 22538494Sobrien#endif /* HAVE_FCNTL_H */ 22638494Sobrien 22738494Sobrien/* 22838494Sobrien * Actions to take if HAVE_MEMORY_H is defined. 22938494Sobrien */ 23038494Sobrien#if HAVE_MEMORY_H 23138494Sobrien# include <memory.h> 23238494Sobrien#endif /* HAVE_MEMORY_H */ 23338494Sobrien 23438494Sobrien/* 23538494Sobrien * Actions to take if HAVE_SYS_FILE_H is defined. 23638494Sobrien */ 23738494Sobrien#if HAVE_SYS_FILE_H 23838494Sobrien# include <sys/file.h> 23938494Sobrien#endif /* HAVE_SYS_FILE_H */ 24038494Sobrien 24138494Sobrien/* 24238494Sobrien * Actions to take if HAVE_SYS_IOCTL_H is defined. 24338494Sobrien */ 24438494Sobrien#if HAVE_SYS_IOCTL_H 24538494Sobrien# include <sys/ioctl.h> 24638494Sobrien#endif /* HAVE_SYS_IOCTL_H */ 24738494Sobrien 24838494Sobrien/* 24938494Sobrien * Actions to take if HAVE_SYSLOG_H or HAVE_SYS_SYSLOG_H is defined. 25038494Sobrien */ 25138494Sobrien#ifdef HAVE_SYSLOG_H 25238494Sobrien# include <syslog.h> 25338494Sobrien#else /* not HAVE_SYSLOG_H */ 25438494Sobrien# if HAVE_SYS_SYSLOG_H 25538494Sobrien# include <sys/syslog.h> 25638494Sobrien# endif /* HAVE_SYS_SYSLOG_H */ 25738494Sobrien#endif /* HAVE_SYSLOG_H */ 25838494Sobrien 25938494Sobrien/* 26038494Sobrien * Actions to take if <sys/param.h> exists. 26138494Sobrien */ 26238494Sobrien#ifdef HAVE_SYS_PARAM_H 26338494Sobrien# include <sys/param.h> 26438494Sobrien#endif /* HAVE_SYS_PARAM_H */ 26538494Sobrien 26638494Sobrien/* 26738494Sobrien * Actions to take if <sys/socket.h> exists. 26838494Sobrien */ 26938494Sobrien#ifdef HAVE_SYS_SOCKET_H 27038494Sobrien# include <sys/socket.h> 27138494Sobrien#endif /* HAVE_SYS_SOCKET_H */ 27238494Sobrien 27338494Sobrien/* 27438494Sobrien * Actions to take if <rpc/rpc.h> exists. 27538494Sobrien */ 27638494Sobrien#ifdef HAVE_RPC_RPC_H 27738494Sobrien/* 27838494Sobrien * Turn on PORTMAP, so that additional header files would get included 27938494Sobrien * and the important definition for UDPMSGSIZE is included too. 28038494Sobrien */ 28138494Sobrien# ifndef PORTMAP 28238494Sobrien# define PORTMAP 28338494Sobrien# endif /* not PORTMAP */ 28438494Sobrien# include <rpc/rpc.h> 28538494Sobrien# ifndef XDRPROC_T_TYPE 28638494Sobrientypedef bool_t (*xdrproc_t) __P ((XDR *, __ptr_t, ...)); 28738494Sobrien# endif /* not XDRPROC_T_TYPE */ 28838494Sobrien#endif /* HAVE_RPC_RPC_H */ 28938494Sobrien 29038494Sobrien/* 29138494Sobrien * Actions to take if <rpc/types.h> exists. 29238494Sobrien */ 29338494Sobrien#ifdef HAVE_RPC_TYPES_H 29438494Sobrien# include <rpc/types.h> 29538494Sobrien#endif /* HAVE_RPC_TYPES_H */ 29638494Sobrien 29738494Sobrien/* 29838494Sobrien * Actions to take if <rpc/xdr.h> exists. 29938494Sobrien */ 30038494Sobrien/* Prevent multiple inclusion on Ultrix 4 */ 30138494Sobrien#if defined(HAVE_RPC_XDR_H) && !defined(__XDR_HEADER__) 30238494Sobrien# include <rpc/xdr.h> 30338494Sobrien#endif /* defined(HAVE_RPC_XDR_H) && !defined(__XDR_HEADER__) */ 30438494Sobrien 30538494Sobrien/* 30638494Sobrien * Actions to take if <malloc.h> exists. 307131706Smbr * Don't include malloc.h if stdlib.h exists, because modern 308131706Smbr * systems complain if you use malloc.h instead of stdlib.h. 309131706Smbr * XXX: let's hope there are no systems out there that need both. 31038494Sobrien */ 311131706Smbr#if defined(HAVE_MALLOC_H) && !defined(HAVE_STDLIB_H) 31238494Sobrien# include <malloc.h> 313131706Smbr#endif /* defined(HAVE_MALLOC_H) && !defined(HAVE_STDLIB_H) */ 31438494Sobrien 31538494Sobrien/* 31638494Sobrien * Actions to take if <mntent.h> exists. 31738494Sobrien */ 31838494Sobrien#ifdef HAVE_MNTENT_H 31938494Sobrien/* some systems need <stdio.h> before <mntent.h> is included */ 32038494Sobrien# ifdef HAVE_STDIO_H 32138494Sobrien# include <stdio.h> 32238494Sobrien# endif /* HAVE_STDIO_H */ 32338494Sobrien# include <mntent.h> 32438494Sobrien#endif /* HAVE_MNTENT_H */ 32538494Sobrien 32638494Sobrien/* 32738494Sobrien * Actions to take if <sys/fsid.h> exists. 32838494Sobrien */ 32938494Sobrien#ifdef HAVE_SYS_FSID_H 33038494Sobrien# include <sys/fsid.h> 33138494Sobrien#endif /* HAVE_SYS_FSID_H */ 33238494Sobrien 33338494Sobrien/* 33438494Sobrien * Actions to take if <sys/utsname.h> exists. 33538494Sobrien */ 33638494Sobrien#ifdef HAVE_SYS_UTSNAME_H 33738494Sobrien# include <sys/utsname.h> 33838494Sobrien#endif /* HAVE_SYS_UTSNAME_H */ 33938494Sobrien 34038494Sobrien/* 34138494Sobrien * Actions to take if <sys/mntent.h> exists. 34238494Sobrien */ 34338494Sobrien#ifdef HAVE_SYS_MNTENT_H 34438494Sobrien# include <sys/mntent.h> 34538494Sobrien#endif /* HAVE_SYS_MNTENT_H */ 34638494Sobrien 34738494Sobrien/* 34851300Sobrien * Actions to take if <ndbm.h> or <db1/ndbm.h> exist. 34938494Sobrien * Should be included before <rpcsvc/yp_prot.h> because on some systems 35038494Sobrien * like Linux, it also defines "struct datum". 35138494Sobrien */ 352131706Smbr#ifdef HAVE_MAP_NDBM 353131706Smbr# include NEW_DBM_H 35438494Sobrien# ifndef DATUM 35538494Sobrien/* ensure that struct datum is not included again from <rpcsvc/yp_prot.h> */ 35638494Sobrien# define DATUM 35738494Sobrien# endif /* not DATUM */ 358131706Smbr#endif /* HAVE_MAP_NDBM */ 35938494Sobrien 36038494Sobrien/* 36138494Sobrien * Actions to take if <net/errno.h> exists. 36238494Sobrien */ 36338494Sobrien#ifdef HAVE_NET_ERRNO_H 36438494Sobrien# include <net/errno.h> 36538494Sobrien#endif /* HAVE_NET_ERRNO_H */ 36638494Sobrien 36738494Sobrien/* 368174299Sobrien * Actions to take if <net/if.h> exists. 369174299Sobrien */ 370174299Sobrien#ifdef HAVE_NET_IF_H 371174299Sobrien# include <net/if.h> 372174299Sobrien#endif /* HAVE_NET_IF_H */ 373174299Sobrien 374174299Sobrien/* 37551300Sobrien * Actions to take if <net/route.h> exists. 37638494Sobrien */ 37738494Sobrien#ifdef HAVE_NET_ROUTE_H 37838494Sobrien# include <net/route.h> 37938494Sobrien#endif /* HAVE_NET_ROUTE_H */ 38038494Sobrien 38138494Sobrien/* 38251300Sobrien * Actions to take if <sys/mbuf.h> exists. 38338494Sobrien */ 38438494Sobrien#ifdef HAVE_SYS_MBUF_H 38538494Sobrien# include <sys/mbuf.h> 38638494Sobrien/* 38751300Sobrien * OSF4 (DU-4.0) defines m_next and m_data also in <sys/mount.h> so I must 38838494Sobrien # undefine them here to avoid conflicts. 38938494Sobrien */ 39038494Sobrien# ifdef m_next 39138494Sobrien# undef m_next 39238494Sobrien# endif /* m_next */ 39338494Sobrien# ifdef m_data 39438494Sobrien# undef m_data 39538494Sobrien# endif /* m_data */ 39638494Sobrien/* 39751300Sobrien * AIX 3 defines MFREE and m_flags also in <sys/mount.h>. 39838494Sobrien */ 39938494Sobrien# ifdef m_flags 40038494Sobrien# undef m_flags 40138494Sobrien# endif /* m_flags */ 40238494Sobrien# ifdef MFREE 40338494Sobrien# undef MFREE 40438494Sobrien# endif /* MFREE */ 40538494Sobrien#endif /* HAVE_SYS_MBUF_H */ 40638494Sobrien 40738494Sobrien/* 408174299Sobrien * Actions to take if <sys/mman.h> exists. 40938494Sobrien */ 410174299Sobrien#ifdef HAVE_SYS_MMAN_H 411174299Sobrien# include <sys/mman.h> 412174299Sobrien#endif /* HAVE_SYS_MMAN_H */ 41338494Sobrien 41438494Sobrien/* 41538494Sobrien * Actions to take if <netdb.h> exists. 41638494Sobrien */ 41738494Sobrien#ifdef HAVE_NETDB_H 41838494Sobrien# include <netdb.h> 41938494Sobrien#endif /* HAVE_NETDB_H */ 42038494Sobrien 42138494Sobrien/* 42238494Sobrien * Actions to take if <netdir.h> exists. 42338494Sobrien */ 42438494Sobrien#ifdef HAVE_NETDIR_H 42538494Sobrien# include <netdir.h> 42638494Sobrien#endif /* HAVE_NETDIR_H */ 42738494Sobrien 42838494Sobrien/* 42938494Sobrien * Actions to take if <net/if_var.h> exists. 43038494Sobrien */ 43138494Sobrien#ifdef HAVE_NET_IF_VAR_H 43238494Sobrien# include <net/if_var.h> 43338494Sobrien#endif /* HAVE_NET_IF_VAR_H */ 43438494Sobrien 43538494Sobrien/* 43638494Sobrien * Actions to take if <netinet/if_ether.h> exists. 43738494Sobrien */ 43838494Sobrien#ifdef HAVE_NETINET_IF_ETHER_H 43938494Sobrien# include <netinet/if_ether.h> 44038494Sobrien#endif /* HAVE_NETINET_IF_ETHER_H */ 44138494Sobrien 44238494Sobrien/* 44338494Sobrien * Actions to take if <netinet/in.h> exists. 44438494Sobrien */ 44538494Sobrien#ifdef HAVE_NETINET_IN_H 44638494Sobrien# include <netinet/in.h> 44738494Sobrien#endif /* HAVE_NETINET_IN_H */ 44838494Sobrien 44938494Sobrien/* 45038494Sobrien * Actions to take if <rpcsvc/yp_prot.h> exists. 45138494Sobrien */ 45238494Sobrien#ifdef HAVE_RPCSVC_YP_PROT_H 45342633Sobrien# ifdef HAVE_BAD_HEADERS 45442633Sobrien/* avoid circular dependency in aix 4.3 with <rpcsvc/ypclnt.h> */ 45542633Sobrienstruct ypall_callback; 45642633Sobrien# endif /* HAVE_BAD_HEADERS */ 45738494Sobrien# include <rpcsvc/yp_prot.h> 45838494Sobrien#endif /* HAVE_RPCSVC_YP_PROT_H */ 45938494Sobrien 46038494Sobrien/* 46138494Sobrien * Actions to take if <rpcsvc/ypclnt.h> exists. 46238494Sobrien */ 46338494Sobrien#ifdef HAVE_RPCSVC_YPCLNT_H 46438494Sobrien# include <rpcsvc/ypclnt.h> 46538494Sobrien#endif /* HAVE_RPCSVC_YPCLNT_H */ 46638494Sobrien 46738494Sobrien/* 46838494Sobrien * Actions to take if <sys/ucred.h> exists. 46938494Sobrien */ 47038494Sobrien#ifdef HAVE_SYS_UCRED_H 47138494Sobrien# include <sys/ucred.h> 47238494Sobrien#endif /* HAVE_SYS_UCRED_H */ 47338494Sobrien 47438494Sobrien 47538494Sobrien/* 47638494Sobrien * Actions to take if <sys/mount.h> exists. 47738494Sobrien */ 47838494Sobrien#ifdef HAVE_SYS_MOUNT_H 47938494Sobrien/* 48038494Sobrien * Some operating systems must define these variables to get 48138494Sobrien * NFS and other definitions included. 48238494Sobrien */ 48338494Sobrien# ifndef NFSCLIENT 48482805Sobrien# define NFSCLIENT 1 48538494Sobrien# endif /* not NFSCLIENT */ 48638494Sobrien# ifndef NFS 48782805Sobrien# define NFS 1 48838494Sobrien# endif /* not NFS */ 48938494Sobrien# ifndef PCFS 49082805Sobrien# define PCFS 1 49138494Sobrien# endif /* not PCFS */ 49238494Sobrien# ifndef LOFS 49382805Sobrien# define LOFS 1 49438494Sobrien# endif /* not LOFS */ 49538494Sobrien# ifndef RFS 49682805Sobrien# define RFS 1 49738494Sobrien# endif /* not RFS */ 49838494Sobrien# ifndef MSDOSFS 49982805Sobrien# define MSDOSFS 1 50038494Sobrien# endif /* not MSDOSFS */ 50138494Sobrien# ifndef MFS 50282805Sobrien# define MFS 1 50338494Sobrien# endif /* not MFS */ 50438494Sobrien# ifndef CD9660 50582805Sobrien# define CD9660 1 50638494Sobrien# endif /* not CD9660 */ 50738494Sobrien# include <sys/mount.h> 50838494Sobrien#endif /* HAVE_SYS_MOUNT_H */ 50938494Sobrien 51038494Sobrien#ifdef HAVE_SYS_VMOUNT_H 51138494Sobrien# include <sys/vmount.h> 51238494Sobrien#endif /* HAVE_SYS_VMOUNT_H */ 51338494Sobrien 51438494Sobrien/* 51538494Sobrien * Actions to take if <linux/fs.h> exists. 51682805Sobrien * There is no point in including this on a glibc2 system, 51782805Sobrien * we're only asking for trouble 51838494Sobrien */ 51982805Sobrien#if defined HAVE_LINUX_FS_H && (!defined __GLIBC__ || __GLIBC__ < 2) 52038494Sobrien/* 52151300Sobrien * There are various conflicts in definitions between RedHat Linux, newer 52251300Sobrien * 2.2 kernels, and <netinet/in.h> and <linux/fs.h>. 52338494Sobrien */ 52438494Sobrien# ifdef HAVE_SOCKETBITS_H 52538494Sobrien/* conflicts with <socketbits.h> */ 52638494Sobrien# define _LINUX_SOCKET_H 52738494Sobrien# undef BLKFLSBUF 52838494Sobrien# undef BLKGETSIZE 52938494Sobrien# undef BLKRAGET 53038494Sobrien# undef BLKRASET 53138494Sobrien# undef BLKROGET 53238494Sobrien# undef BLKROSET 53338494Sobrien# undef BLKRRPART 53438494Sobrien# undef MS_MGC_VAL 53538494Sobrien# undef MS_RMT_MASK 53651300Sobrien# if defined(__GLIBC__) && __GLIBC__ >= 2 53738494Sobrien/* conflicts with <waitflags.h> */ 53851300Sobrien# undef WNOHANG 53951300Sobrien# undef WUNTRACED 54051300Sobrien# endif /* defined(__GLIBC__) && __GLIBC__ >= 2 */ 54138494Sobrien/* conflicts with <statfsbuf.h> */ 54238494Sobrien# define _SYS_STATFS_H 54338494Sobrien# endif /* HAVE_SOCKETBITS_H */ 54451300Sobrien 54551300Sobrien# ifdef _SYS_WAIT_H 54651300Sobrien# if defined(__GLIBC__) && __GLIBC__ >= 2 54751300Sobrien/* conflicts with <bits/waitflags.h> (RedHat/Linux 6.0 and kernels 2.2 */ 54851300Sobrien# undef WNOHANG 54951300Sobrien# undef WUNTRACED 55051300Sobrien# endif /* defined(__GLIBC__) && __GLIBC__ >= 2 */ 55151300Sobrien# endif /* _SYS_WAIT_H */ 55251300Sobrien 55341145Sobrien# ifdef HAVE_LINUX_POSIX_TYPES_H 55441145Sobrien# include <linux/posix_types.h> 55541145Sobrien# endif /* HAVE_LINUX_POSIX_TYPES_H */ 55641145Sobrien# ifndef _LINUX_BYTEORDER_GENERIC_H 55741145Sobrien# define _LINUX_BYTEORDER_GENERIC_H 55841145Sobrien# endif /* _LINUX_BYTEORDER_GENERIC_H */ 55951300Sobrien/* conflicts with <sys/mount.h> in 2.[12] kernels */ 56041145Sobrien# ifdef _SYS_MOUNT_H 56151300Sobrien# undef BLKFLSBUF 56251300Sobrien# undef BLKGETSIZE 56351300Sobrien# undef BLKRAGET 56451300Sobrien# undef BLKRASET 56551300Sobrien# undef BLKROGET 56651300Sobrien# undef BLKROSET 56751300Sobrien# undef BLKRRPART 56851300Sobrien# undef BLOCK_SIZE 56951300Sobrien# undef MS_MANDLOCK 57051300Sobrien# undef MS_MGC_VAL 57151300Sobrien# undef MS_NOATIME 57251300Sobrien# undef MS_NODEV 57351300Sobrien# undef MS_NODIRATIME 57451300Sobrien# undef MS_NOEXEC 57551300Sobrien# undef MS_NOSUID 57651300Sobrien# undef MS_RDONLY 57751300Sobrien# undef MS_REMOUNT 57851300Sobrien# undef MS_RMT_MASK 57951300Sobrien# undef MS_SYNCHRONOUS 58051300Sobrien# undef S_APPEND 58151300Sobrien# undef S_IMMUTABLE 58251300Sobrien/* conflicts with <statfsbuf.h> */ 58351300Sobrien# define _SYS_STATFS_H 58441145Sobrien# endif /* _SYS_MOUNT_H */ 58582805Sobrien# ifndef _LINUX_STRING_H_ 58682805Sobrien# define _LINUX_STRING_H_ 58782805Sobrien# endif /* not _LINUX_STRING_H_ */ 58882805Sobrien# ifdef HAVE_LINUX_KDEV_T_H 58982805Sobrien# define __KERNEL__ 59082805Sobrien# include <linux/kdev_t.h> 59182805Sobrien# undef __KERNEL__ 59282805Sobrien# endif /* HAVE_LINUX_KDEV_T_H */ 59382805Sobrien# ifdef HAVE_LINUX_LIST_H 59482805Sobrien# define __KERNEL__ 59582805Sobrien# include <linux/list.h> 59682805Sobrien# undef __KERNEL__ 59782805Sobrien# endif /* HAVE_LINUX_LIST_H */ 59838494Sobrien# include <linux/fs.h> 59982805Sobrien#endif /* HAVE_LINUX_FS_H && (!__GLIBC__ || __GLIBC__ < 2) */ 60038494Sobrien 60138494Sobrien#ifdef HAVE_CDFS_CDFS_MOUNT_H 60238494Sobrien# include <cdfs/cdfs_mount.h> 60338494Sobrien#endif /* HAVE_CDFS_CDFS_MOUNT_H */ 60438494Sobrien 60538494Sobrien#ifdef HAVE_CDFS_CDFSMOUNT_H 60638494Sobrien# include <cdfs/cdfsmount.h> 60738494Sobrien#endif /* HAVE_CDFS_CDFSMOUNT_H */ 60838494Sobrien 60938494Sobrien/* 610174299Sobrien * Actions to take if <linux/loop.h> exists. 611174299Sobrien */ 612174299Sobrien#ifdef HAVE_LINUX_LOOP_H 613174299Sobrien# ifdef HAVE_LINUX_POSIX_TYPES_H 614174299Sobrien# include <linux/posix_types.h> 615174299Sobrien# endif /* HAVE_LINUX_POSIX_TYPES_H */ 616174299Sobrien/* next dev_t lines needed due to changes in kernel code */ 617174299Sobrien# undef dev_t 618174299Sobrien# define dev_t unsigned short /* compatible with Red Hat and SuSE */ 619174299Sobrien# include <linux/loop.h> 620174299Sobrien#endif /* HAVE_LINUX_LOOP_H */ 621174299Sobrien 622174299Sobrien/* 623174299Sobrien * AUTOFS PROTOCOL HEADER FILES: 624174299Sobrien */ 625174299Sobrien 626174299Sobrien/* 627174299Sobrien * Actions to take if <linux/auto_fs[4].h> exists. 62882805Sobrien * We really don't want <linux/fs.h> pulled in here 62938494Sobrien */ 63082805Sobrien#ifndef _LINUX_FS_H 63182805Sobrien#define _LINUX_FS_H 63282805Sobrien#endif /* _LINUX_FS_H */ 633174299Sobrien#ifdef HAVE_LINUX_AUTO_FS4_H 634174299Sobrien# include <linux/auto_fs4.h> 635174299Sobrien#else /* not HAVE_LINUX_AUTO_FS4_H */ 636174299Sobrien# ifdef HAVE_LINUX_AUTO_FS_H 637174299Sobrien# include <linux/auto_fs.h> 638174299Sobrien# endif /* HAVE_LINUX_AUTO_FS_H */ 639174299Sobrien#endif /* not HAVE_LINUX_AUTO_FS4_H */ 64038494Sobrien 64138494Sobrien/* 642174299Sobrien * Actions to take if <sys/fs/autofs.h> exists. 643174299Sobrien */ 644174299Sobrien#ifdef HAVE_SYS_FS_AUTOFS_H 645174299Sobrien# include <sys/fs/autofs.h> 646174299Sobrien#endif /* HAVE_SYS_FS_AUTOFS_H */ 647174299Sobrien 648174299Sobrien/* 649174299Sobrien * Actions to take if <rpcsvc/autofs_prot.h> or <sys/fs/autofs_prot.h> exist. 650174299Sobrien */ 651174299Sobrien#ifdef HAVE_RPCSVC_AUTOFS_PROT_H 652174299Sobrien# include <rpcsvc/autofs_prot.h> 653174299Sobrien#else /* not HAVE_RPCSVC_AUTOFS_PROT_H */ 654174299Sobrien# ifdef HAVE_SYS_FS_AUTOFS_PROT_H 655174299Sobrien# include <sys/fs/autofs_prot.h> 656174299Sobrien# endif /* HAVE_SYS_FS_AUTOFS_PROT_H */ 657174299Sobrien#endif /* not HAVE_RPCSVC_AUTOFS_PROT_H */ 658174299Sobrien 659174299Sobrien/* 660174299Sobrien * Actions to take if <lber.h> exists. 661174299Sobrien * This header file is required before <ldap.h> can be included. 662174299Sobrien */ 663174299Sobrien#ifdef HAVE_LBER_H 664174299Sobrien# include <lber.h> 665174299Sobrien#endif /* HAVE_LBER_H */ 666174299Sobrien 667174299Sobrien/* 668174299Sobrien * Actions to take if <ldap.h> exists. 669174299Sobrien */ 670174299Sobrien#ifdef HAVE_LDAP_H 671174299Sobrien# include <ldap.h> 672174299Sobrien#endif /* HAVE_LDAP_H */ 673174299Sobrien 674174299Sobrien/**************************************************************************** 675174299Sobrien ** IMPORTANT!!! ** 676174299Sobrien ** We always include am-utils' amu_autofs_prot.h. ** 677174299Sobrien ** That is actually defined in "conf/autofs/autofs_${autofs_style}.h" ** 678174299Sobrien ****************************************************************************/ 679174299Sobrien#include <amu_autofs_prot.h> 680174299Sobrien 681174299Sobrien 682174299Sobrien/* 68338494Sobrien * NFS PROTOCOL HEADER FILES: 68438494Sobrien */ 68538494Sobrien 68638494Sobrien/* 68738494Sobrien * Actions to take if <nfs/export.h> exists. 68838494Sobrien */ 68938494Sobrien#ifdef HAVE_NFS_EXPORT_H 69038494Sobrien# include <nfs/export.h> 69138494Sobrien#endif /* HAVE_NFS_EXPORT_H */ 69238494Sobrien 69338494Sobrien/**************************************************************************** 69438494Sobrien ** IMPORTANT!!! ** 695174299Sobrien ** We always include am-utils' amu_nfs_prot.h. ** 69638494Sobrien ** That is actually defined in "conf/nfs_prot/nfs_prot_${host_os_name}.h" ** 69738494Sobrien ****************************************************************************/ 69838494Sobrien#include <amu_nfs_prot.h> 69938494Sobrien 70038494Sobrien/* 70138494Sobrien * DO NOT INCLUDE THESE FILES: 70238494Sobrien * They conflicts with other NFS headers and are generally not needed. 70338494Sobrien */ 70438494Sobrien#ifdef DO_NOT_INCLUDE 70538494Sobrien# ifdef HAVE_NFS_NFS_CLNT_H 70638494Sobrien# include <nfs/nfs_clnt.h> 70738494Sobrien# endif /* HAVE_NFS_NFS_CLNT_H */ 70838494Sobrien# ifdef HAVE_LINUX_NFS_H 70938494Sobrien# include <linux/nfs.h> 71038494Sobrien# endif /* HAVE_LINUX_NFS_H */ 71138494Sobrien#endif /* DO NOT INCLUDE */ 71238494Sobrien 71338494Sobrien/* 71438494Sobrien * Actions to take if one of the nfs headers exists. 71538494Sobrien */ 71638494Sobrien#ifdef HAVE_NFS_NFS_GFS_H 71738494Sobrien# include <nfs/nfs_gfs.h> 71838494Sobrien#endif /* HAVE_NFS_NFS_GFS_H */ 71938494Sobrien#ifdef HAVE_NFS_MOUNT_H 72038494Sobrien# include <nfs/mount.h> 72138494Sobrien#endif /* HAVE_NFS_MOUNT_H */ 72238494Sobrien#ifdef HAVE_NFS_NFS_MOUNT_H_off 72382805Sobrien/* broken on nextstep3 (includes non-existing headers) */ 72438494Sobrien# include <nfs/nfs_mount.h> 72538494Sobrien#endif /* HAVE_NFS_NFS_MOUNT_H */ 72638494Sobrien#ifdef HAVE_NFS_PATHCONF_H 72738494Sobrien# include <nfs/pathconf.h> 72838494Sobrien#endif /* HAVE_NFS_PATHCONF_H */ 72938494Sobrien#ifdef HAVE_SYS_FS_NFS_MOUNT_H 73038494Sobrien# include <sys/fs/nfs/mount.h> 73138494Sobrien#endif /* HAVE_SYS_FS_NFS_MOUNT_H */ 73238494Sobrien#ifdef HAVE_SYS_FS_NFS_NFS_CLNT_H 73338494Sobrien# include <sys/fs/nfs/nfs_clnt.h> 73438494Sobrien#endif /* HAVE_SYS_FS_NFS_NFS_CLNT_H */ 73538494Sobrien#ifdef HAVE_SYS_FS_NFS_CLNT_H 73638494Sobrien# include <sys/fs/nfs_clnt.h> 73738494Sobrien#endif /* HAVE_SYS_FS_NFS_CLNT_H */ 738174299Sobrien 739174299Sobrien/* complex rules for linux/nfs_mount.h: broken on so many systems */ 74038494Sobrien#ifdef HAVE_LINUX_NFS_MOUNT_H 741174299Sobrien# ifndef _LINUX_NFS_H 742174299Sobrien# define _LINUX_NFS_H 743174299Sobrien# endif /* not _LINUX_NFS_H */ 744174299Sobrien# ifndef _LINUX_NFS2_H 745174299Sobrien# define _LINUX_NFS2_H 746174299Sobrien# endif /* not _LINUX_NFS2_H */ 747174299Sobrien# ifndef _LINUX_NFS3_H 748174299Sobrien# define _LINUX_NFS3_H 749174299Sobrien# endif /* not _LINUX_NFS3_H */ 750174299Sobrien# ifndef _LINUX_NFS_FS_H 751174299Sobrien# define _LINUX_NFS_FS_H 752174299Sobrien# endif /* not _LINUX_NFS_FS_H */ 753174299Sobrien# ifndef _LINUX_IN_H 754174299Sobrien# define _LINUX_IN_H 755174299Sobrien# endif /* not _LINUX_IN_H */ 756174299Sobrien# ifndef __KERNEL__ 757174299Sobrien# define __KERNEL__ 758174299Sobrien# endif /* __KERNEL__ */ 75938494Sobrien# include <linux/nfs_mount.h> 760174299Sobrien# undef __KERNEL__ 76138494Sobrien#endif /* HAVE_LINUX_NFS_MOUNT_H */ 76238494Sobrien 76338494Sobrien/* 76438494Sobrien * Actions to take if <pwd.h> exists. 76538494Sobrien */ 76638494Sobrien#ifdef HAVE_PWD_H 76738494Sobrien# include <pwd.h> 76838494Sobrien#endif /* HAVE_PWD_H */ 76938494Sobrien 77038494Sobrien/* 77138494Sobrien * Actions to take if <hesiod.h> exists. 77238494Sobrien */ 77338494Sobrien#ifdef HAVE_HESIOD_H 77438494Sobrien# include <hesiod.h> 77538494Sobrien#endif /* HAVE_HESIOD_H */ 77638494Sobrien 77738494Sobrien/* 77838494Sobrien * Actions to take if <arpa/nameser.h> exists. 77938494Sobrien * Should be included before <resolv.h>. 78038494Sobrien */ 78138494Sobrien#ifdef HAVE_ARPA_NAMESER_H 78238494Sobrien# ifdef NOERROR 78338494Sobrien# undef NOERROR 78438494Sobrien# endif /* NOERROR */ 78538494Sobrien/* 78638494Sobrien * Conflicts with <sys/tpicommon.h> which is included from <sys/tiuser.h> 78738494Sobrien * on Solaris 2.6 systems. So undefine it first. 78838494Sobrien */ 78938494Sobrien# ifdef T_UNSPEC 79038494Sobrien# undef T_UNSPEC 79138494Sobrien# endif /* T_UNSPEC */ 79238494Sobrien# include <arpa/nameser.h> 79338494Sobrien#endif /* HAVE_ARPA_NAMESER_H */ 79438494Sobrien 79538494Sobrien/* 79638494Sobrien * Actions to take if <arpa/inet.h> exists. 79738494Sobrien */ 79838494Sobrien#ifdef HAVE_ARPA_INET_H 79942633Sobrien# ifdef HAVE_BAD_HEADERS 80042633Sobrien/* aix 4.3: avoid including <net/if_dl.h> */ 80142633Sobrienstruct sockaddr_dl; 80242633Sobrien# endif /* HAVE_BAD_HEADERS */ 80338494Sobrien# include <arpa/inet.h> 80438494Sobrien#endif /* HAVE_ARPA_INET_H */ 80538494Sobrien 80638494Sobrien/* 80738494Sobrien * Actions to take if <resolv.h> exists. 80838494Sobrien */ 80938494Sobrien#ifdef HAVE_RESOLV_H 810174299Sobrien/* 811174299Sobrien * On AIX 5.2, both <resolv.h> and <arpa/nameser_compat.h> define MAXDNAME, 812174299Sobrien * if compiling with gcc -D_USE_IRS (so that we get extern definitions for 813174299Sobrien * hstrerror() and others). 814174299Sobrien */ 815174299Sobrien# if defined(_AIX) && defined(MAXDNAME) && defined(_USE_IRS) 816174299Sobrien# undef MAXDNAME 817174299Sobrien# endif /* defined(_AIX) && defined(MAXDNAME) && defined(_USE_IRS) */ 81838494Sobrien# include <resolv.h> 81938494Sobrien#endif /* HAVE_RESOLV_H */ 82038494Sobrien 82138494Sobrien/* 82238494Sobrien * Actions to take if <sys/uio.h> exists. 82338494Sobrien */ 82438494Sobrien#ifdef HAVE_SYS_UIO_H 82538494Sobrien# include <sys/uio.h> 82638494Sobrien#endif /* HAVE_SYS_UIO_H */ 82738494Sobrien 82838494Sobrien/* 82938494Sobrien * Actions to take if <sys/fs/cachefs_fs.h> exists. 83038494Sobrien */ 83138494Sobrien#ifdef HAVE_SYS_FS_CACHEFS_FS_H 83238494Sobrien# include <sys/fs/cachefs_fs.h> 83338494Sobrien#endif /* HAVE_SYS_FS_CACHEFS_FS_H */ 83438494Sobrien 83538494Sobrien/* 83638494Sobrien * Actions to take if <sys/fs/pc_fs.h> exists. 83738494Sobrien */ 83838494Sobrien#ifdef HAVE_SYS_FS_PC_FS_H 83938494Sobrien# include <sys/fs/pc_fs.h> 84038494Sobrien#endif /* HAVE_SYS_FS_PC_FS_H */ 84138494Sobrien 84238494Sobrien/* 84338494Sobrien * Actions to take if <msdosfs/msdosfsmount.h> exists. 84438494Sobrien */ 84538494Sobrien#ifdef HAVE_MSDOSFS_MSDOSFSMOUNT_H 84638494Sobrien# include <msdosfs/msdosfsmount.h> 84782805Sobrien#endif /* HAVE_MSDOSFS_MSDOSFSMOUNT_H */ 84882805Sobrien#ifdef HAVE_FS_MSDOSFS_MSDOSFSMOUNT_H 84982805Sobrien# include <fs/msdosfs/msdosfsmount.h> 85082805Sobrien#endif /* HAVE_FS_MSDOSFS_MSDOSFSMOUNT_H */ 85138494Sobrien 85238494Sobrien/* 853174299Sobrien * Actions to take if <fs/msdosfs/msdosfsmount.h> exists. 854174299Sobrien */ 855174299Sobrien#ifdef HAVE_FS_MSDOSFS_MSDOSFSMOUNT_H 856174299Sobrien# include <fs/msdosfs/msdosfsmount.h> 857174299Sobrien#endif /* HAVE_FS_MSDOSFS_MSDOSFSMOUNT_H */ 858174299Sobrien 859174299Sobrien/* 86038494Sobrien * Actions to take if <sys/fs/tmp.h> exists. 86138494Sobrien */ 86238494Sobrien#ifdef HAVE_SYS_FS_TMP_H 86338494Sobrien# include <sys/fs/tmp.h> 86438494Sobrien#endif /* HAVE_SYS_FS_TMP_H */ 865310490Scy#ifdef HAVE_FS_TMPFS_TMPFS_ARGS_H 866310490Scy# include <fs/tmpfs/tmpfs_args.h> 867310490Scy#endif /* HAVE_FS_TMPFS_TMPFS_ARGS_H */ 86838494Sobrien 869310490Scy 87038494Sobrien/* 87138494Sobrien * Actions to take if <sys/fs/ufs_mount.h> exists. 87238494Sobrien */ 87338494Sobrien#ifdef HAVE_SYS_FS_UFS_MOUNT_H 87438494Sobrien# include <sys/fs/ufs_mount.h> 87538494Sobrien#endif /* HAVE_SYS_FS_UFS_MOUNT_H */ 87682815Sobrien/* 87782815Sobrien * HAVE_UFS_UFS_UFSMOUNT_H should NOT be defined on netbsd/openbsd because it 87882815Sobrien * causes errors with other header files. Instead, add it to the specific 87982815Sobrien * conf/nfs_prot_*.h file. 88082815Sobrien */ 88182815Sobrien#ifdef HAVE_UFS_UFS_UFSMOUNT_H 88251300Sobrien# include <ufs/ufs/ufsmount.h> 88351300Sobrien#endif /* HAVE_UFS_UFS_UFSMOUNT_H */ 88438494Sobrien 88538494Sobrien/* 88638494Sobrien * Actions to take if <sys/fs/efs_clnt.h> exists. 88738494Sobrien */ 88838494Sobrien#ifdef HAVE_SYS_FS_EFS_CLNT_H 88938494Sobrien# include <sys/fs/efs_clnt.h> 89038494Sobrien#endif /* HAVE_SYS_FS_EFS_CLNT_H */ 891310490Scy#ifdef HAVE_FS_EFS_EFS_MOUNT_H 892310490Scy# include <fs/efs/efs_mount.h> 893310490Scy#endif /* HAVE_FS_EFS_EFS_MOUNT_H */ 89438494Sobrien 89538494Sobrien/* 89638494Sobrien * Actions to take if <sys/fs/xfs_clnt.h> exists. 89738494Sobrien */ 89838494Sobrien#ifdef HAVE_SYS_FS_XFS_CLNT_H 89938494Sobrien# include <sys/fs/xfs_clnt.h> 90038494Sobrien#endif /* HAVE_SYS_FS_XFS_CLNT_H */ 90138494Sobrien 90238494Sobrien/* 90338494Sobrien * Actions to take if <assert.h> exists. 90438494Sobrien */ 90538494Sobrien#ifdef HAVE_ASSERT_H 90638494Sobrien# include <assert.h> 90738494Sobrien#endif /* HAVE_ASSERT_H */ 90838494Sobrien 90938494Sobrien/* 91038494Sobrien * Actions to take if <cfs.h> exists. 91138494Sobrien */ 91238494Sobrien#ifdef HAVE_CFS_H 91338494Sobrien# include <cfs.h> 91438494Sobrien#endif /* HAVE_CFS_H */ 91538494Sobrien 91638494Sobrien/* 91738494Sobrien * Actions to take if <cluster.h> exists. 91838494Sobrien */ 91938494Sobrien#ifdef HAVE_CLUSTER_H 92038494Sobrien# include <cluster.h> 92138494Sobrien#endif /* HAVE_CLUSTER_H */ 92238494Sobrien 92338494Sobrien/* 92438494Sobrien * Actions to take if <ctype.h> exists. 92538494Sobrien */ 92638494Sobrien#ifdef HAVE_CTYPE_H 92738494Sobrien# include <ctype.h> 92838494Sobrien#endif /* HAVE_CTYPE_H */ 92938494Sobrien 93038494Sobrien/* 93138494Sobrien * Actions to take if <errno.h> exists. 93238494Sobrien */ 93338494Sobrien#ifdef HAVE_ERRNO_H 93438494Sobrien# include <errno.h> 935310490Scy#else 936310490Scy/* 937310490Scy * Actions to take if <sys/errno.h> exists. 938310490Scy */ 939310490Scy# ifdef HAVE_SYS_ERRNO_H 940310490Scy# include <sys/errno.h> 941310490Scyextern int errno; 942310490Scy# endif /* HAVE_SYS_ERRNO_H */ 94338494Sobrien#endif /* HAVE_ERRNO_H */ 94438494Sobrien 94538494Sobrien/* 94638494Sobrien * Actions to take if <grp.h> exists. 94738494Sobrien */ 94838494Sobrien#ifdef HAVE_GRP_H 94938494Sobrien# include <grp.h> 95038494Sobrien#endif /* HAVE_GRP_H */ 95138494Sobrien 95238494Sobrien/* 95338494Sobrien * Actions to take if <hsfs/hsfs.h> exists. 95438494Sobrien */ 95538494Sobrien#ifdef HAVE_HSFS_HSFS_H 95638494Sobrien# include <hsfs/hsfs.h> 95738494Sobrien#endif /* HAVE_HSFS_HSFS_H */ 95838494Sobrien 95938494Sobrien/* 96038494Sobrien * Actions to take if <cdfs/cdfsmount.h> exists. 96138494Sobrien */ 96238494Sobrien#ifdef HAVE_CDFS_CDFSMOUNT_H 96338494Sobrien# include <cdfs/cdfsmount.h> 96438494Sobrien#endif /* HAVE_CDFS_CDFSMOUNT_H */ 96538494Sobrien 96638494Sobrien/* 96738494Sobrien * Actions to take if <isofs/cd9660/cd9660_mount.h> exists. 96838494Sobrien */ 96938494Sobrien#ifdef HAVE_ISOFS_CD9660_CD9660_MOUNT_H 97038494Sobrien# include <isofs/cd9660/cd9660_mount.h> 97138494Sobrien#endif /* HAVE_ISOFS_CD9660_CD9660_MOUNT_H */ 97238494Sobrien 97338494Sobrien/* 974310490Scy * Actions to take if <fs/udf/udf_mount.h> exists. 975310490Scy */ 976310490Scy#ifdef HAVE_FS_UDF_UDF_MOUNT_H 977310490Scy# include <fs/udf/udf_mount.h> 978310490Scy#endif /* HAVE_FS_UDF_UDF_MOUNT_H */ 979310490Scy 980310490Scy/* 98138494Sobrien * Actions to take if <mount.h> exists. 98238494Sobrien */ 98338494Sobrien#ifdef HAVE_MOUNT_H 98438494Sobrien# include <mount.h> 98538494Sobrien#endif /* HAVE_MOUNT_H */ 98638494Sobrien 98738494Sobrien/* 98838494Sobrien * Actions to take if <nsswitch.h> exists. 98938494Sobrien */ 99038494Sobrien#ifdef HAVE_NSSWITCH_H 99138494Sobrien# include <nsswitch.h> 99238494Sobrien#endif /* HAVE_NSSWITCH_H */ 99338494Sobrien 99438494Sobrien/* 99538494Sobrien * Actions to take if <rpc/auth_des.h> exists. 99638494Sobrien */ 99738494Sobrien#ifdef HAVE_RPC_AUTH_DES_H 99838494Sobrien# include <rpc/auth_des.h> 99938494Sobrien#endif /* HAVE_RPC_AUTH_DES_H */ 100038494Sobrien 100138494Sobrien/* 100238494Sobrien * Actions to take if <rpc/pmap_clnt.h> exists. 100338494Sobrien */ 100438494Sobrien#ifdef HAVE_RPC_PMAP_CLNT_H 100538494Sobrien# include <rpc/pmap_clnt.h> 100638494Sobrien#endif /* HAVE_RPC_PMAP_CLNT_H */ 100738494Sobrien 100838494Sobrien/* 100938494Sobrien * Actions to take if <rpc/pmap_prot.h> exists. 101038494Sobrien */ 101138494Sobrien#ifdef HAVE_RPC_PMAP_PROT_H 101238494Sobrien# include <rpc/pmap_prot.h> 101338494Sobrien#endif /* HAVE_RPC_PMAP_PROT_H */ 101438494Sobrien 101538494Sobrien 101638494Sobrien/* 101738494Sobrien * Actions to take if <rpcsvc/mount.h> exists. 101838494Sobrien * AIX does not protect against this file doubly included, 101938494Sobrien * so I have to do my own protection here. 102038494Sobrien */ 102138494Sobrien#ifdef HAVE_RPCSVC_MOUNT_H 102238494Sobrien# ifndef _RPCSVC_MOUNT_H 102338494Sobrien# include <rpcsvc/mount.h> 102438494Sobrien# endif /* not _RPCSVC_MOUNT_H */ 102538494Sobrien#endif /* HAVE_RPCSVC_MOUNT_H */ 102638494Sobrien 102738494Sobrien/* 102838494Sobrien * Actions to take if <rpcsvc/nis.h> exists. 102938494Sobrien */ 103038494Sobrien#ifdef HAVE_RPCSVC_NIS_H 1031174299Sobrien/* 1032174299Sobrien * Solaris 10 (build 72) defines GROUP_OBJ in <sys/acl.h>, which is included 1033174299Sobrien * in many other header files. <rpcsvc/nis.h> uses GROUP_OBJ inside enum 1034174299Sobrien * zotypes. So if you're unlucky enough to include both headers, you get a 1035174299Sobrien * compile error because the two symbols conflict. 1036174299Sobrien * A similar conflict arises with Sun cc and the definition of "GROUP". 1037174299Sobrien * 1038174299Sobrien * Temp hack: undefine acl.h's GROUP_OBJ and GROUP because they're not needed 1039174299Sobrien * for am-utils. 1040174299Sobrien */ 1041174299Sobrien# ifdef GROUP_OBJ 1042174299Sobrien# undef GROUP_OBJ 1043174299Sobrien# endif /* GROUP_OBJ */ 1044174299Sobrien# ifdef GROUP 1045174299Sobrien# undef GROUP 1046174299Sobrien# endif /* GROUP */ 104738494Sobrien# include <rpcsvc/nis.h> 104838494Sobrien#endif /* HAVE_RPCSVC_NIS_H */ 104938494Sobrien 105038494Sobrien/* 105138494Sobrien * Actions to take if <setjmp.h> exists. 105238494Sobrien */ 105338494Sobrien#ifdef HAVE_SETJMP_H 105438494Sobrien# include <setjmp.h> 105538494Sobrien#endif /* HAVE_SETJMP_H */ 105638494Sobrien 105738494Sobrien/* 105838494Sobrien * Actions to take if <signal.h> exists. 105938494Sobrien */ 106038494Sobrien#ifdef HAVE_SIGNAL_H 106138494Sobrien# include <signal.h> 106238494Sobrien#endif /* HAVE_SIGNAL_H */ 106338494Sobrien 106438494Sobrien/* 106538494Sobrien * Actions to take if <string.h> exists. 106638494Sobrien */ 106738494Sobrien#ifdef HAVE_STRING_H 106838494Sobrien# include <string.h> 106938494Sobrien#endif /* HAVE_STRING_H */ 107038494Sobrien 107138494Sobrien/* 107238494Sobrien * Actions to take if <strings.h> exists. 107338494Sobrien */ 107438494Sobrien#ifdef HAVE_STRINGS_H 107538494Sobrien# include <strings.h> 107638494Sobrien#endif /* HAVE_STRINGS_H */ 107738494Sobrien 107838494Sobrien/* 107938494Sobrien * Actions to take if <sys/config.h> exists. 108038494Sobrien */ 108138494Sobrien#ifdef HAVE_SYS_CONFIG_H 108238494Sobrien# include <sys/config.h> 108338494Sobrien#endif /* HAVE_SYS_CONFIG_H */ 108438494Sobrien 108538494Sobrien/* 108638494Sobrien * Actions to take if <sys/dg_mount.h> exists. 108738494Sobrien */ 108838494Sobrien#ifdef HAVE_SYS_DG_MOUNT_H 108938494Sobrien# include <sys/dg_mount.h> 109038494Sobrien#endif /* HAVE_SYS_DG_MOUNT_H */ 109138494Sobrien 109238494Sobrien/* 109338494Sobrien * Actions to take if <sys/fs_types.h> exists. 109438494Sobrien */ 109538494Sobrien#ifdef HAVE_SYS_FS_TYPES_H 109638494Sobrien/* 109738494Sobrien * Define KERNEL here to avoid multiple definitions of gt_names[] on 109838494Sobrien * Ultrix 4.3. 109938494Sobrien */ 110038494Sobrien# define KERNEL 110138494Sobrien# include <sys/fs_types.h> 110238494Sobrien# undef KERNEL 110338494Sobrien#endif /* HAVE_SYS_FS_TYPES_H */ 110438494Sobrien 110538494Sobrien/* 110638494Sobrien * Actions to take if <sys/fstyp.h> exists. 110738494Sobrien */ 110838494Sobrien#ifdef HAVE_SYS_FSTYP_H 110938494Sobrien# include <sys/fstyp.h> 111038494Sobrien#endif /* HAVE_SYS_FSTYP_H */ 111138494Sobrien 111238494Sobrien/* 111338494Sobrien * Actions to take if <sys/lock.h> exists. 111438494Sobrien */ 111538494Sobrien#ifdef HAVE_SYS_LOCK_H 111638494Sobrien# include <sys/lock.h> 111738494Sobrien#endif /* HAVE_SYS_LOCK_H */ 111838494Sobrien 111938494Sobrien/* 112038494Sobrien * Actions to take if <sys/machine.h> exists. 112138494Sobrien */ 112238494Sobrien#ifdef HAVE_SYS_MACHINE_H 112338494Sobrien# include <sys/machine.h> 112438494Sobrien#endif /* HAVE_SYS_MACHINE_H */ 112538494Sobrien 112638494Sobrien/* 112738494Sobrien * Actions to take if <sys/mntctl.h> exists. 112838494Sobrien */ 112938494Sobrien#ifdef HAVE_SYS_MNTCTL_H 113038494Sobrien# include <sys/mntctl.h> 113138494Sobrien#endif /* HAVE_SYS_MNTCTL_H */ 113238494Sobrien 113338494Sobrien/* 113438494Sobrien * Actions to take if <sys/mnttab.h> exists. 113538494Sobrien */ 113638494Sobrien#ifdef HAVE_SYS_MNTTAB_H 113738494Sobrien# include <sys/mnttab.h> 113838494Sobrien#endif /* HAVE_SYS_MNTTAB_H */ 113938494Sobrien 114038494Sobrien/* 114138494Sobrien * Actions to take if <mnttab.h> exists. 114238494Sobrien * Do not include it if MNTTAB is already defined because it probably 114338494Sobrien * came from <sys/mnttab.h> and we do not want conflicting definitions. 114438494Sobrien */ 114538494Sobrien#if defined(HAVE_MNTTAB_H) && !defined(MNTTAB) 114638494Sobrien# include <mnttab.h> 114738494Sobrien#endif /* defined(HAVE_MNTTAB_H) && !defined(MNTTAB) */ 114838494Sobrien 114938494Sobrien/* 115038494Sobrien * Actions to take if <netconfig.h> exists. 115138494Sobrien */ 115238494Sobrien#ifdef HAVE_NETCONFIG_H 115338494Sobrien# include <netconfig.h> 115438494Sobrien/* Some systems (Solaris 2.5.1) don't declare this external */ 115538494Sobrienextern char *nc_sperror(void); 115638494Sobrien#endif /* HAVE_NETCONFIG_H */ 115738494Sobrien 115838494Sobrien/* 115938494Sobrien * Actions to take if <sys/netconfig.h> exists. 116038494Sobrien */ 116138494Sobrien#ifdef HAVE_SYS_NETCONFIG_H 116238494Sobrien# include <sys/netconfig.h> 116338494Sobrien#endif /* HAVE_SYS_NETCONFIG_H */ 116438494Sobrien 116538494Sobrien/* 116638494Sobrien * Actions to take if <sys/pathconf.h> exists. 116738494Sobrien */ 116838494Sobrien#ifdef HAVE_SYS_PATHCONF_H 116938494Sobrien# include <sys/pathconf.h> 117038494Sobrien#endif /* HAVE_SYS_PATHCONF_H */ 117138494Sobrien 117238494Sobrien/* 117338494Sobrien * Actions to take if <sys/resource.h> exists. 117438494Sobrien */ 117538494Sobrien#ifdef HAVE_SYS_RESOURCE_H 117638494Sobrien# include <sys/resource.h> 117738494Sobrien#endif /* HAVE_SYS_RESOURCE_H */ 117838494Sobrien 117938494Sobrien/* 118038494Sobrien * Actions to take if <sys/sema.h> exists. 118138494Sobrien */ 118238494Sobrien#ifdef HAVE_SYS_SEMA_H 118338494Sobrien# include <sys/sema.h> 118438494Sobrien#endif /* HAVE_SYS_SEMA_H */ 118538494Sobrien 118638494Sobrien/* 118738494Sobrien * Actions to take if <sys/signal.h> exists. 118838494Sobrien */ 118938494Sobrien#ifdef HAVE_SYS_SIGNAL_H 119038494Sobrien# include <sys/signal.h> 119138494Sobrien#endif /* HAVE_SYS_SIGNAL_H */ 119238494Sobrien 119338494Sobrien/* 119438494Sobrien * Actions to take if <sys/sockio.h> exists. 119538494Sobrien */ 119638494Sobrien#ifdef HAVE_SYS_SOCKIO_H 119738494Sobrien# include <sys/sockio.h> 119838494Sobrien#endif /* HAVE_SYS_SOCKIO_H */ 119938494Sobrien 120038494Sobrien/* 120138494Sobrien * Actions to take if <sys/syscall.h> exists. 120238494Sobrien */ 120338494Sobrien#ifdef HAVE_SYS_SYSCALL_H 120438494Sobrien# include <sys/syscall.h> 120538494Sobrien#endif /* HAVE_SYS_SYSCALL_H */ 120638494Sobrien 120738494Sobrien/* 120838494Sobrien * Actions to take if <sys/syslimits.h> exists. 120938494Sobrien */ 121038494Sobrien#ifdef HAVE_SYS_SYSLIMITS_H 121138494Sobrien# include <sys/syslimits.h> 121238494Sobrien#endif /* HAVE_SYS_SYSLIMITS_H */ 121338494Sobrien 121438494Sobrien/* 121538494Sobrien * Actions to take if <tiuser.h> exists. 121638494Sobrien */ 121738494Sobrien#ifdef HAVE_TIUSER_H 121838494Sobrien/* 121942633Sobrien * Some systems like AIX have multiple definitions for T_NULL and others 122038494Sobrien * that are defined first in <arpa/nameser.h>. 122138494Sobrien */ 122238494Sobrien# ifdef HAVE_ARPA_NAMESER_H 122338494Sobrien# ifdef T_NULL 122438494Sobrien# undef T_NULL 122538494Sobrien# endif /* T_NULL */ 122638494Sobrien# ifdef T_UNSPEC 122738494Sobrien# undef T_UNSPEC 122838494Sobrien# endif /* T_UNSPEC */ 122938494Sobrien# ifdef T_IDLE 123038494Sobrien# undef T_IDLE 123138494Sobrien# endif /* T_IDLE */ 123238494Sobrien# endif /* HAVE_ARPA_NAMESER_H */ 123338494Sobrien# include <tiuser.h> 123438494Sobrien#endif /* HAVE_TIUSER_H */ 123538494Sobrien 123638494Sobrien/* 123738494Sobrien * Actions to take if <sys/tiuser.h> exists. 123838494Sobrien */ 123938494Sobrien#ifdef HAVE_SYS_TIUSER_H 124038494Sobrien# include <sys/tiuser.h> 124138494Sobrien#endif /* HAVE_SYS_TIUSER_H */ 124238494Sobrien 124338494Sobrien/* 124438494Sobrien * Actions to take if <sys/statfs.h> exists. 124538494Sobrien */ 124638494Sobrien#ifdef HAVE_SYS_STATFS_H 124738494Sobrien# include <sys/statfs.h> 124838494Sobrien#endif /* HAVE_SYS_STATFS_H */ 124938494Sobrien 125038494Sobrien/* 1251174299Sobrien * Actions to take if <sys/statvfs.h> exists. 1252174299Sobrien */ 1253174299Sobrien#ifdef HAVE_SYS_STATVFS_H 1254174299Sobrien# include <sys/statvfs.h> 1255174299Sobrien#endif /* HAVE_SYS_STATVFS_H */ 1256174299Sobrien 1257174299Sobrien/* 125838494Sobrien * Actions to take if <sys/vfs.h> exists. 125938494Sobrien */ 126038494Sobrien#ifdef HAVE_SYS_VFS_H 126138494Sobrien# include <sys/vfs.h> 126238494Sobrien#endif /* HAVE_SYS_VFS_H */ 126338494Sobrien 126438494Sobrien/* 126538494Sobrien * Actions to take if <sys/vmount.h> exists. 126638494Sobrien */ 126738494Sobrien#ifdef HAVE_SYS_VMOUNT_H 126838494Sobrien# include <sys/vmount.h> 126938494Sobrien#endif /* HAVE_SYS_VMOUNT_H */ 127038494Sobrien 127138494Sobrien/* 127238494Sobrien * Actions to take if <ufs/ufs_mount.h> exists. 127338494Sobrien */ 127438494Sobrien#ifdef HAVE_UFS_UFS_MOUNT_H 127582805Sobrien# include <ufs/ufs_mount.h> 127682805Sobrien#endif /* HAVE_UFS_UFS_MOUNT_H */ 127738494Sobrien 127838494Sobrien/* 127938494Sobrien * Are S_ISDIR, S_ISREG, et al broken? If not, include <sys/stat.h>. 128038494Sobrien * Turned off the not using sys/stat.h based on if the macros are 128138494Sobrien * "broken", because they incorrectly get reported as broken on 128238494Sobrien * ncr2. 128338494Sobrien */ 128438494Sobrien#ifndef STAT_MACROS_BROKEN_notused 128538494Sobrien/* 128638494Sobrien * RedHat Linux 4.2 (alpha) has a problem in the headers that causes 128742633Sobrien * duplicate definitions, and also some other nasty bugs. Upgrade to Redhat 128838494Sobrien * 5.0! 128938494Sobrien */ 129038494Sobrien# ifdef HAVE_SYS_STAT_H 129138494Sobrien/* avoid duplicates or conflicts with <linux/stat.h> (RedHat alpha linux) */ 129238494Sobrien# if defined(S_IFREG) && defined(HAVE_STATBUF_H) 129338494Sobrien# include <statbuf.h> 129438494Sobrien# undef S_IFBLK 129538494Sobrien# undef S_IFCHR 129638494Sobrien# undef S_IFDIR 129738494Sobrien# undef S_IFIFO 129838494Sobrien# undef S_IFLNK 129938494Sobrien# undef S_IFMT 130038494Sobrien# undef S_IFREG 130138494Sobrien# undef S_IFSOCK 130238494Sobrien# undef S_IRGRP 130338494Sobrien# undef S_IROTH 130438494Sobrien# undef S_IRUSR 130538494Sobrien# undef S_IRWXG 130638494Sobrien# undef S_IRWXO 130738494Sobrien# undef S_IRWXU 130838494Sobrien# undef S_ISBLK 130938494Sobrien# undef S_ISCHR 131038494Sobrien# undef S_ISDIR 131138494Sobrien# undef S_ISFIFO 131238494Sobrien# undef S_ISGID 131338494Sobrien# undef S_ISLNK 131438494Sobrien# undef S_ISREG 131538494Sobrien# undef S_ISSOCK 131638494Sobrien# undef S_ISUID 131738494Sobrien# undef S_ISVTX 131838494Sobrien# undef S_IWGRP 131938494Sobrien# undef S_IWOTH 132038494Sobrien# undef S_IWUSR 132138494Sobrien# undef S_IXGRP 132238494Sobrien# undef S_IXOTH 132338494Sobrien# undef S_IXUSR 132438494Sobrien# endif /* defined(S_IFREG) && defined(HAVE_STATBUF_H) */ 132538494Sobrien# include <sys/stat.h> 132638494Sobrien# endif /* HAVE_SYS_STAT_H */ 132738494Sobrien#endif /* not STAT_MACROS_BROKEN_notused */ 132838494Sobrien 132938494Sobrien/* 133038494Sobrien * Actions to take if <stdio.h> exists. 133138494Sobrien */ 133238494Sobrien#ifdef HAVE_STDIO_H 133338494Sobrien# include <stdio.h> 133438494Sobrien#endif /* HAVE_STDIO_H */ 133538494Sobrien 133638494Sobrien/* 133738494Sobrien * Actions to take if <stdlib.h> exists. 133838494Sobrien */ 133938494Sobrien#ifdef HAVE_STDLIB_H 134038494Sobrien# include <stdlib.h> 134138494Sobrien#endif /* HAVE_STDLIB_H */ 134238494Sobrien 134338494Sobrien/* 134438494Sobrien * Actions to take if <regex.h> exists. 134538494Sobrien */ 134638494Sobrien#ifdef HAVE_REGEX_H 134738494Sobrien# include <regex.h> 134838494Sobrien#endif /* HAVE_REGEX_H */ 134938494Sobrien 1350174299Sobrien/* 1351174299Sobrien * Actions to take if <tcpd.h> exists. 1352174299Sobrien */ 1353174299Sobrien#if defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) 1354174299Sobrien# include <tcpd.h> 1355174299Sobrien#endif /* defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) */ 135638494Sobrien 1357174299Sobrien 135838494Sobrien/****************************************************************************/ 135938494Sobrien/* 136038494Sobrien * Specific macros we're looking for. 136138494Sobrien */ 136238494Sobrien#ifndef HAVE_MEMSET 136338494Sobrien# ifdef HAVE_BZERO 136438494Sobrien# define memset(ptr, val, len) bzero((ptr), (len)) 136538494Sobrien# else /* not HAVE_BZERO */ 136638494Sobrien# error Cannot find either memset or bzero! 136738494Sobrien# endif /* not HAVE_BZERO */ 136838494Sobrien#endif /* not HAVE_MEMSET */ 136938494Sobrien 137038494Sobrien#ifndef HAVE_MEMMOVE 137138494Sobrien# ifdef HAVE_BCOPY 137238494Sobrien# define memmove(to, from, len) bcopy((from), (to), (len)) 137338494Sobrien# else /* not HAVE_BCOPY */ 137438494Sobrien# error Cannot find either memmove or bcopy! 137538494Sobrien# endif /* not HAVE_BCOPY */ 137638494Sobrien#endif /* not HAVE_MEMMOVE */ 137738494Sobrien 137838494Sobrien/* 137938494Sobrien * memcmp() is more problematic: 138038494Sobrien * Systems that don't have it, but have bcmp(), will use bcmp() instead. 138138494Sobrien * Those that have it, but it is bad (SunOS 4 doesn't handle 138238494Sobrien * 8 bit comparisons correctly), will get to use am_memcmp(). 138338494Sobrien * Otherwise if you have memcmp() and it is good, use it. 138438494Sobrien */ 138538494Sobrien#ifdef HAVE_MEMCMP 138638494Sobrien# ifdef HAVE_BAD_MEMCMP 138738494Sobrien# define memcmp am_memcmp 138838494Sobrienextern int am_memcmp(const voidp s1, const voidp s2, size_t len); 138938494Sobrien# endif /* HAVE_BAD_MEMCMP */ 139038494Sobrien#else /* not HAVE_MEMCMP */ 139138494Sobrien# ifdef HAVE_BCMP 139238494Sobrien# define memcmp(a, b, len) bcmp((a), (b), (len)) 139338494Sobrien# endif /* HAVE_BCMP */ 139438494Sobrien#endif /* not HAVE_MEMCMP */ 139538494Sobrien 139638494Sobrien#ifndef HAVE_SETEUID 139738494Sobrien# ifdef HAVE_SETRESUID 139838494Sobrien# define seteuid(x) setresuid(-1,(x),-1) 139938494Sobrien# else /* not HAVE_SETRESUID */ 140038494Sobrien# error Cannot find either seteuid or setresuid! 140138494Sobrien# endif /* not HAVE_SETRESUID */ 140238494Sobrien#endif /* not HAVE_SETEUID */ 140338494Sobrien 140438494Sobrien/* 140538494Sobrien * Define type of mntent_t. 140638494Sobrien * Defaults to struct mntent, else struct mnttab. If neither is found, and 140738494Sobrien * the operating system does keep not mount tables in the kernel, then flag 140838494Sobrien * it as an error. If neither is found and the OS keeps mount tables in the 140938494Sobrien * kernel, then define our own version of mntent; it will be needed for amd 141038494Sobrien * to keep its own internal version of the mount tables. 141138494Sobrien */ 141238494Sobrien#ifdef HAVE_STRUCT_MNTENT 141338494Sobrientypedef struct mntent mntent_t; 141438494Sobrien#else /* not HAVE_STRUCT_MNTENT */ 141538494Sobrien# ifdef HAVE_STRUCT_MNTTAB 141638494Sobrientypedef struct mnttab mntent_t; 141738494Sobrien/* map struct mnttab field names to struct mntent field names */ 141838494Sobrien# define mnt_fsname mnt_special 141938494Sobrien# define mnt_dir mnt_mountp 142038494Sobrien# define mnt_opts mnt_mntopts 142138494Sobrien# define mnt_type mnt_fstype 142238494Sobrien# else /* not HAVE_STRUCT_MNTTAB */ 142338494Sobrien# ifdef MOUNT_TABLE_ON_FILE 142438494Sobrien# error Could not find definition for struct mntent or struct mnttab! 142538494Sobrien# else /* not MOUNT_TABLE_ON_FILE */ 142638494Sobrientypedef struct _am_mntent { 142738494Sobrien char *mnt_fsname; /* name of mounted file system */ 142838494Sobrien char *mnt_dir; /* file system path prefix */ 142938494Sobrien char *mnt_type; /* MNTTAB_TYPE_* */ 143038494Sobrien char *mnt_opts; /* MNTTAB_OPT_* */ 143138494Sobrien int mnt_freq; /* dump frequency, in days */ 143238494Sobrien int mnt_passno; /* pass number on parallel fsck */ 143338494Sobrien} mntent_t; 143438494Sobrien# endif /* not MOUNT_TABLE_ON_FILE */ 143538494Sobrien# endif /* not HAVE_STRUCT_MNTTAB */ 143638494Sobrien#endif /* not HAVE_STRUCT_MNTENT */ 143738494Sobrien 1438174299Sobrien/* 1439174299Sobrien * Provide FD_* macros for systems that lack them. 1440174299Sobrien */ 1441174299Sobrien#ifndef FD_SET 1442174299Sobrien# define FD_SET(fd, set) (*(set) |= (1 << (fd))) 1443174299Sobrien# define FD_ISSET(fd, set) (*(set) & (1 << (fd))) 1444174299Sobrien# define FD_CLR(fd, set) (*(set) &= ~(1 << (fd))) 1445174299Sobrien# define FD_ZERO(set) (*(set) = 0) 1446174299Sobrien#endif /* not FD_SET */ 144738494Sobrien 1448174299Sobrien 144938494Sobrien/* 145038494Sobrien * Complete external definitions missing from some systems. 145138494Sobrien */ 145238494Sobrien 145338494Sobrien#ifndef HAVE_EXTERN_SYS_ERRLIST 145482805Sobrienextern const char *const sys_errlist[]; 145538494Sobrien#endif /* not HAVE_EXTERN_SYS_ERRLIST */ 145638494Sobrien 145738494Sobrien#ifndef HAVE_EXTERN_OPTARG 145838494Sobrienextern char *optarg; 145938494Sobrienextern int optind; 146038494Sobrien#endif /* not HAVE_EXTERN_OPTARG */ 146138494Sobrien 146251300Sobrien#if defined(HAVE_CLNT_SPCREATEERROR) && !defined(HAVE_EXTERN_CLNT_SPCREATEERROR) 146351300Sobrienextern char *clnt_spcreateerror(const char *s); 146451300Sobrien#endif /* defined(HAVE_CLNT_SPCREATEERROR) && !defined(HAVE_EXTERN_CLNT_SPCREATEERROR) */ 146551300Sobrien 146638494Sobrien#if defined(HAVE_CLNT_SPERRNO) && !defined(HAVE_EXTERN_CLNT_SPERRNO) 146738494Sobrienextern char *clnt_sperrno(const enum clnt_stat num); 146838494Sobrien#endif /* defined(HAVE_CLNT_SPERRNO) && !defined(HAVE_EXTERN_CLNT_SPERRNO) */ 146938494Sobrien 147038494Sobrien#ifndef HAVE_EXTERN_FREE 147138494Sobrienextern void free(voidp); 147238494Sobrien#endif /* not HAVE_EXTERN_FREE */ 147338494Sobrien 147438494Sobrien#if defined(HAVE_GET_MYADDRESS) && !defined(HAVE_EXTERN_GET_MYADDRESS) 147538494Sobrienextern void get_myaddress(struct sockaddr_in *addr); 147638494Sobrien#endif /* defined(HAVE_GET_MYADDRESS) && !defined(HAVE_EXTERN_GET_MYADDRESS) */ 147738494Sobrien 147838494Sobrien#if defined(HAVE_GETDOMAINNAME) && !defined(HAVE_EXTERN_GETDOMAINNAME) 147938494Sobrien# if defined(HAVE_MAP_NIS) || defined(HAVE_MAP_NISPLUS) 148038494Sobrienextern int getdomainname(char *name, int namelen); 148138494Sobrien# endif /* defined(HAVE_MAP_NIS) || defined(HAVE_MAP_NISPLUS) */ 148238494Sobrien#endif /* defined(HAVE_GETDOMAINNAME) && !defined(HAVE_EXTERN_GETDOMAINNAME) */ 148338494Sobrien 148438494Sobrien#if defined(HAVE_GETDTABLESIZE) && !defined(HAVE_EXTERN_GETDTABLESIZE) 148538494Sobrienextern int getdtablesize(void); 148638494Sobrien#endif /* defined(HAVE_GETDTABLESIZE) && !defined(HAVE_EXTERN_GETDTABLESIZE) */ 148738494Sobrien 148838494Sobrien#if defined(HAVE_GETHOSTNAME) && !defined(HAVE_EXTERN_GETHOSTNAME) 148938494Sobrienextern int gethostname(char *name, int namelen); 149038494Sobrien#endif /* defined(HAVE_GETHOSTNAME) && !defined(HAVE_EXTERN_GETHOSTNAME) */ 149138494Sobrien 149242633Sobrien#ifndef HAVE_EXTERN_GETLOGIN 149342633Sobrienextern char *getlogin(void); 149442633Sobrien#endif /* not HAVE_EXTERN_GETLOGIN */ 149542633Sobrien 149638494Sobrien#if defined(HAVE_GETPAGESIZE) && !defined(HAVE_EXTERN_GETPAGESIZE) 149738494Sobrienextern int getpagesize(void); 149838494Sobrien#endif /* defined(HAVE_GETPAGESIZE) && !defined(HAVE_EXTERN_GETPAGESIZE) */ 149938494Sobrien 150038494Sobrien#ifndef HAVE_EXTERN_GETWD 150138494Sobrienextern char *getwd(char *s); 150238494Sobrien#endif /* not HAVE_EXTERN_GETWD */ 150338494Sobrien 1504174299Sobrien#if defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) && !defined(HAVE_EXTERN_HOSTS_CTL) 1505174299Sobrienextern int hosts_ctl(char *daemon, char *client_name, char *client_addr, char *client_user); 1506174299Sobrien#endif /* defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) && !defined(HAVE_EXTERN_HOSTS_CTL) */ 1507174299Sobrien 150838494Sobrien#ifndef HAVE_EXTERN_INNETGR 150938494Sobrienextern int innetgr(char *, char *, char *, char *); 151038494Sobrien#endif /* not HAVE_EXTERN_INNETGR */ 151138494Sobrien 151238494Sobrien#if defined(HAVE_MKSTEMP) && !defined(HAVE_EXTERN_MKSTEMP) 151338494Sobrienextern int mkstemp(char *); 151438494Sobrien#endif /* defined(HAVE_MKSTEMP) && !defined(HAVE_EXTERN_MKSTEMP) */ 151538494Sobrien 151638494Sobrien#ifndef HAVE_EXTERN_SBRK 151738494Sobrienextern caddr_t sbrk(int incr); 151838494Sobrien#endif /* not HAVE_EXTERN_SBRK */ 151938494Sobrien 152042633Sobrien#if defined(HAVE_SETEUID) && !defined(HAVE_EXTERN_SETEUID) 152142633Sobrienextern int seteuid(uid_t euid); 152242633Sobrien#endif /* not defined(HAVE_SETEUID) && !defined(HAVE_EXTERN_SETEUID) */ 152342633Sobrien 152451595Sobrien#if defined(HAVE_SETITIMER) && !defined(HAVE_EXTERN_SETITIMER) 152551595Sobrienextern int setitimer(int, struct itimerval *, struct itimerval *); 152651595Sobrien#endif /* defined(HAVE_SETITIMER) && !defined(HAVE_EXTERN_SETITIMER) */ 152751595Sobrien 1528174299Sobrien#ifndef HAVE_EXTERN_SLEEP 1529174299Sobrienextern unsigned int sleep(unsigned int seconds); 1530174299Sobrien#endif /* not HAVE_EXTERN_SETITIMER */ 1531174299Sobrien 153238494Sobrien#ifndef HAVE_EXTERN_STRCASECMP 153338494Sobrien/* 153438494Sobrien * define this extern even if function does not exist, for it will 153538494Sobrien * be filled in by libamu/strcasecmp.c 153638494Sobrien */ 153738494Sobrienextern int strcasecmp(const char *s1, const char *s2); 153838494Sobrien#endif /* not HAVE_EXTERN_STRCASECMP */ 153938494Sobrien 1540174299Sobrien#ifndef HAVE_EXTERN_STRLCAT 1541174299Sobrien/* 1542174299Sobrien * define this extern even if function does not exist, for it will 1543174299Sobrien * be filled in by libamu/strlcat.c 1544174299Sobrien */ 1545174299Sobrienextern size_t strlcat(char *dst, const char *src, size_t siz); 1546174299Sobrien#endif /* not HAVE_EXTERN_STRLCAT */ 1547174299Sobrien 1548174299Sobrien#ifndef HAVE_EXTERN_STRLCPY 1549174299Sobrien/* 1550174299Sobrien * define this extern even if function does not exist, for it will 1551174299Sobrien * be filled in by libamu/strlcpy.c 1552174299Sobrien */ 1553174299Sobrienextern size_t strlcpy(char *dst, const char *src, size_t siz); 1554174299Sobrien#endif /* not HAVE_EXTERN_STRLCPY */ 1555174299Sobrien 155638494Sobrien#if defined(HAVE_STRSTR) && !defined(HAVE_EXTERN_STRSTR) 155738494Sobrienextern char *strstr(const char *s1, const char *s2); 155838494Sobrien#endif /* defined(HAVE_STRSTR) && !defined(HAVE_EXTERN_STRSTR) */ 155938494Sobrien 156038494Sobrien#if defined(HAVE_USLEEP) && !defined(HAVE_EXTERN_USLEEP) 156138494Sobrienextern int usleep(u_int useconds); 156238494Sobrien#endif /* defined(HAVE_USLEEP) && !defined(HAVE_EXTERN_USLEEP) */ 156338494Sobrien 156438494Sobrien#ifndef HAVE_EXTERN_UALARM 156538494Sobrienextern u_int ualarm(u_int usecs, u_int interval); 156638494Sobrien#endif /* not HAVE_EXTERN_UALARM */ 156738494Sobrien 156838494Sobrien#if defined(HAVE_WAIT3) && !defined(HAVE_EXTERN_WAIT3) 156938494Sobrienextern int wait3(int *statusp, int options, struct rusage *rusage); 157038494Sobrien#endif /* defined(HAVE_WAIT3) && !defined(HAVE_EXTERN_WAIT3) */ 157138494Sobrien 157252897Sobrien#if defined(HAVE_VSNPRINTF) && !defined(HAVE_EXTERN_VSNPRINTF) 157352897Sobrienextern int vsnprintf(char *, int, const char *, ...); 157452897Sobrien#endif /* defined(HAVE_VSNPRINTF) && !defined(HAVE_EXTERN_VSNPRINTF) */ 157552897Sobrien 1576119682Smbr#ifndef HAVE_EXTERN_XDR_CALLMSG 1577119682Smbrextern bool_t xdr_callmsg(XDR *xdrs, struct rpc_msg *msg); 1578119682Smbr#endif /* not HAVE_EXTERN_XDR_CALLMSG */ 1579119682Smbr 158038494Sobrien#ifndef HAVE_EXTERN_XDR_OPAQUE_AUTH 158142633Sobrienextern bool_t xdr_opaque_auth(XDR *xdrs, struct opaque_auth *auth); 158238494Sobrien#endif /* not HAVE_EXTERN_XDR_OPAQUE_AUTH */ 158338494Sobrien 158438494Sobrien/****************************************************************************/ 158538494Sobrien/* 158638494Sobrien * amd-specific header files. 158738494Sobrien */ 158838494Sobrien#ifdef THIS_HEADER_FILE_IS_INCLUDED_ABOVE 158938494Sobrien# include <amu_nfs_prot.h> 159038494Sobrien#endif /* THIS_HEADER_FILE_IS_INCLUDED_ABOVE */ 1591174299Sobrien#include <am_compat.h> 1592174299Sobrien#include <am_xdr_func.h> 159338494Sobrien#include <am_utils.h> 159438494Sobrien#include <amq_defs.h> 159538494Sobrien#include <aux_conf.h> 159638494Sobrien 159738494Sobrien 159838494Sobrien/****************************************************************************/ 159938494Sobrien/* 160042633Sobrien * External definitions that depend on other macros available (or not) 160138494Sobrien * and those are probably declared in any of the above headers. 160238494Sobrien */ 160338494Sobrien 1604174299Sobrien#ifdef HAVE_HASMNTOPT 1605174299Sobrien# ifdef HAVE_BAD_HASMNTOPT 1606174299Sobrienextern char *amu_hasmntopt(mntent_t *mnt, char *opt); 1607174299Sobrien# else /* not HAVE_BAD_HASMNTOPT */ 1608174299Sobrien# define amu_hasmntopt hasmntopt 1609174299Sobrien# endif /* not HAVE_BAD_HASMNTOPT */ 1610174299Sobrien#else /* not HAVE_HASMNTOPT */ 1611174299Sobrienextern char *amu_hasmntopt(mntent_t *mnt, char *opt); 161238494Sobrien#endif /* not HAVE_HASMNTOPT */ 161338494Sobrien 161438494Sobrien#endif /* not _AM_DEFS_H */ 1615