138494Sobrien/* 2174299Sobrien * Copyright (c) 1997-2006 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. 1938494Sobrien * 3. All advertising materials mentioning features or use of this software 2042633Sobrien * must display the following acknowledgment: 2138494Sobrien * This product includes software developed by the University of 2238494Sobrien * California, Berkeley and its contributors. 2338494Sobrien * 4. Neither the name of the University nor the names of its contributors 2438494Sobrien * may be used to endorse or promote products derived from this software 2538494Sobrien * without specific prior written permission. 2638494Sobrien * 2738494Sobrien * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2838494Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2938494Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 3038494Sobrien * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 3138494Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 3238494Sobrien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 3338494Sobrien * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3438494Sobrien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 3538494Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3638494Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3738494Sobrien * SUCH DAMAGE. 3838494Sobrien * 3938494Sobrien * 40174299Sobrien * File: am-utils/include/am_defs.h 41131706Smbr * $Id: am_defs.h,v 1.15.2.16 2004/05/12 15:54:31 ezk Exp $ 4251300Sobrien * $FreeBSD$ 4338494Sobrien * 4438494Sobrien */ 4538494Sobrien 4638494Sobrien/* 4738494Sobrien * Definitions that are not specific to the am-utils package, but 4838494Sobrien * are rather generic, and can be used elsewhere. 4938494Sobrien */ 5038494Sobrien 5138494Sobrien#ifndef _AM_DEFS_H 5238494Sobrien#define _AM_DEFS_H 5338494Sobrien 5438494Sobrien/* 5538494Sobrien * Actions to take if ANSI C. 5638494Sobrien */ 5738494Sobrien#if STDC_HEADERS 5838494Sobrien# include <string.h> 5938494Sobrien/* for function prototypes */ 6038494Sobrien# define P(x) x 6138494Sobrien# define P_void void 6238494Sobrien#else /* not STDC_HEADERS */ 6338494Sobrien/* empty function prototypes */ 6438494Sobrien# define P(x) () 6538494Sobrien# define P_void 6638494Sobrien# ifndef HAVE_STRCHR 6738494Sobrien# define strchr index 6838494Sobrien# define strrchr rindex 6938494Sobrien# endif /* not HAVE_STRCHR */ 7038494Sobrienchar *strchr(), *strrchr(), *strdup(); 7138494Sobrien#endif /* not STDC_HEADERS */ 7238494Sobrien 7338494Sobrien/* 7451300Sobrien * Handle gcc __attribute__ if available. 7551300Sobrien */ 7651300Sobrien#ifndef __attribute__ 7751300Sobrien/* This feature is available in gcc versions 2.5 and later. */ 7851300Sobrien# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ 7951300Sobrien# define __attribute__(Spec) /* empty */ 8051300Sobrien# endif /* __GNUC__ < 2 ... */ 8151300Sobrien/* 8251300Sobrien * The __-protected variants of `format' and `printf' attributes 8351300Sobrien * are accepted by gcc versions 2.6.4 (effectively 2.7) and later. 8451300Sobrien */ 8551300Sobrien# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) 8651300Sobrien# define __format__ format 8751300Sobrien# define __printf__ printf 8851300Sobrien# endif /* __GNUC__ < 2 ... */ 8951300Sobrien#endif /* not __attribute__ */ 9051300Sobrien 9151300Sobrien/* 9238494Sobrien * How to handle signals of any type 9338494Sobrien */ 9438494Sobrien#ifdef HAVE_SYS_WAIT_H 9538494Sobrien# include <sys/wait.h> 9638494Sobrien#endif /* HAVE_SYS_WAIT_H */ 9738494Sobrien#ifndef WEXITSTATUS 9838494Sobrien# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) 9938494Sobrien#endif /* not WEXITSTATUS */ 10038494Sobrien#ifndef WIFEXITED 10138494Sobrien# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) 10238494Sobrien#endif /* not WIFEXITED */ 10338494Sobrien 10438494Sobrien/* 10538494Sobrien * Actions to take regarding <time.h> and <sys/time.h>. 10638494Sobrien */ 10738494Sobrien#if TIME_WITH_SYS_TIME 10838494Sobrien# include <sys/time.h> 109174299Sobrien# ifdef _ALL_SOURCE 110174299Sobrien/* 111174299Sobrien * AIX 5.2 needs struct sigevent from signal.h to be defined, but I 112174299Sobrien * don't want to move the inclusion of signal.h this early into this 113174299Sobrien * file. Luckily, amd doesn't need the size of this structure in any 114174299Sobrien * other structure that it uses. So we sidestep it for now. 115174299Sobrien */ 116174299Sobrienstruct sigevent; 117174299Sobrien# endif /* _ALL_SOURCE */ 11838494Sobrien# include <time.h> 11938494Sobrien#else /* not TIME_WITH_SYS_TIME */ 12038494Sobrien# if HAVE_SYS_TIME_H 12138494Sobrien# include <sys/time.h> 12238494Sobrien# else /* not HAVE_SYS_TIME_H */ 12338494Sobrien# include <time.h> 12438494Sobrien# endif /* not HAVE_SYS_TIME_H */ 12538494Sobrien#endif /* not TIME_WITH_SYS_TIME */ 12638494Sobrien 12738494Sobrien/* 12838494Sobrien * Actions to take if <machine/endian.h> exists. 12938494Sobrien */ 13038494Sobrien#ifdef HAVE_MACHINE_ENDIAN_H 13138494Sobrien# include <machine/endian.h> 13238494Sobrien#endif /* HAVE_MACHINE_ENDIAN_H */ 13338494Sobrien 13438494Sobrien/* 13538494Sobrien * Big-endian or little-endian? 13638494Sobrien */ 13738494Sobrien#ifdef WORDS_BIGENDIAN 13838494Sobrien# define ARCH_ENDIAN "big" 13938494Sobrien#else /* not WORDS_BIGENDIAN */ 14038494Sobrien# define ARCH_ENDIAN "little" 14138494Sobrien#endif /* not WORDS_BIGENDIAN */ 14238494Sobrien 14338494Sobrien/* 14438494Sobrien * Actions to take if HAVE_SYS_TYPES_H is defined. 14538494Sobrien */ 14638494Sobrien#if HAVE_SYS_TYPES_H 14738494Sobrien# include <sys/types.h> 14838494Sobrien#endif /* HAVE_SYS_TYPES_H */ 14938494Sobrien 15038494Sobrien/* 151174299Sobrien * Actions to take if HAVE_LIMITS_H is defined. 152174299Sobrien */ 153174299Sobrien#if HAVE_LIMITS_H_H 154174299Sobrien# include <limits.h> 155174299Sobrien#endif /* HAVE_LIMITS_H */ 156174299Sobrien 157174299Sobrien/* 15838494Sobrien * Actions to take if HAVE_UNISTD_H is defined. 15938494Sobrien */ 16038494Sobrien#if HAVE_UNISTD_H 16138494Sobrien# include <unistd.h> 16238494Sobrien#endif /* HAVE_UNISTD_H */ 16338494Sobrien 16438494Sobrien/* after <unistd.h>, check if this is a POSIX.1 system */ 16538494Sobrien#ifdef _POSIX_VERSION 16638494Sobrien/* Code for POSIX.1 systems. */ 16738494Sobrien#endif /* _POSIX_VERSION */ 16838494Sobrien 16938494Sobrien/* 17038494Sobrien * Variable length argument lists. 17138494Sobrien * Must use only one of the two! 17238494Sobrien */ 17338494Sobrien#ifdef HAVE_STDARG_H 17438494Sobrien# include <stdarg.h> 17538494Sobrien/* 17638494Sobrien * On Solaris 2.6, <sys/varargs.h> is included in <sys/fs/autofs.h> 17738494Sobrien * So this ensures that only one is included. 17838494Sobrien */ 17938494Sobrien# ifndef _SYS_VARARGS_H 18038494Sobrien# define _SYS_VARARGS_H 18138494Sobrien# endif /* not _SYS_VARARGS_H */ 18238494Sobrien#else /* not HAVE_STDARG_H */ 18338494Sobrien# ifdef HAVE_VARARGS_H 18438494Sobrien# include <varargs.h> 18538494Sobrien# endif /* HAVE_VARARGS_H */ 18638494Sobrien#endif /* not HAVE_STDARG_H */ 18738494Sobrien 18838494Sobrien/* 18938494Sobrien * Pick the right header file and macros for directory processing functions. 19038494Sobrien */ 19138494Sobrien#if HAVE_DIRENT_H 19238494Sobrien# include <dirent.h> 19338494Sobrien# define NAMLEN(dirent) strlen((dirent)->d_name) 19438494Sobrien#else /* not HAVE_DIRENT_H */ 19538494Sobrien# define dirent direct 19638494Sobrien# define NAMLEN(dirent) (dirent)->d_namlen 19738494Sobrien# if HAVE_SYS_NDIR_H 19838494Sobrien# include <sys/ndir.h> 19938494Sobrien# endif /* HAVE_SYS_NDIR_H */ 20038494Sobrien# if HAVE_SYS_DIR_H 20138494Sobrien# include <sys/dir.h> 20238494Sobrien# endif /* HAVE_SYS_DIR_H */ 20338494Sobrien# if HAVE_NDIR_H 20438494Sobrien# include <ndir.h> 20538494Sobrien# endif /* HAVE_NDIR_H */ 20638494Sobrien#endif /* not HAVE_DIRENT_H */ 20738494Sobrien 20838494Sobrien/* 20938494Sobrien * Actions to take if HAVE_FCNTL_H is defined. 21038494Sobrien */ 21138494Sobrien#if HAVE_FCNTL_H 212174299Sobrien# ifdef HAVE_LINUX_LOOP_H 213174299Sobrien/* so I can mount large files as loop devices */ 214174299Sobrien/* XXX: need to move these two LARGEFILE defines to a better place */ 215174299Sobrien# define _LARGEFILE64_SOURCE 216174299Sobrien# define __USE_LARGEFILE64 217174299Sobrien# endif /* HAVE_LINUX_LOOP_H */ 21838494Sobrien# include <fcntl.h> 21938494Sobrien#endif /* HAVE_FCNTL_H */ 22038494Sobrien 22138494Sobrien/* 22238494Sobrien * Actions to take if HAVE_MEMORY_H is defined. 22338494Sobrien */ 22438494Sobrien#if HAVE_MEMORY_H 22538494Sobrien# include <memory.h> 22638494Sobrien#endif /* HAVE_MEMORY_H */ 22738494Sobrien 22838494Sobrien/* 22938494Sobrien * Actions to take if HAVE_SYS_FILE_H is defined. 23038494Sobrien */ 23138494Sobrien#if HAVE_SYS_FILE_H 23238494Sobrien# include <sys/file.h> 23338494Sobrien#endif /* HAVE_SYS_FILE_H */ 23438494Sobrien 23538494Sobrien/* 23638494Sobrien * Actions to take if HAVE_SYS_IOCTL_H is defined. 23738494Sobrien */ 23838494Sobrien#if HAVE_SYS_IOCTL_H 23938494Sobrien# include <sys/ioctl.h> 24038494Sobrien#endif /* HAVE_SYS_IOCTL_H */ 24138494Sobrien 24238494Sobrien/* 24338494Sobrien * Actions to take if HAVE_SYSLOG_H or HAVE_SYS_SYSLOG_H is defined. 24438494Sobrien */ 24538494Sobrien#ifdef HAVE_SYSLOG_H 24638494Sobrien# include <syslog.h> 24738494Sobrien#else /* not HAVE_SYSLOG_H */ 24838494Sobrien# if HAVE_SYS_SYSLOG_H 24938494Sobrien# include <sys/syslog.h> 25038494Sobrien# endif /* HAVE_SYS_SYSLOG_H */ 25138494Sobrien#endif /* HAVE_SYSLOG_H */ 25238494Sobrien 25338494Sobrien/* 25438494Sobrien * Actions to take if <sys/param.h> exists. 25538494Sobrien */ 25638494Sobrien#ifdef HAVE_SYS_PARAM_H 25738494Sobrien# include <sys/param.h> 25838494Sobrien#endif /* HAVE_SYS_PARAM_H */ 25938494Sobrien 26038494Sobrien/* 26138494Sobrien * Actions to take if <sys/socket.h> exists. 26238494Sobrien */ 26338494Sobrien#ifdef HAVE_SYS_SOCKET_H 26438494Sobrien# include <sys/socket.h> 26538494Sobrien#endif /* HAVE_SYS_SOCKET_H */ 26638494Sobrien 26738494Sobrien/* 26838494Sobrien * Actions to take if <rpc/rpc.h> exists. 26938494Sobrien */ 27038494Sobrien#ifdef HAVE_RPC_RPC_H 27138494Sobrien/* 27238494Sobrien * Turn on PORTMAP, so that additional header files would get included 27338494Sobrien * and the important definition for UDPMSGSIZE is included too. 27438494Sobrien */ 27538494Sobrien# ifndef PORTMAP 27638494Sobrien# define PORTMAP 27738494Sobrien# endif /* not PORTMAP */ 27838494Sobrien# include <rpc/rpc.h> 27938494Sobrien# ifndef XDRPROC_T_TYPE 28038494Sobrientypedef bool_t (*xdrproc_t) __P ((XDR *, __ptr_t, ...)); 28138494Sobrien# endif /* not XDRPROC_T_TYPE */ 28238494Sobrien#endif /* HAVE_RPC_RPC_H */ 28338494Sobrien 28438494Sobrien/* 28538494Sobrien * Actions to take if <rpc/types.h> exists. 28638494Sobrien */ 28738494Sobrien#ifdef HAVE_RPC_TYPES_H 28838494Sobrien# include <rpc/types.h> 28938494Sobrien#endif /* HAVE_RPC_TYPES_H */ 29038494Sobrien 29138494Sobrien/* 29238494Sobrien * Actions to take if <rpc/xdr.h> exists. 29338494Sobrien */ 29438494Sobrien/* Prevent multiple inclusion on Ultrix 4 */ 29538494Sobrien#if defined(HAVE_RPC_XDR_H) && !defined(__XDR_HEADER__) 29638494Sobrien# include <rpc/xdr.h> 29738494Sobrien#endif /* defined(HAVE_RPC_XDR_H) && !defined(__XDR_HEADER__) */ 29838494Sobrien 29938494Sobrien/* 30038494Sobrien * Actions to take if <malloc.h> exists. 301131706Smbr * Don't include malloc.h if stdlib.h exists, because modern 302131706Smbr * systems complain if you use malloc.h instead of stdlib.h. 303131706Smbr * XXX: let's hope there are no systems out there that need both. 30438494Sobrien */ 305131706Smbr#if defined(HAVE_MALLOC_H) && !defined(HAVE_STDLIB_H) 30638494Sobrien# include <malloc.h> 307131706Smbr#endif /* defined(HAVE_MALLOC_H) && !defined(HAVE_STDLIB_H) */ 30838494Sobrien 30938494Sobrien/* 31038494Sobrien * Actions to take if <mntent.h> exists. 31138494Sobrien */ 31238494Sobrien#ifdef HAVE_MNTENT_H 31338494Sobrien/* some systems need <stdio.h> before <mntent.h> is included */ 31438494Sobrien# ifdef HAVE_STDIO_H 31538494Sobrien# include <stdio.h> 31638494Sobrien# endif /* HAVE_STDIO_H */ 31738494Sobrien# include <mntent.h> 31838494Sobrien#endif /* HAVE_MNTENT_H */ 31938494Sobrien 32038494Sobrien/* 32138494Sobrien * Actions to take if <sys/errno.h> exists. 32238494Sobrien */ 32338494Sobrien#ifdef HAVE_SYS_ERRNO_H 32438494Sobrien# include <sys/errno.h> 32538494Sobrienextern int errno; 32638494Sobrien#endif /* HAVE_SYS_ERRNO_H */ 32738494Sobrien 32838494Sobrien/* 32938494Sobrien * Actions to take if <sys/fsid.h> exists. 33038494Sobrien */ 33138494Sobrien#ifdef HAVE_SYS_FSID_H 33238494Sobrien# include <sys/fsid.h> 33338494Sobrien#endif /* HAVE_SYS_FSID_H */ 33438494Sobrien 33538494Sobrien/* 33638494Sobrien * Actions to take if <sys/utsname.h> exists. 33738494Sobrien */ 33838494Sobrien#ifdef HAVE_SYS_UTSNAME_H 33938494Sobrien# include <sys/utsname.h> 34038494Sobrien#endif /* HAVE_SYS_UTSNAME_H */ 34138494Sobrien 34238494Sobrien/* 34338494Sobrien * Actions to take if <sys/mntent.h> exists. 34438494Sobrien */ 34538494Sobrien#ifdef HAVE_SYS_MNTENT_H 34638494Sobrien# include <sys/mntent.h> 34738494Sobrien#endif /* HAVE_SYS_MNTENT_H */ 34838494Sobrien 34938494Sobrien/* 35051300Sobrien * Actions to take if <ndbm.h> or <db1/ndbm.h> exist. 35138494Sobrien * Should be included before <rpcsvc/yp_prot.h> because on some systems 35238494Sobrien * like Linux, it also defines "struct datum". 35338494Sobrien */ 354131706Smbr#ifdef HAVE_MAP_NDBM 355131706Smbr# include NEW_DBM_H 35638494Sobrien# ifndef DATUM 35738494Sobrien/* ensure that struct datum is not included again from <rpcsvc/yp_prot.h> */ 35838494Sobrien# define DATUM 35938494Sobrien# endif /* not DATUM */ 360131706Smbr#endif /* HAVE_MAP_NDBM */ 36138494Sobrien 36238494Sobrien/* 36338494Sobrien * Actions to take if <net/errno.h> exists. 36438494Sobrien */ 36538494Sobrien#ifdef HAVE_NET_ERRNO_H 36638494Sobrien# include <net/errno.h> 36738494Sobrien#endif /* HAVE_NET_ERRNO_H */ 36838494Sobrien 36938494Sobrien/* 370174299Sobrien * Actions to take if <net/if.h> exists. 371174299Sobrien */ 372174299Sobrien#ifdef HAVE_NET_IF_H 373174299Sobrien# include <net/if.h> 374174299Sobrien#endif /* HAVE_NET_IF_H */ 375174299Sobrien 376174299Sobrien/* 37751300Sobrien * Actions to take if <net/route.h> exists. 37838494Sobrien */ 37938494Sobrien#ifdef HAVE_NET_ROUTE_H 38038494Sobrien# include <net/route.h> 38138494Sobrien#endif /* HAVE_NET_ROUTE_H */ 38238494Sobrien 38338494Sobrien/* 38451300Sobrien * Actions to take if <sys/mbuf.h> exists. 38538494Sobrien */ 38638494Sobrien#ifdef HAVE_SYS_MBUF_H 38738494Sobrien# include <sys/mbuf.h> 38838494Sobrien/* 38951300Sobrien * OSF4 (DU-4.0) defines m_next and m_data also in <sys/mount.h> so I must 39038494Sobrien # undefine them here to avoid conflicts. 39138494Sobrien */ 39238494Sobrien# ifdef m_next 39338494Sobrien# undef m_next 39438494Sobrien# endif /* m_next */ 39538494Sobrien# ifdef m_data 39638494Sobrien# undef m_data 39738494Sobrien# endif /* m_data */ 39838494Sobrien/* 39951300Sobrien * AIX 3 defines MFREE and m_flags also in <sys/mount.h>. 40038494Sobrien */ 40138494Sobrien# ifdef m_flags 40238494Sobrien# undef m_flags 40338494Sobrien# endif /* m_flags */ 40438494Sobrien# ifdef MFREE 40538494Sobrien# undef MFREE 40638494Sobrien# endif /* MFREE */ 40738494Sobrien#endif /* HAVE_SYS_MBUF_H */ 40838494Sobrien 40938494Sobrien/* 410174299Sobrien * Actions to take if <sys/mman.h> exists. 41138494Sobrien */ 412174299Sobrien#ifdef HAVE_SYS_MMAN_H 413174299Sobrien# include <sys/mman.h> 414174299Sobrien#endif /* HAVE_SYS_MMAN_H */ 41538494Sobrien 41638494Sobrien/* 41738494Sobrien * Actions to take if <netdb.h> exists. 41838494Sobrien */ 41938494Sobrien#ifdef HAVE_NETDB_H 42038494Sobrien# include <netdb.h> 42138494Sobrien#endif /* HAVE_NETDB_H */ 42238494Sobrien 42338494Sobrien/* 42438494Sobrien * Actions to take if <netdir.h> exists. 42538494Sobrien */ 42638494Sobrien#ifdef HAVE_NETDIR_H 42738494Sobrien# include <netdir.h> 42838494Sobrien#endif /* HAVE_NETDIR_H */ 42938494Sobrien 43038494Sobrien/* 43138494Sobrien * Actions to take if <net/if_var.h> exists. 43238494Sobrien */ 43338494Sobrien#ifdef HAVE_NET_IF_VAR_H 43438494Sobrien# include <net/if_var.h> 43538494Sobrien#endif /* HAVE_NET_IF_VAR_H */ 43638494Sobrien 43738494Sobrien/* 43838494Sobrien * Actions to take if <netinet/if_ether.h> exists. 43938494Sobrien */ 44038494Sobrien#ifdef HAVE_NETINET_IF_ETHER_H 44138494Sobrien# include <netinet/if_ether.h> 44238494Sobrien#endif /* HAVE_NETINET_IF_ETHER_H */ 44338494Sobrien 44438494Sobrien/* 44538494Sobrien * Actions to take if <netinet/in.h> exists. 44638494Sobrien */ 44738494Sobrien#ifdef HAVE_NETINET_IN_H 44838494Sobrien# include <netinet/in.h> 44938494Sobrien#endif /* HAVE_NETINET_IN_H */ 45038494Sobrien 45138494Sobrien/* 45238494Sobrien * Actions to take if <rpcsvc/yp_prot.h> exists. 45338494Sobrien */ 45438494Sobrien#ifdef HAVE_RPCSVC_YP_PROT_H 45542633Sobrien# ifdef HAVE_BAD_HEADERS 45642633Sobrien/* avoid circular dependency in aix 4.3 with <rpcsvc/ypclnt.h> */ 45742633Sobrienstruct ypall_callback; 45842633Sobrien# endif /* HAVE_BAD_HEADERS */ 45938494Sobrien# include <rpcsvc/yp_prot.h> 46038494Sobrien#endif /* HAVE_RPCSVC_YP_PROT_H */ 46138494Sobrien 46238494Sobrien/* 46338494Sobrien * Actions to take if <rpcsvc/ypclnt.h> exists. 46438494Sobrien */ 46538494Sobrien#ifdef HAVE_RPCSVC_YPCLNT_H 46638494Sobrien# include <rpcsvc/ypclnt.h> 46738494Sobrien#endif /* HAVE_RPCSVC_YPCLNT_H */ 46838494Sobrien 46938494Sobrien/* 47038494Sobrien * Actions to take if <sys/ucred.h> exists. 47138494Sobrien */ 47238494Sobrien#ifdef HAVE_SYS_UCRED_H 47338494Sobrien# include <sys/ucred.h> 47438494Sobrien#endif /* HAVE_SYS_UCRED_H */ 47538494Sobrien 47638494Sobrien 47738494Sobrien/* 47838494Sobrien * Actions to take if <sys/mount.h> exists. 47938494Sobrien */ 48038494Sobrien#ifdef HAVE_SYS_MOUNT_H 48138494Sobrien/* 48238494Sobrien * Some operating systems must define these variables to get 48338494Sobrien * NFS and other definitions included. 48438494Sobrien */ 48538494Sobrien# ifndef NFSCLIENT 48682805Sobrien# define NFSCLIENT 1 48738494Sobrien# endif /* not NFSCLIENT */ 48838494Sobrien# ifndef NFS 48982805Sobrien# define NFS 1 49038494Sobrien# endif /* not NFS */ 49138494Sobrien# ifndef PCFS 49282805Sobrien# define PCFS 1 49338494Sobrien# endif /* not PCFS */ 49438494Sobrien# ifndef LOFS 49582805Sobrien# define LOFS 1 49638494Sobrien# endif /* not LOFS */ 49738494Sobrien# ifndef RFS 49882805Sobrien# define RFS 1 49938494Sobrien# endif /* not RFS */ 50038494Sobrien# ifndef MSDOSFS 50182805Sobrien# define MSDOSFS 1 50238494Sobrien# endif /* not MSDOSFS */ 50338494Sobrien# ifndef MFS 50482805Sobrien# define MFS 1 50538494Sobrien# endif /* not MFS */ 50638494Sobrien# ifndef CD9660 50782805Sobrien# define CD9660 1 50838494Sobrien# endif /* not CD9660 */ 50938494Sobrien# include <sys/mount.h> 51038494Sobrien#endif /* HAVE_SYS_MOUNT_H */ 51138494Sobrien 51238494Sobrien#ifdef HAVE_SYS_VMOUNT_H 51338494Sobrien# include <sys/vmount.h> 51438494Sobrien#endif /* HAVE_SYS_VMOUNT_H */ 51538494Sobrien 51638494Sobrien/* 51738494Sobrien * Actions to take if <linux/fs.h> exists. 51882805Sobrien * There is no point in including this on a glibc2 system, 51982805Sobrien * we're only asking for trouble 52038494Sobrien */ 52182805Sobrien#if defined HAVE_LINUX_FS_H && (!defined __GLIBC__ || __GLIBC__ < 2) 52238494Sobrien/* 52351300Sobrien * There are various conflicts in definitions between RedHat Linux, newer 52451300Sobrien * 2.2 kernels, and <netinet/in.h> and <linux/fs.h>. 52538494Sobrien */ 52638494Sobrien# ifdef HAVE_SOCKETBITS_H 52738494Sobrien/* conflicts with <socketbits.h> */ 52838494Sobrien# define _LINUX_SOCKET_H 52938494Sobrien# undef BLKFLSBUF 53038494Sobrien# undef BLKGETSIZE 53138494Sobrien# undef BLKRAGET 53238494Sobrien# undef BLKRASET 53338494Sobrien# undef BLKROGET 53438494Sobrien# undef BLKROSET 53538494Sobrien# undef BLKRRPART 53638494Sobrien# undef MS_MGC_VAL 53738494Sobrien# undef MS_RMT_MASK 53851300Sobrien# if defined(__GLIBC__) && __GLIBC__ >= 2 53938494Sobrien/* conflicts with <waitflags.h> */ 54051300Sobrien# undef WNOHANG 54151300Sobrien# undef WUNTRACED 54251300Sobrien# endif /* defined(__GLIBC__) && __GLIBC__ >= 2 */ 54338494Sobrien/* conflicts with <statfsbuf.h> */ 54438494Sobrien# define _SYS_STATFS_H 54538494Sobrien# endif /* HAVE_SOCKETBITS_H */ 54651300Sobrien 54751300Sobrien# ifdef _SYS_WAIT_H 54851300Sobrien# if defined(__GLIBC__) && __GLIBC__ >= 2 54951300Sobrien/* conflicts with <bits/waitflags.h> (RedHat/Linux 6.0 and kernels 2.2 */ 55051300Sobrien# undef WNOHANG 55151300Sobrien# undef WUNTRACED 55251300Sobrien# endif /* defined(__GLIBC__) && __GLIBC__ >= 2 */ 55351300Sobrien# endif /* _SYS_WAIT_H */ 55451300Sobrien 55541145Sobrien# ifdef HAVE_LINUX_POSIX_TYPES_H 55641145Sobrien# include <linux/posix_types.h> 55741145Sobrien# endif /* HAVE_LINUX_POSIX_TYPES_H */ 55841145Sobrien# ifndef _LINUX_BYTEORDER_GENERIC_H 55941145Sobrien# define _LINUX_BYTEORDER_GENERIC_H 56041145Sobrien# endif /* _LINUX_BYTEORDER_GENERIC_H */ 56151300Sobrien/* conflicts with <sys/mount.h> in 2.[12] kernels */ 56241145Sobrien# ifdef _SYS_MOUNT_H 56351300Sobrien# undef BLKFLSBUF 56451300Sobrien# undef BLKGETSIZE 56551300Sobrien# undef BLKRAGET 56651300Sobrien# undef BLKRASET 56751300Sobrien# undef BLKROGET 56851300Sobrien# undef BLKROSET 56951300Sobrien# undef BLKRRPART 57051300Sobrien# undef BLOCK_SIZE 57151300Sobrien# undef MS_MANDLOCK 57251300Sobrien# undef MS_MGC_VAL 57351300Sobrien# undef MS_NOATIME 57451300Sobrien# undef MS_NODEV 57551300Sobrien# undef MS_NODIRATIME 57651300Sobrien# undef MS_NOEXEC 57751300Sobrien# undef MS_NOSUID 57851300Sobrien# undef MS_RDONLY 57951300Sobrien# undef MS_REMOUNT 58051300Sobrien# undef MS_RMT_MASK 58151300Sobrien# undef MS_SYNCHRONOUS 58251300Sobrien# undef S_APPEND 58351300Sobrien# undef S_IMMUTABLE 58451300Sobrien/* conflicts with <statfsbuf.h> */ 58551300Sobrien# define _SYS_STATFS_H 58641145Sobrien# endif /* _SYS_MOUNT_H */ 58782805Sobrien# ifndef _LINUX_STRING_H_ 58882805Sobrien# define _LINUX_STRING_H_ 58982805Sobrien# endif /* not _LINUX_STRING_H_ */ 59082805Sobrien# ifdef HAVE_LINUX_KDEV_T_H 59182805Sobrien# define __KERNEL__ 59282805Sobrien# include <linux/kdev_t.h> 59382805Sobrien# undef __KERNEL__ 59482805Sobrien# endif /* HAVE_LINUX_KDEV_T_H */ 59582805Sobrien# ifdef HAVE_LINUX_LIST_H 59682805Sobrien# define __KERNEL__ 59782805Sobrien# include <linux/list.h> 59882805Sobrien# undef __KERNEL__ 59982805Sobrien# endif /* HAVE_LINUX_LIST_H */ 60038494Sobrien# include <linux/fs.h> 60182805Sobrien#endif /* HAVE_LINUX_FS_H && (!__GLIBC__ || __GLIBC__ < 2) */ 60238494Sobrien 60338494Sobrien#ifdef HAVE_CDFS_CDFS_MOUNT_H 60438494Sobrien# include <cdfs/cdfs_mount.h> 60538494Sobrien#endif /* HAVE_CDFS_CDFS_MOUNT_H */ 60638494Sobrien 60738494Sobrien#ifdef HAVE_CDFS_CDFSMOUNT_H 60838494Sobrien# include <cdfs/cdfsmount.h> 60938494Sobrien#endif /* HAVE_CDFS_CDFSMOUNT_H */ 61038494Sobrien 61138494Sobrien/* 612174299Sobrien * Actions to take if <linux/loop.h> exists. 613174299Sobrien */ 614174299Sobrien#ifdef HAVE_LINUX_LOOP_H 615174299Sobrien# ifdef HAVE_LINUX_POSIX_TYPES_H 616174299Sobrien# include <linux/posix_types.h> 617174299Sobrien# endif /* HAVE_LINUX_POSIX_TYPES_H */ 618174299Sobrien/* next dev_t lines needed due to changes in kernel code */ 619174299Sobrien# undef dev_t 620174299Sobrien# define dev_t unsigned short /* compatible with Red Hat and SuSE */ 621174299Sobrien# include <linux/loop.h> 622174299Sobrien#endif /* HAVE_LINUX_LOOP_H */ 623174299Sobrien 624174299Sobrien/* 625174299Sobrien * AUTOFS PROTOCOL HEADER FILES: 626174299Sobrien */ 627174299Sobrien 628174299Sobrien/* 629174299Sobrien * Actions to take if <linux/auto_fs[4].h> exists. 63082805Sobrien * We really don't want <linux/fs.h> pulled in here 63138494Sobrien */ 63282805Sobrien#ifndef _LINUX_FS_H 63382805Sobrien#define _LINUX_FS_H 63482805Sobrien#endif /* _LINUX_FS_H */ 635174299Sobrien#ifdef HAVE_LINUX_AUTO_FS4_H 636174299Sobrien# include <linux/auto_fs4.h> 637174299Sobrien#else /* not HAVE_LINUX_AUTO_FS4_H */ 638174299Sobrien# ifdef HAVE_LINUX_AUTO_FS_H 639174299Sobrien# include <linux/auto_fs.h> 640174299Sobrien# endif /* HAVE_LINUX_AUTO_FS_H */ 641174299Sobrien#endif /* not HAVE_LINUX_AUTO_FS4_H */ 64238494Sobrien 64338494Sobrien/* 644174299Sobrien * Actions to take if <sys/fs/autofs.h> exists. 645174299Sobrien */ 646174299Sobrien#ifdef HAVE_SYS_FS_AUTOFS_H 647174299Sobrien# include <sys/fs/autofs.h> 648174299Sobrien#endif /* HAVE_SYS_FS_AUTOFS_H */ 649174299Sobrien 650174299Sobrien/* 651174299Sobrien * Actions to take if <rpcsvc/autofs_prot.h> or <sys/fs/autofs_prot.h> exist. 652174299Sobrien */ 653174299Sobrien#ifdef HAVE_RPCSVC_AUTOFS_PROT_H 654174299Sobrien# include <rpcsvc/autofs_prot.h> 655174299Sobrien#else /* not HAVE_RPCSVC_AUTOFS_PROT_H */ 656174299Sobrien# ifdef HAVE_SYS_FS_AUTOFS_PROT_H 657174299Sobrien# include <sys/fs/autofs_prot.h> 658174299Sobrien# endif /* HAVE_SYS_FS_AUTOFS_PROT_H */ 659174299Sobrien#endif /* not HAVE_RPCSVC_AUTOFS_PROT_H */ 660174299Sobrien 661174299Sobrien/* 662174299Sobrien * Actions to take if <lber.h> exists. 663174299Sobrien * This header file is required before <ldap.h> can be included. 664174299Sobrien */ 665174299Sobrien#ifdef HAVE_LBER_H 666174299Sobrien# include <lber.h> 667174299Sobrien#endif /* HAVE_LBER_H */ 668174299Sobrien 669174299Sobrien/* 670174299Sobrien * Actions to take if <ldap.h> exists. 671174299Sobrien */ 672174299Sobrien#ifdef HAVE_LDAP_H 673174299Sobrien# include <ldap.h> 674174299Sobrien#endif /* HAVE_LDAP_H */ 675174299Sobrien 676174299Sobrien/**************************************************************************** 677174299Sobrien ** IMPORTANT!!! ** 678174299Sobrien ** We always include am-utils' amu_autofs_prot.h. ** 679174299Sobrien ** That is actually defined in "conf/autofs/autofs_${autofs_style}.h" ** 680174299Sobrien ****************************************************************************/ 681174299Sobrien#include <amu_autofs_prot.h> 682174299Sobrien 683174299Sobrien 684174299Sobrien/* 68538494Sobrien * NFS PROTOCOL HEADER FILES: 68638494Sobrien */ 68738494Sobrien 68838494Sobrien/* 68938494Sobrien * Actions to take if <nfs/export.h> exists. 69038494Sobrien */ 69138494Sobrien#ifdef HAVE_NFS_EXPORT_H 69238494Sobrien# include <nfs/export.h> 69338494Sobrien#endif /* HAVE_NFS_EXPORT_H */ 69438494Sobrien 69538494Sobrien/**************************************************************************** 69638494Sobrien ** IMPORTANT!!! ** 697174299Sobrien ** We always include am-utils' amu_nfs_prot.h. ** 69838494Sobrien ** That is actually defined in "conf/nfs_prot/nfs_prot_${host_os_name}.h" ** 69938494Sobrien ****************************************************************************/ 70038494Sobrien#include <amu_nfs_prot.h> 70138494Sobrien 70238494Sobrien/* 70338494Sobrien * DO NOT INCLUDE THESE FILES: 70438494Sobrien * They conflicts with other NFS headers and are generally not needed. 70538494Sobrien */ 70638494Sobrien#ifdef DO_NOT_INCLUDE 70738494Sobrien# ifdef HAVE_NFS_NFS_CLNT_H 70838494Sobrien# include <nfs/nfs_clnt.h> 70938494Sobrien# endif /* HAVE_NFS_NFS_CLNT_H */ 71038494Sobrien# ifdef HAVE_LINUX_NFS_H 71138494Sobrien# include <linux/nfs.h> 71238494Sobrien# endif /* HAVE_LINUX_NFS_H */ 71338494Sobrien#endif /* DO NOT INCLUDE */ 71438494Sobrien 71538494Sobrien/* 71638494Sobrien * Actions to take if one of the nfs headers exists. 71738494Sobrien */ 71838494Sobrien#ifdef HAVE_NFS_NFS_GFS_H 71938494Sobrien# include <nfs/nfs_gfs.h> 72038494Sobrien#endif /* HAVE_NFS_NFS_GFS_H */ 72138494Sobrien#ifdef HAVE_NFS_MOUNT_H 72238494Sobrien# include <nfs/mount.h> 72338494Sobrien#endif /* HAVE_NFS_MOUNT_H */ 72438494Sobrien#ifdef HAVE_NFS_NFS_MOUNT_H_off 72582805Sobrien/* broken on nextstep3 (includes non-existing headers) */ 72638494Sobrien# include <nfs/nfs_mount.h> 72738494Sobrien#endif /* HAVE_NFS_NFS_MOUNT_H */ 72838494Sobrien#ifdef HAVE_NFS_PATHCONF_H 72938494Sobrien# include <nfs/pathconf.h> 73038494Sobrien#endif /* HAVE_NFS_PATHCONF_H */ 73138494Sobrien#ifdef HAVE_SYS_FS_NFS_MOUNT_H 73238494Sobrien# include <sys/fs/nfs/mount.h> 73338494Sobrien#endif /* HAVE_SYS_FS_NFS_MOUNT_H */ 73438494Sobrien#ifdef HAVE_SYS_FS_NFS_NFS_CLNT_H 73538494Sobrien# include <sys/fs/nfs/nfs_clnt.h> 73638494Sobrien#endif /* HAVE_SYS_FS_NFS_NFS_CLNT_H */ 73738494Sobrien#ifdef HAVE_SYS_FS_NFS_CLNT_H 73838494Sobrien# include <sys/fs/nfs_clnt.h> 73938494Sobrien#endif /* HAVE_SYS_FS_NFS_CLNT_H */ 740174299Sobrien 741174299Sobrien/* complex rules for linux/nfs_mount.h: broken on so many systems */ 74238494Sobrien#ifdef HAVE_LINUX_NFS_MOUNT_H 743174299Sobrien# ifndef _LINUX_NFS_H 744174299Sobrien# define _LINUX_NFS_H 745174299Sobrien# endif /* not _LINUX_NFS_H */ 746174299Sobrien# ifndef _LINUX_NFS2_H 747174299Sobrien# define _LINUX_NFS2_H 748174299Sobrien# endif /* not _LINUX_NFS2_H */ 749174299Sobrien# ifndef _LINUX_NFS3_H 750174299Sobrien# define _LINUX_NFS3_H 751174299Sobrien# endif /* not _LINUX_NFS3_H */ 752174299Sobrien# ifndef _LINUX_NFS_FS_H 753174299Sobrien# define _LINUX_NFS_FS_H 754174299Sobrien# endif /* not _LINUX_NFS_FS_H */ 755174299Sobrien# ifndef _LINUX_IN_H 756174299Sobrien# define _LINUX_IN_H 757174299Sobrien# endif /* not _LINUX_IN_H */ 758174299Sobrien# ifndef __KERNEL__ 759174299Sobrien# define __KERNEL__ 760174299Sobrien# endif /* __KERNEL__ */ 76138494Sobrien# include <linux/nfs_mount.h> 762174299Sobrien# undef __KERNEL__ 76338494Sobrien#endif /* HAVE_LINUX_NFS_MOUNT_H */ 76438494Sobrien 76538494Sobrien/* 76638494Sobrien * Actions to take if <pwd.h> exists. 76738494Sobrien */ 76838494Sobrien#ifdef HAVE_PWD_H 76938494Sobrien# include <pwd.h> 77038494Sobrien#endif /* HAVE_PWD_H */ 77138494Sobrien 77238494Sobrien/* 77338494Sobrien * Actions to take if <hesiod.h> exists. 77438494Sobrien */ 77538494Sobrien#ifdef HAVE_HESIOD_H 77638494Sobrien# include <hesiod.h> 77738494Sobrien#endif /* HAVE_HESIOD_H */ 77838494Sobrien 77938494Sobrien/* 78038494Sobrien * Actions to take if <arpa/nameser.h> exists. 78138494Sobrien * Should be included before <resolv.h>. 78238494Sobrien */ 78338494Sobrien#ifdef HAVE_ARPA_NAMESER_H 78438494Sobrien# ifdef NOERROR 78538494Sobrien# undef NOERROR 78638494Sobrien# endif /* NOERROR */ 78738494Sobrien/* 78838494Sobrien * Conflicts with <sys/tpicommon.h> which is included from <sys/tiuser.h> 78938494Sobrien * on Solaris 2.6 systems. So undefine it first. 79038494Sobrien */ 79138494Sobrien# ifdef T_UNSPEC 79238494Sobrien# undef T_UNSPEC 79338494Sobrien# endif /* T_UNSPEC */ 79438494Sobrien# include <arpa/nameser.h> 79538494Sobrien#endif /* HAVE_ARPA_NAMESER_H */ 79638494Sobrien 79738494Sobrien/* 79838494Sobrien * Actions to take if <arpa/inet.h> exists. 79938494Sobrien */ 80038494Sobrien#ifdef HAVE_ARPA_INET_H 80142633Sobrien# ifdef HAVE_BAD_HEADERS 80242633Sobrien/* aix 4.3: avoid including <net/if_dl.h> */ 80342633Sobrienstruct sockaddr_dl; 80442633Sobrien# endif /* HAVE_BAD_HEADERS */ 80538494Sobrien# include <arpa/inet.h> 80638494Sobrien#endif /* HAVE_ARPA_INET_H */ 80738494Sobrien 80838494Sobrien/* 80938494Sobrien * Actions to take if <resolv.h> exists. 81038494Sobrien */ 81138494Sobrien#ifdef HAVE_RESOLV_H 812174299Sobrien/* 813174299Sobrien * On AIX 5.2, both <resolv.h> and <arpa/nameser_compat.h> define MAXDNAME, 814174299Sobrien * if compiling with gcc -D_USE_IRS (so that we get extern definitions for 815174299Sobrien * hstrerror() and others). 816174299Sobrien */ 817174299Sobrien# if defined(_AIX) && defined(MAXDNAME) && defined(_USE_IRS) 818174299Sobrien# undef MAXDNAME 819174299Sobrien# endif /* defined(_AIX) && defined(MAXDNAME) && defined(_USE_IRS) */ 82038494Sobrien# include <resolv.h> 82138494Sobrien#endif /* HAVE_RESOLV_H */ 82238494Sobrien 82338494Sobrien/* 82438494Sobrien * Actions to take if <sys/uio.h> exists. 82538494Sobrien */ 82638494Sobrien#ifdef HAVE_SYS_UIO_H 82738494Sobrien# include <sys/uio.h> 82838494Sobrien#endif /* HAVE_SYS_UIO_H */ 82938494Sobrien 83038494Sobrien/* 83138494Sobrien * Actions to take if <sys/fs/cachefs_fs.h> exists. 83238494Sobrien */ 83338494Sobrien#ifdef HAVE_SYS_FS_CACHEFS_FS_H 83438494Sobrien# include <sys/fs/cachefs_fs.h> 83538494Sobrien#endif /* HAVE_SYS_FS_CACHEFS_FS_H */ 83638494Sobrien 83738494Sobrien/* 83838494Sobrien * Actions to take if <sys/fs/pc_fs.h> exists. 83938494Sobrien */ 84038494Sobrien#ifdef HAVE_SYS_FS_PC_FS_H 84138494Sobrien# include <sys/fs/pc_fs.h> 84238494Sobrien#endif /* HAVE_SYS_FS_PC_FS_H */ 84338494Sobrien 84438494Sobrien/* 84538494Sobrien * Actions to take if <msdosfs/msdosfsmount.h> exists. 84638494Sobrien */ 84738494Sobrien#ifdef HAVE_MSDOSFS_MSDOSFSMOUNT_H 84838494Sobrien# include <msdosfs/msdosfsmount.h> 84982805Sobrien#endif /* HAVE_MSDOSFS_MSDOSFSMOUNT_H */ 85082805Sobrien#ifdef HAVE_FS_MSDOSFS_MSDOSFSMOUNT_H 85182805Sobrien# include <fs/msdosfs/msdosfsmount.h> 85282805Sobrien#endif /* HAVE_FS_MSDOSFS_MSDOSFSMOUNT_H */ 85338494Sobrien 85438494Sobrien/* 855174299Sobrien * Actions to take if <fs/msdosfs/msdosfsmount.h> exists. 856174299Sobrien */ 857174299Sobrien#ifdef HAVE_FS_MSDOSFS_MSDOSFSMOUNT_H 858174299Sobrien# include <fs/msdosfs/msdosfsmount.h> 859174299Sobrien#endif /* HAVE_FS_MSDOSFS_MSDOSFSMOUNT_H */ 860174299Sobrien 861174299Sobrien/* 86238494Sobrien * Actions to take if <sys/fs/tmp.h> exists. 86338494Sobrien */ 86438494Sobrien#ifdef HAVE_SYS_FS_TMP_H 86538494Sobrien# include <sys/fs/tmp.h> 86638494Sobrien#endif /* HAVE_SYS_FS_TMP_H */ 86738494Sobrien 86838494Sobrien/* 86938494Sobrien * Actions to take if <sys/fs/ufs_mount.h> exists. 87038494Sobrien */ 87138494Sobrien#ifdef HAVE_SYS_FS_UFS_MOUNT_H 87238494Sobrien# include <sys/fs/ufs_mount.h> 87338494Sobrien#endif /* HAVE_SYS_FS_UFS_MOUNT_H */ 87482815Sobrien/* 87582815Sobrien * HAVE_UFS_UFS_UFSMOUNT_H should NOT be defined on netbsd/openbsd because it 87682815Sobrien * causes errors with other header files. Instead, add it to the specific 87782815Sobrien * conf/nfs_prot_*.h file. 87882815Sobrien */ 87982815Sobrien#ifdef HAVE_UFS_UFS_UFSMOUNT_H 88051300Sobrien# include <ufs/ufs/ufsmount.h> 88151300Sobrien#endif /* HAVE_UFS_UFS_UFSMOUNT_H */ 88238494Sobrien 88338494Sobrien/* 88438494Sobrien * Actions to take if <sys/fs/efs_clnt.h> exists. 88538494Sobrien */ 88638494Sobrien#ifdef HAVE_SYS_FS_EFS_CLNT_H 88738494Sobrien# include <sys/fs/efs_clnt.h> 88838494Sobrien#endif /* HAVE_SYS_FS_EFS_CLNT_H */ 88938494Sobrien 89038494Sobrien/* 89138494Sobrien * Actions to take if <sys/fs/xfs_clnt.h> exists. 89238494Sobrien */ 89338494Sobrien#ifdef HAVE_SYS_FS_XFS_CLNT_H 89438494Sobrien# include <sys/fs/xfs_clnt.h> 89538494Sobrien#endif /* HAVE_SYS_FS_XFS_CLNT_H */ 89638494Sobrien 89738494Sobrien/* 89838494Sobrien * Actions to take if <assert.h> exists. 89938494Sobrien */ 90038494Sobrien#ifdef HAVE_ASSERT_H 90138494Sobrien# include <assert.h> 90238494Sobrien#endif /* HAVE_ASSERT_H */ 90338494Sobrien 90438494Sobrien/* 90538494Sobrien * Actions to take if <cfs.h> exists. 90638494Sobrien */ 90738494Sobrien#ifdef HAVE_CFS_H 90838494Sobrien# include <cfs.h> 90938494Sobrien#endif /* HAVE_CFS_H */ 91038494Sobrien 91138494Sobrien/* 91238494Sobrien * Actions to take if <cluster.h> exists. 91338494Sobrien */ 91438494Sobrien#ifdef HAVE_CLUSTER_H 91538494Sobrien# include <cluster.h> 91638494Sobrien#endif /* HAVE_CLUSTER_H */ 91738494Sobrien 91838494Sobrien/* 91938494Sobrien * Actions to take if <ctype.h> exists. 92038494Sobrien */ 92138494Sobrien#ifdef HAVE_CTYPE_H 92238494Sobrien# include <ctype.h> 92338494Sobrien#endif /* HAVE_CTYPE_H */ 92438494Sobrien 92538494Sobrien/* 92638494Sobrien * Actions to take if <errno.h> exists. 92738494Sobrien */ 92838494Sobrien#ifdef HAVE_ERRNO_H 92938494Sobrien# include <errno.h> 93038494Sobrien#endif /* HAVE_ERRNO_H */ 93138494Sobrien 93238494Sobrien/* 93338494Sobrien * Actions to take if <grp.h> exists. 93438494Sobrien */ 93538494Sobrien#ifdef HAVE_GRP_H 93638494Sobrien# include <grp.h> 93738494Sobrien#endif /* HAVE_GRP_H */ 93838494Sobrien 93938494Sobrien/* 94038494Sobrien * Actions to take if <hsfs/hsfs.h> exists. 94138494Sobrien */ 94238494Sobrien#ifdef HAVE_HSFS_HSFS_H 94338494Sobrien# include <hsfs/hsfs.h> 94438494Sobrien#endif /* HAVE_HSFS_HSFS_H */ 94538494Sobrien 94638494Sobrien/* 94738494Sobrien * Actions to take if <cdfs/cdfsmount.h> exists. 94838494Sobrien */ 94938494Sobrien#ifdef HAVE_CDFS_CDFSMOUNT_H 95038494Sobrien# include <cdfs/cdfsmount.h> 95138494Sobrien#endif /* HAVE_CDFS_CDFSMOUNT_H */ 95238494Sobrien 95338494Sobrien/* 95438494Sobrien * Actions to take if <isofs/cd9660/cd9660_mount.h> exists. 95538494Sobrien */ 95638494Sobrien#ifdef HAVE_ISOFS_CD9660_CD9660_MOUNT_H 95738494Sobrien# include <isofs/cd9660/cd9660_mount.h> 95838494Sobrien#endif /* HAVE_ISOFS_CD9660_CD9660_MOUNT_H */ 95938494Sobrien 96038494Sobrien/* 96138494Sobrien * Actions to take if <mount.h> exists. 96238494Sobrien */ 96338494Sobrien#ifdef HAVE_MOUNT_H 96438494Sobrien# include <mount.h> 96538494Sobrien#endif /* HAVE_MOUNT_H */ 96638494Sobrien 96738494Sobrien/* 96838494Sobrien * Actions to take if <nsswitch.h> exists. 96938494Sobrien */ 97038494Sobrien#ifdef HAVE_NSSWITCH_H 97138494Sobrien# include <nsswitch.h> 97238494Sobrien#endif /* HAVE_NSSWITCH_H */ 97338494Sobrien 97438494Sobrien/* 97538494Sobrien * Actions to take if <rpc/auth_des.h> exists. 97638494Sobrien */ 97738494Sobrien#ifdef HAVE_RPC_AUTH_DES_H 97838494Sobrien# include <rpc/auth_des.h> 97938494Sobrien#endif /* HAVE_RPC_AUTH_DES_H */ 98038494Sobrien 98138494Sobrien/* 98238494Sobrien * Actions to take if <rpc/pmap_clnt.h> exists. 98338494Sobrien */ 98438494Sobrien#ifdef HAVE_RPC_PMAP_CLNT_H 98538494Sobrien# include <rpc/pmap_clnt.h> 98638494Sobrien#endif /* HAVE_RPC_PMAP_CLNT_H */ 98738494Sobrien 98838494Sobrien/* 98938494Sobrien * Actions to take if <rpc/pmap_prot.h> exists. 99038494Sobrien */ 99138494Sobrien#ifdef HAVE_RPC_PMAP_PROT_H 99238494Sobrien# include <rpc/pmap_prot.h> 99338494Sobrien#endif /* HAVE_RPC_PMAP_PROT_H */ 99438494Sobrien 99538494Sobrien 99638494Sobrien/* 99738494Sobrien * Actions to take if <rpcsvc/mount.h> exists. 99838494Sobrien * AIX does not protect against this file doubly included, 99938494Sobrien * so I have to do my own protection here. 100038494Sobrien */ 100138494Sobrien#ifdef HAVE_RPCSVC_MOUNT_H 100238494Sobrien# ifndef _RPCSVC_MOUNT_H 100338494Sobrien# include <rpcsvc/mount.h> 100438494Sobrien# endif /* not _RPCSVC_MOUNT_H */ 100538494Sobrien#endif /* HAVE_RPCSVC_MOUNT_H */ 100638494Sobrien 100738494Sobrien/* 100838494Sobrien * Actions to take if <rpcsvc/nis.h> exists. 100938494Sobrien */ 101038494Sobrien#ifdef HAVE_RPCSVC_NIS_H 1011174299Sobrien/* 1012174299Sobrien * Solaris 10 (build 72) defines GROUP_OBJ in <sys/acl.h>, which is included 1013174299Sobrien * in many other header files. <rpcsvc/nis.h> uses GROUP_OBJ inside enum 1014174299Sobrien * zotypes. So if you're unlucky enough to include both headers, you get a 1015174299Sobrien * compile error because the two symbols conflict. 1016174299Sobrien * A similar conflict arises with Sun cc and the definition of "GROUP". 1017174299Sobrien * 1018174299Sobrien * Temp hack: undefine acl.h's GROUP_OBJ and GROUP because they're not needed 1019174299Sobrien * for am-utils. 1020174299Sobrien */ 1021174299Sobrien# ifdef GROUP_OBJ 1022174299Sobrien# undef GROUP_OBJ 1023174299Sobrien# endif /* GROUP_OBJ */ 1024174299Sobrien# ifdef GROUP 1025174299Sobrien# undef GROUP 1026174299Sobrien# endif /* GROUP */ 102738494Sobrien# include <rpcsvc/nis.h> 102838494Sobrien#endif /* HAVE_RPCSVC_NIS_H */ 102938494Sobrien 103038494Sobrien/* 103138494Sobrien * Actions to take if <setjmp.h> exists. 103238494Sobrien */ 103338494Sobrien#ifdef HAVE_SETJMP_H 103438494Sobrien# include <setjmp.h> 103538494Sobrien#endif /* HAVE_SETJMP_H */ 103638494Sobrien 103738494Sobrien/* 103838494Sobrien * Actions to take if <signal.h> exists. 103938494Sobrien */ 104038494Sobrien#ifdef HAVE_SIGNAL_H 104138494Sobrien# include <signal.h> 104238494Sobrien#endif /* HAVE_SIGNAL_H */ 104338494Sobrien 104438494Sobrien/* 104538494Sobrien * Actions to take if <string.h> exists. 104638494Sobrien */ 104738494Sobrien#ifdef HAVE_STRING_H 104838494Sobrien# include <string.h> 104938494Sobrien#endif /* HAVE_STRING_H */ 105038494Sobrien 105138494Sobrien/* 105238494Sobrien * Actions to take if <strings.h> exists. 105338494Sobrien */ 105438494Sobrien#ifdef HAVE_STRINGS_H 105538494Sobrien# include <strings.h> 105638494Sobrien#endif /* HAVE_STRINGS_H */ 105738494Sobrien 105838494Sobrien/* 105938494Sobrien * Actions to take if <sys/config.h> exists. 106038494Sobrien */ 106138494Sobrien#ifdef HAVE_SYS_CONFIG_H 106238494Sobrien# include <sys/config.h> 106338494Sobrien#endif /* HAVE_SYS_CONFIG_H */ 106438494Sobrien 106538494Sobrien/* 106638494Sobrien * Actions to take if <sys/dg_mount.h> exists. 106738494Sobrien */ 106838494Sobrien#ifdef HAVE_SYS_DG_MOUNT_H 106938494Sobrien# include <sys/dg_mount.h> 107038494Sobrien#endif /* HAVE_SYS_DG_MOUNT_H */ 107138494Sobrien 107238494Sobrien/* 107338494Sobrien * Actions to take if <sys/fs_types.h> exists. 107438494Sobrien */ 107538494Sobrien#ifdef HAVE_SYS_FS_TYPES_H 107638494Sobrien/* 107738494Sobrien * Define KERNEL here to avoid multiple definitions of gt_names[] on 107838494Sobrien * Ultrix 4.3. 107938494Sobrien */ 108038494Sobrien# define KERNEL 108138494Sobrien# include <sys/fs_types.h> 108238494Sobrien# undef KERNEL 108338494Sobrien#endif /* HAVE_SYS_FS_TYPES_H */ 108438494Sobrien 108538494Sobrien/* 108638494Sobrien * Actions to take if <sys/fstyp.h> exists. 108738494Sobrien */ 108838494Sobrien#ifdef HAVE_SYS_FSTYP_H 108938494Sobrien# include <sys/fstyp.h> 109038494Sobrien#endif /* HAVE_SYS_FSTYP_H */ 109138494Sobrien 109238494Sobrien/* 109338494Sobrien * Actions to take if <sys/lock.h> exists. 109438494Sobrien */ 109538494Sobrien#ifdef HAVE_SYS_LOCK_H 109638494Sobrien# include <sys/lock.h> 109738494Sobrien#endif /* HAVE_SYS_LOCK_H */ 109838494Sobrien 109938494Sobrien/* 110038494Sobrien * Actions to take if <sys/machine.h> exists. 110138494Sobrien */ 110238494Sobrien#ifdef HAVE_SYS_MACHINE_H 110338494Sobrien# include <sys/machine.h> 110438494Sobrien#endif /* HAVE_SYS_MACHINE_H */ 110538494Sobrien 110638494Sobrien/* 110738494Sobrien * Actions to take if <sys/mntctl.h> exists. 110838494Sobrien */ 110938494Sobrien#ifdef HAVE_SYS_MNTCTL_H 111038494Sobrien# include <sys/mntctl.h> 111138494Sobrien#endif /* HAVE_SYS_MNTCTL_H */ 111238494Sobrien 111338494Sobrien/* 111438494Sobrien * Actions to take if <sys/mnttab.h> exists. 111538494Sobrien */ 111638494Sobrien#ifdef HAVE_SYS_MNTTAB_H 111738494Sobrien# include <sys/mnttab.h> 111838494Sobrien#endif /* HAVE_SYS_MNTTAB_H */ 111938494Sobrien 112038494Sobrien/* 112138494Sobrien * Actions to take if <mnttab.h> exists. 112238494Sobrien * Do not include it if MNTTAB is already defined because it probably 112338494Sobrien * came from <sys/mnttab.h> and we do not want conflicting definitions. 112438494Sobrien */ 112538494Sobrien#if defined(HAVE_MNTTAB_H) && !defined(MNTTAB) 112638494Sobrien# include <mnttab.h> 112738494Sobrien#endif /* defined(HAVE_MNTTAB_H) && !defined(MNTTAB) */ 112838494Sobrien 112938494Sobrien/* 113038494Sobrien * Actions to take if <netconfig.h> exists. 113138494Sobrien */ 113238494Sobrien#ifdef HAVE_NETCONFIG_H 113338494Sobrien# include <netconfig.h> 113438494Sobrien/* Some systems (Solaris 2.5.1) don't declare this external */ 113538494Sobrienextern char *nc_sperror(void); 113638494Sobrien#endif /* HAVE_NETCONFIG_H */ 113738494Sobrien 113838494Sobrien/* 113938494Sobrien * Actions to take if <sys/netconfig.h> exists. 114038494Sobrien */ 114138494Sobrien#ifdef HAVE_SYS_NETCONFIG_H 114238494Sobrien# include <sys/netconfig.h> 114338494Sobrien#endif /* HAVE_SYS_NETCONFIG_H */ 114438494Sobrien 114538494Sobrien/* 114638494Sobrien * Actions to take if <sys/pathconf.h> exists. 114738494Sobrien */ 114838494Sobrien#ifdef HAVE_SYS_PATHCONF_H 114938494Sobrien# include <sys/pathconf.h> 115038494Sobrien#endif /* HAVE_SYS_PATHCONF_H */ 115138494Sobrien 115238494Sobrien/* 115338494Sobrien * Actions to take if <sys/resource.h> exists. 115438494Sobrien */ 115538494Sobrien#ifdef HAVE_SYS_RESOURCE_H 115638494Sobrien# include <sys/resource.h> 115738494Sobrien#endif /* HAVE_SYS_RESOURCE_H */ 115838494Sobrien 115938494Sobrien/* 116038494Sobrien * Actions to take if <sys/sema.h> exists. 116138494Sobrien */ 116238494Sobrien#ifdef HAVE_SYS_SEMA_H 116338494Sobrien# include <sys/sema.h> 116438494Sobrien#endif /* HAVE_SYS_SEMA_H */ 116538494Sobrien 116638494Sobrien/* 116738494Sobrien * Actions to take if <sys/signal.h> exists. 116838494Sobrien */ 116938494Sobrien#ifdef HAVE_SYS_SIGNAL_H 117038494Sobrien# include <sys/signal.h> 117138494Sobrien#endif /* HAVE_SYS_SIGNAL_H */ 117238494Sobrien 117338494Sobrien/* 117438494Sobrien * Actions to take if <sys/sockio.h> exists. 117538494Sobrien */ 117638494Sobrien#ifdef HAVE_SYS_SOCKIO_H 117738494Sobrien# include <sys/sockio.h> 117838494Sobrien#endif /* HAVE_SYS_SOCKIO_H */ 117938494Sobrien 118038494Sobrien/* 118138494Sobrien * Actions to take if <sys/syscall.h> exists. 118238494Sobrien */ 118338494Sobrien#ifdef HAVE_SYS_SYSCALL_H 118438494Sobrien# include <sys/syscall.h> 118538494Sobrien#endif /* HAVE_SYS_SYSCALL_H */ 118638494Sobrien 118738494Sobrien/* 118838494Sobrien * Actions to take if <sys/syslimits.h> exists. 118938494Sobrien */ 119038494Sobrien#ifdef HAVE_SYS_SYSLIMITS_H 119138494Sobrien# include <sys/syslimits.h> 119238494Sobrien#endif /* HAVE_SYS_SYSLIMITS_H */ 119338494Sobrien 119438494Sobrien/* 119538494Sobrien * Actions to take if <tiuser.h> exists. 119638494Sobrien */ 119738494Sobrien#ifdef HAVE_TIUSER_H 119838494Sobrien/* 119942633Sobrien * Some systems like AIX have multiple definitions for T_NULL and others 120038494Sobrien * that are defined first in <arpa/nameser.h>. 120138494Sobrien */ 120238494Sobrien# ifdef HAVE_ARPA_NAMESER_H 120338494Sobrien# ifdef T_NULL 120438494Sobrien# undef T_NULL 120538494Sobrien# endif /* T_NULL */ 120638494Sobrien# ifdef T_UNSPEC 120738494Sobrien# undef T_UNSPEC 120838494Sobrien# endif /* T_UNSPEC */ 120938494Sobrien# ifdef T_IDLE 121038494Sobrien# undef T_IDLE 121138494Sobrien# endif /* T_IDLE */ 121238494Sobrien# endif /* HAVE_ARPA_NAMESER_H */ 121338494Sobrien# include <tiuser.h> 121438494Sobrien#endif /* HAVE_TIUSER_H */ 121538494Sobrien 121638494Sobrien/* 121738494Sobrien * Actions to take if <sys/tiuser.h> exists. 121838494Sobrien */ 121938494Sobrien#ifdef HAVE_SYS_TIUSER_H 122038494Sobrien# include <sys/tiuser.h> 122138494Sobrien#endif /* HAVE_SYS_TIUSER_H */ 122238494Sobrien 122338494Sobrien/* 122438494Sobrien * Actions to take if <sys/statfs.h> exists. 122538494Sobrien */ 122638494Sobrien#ifdef HAVE_SYS_STATFS_H 122738494Sobrien# include <sys/statfs.h> 122838494Sobrien#endif /* HAVE_SYS_STATFS_H */ 122938494Sobrien 123038494Sobrien/* 1231174299Sobrien * Actions to take if <sys/statvfs.h> exists. 1232174299Sobrien */ 1233174299Sobrien#ifdef HAVE_SYS_STATVFS_H 1234174299Sobrien# include <sys/statvfs.h> 1235174299Sobrien#endif /* HAVE_SYS_STATVFS_H */ 1236174299Sobrien 1237174299Sobrien/* 123838494Sobrien * Actions to take if <sys/vfs.h> exists. 123938494Sobrien */ 124038494Sobrien#ifdef HAVE_SYS_VFS_H 124138494Sobrien# include <sys/vfs.h> 124238494Sobrien#endif /* HAVE_SYS_VFS_H */ 124338494Sobrien 124438494Sobrien/* 124538494Sobrien * Actions to take if <sys/vmount.h> exists. 124638494Sobrien */ 124738494Sobrien#ifdef HAVE_SYS_VMOUNT_H 124838494Sobrien# include <sys/vmount.h> 124938494Sobrien#endif /* HAVE_SYS_VMOUNT_H */ 125038494Sobrien 125138494Sobrien/* 125238494Sobrien * Actions to take if <ufs/ufs_mount.h> exists. 125338494Sobrien */ 125438494Sobrien#ifdef HAVE_UFS_UFS_MOUNT_H 125582805Sobrien# include <ufs/ufs_mount.h> 125682805Sobrien#endif /* HAVE_UFS_UFS_MOUNT_H */ 125738494Sobrien 125838494Sobrien/* 125938494Sobrien * Are S_ISDIR, S_ISREG, et al broken? If not, include <sys/stat.h>. 126038494Sobrien * Turned off the not using sys/stat.h based on if the macros are 126138494Sobrien * "broken", because they incorrectly get reported as broken on 126238494Sobrien * ncr2. 126338494Sobrien */ 126438494Sobrien#ifndef STAT_MACROS_BROKEN_notused 126538494Sobrien/* 126638494Sobrien * RedHat Linux 4.2 (alpha) has a problem in the headers that causes 126742633Sobrien * duplicate definitions, and also some other nasty bugs. Upgrade to Redhat 126838494Sobrien * 5.0! 126938494Sobrien */ 127038494Sobrien# ifdef HAVE_SYS_STAT_H 127138494Sobrien/* avoid duplicates or conflicts with <linux/stat.h> (RedHat alpha linux) */ 127238494Sobrien# if defined(S_IFREG) && defined(HAVE_STATBUF_H) 127338494Sobrien# include <statbuf.h> 127438494Sobrien# undef S_IFBLK 127538494Sobrien# undef S_IFCHR 127638494Sobrien# undef S_IFDIR 127738494Sobrien# undef S_IFIFO 127838494Sobrien# undef S_IFLNK 127938494Sobrien# undef S_IFMT 128038494Sobrien# undef S_IFREG 128138494Sobrien# undef S_IFSOCK 128238494Sobrien# undef S_IRGRP 128338494Sobrien# undef S_IROTH 128438494Sobrien# undef S_IRUSR 128538494Sobrien# undef S_IRWXG 128638494Sobrien# undef S_IRWXO 128738494Sobrien# undef S_IRWXU 128838494Sobrien# undef S_ISBLK 128938494Sobrien# undef S_ISCHR 129038494Sobrien# undef S_ISDIR 129138494Sobrien# undef S_ISFIFO 129238494Sobrien# undef S_ISGID 129338494Sobrien# undef S_ISLNK 129438494Sobrien# undef S_ISREG 129538494Sobrien# undef S_ISSOCK 129638494Sobrien# undef S_ISUID 129738494Sobrien# undef S_ISVTX 129838494Sobrien# undef S_IWGRP 129938494Sobrien# undef S_IWOTH 130038494Sobrien# undef S_IWUSR 130138494Sobrien# undef S_IXGRP 130238494Sobrien# undef S_IXOTH 130338494Sobrien# undef S_IXUSR 130438494Sobrien# endif /* defined(S_IFREG) && defined(HAVE_STATBUF_H) */ 130538494Sobrien# include <sys/stat.h> 130638494Sobrien# endif /* HAVE_SYS_STAT_H */ 130738494Sobrien#endif /* not STAT_MACROS_BROKEN_notused */ 130838494Sobrien 130938494Sobrien/* 131038494Sobrien * Actions to take if <stdio.h> exists. 131138494Sobrien */ 131238494Sobrien#ifdef HAVE_STDIO_H 131338494Sobrien# include <stdio.h> 131438494Sobrien#endif /* HAVE_STDIO_H */ 131538494Sobrien 131638494Sobrien/* 131738494Sobrien * Actions to take if <stdlib.h> exists. 131838494Sobrien */ 131938494Sobrien#ifdef HAVE_STDLIB_H 132038494Sobrien# include <stdlib.h> 132138494Sobrien#endif /* HAVE_STDLIB_H */ 132238494Sobrien 132338494Sobrien/* 132438494Sobrien * Actions to take if <regex.h> exists. 132538494Sobrien */ 132638494Sobrien#ifdef HAVE_REGEX_H 132738494Sobrien# include <regex.h> 132838494Sobrien#endif /* HAVE_REGEX_H */ 132938494Sobrien 1330174299Sobrien/* 1331174299Sobrien * Actions to take if <tcpd.h> exists. 1332174299Sobrien */ 1333174299Sobrien#if defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) 1334174299Sobrien# include <tcpd.h> 1335174299Sobrien#endif /* defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) */ 133638494Sobrien 1337174299Sobrien 133838494Sobrien/****************************************************************************/ 133938494Sobrien/* 134038494Sobrien * Specific macros we're looking for. 134138494Sobrien */ 134238494Sobrien#ifndef HAVE_MEMSET 134338494Sobrien# ifdef HAVE_BZERO 134438494Sobrien# define memset(ptr, val, len) bzero((ptr), (len)) 134538494Sobrien# else /* not HAVE_BZERO */ 134638494Sobrien# error Cannot find either memset or bzero! 134738494Sobrien# endif /* not HAVE_BZERO */ 134838494Sobrien#endif /* not HAVE_MEMSET */ 134938494Sobrien 135038494Sobrien#ifndef HAVE_MEMMOVE 135138494Sobrien# ifdef HAVE_BCOPY 135238494Sobrien# define memmove(to, from, len) bcopy((from), (to), (len)) 135338494Sobrien# else /* not HAVE_BCOPY */ 135438494Sobrien# error Cannot find either memmove or bcopy! 135538494Sobrien# endif /* not HAVE_BCOPY */ 135638494Sobrien#endif /* not HAVE_MEMMOVE */ 135738494Sobrien 135838494Sobrien/* 135938494Sobrien * memcmp() is more problematic: 136038494Sobrien * Systems that don't have it, but have bcmp(), will use bcmp() instead. 136138494Sobrien * Those that have it, but it is bad (SunOS 4 doesn't handle 136238494Sobrien * 8 bit comparisons correctly), will get to use am_memcmp(). 136338494Sobrien * Otherwise if you have memcmp() and it is good, use it. 136438494Sobrien */ 136538494Sobrien#ifdef HAVE_MEMCMP 136638494Sobrien# ifdef HAVE_BAD_MEMCMP 136738494Sobrien# define memcmp am_memcmp 136838494Sobrienextern int am_memcmp(const voidp s1, const voidp s2, size_t len); 136938494Sobrien# endif /* HAVE_BAD_MEMCMP */ 137038494Sobrien#else /* not HAVE_MEMCMP */ 137138494Sobrien# ifdef HAVE_BCMP 137238494Sobrien# define memcmp(a, b, len) bcmp((a), (b), (len)) 137338494Sobrien# endif /* HAVE_BCMP */ 137438494Sobrien#endif /* not HAVE_MEMCMP */ 137538494Sobrien 137638494Sobrien#ifndef HAVE_SETEUID 137738494Sobrien# ifdef HAVE_SETRESUID 137838494Sobrien# define seteuid(x) setresuid(-1,(x),-1) 137938494Sobrien# else /* not HAVE_SETRESUID */ 138038494Sobrien# error Cannot find either seteuid or setresuid! 138138494Sobrien# endif /* not HAVE_SETRESUID */ 138238494Sobrien#endif /* not HAVE_SETEUID */ 138338494Sobrien 138438494Sobrien/* 138538494Sobrien * Define type of mntent_t. 138638494Sobrien * Defaults to struct mntent, else struct mnttab. If neither is found, and 138738494Sobrien * the operating system does keep not mount tables in the kernel, then flag 138838494Sobrien * it as an error. If neither is found and the OS keeps mount tables in the 138938494Sobrien * kernel, then define our own version of mntent; it will be needed for amd 139038494Sobrien * to keep its own internal version of the mount tables. 139138494Sobrien */ 139238494Sobrien#ifdef HAVE_STRUCT_MNTENT 139338494Sobrientypedef struct mntent mntent_t; 139438494Sobrien#else /* not HAVE_STRUCT_MNTENT */ 139538494Sobrien# ifdef HAVE_STRUCT_MNTTAB 139638494Sobrientypedef struct mnttab mntent_t; 139738494Sobrien/* map struct mnttab field names to struct mntent field names */ 139838494Sobrien# define mnt_fsname mnt_special 139938494Sobrien# define mnt_dir mnt_mountp 140038494Sobrien# define mnt_opts mnt_mntopts 140138494Sobrien# define mnt_type mnt_fstype 140238494Sobrien# else /* not HAVE_STRUCT_MNTTAB */ 140338494Sobrien# ifdef MOUNT_TABLE_ON_FILE 140438494Sobrien# error Could not find definition for struct mntent or struct mnttab! 140538494Sobrien# else /* not MOUNT_TABLE_ON_FILE */ 140638494Sobrientypedef struct _am_mntent { 140738494Sobrien char *mnt_fsname; /* name of mounted file system */ 140838494Sobrien char *mnt_dir; /* file system path prefix */ 140938494Sobrien char *mnt_type; /* MNTTAB_TYPE_* */ 141038494Sobrien char *mnt_opts; /* MNTTAB_OPT_* */ 141138494Sobrien int mnt_freq; /* dump frequency, in days */ 141238494Sobrien int mnt_passno; /* pass number on parallel fsck */ 141338494Sobrien} mntent_t; 141438494Sobrien# endif /* not MOUNT_TABLE_ON_FILE */ 141538494Sobrien# endif /* not HAVE_STRUCT_MNTTAB */ 141638494Sobrien#endif /* not HAVE_STRUCT_MNTENT */ 141738494Sobrien 1418174299Sobrien/* 1419174299Sobrien * Provide FD_* macros for systems that lack them. 1420174299Sobrien */ 1421174299Sobrien#ifndef FD_SET 1422174299Sobrien# define FD_SET(fd, set) (*(set) |= (1 << (fd))) 1423174299Sobrien# define FD_ISSET(fd, set) (*(set) & (1 << (fd))) 1424174299Sobrien# define FD_CLR(fd, set) (*(set) &= ~(1 << (fd))) 1425174299Sobrien# define FD_ZERO(set) (*(set) = 0) 1426174299Sobrien#endif /* not FD_SET */ 142738494Sobrien 1428174299Sobrien 142938494Sobrien/* 143038494Sobrien * Complete external definitions missing from some systems. 143138494Sobrien */ 143238494Sobrien 143338494Sobrien#ifndef HAVE_EXTERN_SYS_ERRLIST 143482805Sobrienextern const char *const sys_errlist[]; 143538494Sobrien#endif /* not HAVE_EXTERN_SYS_ERRLIST */ 143638494Sobrien 143738494Sobrien#ifndef HAVE_EXTERN_OPTARG 143838494Sobrienextern char *optarg; 143938494Sobrienextern int optind; 144038494Sobrien#endif /* not HAVE_EXTERN_OPTARG */ 144138494Sobrien 144251300Sobrien#if defined(HAVE_CLNT_SPCREATEERROR) && !defined(HAVE_EXTERN_CLNT_SPCREATEERROR) 144351300Sobrienextern char *clnt_spcreateerror(const char *s); 144451300Sobrien#endif /* defined(HAVE_CLNT_SPCREATEERROR) && !defined(HAVE_EXTERN_CLNT_SPCREATEERROR) */ 144551300Sobrien 144638494Sobrien#if defined(HAVE_CLNT_SPERRNO) && !defined(HAVE_EXTERN_CLNT_SPERRNO) 144738494Sobrienextern char *clnt_sperrno(const enum clnt_stat num); 144838494Sobrien#endif /* defined(HAVE_CLNT_SPERRNO) && !defined(HAVE_EXTERN_CLNT_SPERRNO) */ 144938494Sobrien 145038494Sobrien#ifndef HAVE_EXTERN_FREE 145138494Sobrienextern void free(voidp); 145238494Sobrien#endif /* not HAVE_EXTERN_FREE */ 145338494Sobrien 145438494Sobrien#if defined(HAVE_GET_MYADDRESS) && !defined(HAVE_EXTERN_GET_MYADDRESS) 145538494Sobrienextern void get_myaddress(struct sockaddr_in *addr); 145638494Sobrien#endif /* defined(HAVE_GET_MYADDRESS) && !defined(HAVE_EXTERN_GET_MYADDRESS) */ 145738494Sobrien 145838494Sobrien#if defined(HAVE_GETDOMAINNAME) && !defined(HAVE_EXTERN_GETDOMAINNAME) 145938494Sobrien# if defined(HAVE_MAP_NIS) || defined(HAVE_MAP_NISPLUS) 146038494Sobrienextern int getdomainname(char *name, int namelen); 146138494Sobrien# endif /* defined(HAVE_MAP_NIS) || defined(HAVE_MAP_NISPLUS) */ 146238494Sobrien#endif /* defined(HAVE_GETDOMAINNAME) && !defined(HAVE_EXTERN_GETDOMAINNAME) */ 146338494Sobrien 146438494Sobrien#if defined(HAVE_GETDTABLESIZE) && !defined(HAVE_EXTERN_GETDTABLESIZE) 146538494Sobrienextern int getdtablesize(void); 146638494Sobrien#endif /* defined(HAVE_GETDTABLESIZE) && !defined(HAVE_EXTERN_GETDTABLESIZE) */ 146738494Sobrien 146838494Sobrien#if defined(HAVE_GETHOSTNAME) && !defined(HAVE_EXTERN_GETHOSTNAME) 146938494Sobrienextern int gethostname(char *name, int namelen); 147038494Sobrien#endif /* defined(HAVE_GETHOSTNAME) && !defined(HAVE_EXTERN_GETHOSTNAME) */ 147138494Sobrien 147242633Sobrien#ifndef HAVE_EXTERN_GETLOGIN 147342633Sobrienextern char *getlogin(void); 147442633Sobrien#endif /* not HAVE_EXTERN_GETLOGIN */ 147542633Sobrien 147638494Sobrien#if defined(HAVE_GETPAGESIZE) && !defined(HAVE_EXTERN_GETPAGESIZE) 147738494Sobrienextern int getpagesize(void); 147838494Sobrien#endif /* defined(HAVE_GETPAGESIZE) && !defined(HAVE_EXTERN_GETPAGESIZE) */ 147938494Sobrien 148038494Sobrien#ifndef HAVE_EXTERN_GETWD 148138494Sobrienextern char *getwd(char *s); 148238494Sobrien#endif /* not HAVE_EXTERN_GETWD */ 148338494Sobrien 1484174299Sobrien#if defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) && !defined(HAVE_EXTERN_HOSTS_CTL) 1485174299Sobrienextern int hosts_ctl(char *daemon, char *client_name, char *client_addr, char *client_user); 1486174299Sobrien#endif /* defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) && !defined(HAVE_EXTERN_HOSTS_CTL) */ 1487174299Sobrien 148838494Sobrien#ifndef HAVE_EXTERN_INNETGR 148938494Sobrienextern int innetgr(char *, char *, char *, char *); 149038494Sobrien#endif /* not HAVE_EXTERN_INNETGR */ 149138494Sobrien 149238494Sobrien#if defined(HAVE_MKSTEMP) && !defined(HAVE_EXTERN_MKSTEMP) 149338494Sobrienextern int mkstemp(char *); 149438494Sobrien#endif /* defined(HAVE_MKSTEMP) && !defined(HAVE_EXTERN_MKSTEMP) */ 149538494Sobrien 149638494Sobrien#ifndef HAVE_EXTERN_SBRK 149738494Sobrienextern caddr_t sbrk(int incr); 149838494Sobrien#endif /* not HAVE_EXTERN_SBRK */ 149938494Sobrien 150042633Sobrien#if defined(HAVE_SETEUID) && !defined(HAVE_EXTERN_SETEUID) 150142633Sobrienextern int seteuid(uid_t euid); 150242633Sobrien#endif /* not defined(HAVE_SETEUID) && !defined(HAVE_EXTERN_SETEUID) */ 150342633Sobrien 150451595Sobrien#if defined(HAVE_SETITIMER) && !defined(HAVE_EXTERN_SETITIMER) 150551595Sobrienextern int setitimer(int, struct itimerval *, struct itimerval *); 150651595Sobrien#endif /* defined(HAVE_SETITIMER) && !defined(HAVE_EXTERN_SETITIMER) */ 150751595Sobrien 1508174299Sobrien#ifndef HAVE_EXTERN_SLEEP 1509174299Sobrienextern unsigned int sleep(unsigned int seconds); 1510174299Sobrien#endif /* not HAVE_EXTERN_SETITIMER */ 1511174299Sobrien 151238494Sobrien#ifndef HAVE_EXTERN_STRCASECMP 151338494Sobrien/* 151438494Sobrien * define this extern even if function does not exist, for it will 151538494Sobrien * be filled in by libamu/strcasecmp.c 151638494Sobrien */ 151738494Sobrienextern int strcasecmp(const char *s1, const char *s2); 151838494Sobrien#endif /* not HAVE_EXTERN_STRCASECMP */ 151938494Sobrien 152038494Sobrien#ifndef HAVE_EXTERN_STRDUP 152138494Sobrien/* 152238494Sobrien * define this extern even if function does not exist, for it will 152338494Sobrien * be filled in by libamu/strdup.c 152438494Sobrien */ 152538494Sobrienextern char *strdup(const char *s); 152638494Sobrien#endif /* not HAVE_EXTERN_STRDUP */ 152738494Sobrien 1528174299Sobrien#ifndef HAVE_EXTERN_STRLCAT 1529174299Sobrien/* 1530174299Sobrien * define this extern even if function does not exist, for it will 1531174299Sobrien * be filled in by libamu/strlcat.c 1532174299Sobrien */ 1533174299Sobrienextern size_t strlcat(char *dst, const char *src, size_t siz); 1534174299Sobrien#endif /* not HAVE_EXTERN_STRLCAT */ 1535174299Sobrien 1536174299Sobrien#ifndef HAVE_EXTERN_STRLCPY 1537174299Sobrien/* 1538174299Sobrien * define this extern even if function does not exist, for it will 1539174299Sobrien * be filled in by libamu/strlcpy.c 1540174299Sobrien */ 1541174299Sobrienextern size_t strlcpy(char *dst, const char *src, size_t siz); 1542174299Sobrien#endif /* not HAVE_EXTERN_STRLCPY */ 1543174299Sobrien 154438494Sobrien#if defined(HAVE_STRSTR) && !defined(HAVE_EXTERN_STRSTR) 154538494Sobrienextern char *strstr(const char *s1, const char *s2); 154638494Sobrien#endif /* defined(HAVE_STRSTR) && !defined(HAVE_EXTERN_STRSTR) */ 154738494Sobrien 154838494Sobrien#if defined(HAVE_USLEEP) && !defined(HAVE_EXTERN_USLEEP) 154938494Sobrienextern int usleep(u_int useconds); 155038494Sobrien#endif /* defined(HAVE_USLEEP) && !defined(HAVE_EXTERN_USLEEP) */ 155138494Sobrien 155238494Sobrien#ifndef HAVE_EXTERN_UALARM 155338494Sobrienextern u_int ualarm(u_int usecs, u_int interval); 155438494Sobrien#endif /* not HAVE_EXTERN_UALARM */ 155538494Sobrien 155638494Sobrien#if defined(HAVE_WAIT3) && !defined(HAVE_EXTERN_WAIT3) 155738494Sobrienextern int wait3(int *statusp, int options, struct rusage *rusage); 155838494Sobrien#endif /* defined(HAVE_WAIT3) && !defined(HAVE_EXTERN_WAIT3) */ 155938494Sobrien 156052897Sobrien#if defined(HAVE_VSNPRINTF) && !defined(HAVE_EXTERN_VSNPRINTF) 156152897Sobrienextern int vsnprintf(char *, int, const char *, ...); 156252897Sobrien#endif /* defined(HAVE_VSNPRINTF) && !defined(HAVE_EXTERN_VSNPRINTF) */ 156352897Sobrien 1564119682Smbr#ifndef HAVE_EXTERN_XDR_CALLMSG 1565119682Smbrextern bool_t xdr_callmsg(XDR *xdrs, struct rpc_msg *msg); 1566119682Smbr#endif /* not HAVE_EXTERN_XDR_CALLMSG */ 1567119682Smbr 156838494Sobrien#ifndef HAVE_EXTERN_XDR_OPAQUE_AUTH 156942633Sobrienextern bool_t xdr_opaque_auth(XDR *xdrs, struct opaque_auth *auth); 157038494Sobrien#endif /* not HAVE_EXTERN_XDR_OPAQUE_AUTH */ 157138494Sobrien 157238494Sobrien/****************************************************************************/ 157338494Sobrien/* 157438494Sobrien * amd-specific header files. 157538494Sobrien */ 157638494Sobrien#ifdef THIS_HEADER_FILE_IS_INCLUDED_ABOVE 157738494Sobrien# include <amu_nfs_prot.h> 157838494Sobrien#endif /* THIS_HEADER_FILE_IS_INCLUDED_ABOVE */ 1579174299Sobrien#include <am_compat.h> 1580174299Sobrien#include <am_xdr_func.h> 158138494Sobrien#include <am_utils.h> 158238494Sobrien#include <amq_defs.h> 158338494Sobrien#include <aux_conf.h> 158438494Sobrien 158538494Sobrien 158638494Sobrien/****************************************************************************/ 158738494Sobrien/* 158842633Sobrien * External definitions that depend on other macros available (or not) 158938494Sobrien * and those are probably declared in any of the above headers. 159038494Sobrien */ 159138494Sobrien 1592174299Sobrien#ifdef HAVE_HASMNTOPT 1593174299Sobrien# ifdef HAVE_BAD_HASMNTOPT 1594174299Sobrienextern char *amu_hasmntopt(mntent_t *mnt, char *opt); 1595174299Sobrien# else /* not HAVE_BAD_HASMNTOPT */ 1596174299Sobrien# define amu_hasmntopt hasmntopt 1597174299Sobrien# endif /* not HAVE_BAD_HASMNTOPT */ 1598174299Sobrien#else /* not HAVE_HASMNTOPT */ 1599174299Sobrienextern char *amu_hasmntopt(mntent_t *mnt, char *opt); 160038494Sobrien#endif /* not HAVE_HASMNTOPT */ 160138494Sobrien 160238494Sobrien#endif /* not _AM_DEFS_H */ 1603