1 /* -*- buffer-read-only: t -*-
5 * Copyright (C) 2002, 2003, 2005 by Larry Wall and others
7 * You may distribute under the terms of either the GNU General Public
8 * License or the Artistic License, as specified in the README file.
10 * !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
11 * This file is built by reentr.pl from data in reentr.pl.
17 #ifdef USE_REENTRANT_API
20 # define PL_REENTRANT_RETINT PL_reentrant_retint
23 /* Deprecations: some platforms have the said reentrant interfaces
24 * but they are declared obsolete and are not to be used. Often this
25 * means that the platform has threadsafed the interfaces (hopefully).
26 * All this is OS version dependent, so we are of course fooling ourselves.
27 * If you know of more deprecations on some platforms, please add your own. */
32 # undef HAS_ENDGRENT_R
33 # undef HAS_ENDPWENT_R
34 # undef HAS_GETGRENT_R
35 # undef HAS_GETPWENT_R
36 # undef HAS_SETLOCALE_R
38 # undef HAS_STRERROR_R
39 # define NETDB_R_OBSOLETE
42 #if defined(__osf__) && defined(__alpha) /* Tru64 aka Digital UNIX */
44 # undef HAS_STRERROR_R
45 # define NETDB_R_OBSOLETE
48 #ifdef NETDB_R_OBSOLETE
49 # undef HAS_ENDHOSTENT_R
50 # undef HAS_ENDNETENT_R
51 # undef HAS_ENDPROTOENT_R
52 # undef HAS_ENDSERVENT_R
53 # undef HAS_GETHOSTBYADDR_R
54 # undef HAS_GETHOSTBYNAME_R
55 # undef HAS_GETHOSTENT_R
56 # undef HAS_GETNETBYADDR_R
57 # undef HAS_GETNETBYNAME_R
58 # undef HAS_GETNETENT_R
59 # undef HAS_GETPROTOBYNAME_R
60 # undef HAS_GETPROTOBYNUMBER_R
61 # undef HAS_GETPROTOENT_R
62 # undef HAS_GETSERVBYNAME_R
63 # undef HAS_GETSERVBYPORT_R
64 # undef HAS_GETSERVENT_R
65 # undef HAS_SETHOSTENT_R
66 # undef HAS_SETNETENT_R
67 # undef HAS_SETPROTOENT_R
68 # undef HAS_SETSERVENT_R
81 # include <stdlib.h> /* drand48_data */
94 #define REENTRANT_PROTO_B_B 1
95 #define REENTRANT_PROTO_B_BI 2
96 #define REENTRANT_PROTO_B_BW 3
97 #define REENTRANT_PROTO_B_CCD 4
98 #define REENTRANT_PROTO_B_CCS 5
99 #define REENTRANT_PROTO_B_IBI 6
100 #define REENTRANT_PROTO_B_IBW 7
101 #define REENTRANT_PROTO_B_SB 8
102 #define REENTRANT_PROTO_B_SBI 9
103 #define REENTRANT_PROTO_I_BI 10
104 #define REENTRANT_PROTO_I_BW 11
105 #define REENTRANT_PROTO_I_CCSBWR 12
106 #define REENTRANT_PROTO_I_CCSD 13
107 #define REENTRANT_PROTO_I_CII 14
108 #define REENTRANT_PROTO_I_CIISD 15
109 #define REENTRANT_PROTO_I_CSBI 16
110 #define REENTRANT_PROTO_I_CSBIR 17
111 #define REENTRANT_PROTO_I_CSBWR 18
112 #define REENTRANT_PROTO_I_CSBWRE 19
113 #define REENTRANT_PROTO_I_CSD 20
114 #define REENTRANT_PROTO_I_CWISBWRE 21
115 #define REENTRANT_PROTO_I_CWISD 22
116 #define REENTRANT_PROTO_I_D 23
117 #define REENTRANT_PROTO_I_H 24
118 #define REENTRANT_PROTO_I_IBI 25
119 #define REENTRANT_PROTO_I_IBW 26
120 #define REENTRANT_PROTO_I_ICBI 27
121 #define REENTRANT_PROTO_I_ICSBWR 28
122 #define REENTRANT_PROTO_I_ICSD 29
123 #define REENTRANT_PROTO_I_ID 30
124 #define REENTRANT_PROTO_I_IISD 31
125 #define REENTRANT_PROTO_I_ISBWR 32
126 #define REENTRANT_PROTO_I_ISD 33
127 #define REENTRANT_PROTO_I_LISBI 34
128 #define REENTRANT_PROTO_I_LISD 35
129 #define REENTRANT_PROTO_I_LS 36
130 #define REENTRANT_PROTO_I_SB 37
131 #define REENTRANT_PROTO_I_SBI 38
132 #define REENTRANT_PROTO_I_SBIE 39
133 #define REENTRANT_PROTO_I_SBIH 40
134 #define REENTRANT_PROTO_I_SBIR 41
135 #define REENTRANT_PROTO_I_SBWR 42
136 #define REENTRANT_PROTO_I_SBWRE 43
137 #define REENTRANT_PROTO_I_SD 44
138 #define REENTRANT_PROTO_I_ST 45
139 #define REENTRANT_PROTO_I_St 46
140 #define REENTRANT_PROTO_I_TISD 47
141 #define REENTRANT_PROTO_I_TS 48
142 #define REENTRANT_PROTO_I_TSBI 49
143 #define REENTRANT_PROTO_I_TSBIR 50
144 #define REENTRANT_PROTO_I_TSBWR 51
145 #define REENTRANT_PROTO_I_TSR 52
146 #define REENTRANT_PROTO_I_TsISBWRE 53
147 #define REENTRANT_PROTO_I_UISBWRE 54
148 #define REENTRANT_PROTO_I_iS 55
149 #define REENTRANT_PROTO_I_lS 56
150 #define REENTRANT_PROTO_I_uISBWRE 57
151 #define REENTRANT_PROTO_S_CBI 58
152 #define REENTRANT_PROTO_S_CCSBI 59
153 #define REENTRANT_PROTO_S_CIISBIE 60
154 #define REENTRANT_PROTO_S_CSBI 61
155 #define REENTRANT_PROTO_S_CSBIE 62
156 #define REENTRANT_PROTO_S_CWISBIE 63
157 #define REENTRANT_PROTO_S_CWISBWIE 64
158 #define REENTRANT_PROTO_S_ICSBI 65
159 #define REENTRANT_PROTO_S_ISBI 66
160 #define REENTRANT_PROTO_S_LISBI 67
161 #define REENTRANT_PROTO_S_SBI 68
162 #define REENTRANT_PROTO_S_SBIE 69
163 #define REENTRANT_PROTO_S_SBW 70
164 #define REENTRANT_PROTO_S_TISBI 71
165 #define REENTRANT_PROTO_S_TS 72
166 #define REENTRANT_PROTO_S_TSBI 73
167 #define REENTRANT_PROTO_S_TSBIE 74
168 #define REENTRANT_PROTO_S_TWISBIE 75
169 #define REENTRANT_PROTO_V_D 76
170 #define REENTRANT_PROTO_V_H 77
171 #define REENTRANT_PROTO_V_ID 78
173 /* Defines for indicating which special features are supported. */
175 /* The getgrent getgrgid getgrnam using buffer? */
177 #if defined(HAS_GETGRENT_R) && (GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBWR || GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBIR || GETGRENT_R_PROTO == REENTRANT_PROTO_S_SBW || GETGRENT_R_PROTO == REENTRANT_PROTO_S_SBI || GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBI || GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBIH)
178 # define GETGRENT_R_HAS_BUFFER
180 # undef GETGRENT_R_HAS_BUFFER
182 #if defined(HAS_GETGRGID_R) && (GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBWR || GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBIR || GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBI || GETGRGID_R_PROTO == REENTRANT_PROTO_S_TSBI)
183 # define GETGRGID_R_HAS_BUFFER
185 # undef GETGRGID_R_HAS_BUFFER
187 #if defined(HAS_GETGRNAM_R) && (GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR || GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBIR || GETGRNAM_R_PROTO == REENTRANT_PROTO_S_CBI || GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBI || GETGRNAM_R_PROTO == REENTRANT_PROTO_S_CSBI)
188 # define GETGRNAM_R_HAS_BUFFER
190 # undef GETGRNAM_R_HAS_BUFFER
193 /* Any of the getgrent getgrgid getgrnam using buffer? */
195 #if (defined(GETGRENT_R_HAS_BUFFER) || defined(GETGRGID_R_HAS_BUFFER) || defined(GETGRNAM_R_HAS_BUFFER))
196 # define USE_GRENT_BUFFER
198 # undef USE_GRENT_BUFFER
201 /* The getgrent getgrgid getgrnam using ptr? */
203 #if defined(HAS_GETGRENT_R) && (GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBWR || GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBIR)
204 # define GETGRENT_R_HAS_PTR
206 # undef GETGRENT_R_HAS_PTR
208 #if defined(HAS_GETGRGID_R) && (GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBWR || GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBIR)
209 # define GETGRGID_R_HAS_PTR
211 # undef GETGRGID_R_HAS_PTR
213 #if defined(HAS_GETGRNAM_R) && (GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR || GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBIR)
214 # define GETGRNAM_R_HAS_PTR
216 # undef GETGRNAM_R_HAS_PTR
219 /* Any of the getgrent getgrgid getgrnam using ptr? */
221 #if (defined(GETGRENT_R_HAS_PTR) || defined(GETGRGID_R_HAS_PTR) || defined(GETGRNAM_R_HAS_PTR))
222 # define USE_GRENT_PTR
224 # undef USE_GRENT_PTR
227 /* The getpwent getpwnam getpwuid using ptr? */
229 #if defined(HAS_GETPWENT_R) && (GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBWR || GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBIR)
230 # define GETPWENT_R_HAS_PTR
232 # undef GETPWENT_R_HAS_PTR
234 #if defined(HAS_GETPWNAM_R) && (GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR || GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBIR)
235 # define GETPWNAM_R_HAS_PTR
237 # undef GETPWNAM_R_HAS_PTR
239 #if defined(HAS_GETPWUID_R) && (GETPWUID_R_PROTO == REENTRANT_PROTO_I_TSBWR || GETPWUID_R_PROTO == REENTRANT_PROTO_I_TSBIR)
240 # define GETPWUID_R_HAS_PTR
242 # undef GETPWUID_R_HAS_PTR
245 /* Any of the getpwent getpwnam getpwuid using ptr? */
247 #if (defined(GETPWENT_R_HAS_PTR) || defined(GETPWNAM_R_HAS_PTR) || defined(GETPWUID_R_HAS_PTR))
248 # define USE_PWENT_PTR
250 # undef USE_PWENT_PTR
253 /* The getspent getspnam using ptr? */
255 #if defined(HAS_GETSPNAM_R) && (GETSPNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR)
256 # define GETSPNAM_R_HAS_PTR
258 # undef GETSPNAM_R_HAS_PTR
261 /* Any of the getspent getspnam using ptr? */
263 #if (defined(GETSPENT_R_HAS_PTR) || defined(GETSPNAM_R_HAS_PTR))
264 # define USE_SPENT_PTR
266 # undef USE_SPENT_PTR
269 /* The getgrent getgrgid getgrnam setgrent endgrent using fptr? */
271 #if defined(HAS_GETGRENT_R) && (GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBIH)
272 # define GETGRENT_R_HAS_FPTR
274 # undef GETGRENT_R_HAS_FPTR
276 #if defined(HAS_SETGRENT_R) && (SETGRENT_R_PROTO == REENTRANT_PROTO_I_H || SETGRENT_R_PROTO == REENTRANT_PROTO_V_H)
277 # define SETGRENT_R_HAS_FPTR
279 # undef SETGRENT_R_HAS_FPTR
281 #if defined(HAS_ENDGRENT_R) && (ENDGRENT_R_PROTO == REENTRANT_PROTO_I_H || ENDGRENT_R_PROTO == REENTRANT_PROTO_V_H)
282 # define ENDGRENT_R_HAS_FPTR
284 # undef ENDGRENT_R_HAS_FPTR
287 /* Any of the getgrent getgrgid getgrnam setgrent endgrent using fptr? */
289 #if (defined(GETGRENT_R_HAS_FPTR) || defined(GETGRGID_R_HAS_FPTR) || defined(GETGRNAM_R_HAS_FPTR) || defined(SETGRENT_R_HAS_FPTR) || defined(ENDGRENT_R_HAS_FPTR))
290 # define USE_GRENT_FPTR
292 # undef USE_GRENT_FPTR
295 /* The getpwent getpwnam getpwuid setpwent endpwent using fptr? */
297 #if defined(HAS_GETPWENT_R) && (GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBIH)
298 # define GETPWENT_R_HAS_FPTR
300 # undef GETPWENT_R_HAS_FPTR
302 #if defined(HAS_SETPWENT_R) && (SETPWENT_R_PROTO == REENTRANT_PROTO_I_H || SETPWENT_R_PROTO == REENTRANT_PROTO_V_H)
303 # define SETPWENT_R_HAS_FPTR
305 # undef SETPWENT_R_HAS_FPTR
307 #if defined(HAS_ENDPWENT_R) && (ENDPWENT_R_PROTO == REENTRANT_PROTO_I_H || ENDPWENT_R_PROTO == REENTRANT_PROTO_V_H)
308 # define ENDPWENT_R_HAS_FPTR
310 # undef ENDPWENT_R_HAS_FPTR
313 /* Any of the getpwent getpwnam getpwuid setpwent endpwent using fptr? */
315 #if (defined(GETPWENT_R_HAS_FPTR) || defined(GETPWNAM_R_HAS_FPTR) || defined(GETPWUID_R_HAS_FPTR) || defined(SETPWENT_R_HAS_FPTR) || defined(ENDPWENT_R_HAS_FPTR))
316 # define USE_PWENT_FPTR
318 # undef USE_PWENT_FPTR
321 /* The getpwent getpwgid getpwnam using buffer? */
323 #if defined(HAS_GETPWENT_R) && (GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBWR || GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBIR || GETPWENT_R_PROTO == REENTRANT_PROTO_S_SBW || GETPWENT_R_PROTO == REENTRANT_PROTO_S_SBI || GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBI || GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBIH)
324 # define GETPWENT_R_HAS_BUFFER
326 # undef GETPWENT_R_HAS_BUFFER
328 #if defined(HAS_GETPWNAM_R) && (GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR || GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBIR || GETPWNAM_R_PROTO == REENTRANT_PROTO_S_CSBI || GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBI)
329 # define GETPWNAM_R_HAS_BUFFER
331 # undef GETPWNAM_R_HAS_BUFFER
334 /* Any of the getpwent getpwgid getpwnam using buffer? */
336 #if (defined(GETPWENT_R_HAS_BUFFER) || defined(GETPWGID_R_HAS_BUFFER) || defined(GETPWNAM_R_HAS_BUFFER))
337 # define USE_PWENT_BUFFER
339 # undef USE_PWENT_BUFFER
342 /* The gethostent gethostbyaddr gethostbyname using ptr? */
344 #if defined(HAS_GETHOSTENT_R) && (GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBWRE)
345 # define GETHOSTENT_R_HAS_PTR
347 # undef GETHOSTENT_R_HAS_PTR
349 #if defined(HAS_GETHOSTBYADDR_R) && (GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_CWISBWRE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_TsISBWRE)
350 # define GETHOSTBYADDR_R_HAS_PTR
352 # undef GETHOSTBYADDR_R_HAS_PTR
354 #if defined(HAS_GETHOSTBYNAME_R) && (GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE)
355 # define GETHOSTBYNAME_R_HAS_PTR
357 # undef GETHOSTBYNAME_R_HAS_PTR
360 /* Any of the gethostent gethostbyaddr gethostbyname using ptr? */
362 #if (defined(GETHOSTENT_R_HAS_PTR) || defined(GETHOSTBYADDR_R_HAS_PTR) || defined(GETHOSTBYNAME_R_HAS_PTR))
363 # define USE_HOSTENT_PTR
365 # undef USE_HOSTENT_PTR
368 /* The getnetent getnetbyaddr getnetbyname using ptr? */
370 #if defined(HAS_GETNETENT_R) && (GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBWRE)
371 # define GETNETENT_R_HAS_PTR
373 # undef GETNETENT_R_HAS_PTR
375 #if defined(HAS_GETNETBYADDR_R) && (GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_UISBWRE || GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_uISBWRE)
376 # define GETNETBYADDR_R_HAS_PTR
378 # undef GETNETBYADDR_R_HAS_PTR
380 #if defined(HAS_GETNETBYNAME_R) && (GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE)
381 # define GETNETBYNAME_R_HAS_PTR
383 # undef GETNETBYNAME_R_HAS_PTR
386 /* Any of the getnetent getnetbyaddr getnetbyname using ptr? */
388 #if (defined(GETNETENT_R_HAS_PTR) || defined(GETNETBYADDR_R_HAS_PTR) || defined(GETNETBYNAME_R_HAS_PTR))
389 # define USE_NETENT_PTR
391 # undef USE_NETENT_PTR
394 /* The getprotoent getprotobyname getprotobynumber using ptr? */
396 #if defined(HAS_GETPROTOENT_R) && (GETPROTOENT_R_PROTO == REENTRANT_PROTO_I_SBWR)
397 # define GETPROTOENT_R_HAS_PTR
399 # undef GETPROTOENT_R_HAS_PTR
401 #if defined(HAS_GETPROTOBYNAME_R) && (GETPROTOBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWR)
402 # define GETPROTOBYNAME_R_HAS_PTR
404 # undef GETPROTOBYNAME_R_HAS_PTR
406 #if defined(HAS_GETPROTOBYNUMBER_R) && (GETPROTOBYNUMBER_R_PROTO == REENTRANT_PROTO_I_ISBWR)
407 # define GETPROTOBYNUMBER_R_HAS_PTR
409 # undef GETPROTOBYNUMBER_R_HAS_PTR
412 /* Any of the getprotoent getprotobyname getprotobynumber using ptr? */
414 #if (defined(GETPROTOENT_R_HAS_PTR) || defined(GETPROTOBYNAME_R_HAS_PTR) || defined(GETPROTOBYNUMBER_R_HAS_PTR))
415 # define USE_PROTOENT_PTR
417 # undef USE_PROTOENT_PTR
420 /* The getservent getservbyname getservbyport using ptr? */
422 #if defined(HAS_GETSERVENT_R) && (GETSERVENT_R_PROTO == REENTRANT_PROTO_I_SBWR)
423 # define GETSERVENT_R_HAS_PTR
425 # undef GETSERVENT_R_HAS_PTR
427 #if defined(HAS_GETSERVBYNAME_R) && (GETSERVBYNAME_R_PROTO == REENTRANT_PROTO_I_CCSBWR)
428 # define GETSERVBYNAME_R_HAS_PTR
430 # undef GETSERVBYNAME_R_HAS_PTR
432 #if defined(HAS_GETSERVBYPORT_R) && (GETSERVBYPORT_R_PROTO == REENTRANT_PROTO_I_ICSBWR)
433 # define GETSERVBYPORT_R_HAS_PTR
435 # undef GETSERVBYPORT_R_HAS_PTR
438 /* Any of the getservent getservbyname getservbyport using ptr? */
440 #if (defined(GETSERVENT_R_HAS_PTR) || defined(GETSERVBYNAME_R_HAS_PTR) || defined(GETSERVBYPORT_R_HAS_PTR))
441 # define USE_SERVENT_PTR
443 # undef USE_SERVENT_PTR
446 /* The gethostent gethostbyaddr gethostbyname using buffer? */
448 #if defined(HAS_GETHOSTENT_R) && (GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBWRE || GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBIE || GETHOSTENT_R_PROTO == REENTRANT_PROTO_S_SBIE || GETHOSTENT_R_PROTO == REENTRANT_PROTO_S_SBI || GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBI)
449 # define GETHOSTENT_R_HAS_BUFFER
451 # undef GETHOSTENT_R_HAS_BUFFER
453 #if defined(HAS_GETHOSTBYADDR_R) && (GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_CWISBWRE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CWISBWIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CWISBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_TWISBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CIISBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CSBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_TSBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_TsISBWRE)
454 # define GETHOSTBYADDR_R_HAS_BUFFER
456 # undef GETHOSTBYADDR_R_HAS_BUFFER
458 #if defined(HAS_GETHOSTBYNAME_R) && (GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE || GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_S_CSBIE)
459 # define GETHOSTBYNAME_R_HAS_BUFFER
461 # undef GETHOSTBYNAME_R_HAS_BUFFER
464 /* Any of the gethostent gethostbyaddr gethostbyname using buffer? */
466 #if (defined(GETHOSTENT_R_HAS_BUFFER) || defined(GETHOSTBYADDR_R_HAS_BUFFER) || defined(GETHOSTBYNAME_R_HAS_BUFFER))
467 # define USE_HOSTENT_BUFFER
469 # undef USE_HOSTENT_BUFFER
472 /* The getnetent getnetbyaddr getnetbyname using buffer? */
474 #if defined(HAS_GETNETENT_R) && (GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBWRE || GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBIE || GETNETENT_R_PROTO == REENTRANT_PROTO_S_SBIE || GETNETENT_R_PROTO == REENTRANT_PROTO_S_SBI || GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBI)
475 # define GETNETENT_R_HAS_BUFFER
477 # undef GETNETENT_R_HAS_BUFFER
479 #if defined(HAS_GETNETBYADDR_R) && (GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_UISBWRE || GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_LISBI || GETNETBYADDR_R_PROTO == REENTRANT_PROTO_S_TISBI || GETNETBYADDR_R_PROTO == REENTRANT_PROTO_S_LISBI || GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_uISBWRE)
480 # define GETNETBYADDR_R_HAS_BUFFER
482 # undef GETNETBYADDR_R_HAS_BUFFER
484 #if defined(HAS_GETNETBYNAME_R) && (GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE || GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBI || GETNETBYNAME_R_PROTO == REENTRANT_PROTO_S_CSBI)
485 # define GETNETBYNAME_R_HAS_BUFFER
487 # undef GETNETBYNAME_R_HAS_BUFFER
490 /* Any of the getnetent getnetbyaddr getnetbyname using buffer? */
492 #if (defined(GETNETENT_R_HAS_BUFFER) || defined(GETNETBYADDR_R_HAS_BUFFER) || defined(GETNETBYNAME_R_HAS_BUFFER))
493 # define USE_NETENT_BUFFER
495 # undef USE_NETENT_BUFFER
498 /* The getprotoent getprotobyname getprotobynumber using buffer? */
500 #if defined(HAS_GETPROTOENT_R) && (GETPROTOENT_R_PROTO == REENTRANT_PROTO_I_SBWR || GETPROTOENT_R_PROTO == REENTRANT_PROTO_I_SBI || GETPROTOENT_R_PROTO == REENTRANT_PROTO_S_SBI)
501 # define GETPROTOENT_R_HAS_BUFFER
503 # undef GETPROTOENT_R_HAS_BUFFER
505 #if defined(HAS_GETPROTOBYNAME_R) && (GETPROTOBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWR || GETPROTOBYNAME_R_PROTO == REENTRANT_PROTO_S_CSBI)
506 # define GETPROTOBYNAME_R_HAS_BUFFER
508 # undef GETPROTOBYNAME_R_HAS_BUFFER
510 #if defined(HAS_GETPROTOBYNUMBER_R) && (GETPROTOBYNUMBER_R_PROTO == REENTRANT_PROTO_I_ISBWR || GETPROTOBYNUMBER_R_PROTO == REENTRANT_PROTO_S_ISBI)
511 # define GETPROTOBYNUMBER_R_HAS_BUFFER
513 # undef GETPROTOBYNUMBER_R_HAS_BUFFER
516 /* Any of the getprotoent getprotobyname getprotobynumber using buffer? */
518 #if (defined(GETPROTOENT_R_HAS_BUFFER) || defined(GETPROTOBYNAME_R_HAS_BUFFER) || defined(GETPROTOBYNUMBER_R_HAS_BUFFER))
519 # define USE_PROTOENT_BUFFER
521 # undef USE_PROTOENT_BUFFER
524 /* The getservent getservbyname getservbyport using buffer? */
526 #if defined(HAS_GETSERVENT_R) && (GETSERVENT_R_PROTO == REENTRANT_PROTO_I_SBWR || GETSERVENT_R_PROTO == REENTRANT_PROTO_I_SBI || GETSERVENT_R_PROTO == REENTRANT_PROTO_S_SBI)
527 # define GETSERVENT_R_HAS_BUFFER
529 # undef GETSERVENT_R_HAS_BUFFER
531 #if defined(HAS_GETSERVBYNAME_R) && (GETSERVBYNAME_R_PROTO == REENTRANT_PROTO_I_CCSBWR || GETSERVBYNAME_R_PROTO == REENTRANT_PROTO_S_CCSBI)
532 # define GETSERVBYNAME_R_HAS_BUFFER
534 # undef GETSERVBYNAME_R_HAS_BUFFER
536 #if defined(HAS_GETSERVBYPORT_R) && (GETSERVBYPORT_R_PROTO == REENTRANT_PROTO_I_ICSBWR || GETSERVBYPORT_R_PROTO == REENTRANT_PROTO_S_ICSBI)
537 # define GETSERVBYPORT_R_HAS_BUFFER
539 # undef GETSERVBYPORT_R_HAS_BUFFER
542 /* Any of the getservent getservbyname getservbyport using buffer? */
544 #if (defined(GETSERVENT_R_HAS_BUFFER) || defined(GETSERVBYNAME_R_HAS_BUFFER) || defined(GETSERVBYPORT_R_HAS_BUFFER))
545 # define USE_SERVENT_BUFFER
547 # undef USE_SERVENT_BUFFER
550 /* The gethostent gethostbyaddr gethostbyname using errno? */
552 #if defined(HAS_GETHOSTENT_R) && (GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBWRE || GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBIE || GETHOSTENT_R_PROTO == REENTRANT_PROTO_S_SBIE)
553 # define GETHOSTENT_R_HAS_ERRNO
555 # undef GETHOSTENT_R_HAS_ERRNO
557 #if defined(HAS_GETHOSTBYADDR_R) && (GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_CWISBWRE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CWISBWIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CWISBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_TWISBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CIISBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CSBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_TSBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_TsISBWRE)
558 # define GETHOSTBYADDR_R_HAS_ERRNO
560 # undef GETHOSTBYADDR_R_HAS_ERRNO
562 #if defined(HAS_GETHOSTBYNAME_R) && (GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE || GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_S_CSBIE)
563 # define GETHOSTBYNAME_R_HAS_ERRNO
565 # undef GETHOSTBYNAME_R_HAS_ERRNO
568 /* Any of the gethostent gethostbyaddr gethostbyname using errno? */
570 #if (defined(GETHOSTENT_R_HAS_ERRNO) || defined(GETHOSTBYADDR_R_HAS_ERRNO) || defined(GETHOSTBYNAME_R_HAS_ERRNO))
571 # define USE_HOSTENT_ERRNO
573 # undef USE_HOSTENT_ERRNO
576 /* The getnetent getnetbyaddr getnetbyname using errno? */
578 #if defined(HAS_GETNETENT_R) && (GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBWRE || GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBIE || GETNETENT_R_PROTO == REENTRANT_PROTO_S_SBIE)
579 # define GETNETENT_R_HAS_ERRNO
581 # undef GETNETENT_R_HAS_ERRNO
583 #if defined(HAS_GETNETBYADDR_R) && (GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_UISBWRE || GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_uISBWRE)
584 # define GETNETBYADDR_R_HAS_ERRNO
586 # undef GETNETBYADDR_R_HAS_ERRNO
588 #if defined(HAS_GETNETBYNAME_R) && (GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE)
589 # define GETNETBYNAME_R_HAS_ERRNO
591 # undef GETNETBYNAME_R_HAS_ERRNO
594 /* Any of the getnetent getnetbyaddr getnetbyname using errno? */
596 #if (defined(GETNETENT_R_HAS_ERRNO) || defined(GETNETBYADDR_R_HAS_ERRNO) || defined(GETNETBYNAME_R_HAS_ERRNO))
597 # define USE_NETENT_ERRNO
599 # undef USE_NETENT_ERRNO
605 char* _asctime_buffer;
606 size_t _asctime_size;
607 #endif /* HAS_ASCTIME_R */
609 #if CRYPT_R_PROTO == REENTRANT_PROTO_B_CCD
612 struct crypt_data _crypt_struct;
614 #endif /* HAS_CRYPT_R */
618 #endif /* HAS_CTIME_R */
620 struct drand48_data _drand48_struct;
621 double _drand48_double;
622 #endif /* HAS_DRAND48_R */
623 #ifdef HAS_GETGRNAM_R
624 struct group _grent_struct;
627 # ifdef USE_GRENT_PTR
628 struct group* _grent_ptr;
630 # ifdef USE_GRENT_FPTR
633 #endif /* HAS_GETGRNAM_R */
634 #ifdef HAS_GETHOSTBYNAME_R
635 struct hostent _hostent_struct;
636 # if GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSD
637 struct hostent_data _hostent_data;
639 char* _hostent_buffer;
640 size_t _hostent_size;
642 # ifdef USE_HOSTENT_PTR
643 struct hostent* _hostent_ptr;
645 # ifdef USE_HOSTENT_ERRNO
648 #endif /* HAS_GETHOSTBYNAME_R */
649 #ifdef HAS_GETLOGIN_R
650 char* _getlogin_buffer;
651 size_t _getlogin_size;
652 #endif /* HAS_GETLOGIN_R */
653 #ifdef HAS_GETNETBYNAME_R
654 struct netent _netent_struct;
655 # if GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSD
656 struct netent_data _netent_data;
658 char* _netent_buffer;
661 # ifdef USE_NETENT_PTR
662 struct netent* _netent_ptr;
664 # ifdef USE_NETENT_ERRNO
667 #endif /* HAS_GETNETBYNAME_R */
668 #ifdef HAS_GETPROTOBYNAME_R
669 struct protoent _protoent_struct;
670 # if GETPROTOBYNAME_R_PROTO == REENTRANT_PROTO_I_CSD
671 struct protoent_data _protoent_data;
673 char* _protoent_buffer;
674 size_t _protoent_size;
676 # ifdef USE_PROTOENT_PTR
677 struct protoent* _protoent_ptr;
679 # ifdef USE_PROTOENT_ERRNO
682 #endif /* HAS_GETPROTOBYNAME_R */
683 #ifdef HAS_GETPWNAM_R
684 struct passwd _pwent_struct;
687 # ifdef USE_PWENT_PTR
688 struct passwd* _pwent_ptr;
690 # ifdef USE_PWENT_FPTR
693 #endif /* HAS_GETPWNAM_R */
694 #ifdef HAS_GETSERVBYNAME_R
695 struct servent _servent_struct;
696 # if GETSERVBYNAME_R_PROTO == REENTRANT_PROTO_I_CCSD
697 struct servent_data _servent_data;
699 char* _servent_buffer;
700 size_t _servent_size;
702 # ifdef USE_SERVENT_PTR
703 struct servent* _servent_ptr;
705 # ifdef USE_SERVENT_ERRNO
708 #endif /* HAS_GETSERVBYNAME_R */
709 #ifdef HAS_GETSPNAM_R
710 struct spwd _spent_struct;
713 # ifdef USE_SPENT_PTR
714 struct spwd* _spent_ptr;
716 # ifdef USE_SPENT_FPTR
719 #endif /* HAS_GETSPNAM_R */
721 struct tm _gmtime_struct;
722 #endif /* HAS_GMTIME_R */
723 #ifdef HAS_LOCALTIME_R
724 struct tm _localtime_struct;
725 #endif /* HAS_LOCALTIME_R */
727 # if RANDOM_R_PROTO != REENTRANT_PROTO_I_St
728 struct random_data _random_struct;
730 #endif /* HAS_RANDOM_R */
732 struct dirent* _readdir_struct;
733 size_t _readdir_size;
734 # if READDIR_R_PROTO == REENTRANT_PROTO_I_TSR
735 struct dirent* _readdir_ptr;
737 #endif /* HAS_READDIR_R */
738 #ifdef HAS_READDIR64_R
739 struct dirent64* _readdir64_struct;
740 size_t _readdir64_size;
741 # if READDIR64_R_PROTO == REENTRANT_PROTO_I_TSR
742 struct dirent64* _readdir64_ptr;
744 #endif /* HAS_READDIR64_R */
745 #ifdef HAS_SETLOCALE_R
746 char* _setlocale_buffer;
747 size_t _setlocale_size;
748 #endif /* HAS_SETLOCALE_R */
749 #ifdef HAS_STRERROR_R
750 char* _strerror_buffer;
751 size_t _strerror_size;
752 #endif /* HAS_STRERROR_R */
754 char* _ttyname_buffer;
755 size_t _ttyname_size;
756 #endif /* HAS_TTYNAME_R */
758 #if CRYPT_R_PROTO == REENTRANT_PROTO_B_CCD
760 struct crypt_data *_crypt_struct_buffer;
762 #endif /* HAS_CRYPT_R */
764 # if RANDOM_R_PROTO == REENTRANT_PROTO_I_iS
767 # if RANDOM_R_PROTO == REENTRANT_PROTO_I_lS
770 # if RANDOM_R_PROTO == REENTRANT_PROTO_I_St
771 struct random_data _random_struct;
772 int32_t _random_retval;
774 #endif /* HAS_RANDOM_R */
776 struct random_data _srandom_struct;
777 #endif /* HAS_SRANDOM_R */
779 int dummy; /* cannot have empty structs */
782 #endif /* USE_REENTRANT_API */