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