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