1bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* 2bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * Copyright (c) 1999-2003 Damien Miller. All rights reserved. 3bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * 4bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * Redistribution and use in source and binary forms, with or without 5bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * modification, are permitted provided that the following conditions 6bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * are met: 7bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * 1. Redistributions of source code must retain the above copyright 8bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * notice, this list of conditions and the following disclaimer. 9bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * 2. Redistributions in binary form must reproduce the above copyright 10bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * notice, this list of conditions and the following disclaimer in the 11bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * documentation and/or other materials provided with the distribution. 12bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * 13bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 14bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 15bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 16bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 17bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 18bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 19bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 20bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman */ 24bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 25bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef _DEFINES_H 26bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define _DEFINES_H 27bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 28bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* Constants */ 29bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 30bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(HAVE_DECL_SHUT_RD) && HAVE_DECL_SHUT_RD == 0 31bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmanenum 32bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman{ 33bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman SHUT_RD = 0, /* No more receptions. */ 34bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman SHUT_WR, /* No more transmissions. */ 35bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman SHUT_RDWR /* No more receptions or transmissions. */ 36bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman}; 37bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define SHUT_RD SHUT_RD 38bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define SHUT_WR SHUT_WR 39bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define SHUT_RDWR SHUT_RDWR 40bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 41bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 42bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* 439768ca48f57aaf035f508a473421d210b5145e99Greg Hartman * Cygwin doesn't really have a notion of reserved ports. It is still 449768ca48f57aaf035f508a473421d210b5145e99Greg Hartman * is useful on the client side so for compatibility it defines as 1024 via 459768ca48f57aaf035f508a473421d210b5145e99Greg Hartman * netinet/in.h inside an enum. We * don't actually want that restriction 469768ca48f57aaf035f508a473421d210b5145e99Greg Hartman * so we want to set that to zero, but we can't do it direct in config.h 479768ca48f57aaf035f508a473421d210b5145e99Greg Hartman * because it'll cause a conflicting definition the first time we include 489768ca48f57aaf035f508a473421d210b5145e99Greg Hartman * netinet/in.h. 499768ca48f57aaf035f508a473421d210b5145e99Greg Hartman */ 509768ca48f57aaf035f508a473421d210b5145e99Greg Hartman 519768ca48f57aaf035f508a473421d210b5145e99Greg Hartman#ifdef HAVE_CYGWIN 529768ca48f57aaf035f508a473421d210b5145e99Greg Hartman#define IPPORT_RESERVED 0 539768ca48f57aaf035f508a473421d210b5145e99Greg Hartman#endif 549768ca48f57aaf035f508a473421d210b5145e99Greg Hartman 559768ca48f57aaf035f508a473421d210b5145e99Greg Hartman/* 56bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * Definitions for IP type of service (ip_tos) 57bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman */ 58bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#include <netinet/in_systm.h> 59bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#include <netinet/ip.h> 60bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef IPTOS_LOWDELAY 61bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_LOWDELAY 0x10 62bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_THROUGHPUT 0x08 63bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_RELIABILITY 0x04 64bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_LOWCOST 0x02 65bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_MINCOST IPTOS_LOWCOST 66bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* IPTOS_LOWDELAY */ 67bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 68bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* 69bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * Definitions for DiffServ Codepoints as per RFC2474 70bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman */ 71bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef IPTOS_DSCP_AF11 72bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_AF11 0x28 73bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_AF12 0x30 74bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_AF13 0x38 75bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_AF21 0x48 76bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_AF22 0x50 77bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_AF23 0x58 78bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_AF31 0x68 79bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_AF32 0x70 80bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_AF33 0x78 81bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_AF41 0x88 82bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_AF42 0x90 83bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_AF43 0x98 84bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_EF 0xb8 85bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* IPTOS_DSCP_AF11 */ 86bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef IPTOS_DSCP_CS0 87bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_CS0 0x00 88bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_CS1 0x20 89bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_CS2 0x40 90bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_CS3 0x60 91bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_CS4 0x80 92bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_CS5 0xa0 93bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_CS6 0xc0 94bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_CS7 0xe0 95bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* IPTOS_DSCP_CS0 */ 96bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef IPTOS_DSCP_EF 97bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IPTOS_DSCP_EF 0xb8 98bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* IPTOS_DSCP_EF */ 99bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 100d059297112922cabb0c674840589be8db821fd9aAdam Langley#ifndef PATH_MAX 101d059297112922cabb0c674840589be8db821fd9aAdam Langley# ifdef _POSIX_PATH_MAX 102d059297112922cabb0c674840589be8db821fd9aAdam Langley# define PATH_MAX _POSIX_PATH_MAX 103d059297112922cabb0c674840589be8db821fd9aAdam Langley# endif 104d059297112922cabb0c674840589be8db821fd9aAdam Langley#endif 105d059297112922cabb0c674840589be8db821fd9aAdam Langley 106bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef MAXPATHLEN 107bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifdef PATH_MAX 108bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define MAXPATHLEN PATH_MAX 109bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else /* PATH_MAX */ 110bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define MAXPATHLEN 64 111bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* realpath uses a fixed buffer of size MAXPATHLEN, so force use of ours */ 112bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifndef BROKEN_REALPATH 113bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define BROKEN_REALPATH 1 114bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif /* BROKEN_REALPATH */ 115bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif /* PATH_MAX */ 116bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* MAXPATHLEN */ 117bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 118d059297112922cabb0c674840589be8db821fd9aAdam Langley#ifndef HOST_NAME_MAX 119d059297112922cabb0c674840589be8db821fd9aAdam Langley# include "netdb.h" /* for MAXHOSTNAMELEN */ 120d059297112922cabb0c674840589be8db821fd9aAdam Langley# if defined(_POSIX_HOST_NAME_MAX) 121d059297112922cabb0c674840589be8db821fd9aAdam Langley# define HOST_NAME_MAX _POSIX_HOST_NAME_MAX 122d059297112922cabb0c674840589be8db821fd9aAdam Langley# elif defined(MAXHOSTNAMELEN) 123d059297112922cabb0c674840589be8db821fd9aAdam Langley# define HOST_NAME_MAX MAXHOSTNAMELEN 124d059297112922cabb0c674840589be8db821fd9aAdam Langley# else 125d059297112922cabb0c674840589be8db821fd9aAdam Langley# define HOST_NAME_MAX 255 126bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 127d059297112922cabb0c674840589be8db821fd9aAdam Langley#endif /* HOST_NAME_MAX */ 128bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 129bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(HAVE_DECL_MAXSYMLINKS) && HAVE_DECL_MAXSYMLINKS == 0 130bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define MAXSYMLINKS 5 131bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 132bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 133bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef STDIN_FILENO 134bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define STDIN_FILENO 0 135bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 136bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef STDOUT_FILENO 137bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define STDOUT_FILENO 1 138bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 139bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef STDERR_FILENO 140bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define STDERR_FILENO 2 141bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 142bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 143bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef NGROUPS_MAX /* Disable groupaccess if NGROUP_MAX is not set */ 144bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifdef NGROUPS 145bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define NGROUPS_MAX NGROUPS 146bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#else 147bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define NGROUPS_MAX 0 148bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 149bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 150bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 151bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(HAVE_DECL_O_NONBLOCK) && HAVE_DECL_O_NONBLOCK == 0 152bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define O_NONBLOCK 00004 /* Non Blocking Open */ 153bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 154bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 155bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef S_IFSOCK 156bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define S_IFSOCK 0 157bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* S_IFSOCK */ 158bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 159bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef S_ISDIR 160bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define S_ISDIR(mode) (((mode) & (_S_IFMT)) == (_S_IFDIR)) 161bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* S_ISDIR */ 162bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 163bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef S_ISREG 164bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define S_ISREG(mode) (((mode) & (_S_IFMT)) == (_S_IFREG)) 165bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* S_ISREG */ 166bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 167bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef S_ISLNK 168bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK) 169bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* S_ISLNK */ 170bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 171bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef S_IXUSR 172bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define S_IXUSR 0000100 /* execute/search permission, */ 173bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define S_IXGRP 0000010 /* execute/search permission, */ 174bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define S_IXOTH 0000001 /* execute/search permission, */ 175bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define _S_IWUSR 0000200 /* write permission, */ 176bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define S_IWUSR _S_IWUSR /* write permission, owner */ 177bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define S_IWGRP 0000020 /* write permission, group */ 178bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define S_IWOTH 0000002 /* write permission, other */ 179bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define S_IRUSR 0000400 /* read permission, owner */ 180bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define S_IRGRP 0000040 /* read permission, group */ 181bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define S_IROTH 0000004 /* read permission, other */ 182bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define S_IRWXU 0000700 /* read, write, execute */ 183bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define S_IRWXG 0000070 /* read, write, execute */ 184bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define S_IRWXO 0000007 /* read, write, execute */ 185bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* S_IXUSR */ 186bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 187bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if !defined(MAP_ANON) && defined(MAP_ANONYMOUS) 188bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define MAP_ANON MAP_ANONYMOUS 189bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 190bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 191bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef MAP_FAILED 192bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define MAP_FAILED ((void *)-1) 193bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 194bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 195bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* 196bd77cf78387b72b7b3ea870459077672bf75c3b5Greg HartmanSCO Open Server 3 has INADDR_LOOPBACK defined in rpc/rpc.h but 197bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmanincluding rpc/rpc.h breaks Solaris 6 198bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman*/ 199bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef INADDR_LOOPBACK 200bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define INADDR_LOOPBACK ((u_long)0x7f000001) 201bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 202bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 203bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* Types */ 204bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 205bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* If sys/types.h does not supply intXX_t, supply them ourselves */ 206bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* (or die trying) */ 207bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 208bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef HAVE_U_INT 209bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef unsigned int u_int; 210bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 211bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 212bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef HAVE_INTXX_T 213d059297112922cabb0c674840589be8db821fd9aAdam Langleytypedef signed char int8_t; 214bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# if (SIZEOF_SHORT_INT == 2) 215bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef short int int16_t; 216bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 217bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifdef _UNICOS 218bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# if (SIZEOF_SHORT_INT == 4) 219bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef short int16_t; 220bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 221bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef long int16_t; 222bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 223bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 224bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# error "16 bit int type not found." 225bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif /* _UNICOS */ 226bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 227bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# if (SIZEOF_INT == 4) 228bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef int int32_t; 229bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 230bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifdef _UNICOS 231bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef long int32_t; 232bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 233bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# error "32 bit int type not found." 234bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif /* _UNICOS */ 235bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 236bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 237bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 238bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* If sys/types.h does not supply u_intXX_t, supply them ourselves */ 239bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef HAVE_U_INTXX_T 240bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifdef HAVE_UINTXX_T 241bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef uint8_t u_int8_t; 242bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef uint16_t u_int16_t; 243bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef uint32_t u_int32_t; 244bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define HAVE_U_INTXX_T 1 245bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 246bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef unsigned char u_int8_t; 247bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# if (SIZEOF_SHORT_INT == 2) 248bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef unsigned short int u_int16_t; 249bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 250bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifdef _UNICOS 251bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# if (SIZEOF_SHORT_INT == 4) 252bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef unsigned short u_int16_t; 253bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 254bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef unsigned long u_int16_t; 255bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 256bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 257bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# error "16 bit int type not found." 258bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 259bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 260bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# if (SIZEOF_INT == 4) 261bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef unsigned int u_int32_t; 262bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 263bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifdef _UNICOS 264bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef unsigned long u_int32_t; 265bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 266bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# error "32 bit int type not found." 267bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 268bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 269bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 270bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define __BIT_TYPES_DEFINED__ 271bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 272bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 273bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* 64-bit types */ 274bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef HAVE_INT64_T 275bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# if (SIZEOF_LONG_INT == 8) 276bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef long int int64_t; 277bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 278bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# if (SIZEOF_LONG_LONG_INT == 8) 279bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef long long int int64_t; 280bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 281bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 282bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 283bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef HAVE_U_INT64_T 284bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# if (SIZEOF_LONG_INT == 8) 285bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef unsigned long int u_int64_t; 286bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 287bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# if (SIZEOF_LONG_LONG_INT == 8) 288bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef unsigned long long int u_int64_t; 289bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 290bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 291bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 292bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 293d059297112922cabb0c674840589be8db821fd9aAdam Langley#ifndef HAVE_UINTXX_T 294d059297112922cabb0c674840589be8db821fd9aAdam Langleytypedef u_int8_t uint8_t; 295d059297112922cabb0c674840589be8db821fd9aAdam Langleytypedef u_int16_t uint16_t; 296d059297112922cabb0c674840589be8db821fd9aAdam Langleytypedef u_int32_t uint32_t; 297d059297112922cabb0c674840589be8db821fd9aAdam Langleytypedef u_int64_t uint64_t; 298d059297112922cabb0c674840589be8db821fd9aAdam Langley#endif 299d059297112922cabb0c674840589be8db821fd9aAdam Langley 300d059297112922cabb0c674840589be8db821fd9aAdam Langley#ifndef HAVE_INTMAX_T 301d059297112922cabb0c674840589be8db821fd9aAdam Langleytypedef long long intmax_t; 302d059297112922cabb0c674840589be8db821fd9aAdam Langley#endif 303d059297112922cabb0c674840589be8db821fd9aAdam Langley 304d059297112922cabb0c674840589be8db821fd9aAdam Langley#ifndef HAVE_UINTMAX_T 305d059297112922cabb0c674840589be8db821fd9aAdam Langleytypedef unsigned long long uintmax_t; 306d059297112922cabb0c674840589be8db821fd9aAdam Langley#endif 307d059297112922cabb0c674840589be8db821fd9aAdam Langley 308bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef HAVE_U_CHAR 309bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef unsigned char u_char; 310bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define HAVE_U_CHAR 311bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* HAVE_U_CHAR */ 312bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 313d059297112922cabb0c674840589be8db821fd9aAdam Langley#ifndef ULLONG_MAX 314d059297112922cabb0c674840589be8db821fd9aAdam Langley# define ULLONG_MAX ((unsigned long long)-1) 315d059297112922cabb0c674840589be8db821fd9aAdam Langley#endif 316d059297112922cabb0c674840589be8db821fd9aAdam Langley 317bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef SIZE_T_MAX 318bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define SIZE_T_MAX ULONG_MAX 319bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* SIZE_T_MAX */ 320bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 321bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef HAVE_SIZE_T 322bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef unsigned int size_t; 323bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define HAVE_SIZE_T 324bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define SIZE_T_MAX UINT_MAX 325bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* HAVE_SIZE_T */ 326bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 327bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef SIZE_MAX 328bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define SIZE_MAX SIZE_T_MAX 329bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 330bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 331bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef HAVE_SSIZE_T 332bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef int ssize_t; 333bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define HAVE_SSIZE_T 334bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* HAVE_SSIZE_T */ 335bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 336bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef HAVE_CLOCK_T 337bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef long clock_t; 338bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define HAVE_CLOCK_T 339bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* HAVE_CLOCK_T */ 340bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 341bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef HAVE_SA_FAMILY_T 342bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef int sa_family_t; 343bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define HAVE_SA_FAMILY_T 344bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* HAVE_SA_FAMILY_T */ 345bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 346bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef HAVE_PID_T 347bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef int pid_t; 348bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define HAVE_PID_T 349bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* HAVE_PID_T */ 350bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 351bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef HAVE_SIG_ATOMIC_T 352bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef int sig_atomic_t; 353bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define HAVE_SIG_ATOMIC_T 354bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* HAVE_SIG_ATOMIC_T */ 355bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 356bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef HAVE_MODE_T 357bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef int mode_t; 358bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define HAVE_MODE_T 359bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* HAVE_MODE_T */ 360bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 361bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE___SS_FAMILY_IN_SS) 362bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define ss_family __ss_family 363bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE_SA_FAMILY_IN_SS) */ 364bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 365bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef HAVE_SYS_UN_H 366bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmanstruct sockaddr_un { 367bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman short sun_family; /* AF_UNIX */ 368bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman char sun_path[108]; /* path name (gag) */ 369bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman}; 370bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* HAVE_SYS_UN_H */ 371bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 372bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef HAVE_IN_ADDR_T 373bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef u_int32_t in_addr_t; 374bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 375bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef HAVE_IN_PORT_T 376bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmantypedef u_int16_t in_port_t; 377bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 378bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 379bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(BROKEN_SYS_TERMIO_H) && !defined(_STRUCT_WINSIZE) 380bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define _STRUCT_WINSIZE 381bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartmanstruct winsize { 382bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman unsigned short ws_row; /* rows, in characters */ 383bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman unsigned short ws_col; /* columns, in character */ 384bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman unsigned short ws_xpixel; /* horizontal size, pixels */ 385bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman unsigned short ws_ypixel; /* vertical size, pixels */ 386bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman}; 387bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 388bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 389d059297112922cabb0c674840589be8db821fd9aAdam Langley/* bits needed for select that may not be in the system headers */ 390d059297112922cabb0c674840589be8db821fd9aAdam Langley#ifndef HAVE_FD_MASK 391bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman typedef unsigned long int fd_mask; 392bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 393bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 394d059297112922cabb0c674840589be8db821fd9aAdam Langley#if defined(HAVE_DECL_NFDBITS) && HAVE_DECL_NFDBITS == 0 395d059297112922cabb0c674840589be8db821fd9aAdam Langley# define NFDBITS (8 * sizeof(unsigned long)) 396d059297112922cabb0c674840589be8db821fd9aAdam Langley#endif 397d059297112922cabb0c674840589be8db821fd9aAdam Langley 398d059297112922cabb0c674840589be8db821fd9aAdam Langley#if defined(HAVE_DECL_HOWMANY) && HAVE_DECL_HOWMANY == 0 399d059297112922cabb0c674840589be8db821fd9aAdam Langley# define howmany(x,y) (((x)+((y)-1))/(y)) 400d059297112922cabb0c674840589be8db821fd9aAdam Langley#endif 401d059297112922cabb0c674840589be8db821fd9aAdam Langley 402bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* Paths */ 403bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 404bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef _PATH_BSHELL 405bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define _PATH_BSHELL "/bin/sh" 406bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 407bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 408bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifdef USER_PATH 409bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifdef _PATH_STDPATH 410bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# undef _PATH_STDPATH 411bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 412bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define _PATH_STDPATH USER_PATH 413bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 414bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 415bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef _PATH_STDPATH 416bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define _PATH_STDPATH "/usr/bin:/bin:/usr/sbin:/sbin" 417bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 418bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 419bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef SUPERUSER_PATH 420bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define SUPERUSER_PATH _PATH_STDPATH 421bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 422bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 423bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef _PATH_DEVNULL 424bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define _PATH_DEVNULL "/dev/null" 425bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 426bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 427bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* user may have set a different path */ 428bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(_PATH_MAILDIR) && defined(MAIL_DIRECTORY) 429d059297112922cabb0c674840589be8db821fd9aAdam Langley# undef _PATH_MAILDIR 430bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* defined(_PATH_MAILDIR) && defined(MAIL_DIRECTORY) */ 431bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 432bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifdef MAIL_DIRECTORY 433bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define _PATH_MAILDIR MAIL_DIRECTORY 434bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 435bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 436bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef _PATH_NOLOGIN 437bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define _PATH_NOLOGIN "/etc/nologin" 438bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 439bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 440bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* Define this to be the path of the xauth program. */ 441bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifdef XAUTH_PATH 442bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define _PATH_XAUTH XAUTH_PATH 443bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* XAUTH_PATH */ 444bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 445bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* derived from XF4/xc/lib/dps/Xlibnet.h */ 446bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef X_UNIX_PATH 447bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifdef __hpux 448bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define X_UNIX_PATH "/var/spool/sockets/X11/%u" 449bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 450bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define X_UNIX_PATH "/tmp/.X11-unix/X%u" 451bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 452bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* X_UNIX_PATH */ 453bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define _PATH_UNIX_X X_UNIX_PATH 454bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 455bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef _PATH_TTY 456bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define _PATH_TTY "/dev/tty" 457bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 458bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 459bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* Macros */ 460bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 461bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(HAVE_LOGIN_GETCAPBOOL) && defined(HAVE_LOGIN_CAP_H) 462bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define HAVE_LOGIN_CAP 463bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 464bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 465bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef MAX 466bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define MAX(a,b) (((a)>(b))?(a):(b)) 467bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define MIN(a,b) (((a)<(b))?(a):(b)) 468bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 469bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 470bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef roundup 471bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) 472bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 473bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 474bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef timersub 475bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define timersub(a, b, result) \ 476bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman do { \ 477bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \ 478bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \ 479bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman if ((result)->tv_usec < 0) { \ 480bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman --(result)->tv_sec; \ 481bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman (result)->tv_usec += 1000000; \ 482bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman } \ 483bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman } while (0) 484bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 485bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 486bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef TIMEVAL_TO_TIMESPEC 487bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define TIMEVAL_TO_TIMESPEC(tv, ts) { \ 488bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman (ts)->tv_sec = (tv)->tv_sec; \ 489bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman (ts)->tv_nsec = (tv)->tv_usec * 1000; \ 490bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman} 491bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 492bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 493bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef TIMESPEC_TO_TIMEVAL 494bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define TIMESPEC_TO_TIMEVAL(tv, ts) { \ 495bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman (tv)->tv_sec = (ts)->tv_sec; \ 496bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman (tv)->tv_usec = (ts)->tv_nsec / 1000; \ 497bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman} 498bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 499bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 500bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef __P 501bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define __P(x) x 502bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 503bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 504bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if !defined(IN6_IS_ADDR_V4MAPPED) 505bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IN6_IS_ADDR_V4MAPPED(a) \ 506bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman ((((u_int32_t *) (a))[0] == 0) && (((u_int32_t *) (a))[1] == 0) && \ 507bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman (((u_int32_t *) (a))[2] == htonl (0xffff))) 508bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* !defined(IN6_IS_ADDR_V4MAPPED) */ 509bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 510bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if !defined(__GNUC__) || (__GNUC__ < 2) 511bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define __attribute__(x) 512bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* !defined(__GNUC__) || (__GNUC__ < 2) */ 513bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 514bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if !defined(HAVE_ATTRIBUTE__SENTINEL__) && !defined(__sentinel__) 515bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define __sentinel__ 516bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 517bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 518bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if !defined(HAVE_ATTRIBUTE__BOUNDED__) && !defined(__bounded__) 519bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define __bounded__(x, y, z) 520bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 521bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 522bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if !defined(HAVE_ATTRIBUTE__NONNULL__) && !defined(__nonnull__) 523bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define __nonnull__(x) 524bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 525bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 526bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef OSSH_ALIGNBYTES 527bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define OSSH_ALIGNBYTES (sizeof(int) - 1) 528bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 529bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef __CMSG_ALIGN 530bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define __CMSG_ALIGN(p) (((u_int)(p) + OSSH_ALIGNBYTES) &~ OSSH_ALIGNBYTES) 531bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 532bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 533bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* Length of the contents of a control message of length len */ 534bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef CMSG_LEN 535bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define CMSG_LEN(len) (__CMSG_ALIGN(sizeof(struct cmsghdr)) + (len)) 536bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 537bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 538bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* Length of the space taken up by a padded control message of length len */ 539bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef CMSG_SPACE 540bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define CMSG_SPACE(len) (__CMSG_ALIGN(sizeof(struct cmsghdr)) + __CMSG_ALIGN(len)) 541bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 542bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 543bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* given pointer to struct cmsghdr, return pointer to data */ 544bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef CMSG_DATA 545bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define CMSG_DATA(cmsg) ((u_char *)(cmsg) + __CMSG_ALIGN(sizeof(struct cmsghdr))) 546bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* CMSG_DATA */ 547bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 548bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* 549bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * RFC 2292 requires to check msg_controllen, in case that the kernel returns 550bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * an empty list for some reasons. 551bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman */ 552bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef CMSG_FIRSTHDR 553bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define CMSG_FIRSTHDR(mhdr) \ 554bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman ((mhdr)->msg_controllen >= sizeof(struct cmsghdr) ? \ 555bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman (struct cmsghdr *)(mhdr)->msg_control : \ 556bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman (struct cmsghdr *)NULL) 557bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* CMSG_FIRSTHDR */ 558bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 559bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(HAVE_DECL_OFFSETOF) && HAVE_DECL_OFFSETOF == 0 560bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define offsetof(type, member) ((size_t) &((type *)0)->member) 561bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 562bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 563bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* Set up BSD-style BYTE_ORDER definition if it isn't there already */ 564bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* XXX: doesn't try to cope with strange byte orders (PDP_ENDIAN) */ 565bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef BYTE_ORDER 566bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifndef LITTLE_ENDIAN 567bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define LITTLE_ENDIAN 1234 568bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif /* LITTLE_ENDIAN */ 569bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifndef BIG_ENDIAN 570bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define BIG_ENDIAN 4321 571bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif /* BIG_ENDIAN */ 572bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifdef WORDS_BIGENDIAN 573bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define BYTE_ORDER BIG_ENDIAN 574bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else /* WORDS_BIGENDIAN */ 575bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define BYTE_ORDER LITTLE_ENDIAN 576bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif /* WORDS_BIGENDIAN */ 577bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* BYTE_ORDER */ 578bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 579bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* Function replacement / compatibility hacks */ 580bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 581bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if !defined(HAVE_GETADDRINFO) && (defined(HAVE_OGETADDRINFO) || defined(HAVE_NGETADDRINFO)) 582bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define HAVE_GETADDRINFO 583bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 584bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 585bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef HAVE_GETOPT_OPTRESET 586bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# undef getopt 587bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# undef opterr 588bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# undef optind 589bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# undef optopt 590bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# undef optreset 591bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# undef optarg 592bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define getopt(ac, av, o) BSDgetopt(ac, av, o) 593bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define opterr BSDopterr 594bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define optind BSDoptind 595bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define optopt BSDoptopt 596bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define optreset BSDoptreset 597bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define optarg BSDoptarg 598bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 599bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 600bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(BROKEN_GETADDRINFO) && defined(HAVE_GETADDRINFO) 601bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# undef HAVE_GETADDRINFO 602bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 603bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(BROKEN_GETADDRINFO) && defined(HAVE_FREEADDRINFO) 604bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# undef HAVE_FREEADDRINFO 605bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 606bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(BROKEN_GETADDRINFO) && defined(HAVE_GAI_STRERROR) 607bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# undef HAVE_GAI_STRERROR 608bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 609bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 610d059297112922cabb0c674840589be8db821fd9aAdam Langley#if defined(HAVE_GETADDRINFO) 611d059297112922cabb0c674840589be8db821fd9aAdam Langley# if defined(HAVE_DECL_AI_NUMERICSERV) && HAVE_DECL_AI_NUMERICSERV == 0 612d059297112922cabb0c674840589be8db821fd9aAdam Langley# define AI_NUMERICSERV 0 613d059297112922cabb0c674840589be8db821fd9aAdam Langley# endif 614d059297112922cabb0c674840589be8db821fd9aAdam Langley#endif 615d059297112922cabb0c674840589be8db821fd9aAdam Langley 616bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(BROKEN_UPDWTMPX) && defined(HAVE_UPDWTMPX) 617bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# undef HAVE_UPDWTMPX 618bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 619bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 620bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(BROKEN_SHADOW_EXPIRE) && defined(HAS_SHADOW_EXPIRE) 621bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# undef HAS_SHADOW_EXPIRE 622bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 623bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 624bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(HAVE_OPENLOG_R) && defined(SYSLOG_DATA_INIT) && \ 625bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman defined(SYSLOG_R_SAFE_IN_SIGHAND) 626bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define DO_LOG_SAFE_IN_SIGHAND 627bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 628bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 629bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if !defined(HAVE_MEMMOVE) && defined(HAVE_BCOPY) 630bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define memmove(s1, s2, n) bcopy((s2), (s1), (n)) 631bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* !defined(HAVE_MEMMOVE) && defined(HAVE_BCOPY) */ 632bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 633bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef GETPGRP_VOID 634bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# include <unistd.h> 635bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define getpgrp() getpgrp(0) 636bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 637bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 638bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifdef USE_BSM_AUDIT 639bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define SSH_AUDIT_EVENTS 640bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define CUSTOM_SSH_AUDIT_EVENTS 641bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 642bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 643bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifdef USE_LINUX_AUDIT 644bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define SSH_AUDIT_EVENTS 645bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define CUSTOM_SSH_AUDIT_EVENTS 646bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 647bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 648bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if !defined(HAVE___func__) && defined(HAVE___FUNCTION__) 649bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define __func__ __FUNCTION__ 650bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#elif !defined(HAVE___func__) 651bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define __func__ "" 652bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 653bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 654bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(KRB5) && !defined(HEIMDAL) 655bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define krb5_get_err_text(context,code) error_message(code) 656bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 657bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 658bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(SKEYCHALLENGE_4ARG) 659bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define _compat_skeychallenge(a,b,c,d) skeychallenge(a,b,c,d) 660bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#else 661bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define _compat_skeychallenge(a,b,c,d) skeychallenge(a,b,c) 662bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 663bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 664bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* Maximum number of file descriptors available */ 665bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifdef HAVE_SYSCONF 666bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define SSH_SYSFDMAX sysconf(_SC_OPEN_MAX) 667bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#else 668bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define SSH_SYSFDMAX 10000 669bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 670bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 671bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifdef FSID_HAS_VAL 672bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* encode f_fsid into a 64 bit value */ 673bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define FSID_TO_ULONG(f) \ 674bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman ((((u_int64_t)(f).val[0] & 0xffffffffUL) << 32) | \ 675bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman ((f).val[1] & 0xffffffffUL)) 676bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#elif defined(FSID_HAS___VAL) 677bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define FSID_TO_ULONG(f) \ 678bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman ((((u_int64_t)(f).__val[0] & 0xffffffffUL) << 32) | \ 679bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman ((f).__val[1] & 0xffffffffUL)) 680bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#else 681bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define FSID_TO_ULONG(f) ((f)) 682bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 683bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 684bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(__Lynx__) 685bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman /* 686bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * LynxOS defines these in param.h which we do not want to include since 687bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * it will also pull in a bunch of kernel definitions. 688bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman */ 689bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define ALIGNBYTES (sizeof(int) - 1) 690bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define ALIGN(p) (((unsigned)p + ALIGNBYTES) & ~ALIGNBYTES) 691bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman /* Missing prototypes on LynxOS */ 692bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman int snprintf (char *, size_t, const char *, ...); 693bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman int mkstemp (char *); 694bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman char *crypt (const char *, const char *); 695bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman int seteuid (uid_t); 696bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman int setegid (gid_t); 697bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman char *mkdtemp (char *); 698bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman int rresvport_af (int *, sa_family_t); 699bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman int innetgr (const char *, const char *, const char *, const char *); 700bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 701bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 702bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* 703bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * Define this to use pipes instead of socketpairs for communicating with the 704bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * client program. Socketpairs do not seem to work on all systems. 705bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * 706bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * configure.ac sets this for a few OS's which are known to have problems 707bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman * but you may need to set it yourself 708bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman */ 709bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* #define USE_PIPES 1 */ 710bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 711bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/** 712bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman ** login recorder definitions 713bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman **/ 714bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 715bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* FIXME: put default paths back in */ 716bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef UTMP_FILE 717bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifdef _PATH_UTMP 718bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define UTMP_FILE _PATH_UTMP 719bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 720bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifdef CONF_UTMP_FILE 721bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define UTMP_FILE CONF_UTMP_FILE 722bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 723bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 724bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 725bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef WTMP_FILE 726bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifdef _PATH_WTMP 727bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define WTMP_FILE _PATH_WTMP 728bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 729bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifdef CONF_WTMP_FILE 730bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define WTMP_FILE CONF_WTMP_FILE 731bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 732bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 733bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 734bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* pick up the user's location for lastlog if given */ 735bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef LASTLOG_FILE 736bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifdef _PATH_LASTLOG 737bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define LASTLOG_FILE _PATH_LASTLOG 738bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 739bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifdef CONF_LASTLOG_FILE 740bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define LASTLOG_FILE CONF_LASTLOG_FILE 741bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 742bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 743bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 744bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 745bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW) 746bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define USE_SHADOW 747bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 748bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 749bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* The login() library function in libutil is first choice */ 750bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(HAVE_LOGIN) && !defined(DISABLE_LOGIN) 751bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define USE_LOGIN 752bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 753bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#else 754bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* Simply select your favourite login types. */ 755bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* Can't do if-else because some systems use several... <sigh> */ 756bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# if !defined(DISABLE_UTMPX) 757bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define USE_UTMPX 758bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 759bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# if defined(UTMP_FILE) && !defined(DISABLE_UTMP) 760bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define USE_UTMP 761bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 762bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# if defined(WTMPX_FILE) && !defined(DISABLE_WTMPX) 763bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define USE_WTMPX 764bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 765bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# if defined(WTMP_FILE) && !defined(DISABLE_WTMP) 766bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define USE_WTMP 767bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 768bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 769bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 770bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 771bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef UT_LINESIZE 772bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define UT_LINESIZE 8 773bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 774bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 775bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* I hope that the presence of LASTLOG_FILE is enough to detect this */ 776bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(LASTLOG_FILE) && !defined(DISABLE_LASTLOG) 777bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define USE_LASTLOG 778bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 779bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 780bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifdef HAVE_OSF_SIA 781bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# ifdef USE_SHADOW 782bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# undef USE_SHADOW 783bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 784bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define CUSTOM_SYS_AUTH_PASSWD 1 785bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 786bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 787bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(HAVE_LIBIAF) && defined(HAVE_SET_ID) && !defined(HAVE_SECUREWARE) 788bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define CUSTOM_SYS_AUTH_PASSWD 1 789bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 790bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(HAVE_LIBIAF) && defined(HAVE_SET_ID) && !defined(BROKEN_LIBIAF) 791bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define USE_LIBIAF 792bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 793bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 794bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/* HP-UX 11.11 */ 795bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifdef BTMP_FILE 796bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define _PATH_BTMP BTMP_FILE 797bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 798bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 799bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(USE_BTMP) && defined(_PATH_BTMP) 800bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define CUSTOM_FAILED_LOGIN 801bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 802bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 803bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman/** end of login recorder definitions */ 804bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 805bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifdef BROKEN_GETGROUPS 806bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define getgroups(a,b) ((a)==0 && (b)==NULL ? NGROUPS_MAX : getgroups((a),(b))) 807bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 808bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 809bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#if defined(HAVE_MMAP) && defined(BROKEN_MMAP) 810bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# undef HAVE_MMAP 811bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 812bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 813bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef IOV_MAX 814bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# if defined(_XOPEN_IOV_MAX) 815bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IOV_MAX _XOPEN_IOV_MAX 816bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# elif defined(DEF_IOV_MAX) 817bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IOV_MAX DEF_IOV_MAX 818bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 819bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define IOV_MAX 16 820bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 821bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 822bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 823bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef EWOULDBLOCK 824bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define EWOULDBLOCK EAGAIN 825bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 826bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 827bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef INET6_ADDRSTRLEN /* for non IPv6 machines */ 828bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#define INET6_ADDRSTRLEN 46 829bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 830bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 831bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#ifndef SSH_IOBUFSZ 832bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# define SSH_IOBUFSZ 8192 833bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 834bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 835d059297112922cabb0c674840589be8db821fd9aAdam Langley/* 8369768ca48f57aaf035f508a473421d210b5145e99Greg Hartman * We want functions in openbsd-compat, if enabled, to override system ones. 8379768ca48f57aaf035f508a473421d210b5145e99Greg Hartman * We no-op out the weak symbol definition rather than remove it to reduce 8389768ca48f57aaf035f508a473421d210b5145e99Greg Hartman * future sync problems. 8399768ca48f57aaf035f508a473421d210b5145e99Greg Hartman */ 8409768ca48f57aaf035f508a473421d210b5145e99Greg Hartman#define DEF_WEAK(x) 8419768ca48f57aaf035f508a473421d210b5145e99Greg Hartman 8429768ca48f57aaf035f508a473421d210b5145e99Greg Hartman/* 843d059297112922cabb0c674840589be8db821fd9aAdam Langley * Platforms that have arc4random_uniform() and not arc4random_stir() 844d059297112922cabb0c674840589be8db821fd9aAdam Langley * shouldn't need the latter. 845d059297112922cabb0c674840589be8db821fd9aAdam Langley */ 846d059297112922cabb0c674840589be8db821fd9aAdam Langley#if defined(HAVE_ARC4RANDOM) && defined(HAVE_ARC4RANDOM_UNIFORM) && \ 847d059297112922cabb0c674840589be8db821fd9aAdam Langley !defined(HAVE_ARC4RANDOM_STIR) 848d059297112922cabb0c674840589be8db821fd9aAdam Langley# define arc4random_stir() 849d059297112922cabb0c674840589be8db821fd9aAdam Langley#endif 850d059297112922cabb0c674840589be8db821fd9aAdam Langley 851d059297112922cabb0c674840589be8db821fd9aAdam Langley#ifndef HAVE_VA_COPY 852d059297112922cabb0c674840589be8db821fd9aAdam Langley# ifdef HAVE___VA_COPY 853d059297112922cabb0c674840589be8db821fd9aAdam Langley# define va_copy(dest, src) __va_copy(dest, src) 854bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# else 855d059297112922cabb0c674840589be8db821fd9aAdam Langley# define va_copy(dest, src) (dest) = (src) 856bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman# endif 857bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif 858bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman 859d059297112922cabb0c674840589be8db821fd9aAdam Langley#ifndef __predict_true 860d059297112922cabb0c674840589be8db821fd9aAdam Langley# if defined(__GNUC__) && \ 861d059297112922cabb0c674840589be8db821fd9aAdam Langley ((__GNUC__ > (2)) || (__GNUC__ == (2) && __GNUC_MINOR__ >= (96))) 862d059297112922cabb0c674840589be8db821fd9aAdam Langley# define __predict_true(exp) __builtin_expect(((exp) != 0), 1) 863d059297112922cabb0c674840589be8db821fd9aAdam Langley# define __predict_false(exp) __builtin_expect(((exp) != 0), 0) 864d059297112922cabb0c674840589be8db821fd9aAdam Langley# else 865d059297112922cabb0c674840589be8db821fd9aAdam Langley# define __predict_true(exp) ((exp) != 0) 866d059297112922cabb0c674840589be8db821fd9aAdam Langley# define __predict_false(exp) ((exp) != 0) 867d059297112922cabb0c674840589be8db821fd9aAdam Langley# endif /* gcc version */ 868d059297112922cabb0c674840589be8db821fd9aAdam Langley#endif /* __predict_true */ 869d059297112922cabb0c674840589be8db821fd9aAdam Langley 8709768ca48f57aaf035f508a473421d210b5145e99Greg Hartman#if defined(HAVE_GLOB_H) && defined(GLOB_HAS_ALTDIRFUNC) && \ 8719768ca48f57aaf035f508a473421d210b5145e99Greg Hartman defined(GLOB_HAS_GL_MATCHC) && defined(GLOB_HAS_GL_STATV) && \ 8729768ca48f57aaf035f508a473421d210b5145e99Greg Hartman defined(HAVE_DECL_GLOB_NOMATCH) && HAVE_DECL_GLOB_NOMATCH != 0 && \ 8739768ca48f57aaf035f508a473421d210b5145e99Greg Hartman !defined(BROKEN_GLOB) 8749768ca48f57aaf035f508a473421d210b5145e99Greg Hartman# define USE_SYSTEM_GLOB 8759768ca48f57aaf035f508a473421d210b5145e99Greg Hartman#endif 8769768ca48f57aaf035f508a473421d210b5145e99Greg Hartman 877bd77cf78387b72b7b3ea870459077672bf75c3b5Greg Hartman#endif /* _DEFINES_H */ 878