This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Removing unused context
[perl5.git] / reentr.h
1 /* -*- buffer-read-only: t -*-
2  *
3  *    reentr.h
4  *
5  *    Copyright (C) 2002, 2003, 2005, 2006 by Larry Wall and others
6  *
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.
9  *
10  *  !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
11  *  This file is built by reentr.pl from data in reentr.pl.
12  */
13
14 #ifndef REENTR_H
15 #define REENTR_H
16
17 #ifdef USE_REENTRANT_API
18  
19 /* Deprecations: some platforms have the said reentrant interfaces
20  * but they are declared obsolete and are not to be used.  Often this
21  * means that the platform has threadsafed the interfaces (hopefully).
22  * All this is OS version dependent, so we are of course fooling ourselves.
23  * If you know of more deprecations on some platforms, please add your own. */
24
25 #ifdef __hpux
26 #   undef HAS_CRYPT_R
27 #   undef HAS_DRAND48_R
28 #   undef HAS_ENDGRENT_R
29 #   undef HAS_ENDPWENT_R
30 #   undef HAS_GETGRENT_R
31 #   undef HAS_GETPWENT_R
32 #   undef HAS_SETLOCALE_R
33 #   undef HAS_SRAND48_R
34 #   undef HAS_STRERROR_R
35 #   define NETDB_R_OBSOLETE
36 #endif
37
38 #if defined(__osf__) && defined(__alpha) /* Tru64 aka Digital UNIX */
39 #   undef HAS_CRYPT_R
40 #   undef HAS_STRERROR_R
41 #   define NETDB_R_OBSOLETE
42 #endif
43
44 /*
45  * As of OpenBSD 3.7, reentrant functions are now working, they just are
46  * incompatible with everyone else.  To make OpenBSD happy, we have to
47  * memzero out certain structures before calling the functions.
48  */
49 #if defined(__OpenBSD__)
50 #    define REENTR_MEMZERO(a,b) memzero(a,b),
51 #else
52 #    define REENTR_MEMZERO(a,b)
53 #endif 
54
55 #ifdef NETDB_R_OBSOLETE
56 #   undef HAS_ENDHOSTENT_R
57 #   undef HAS_ENDNETENT_R
58 #   undef HAS_ENDPROTOENT_R
59 #   undef HAS_ENDSERVENT_R
60 #   undef HAS_GETHOSTBYADDR_R
61 #   undef HAS_GETHOSTBYNAME_R
62 #   undef HAS_GETHOSTENT_R
63 #   undef HAS_GETNETBYADDR_R
64 #   undef HAS_GETNETBYNAME_R
65 #   undef HAS_GETNETENT_R
66 #   undef HAS_GETPROTOBYNAME_R
67 #   undef HAS_GETPROTOBYNUMBER_R
68 #   undef HAS_GETPROTOENT_R
69 #   undef HAS_GETSERVBYNAME_R
70 #   undef HAS_GETSERVBYPORT_R
71 #   undef HAS_GETSERVENT_R
72 #   undef HAS_SETHOSTENT_R
73 #   undef HAS_SETNETENT_R
74 #   undef HAS_SETPROTOENT_R
75 #   undef HAS_SETSERVENT_R
76 #endif
77
78 #ifdef I_PWD
79 #   include <pwd.h>
80 #endif
81 #ifdef I_GRP
82 #   include <grp.h>
83 #endif
84 #ifdef I_NETDB
85 #   include <netdb.h>
86 #endif
87 #ifdef I_STDLIB
88 #   include <stdlib.h>  /* drand48_data */
89 #endif
90 #ifdef I_CRYPT
91 #   ifdef I_CRYPT
92 #       include <crypt.h>
93 #   endif
94 #endif
95 #ifdef HAS_GETSPNAM_R
96 #   ifdef I_SHADOW
97 #       include <shadow.h>
98 #   endif
99 #endif
100
101 #define REENTRANT_PROTO_B_B     1
102 #define REENTRANT_PROTO_B_BI    2
103 #define REENTRANT_PROTO_B_BW    3
104 #define REENTRANT_PROTO_B_CCD   4
105 #define REENTRANT_PROTO_B_CCS   5
106 #define REENTRANT_PROTO_B_IBI   6
107 #define REENTRANT_PROTO_B_IBW   7
108 #define REENTRANT_PROTO_B_SB    8
109 #define REENTRANT_PROTO_B_SBI   9
110 #define REENTRANT_PROTO_I_BI    10
111 #define REENTRANT_PROTO_I_BW    11
112 #define REENTRANT_PROTO_I_CCSBWR        12
113 #define REENTRANT_PROTO_I_CCSD  13
114 #define REENTRANT_PROTO_I_CII   14
115 #define REENTRANT_PROTO_I_CIISD 15
116 #define REENTRANT_PROTO_I_CSBI  16
117 #define REENTRANT_PROTO_I_CSBIR 17
118 #define REENTRANT_PROTO_I_CSBWR 18
119 #define REENTRANT_PROTO_I_CSBWRE        19
120 #define REENTRANT_PROTO_I_CSD   20
121 #define REENTRANT_PROTO_I_CWISBWRE      21
122 #define REENTRANT_PROTO_I_CWISD 22
123 #define REENTRANT_PROTO_I_D     23
124 #define REENTRANT_PROTO_I_H     24
125 #define REENTRANT_PROTO_I_IBI   25
126 #define REENTRANT_PROTO_I_IBW   26
127 #define REENTRANT_PROTO_I_ICBI  27
128 #define REENTRANT_PROTO_I_ICSBWR        28
129 #define REENTRANT_PROTO_I_ICSD  29
130 #define REENTRANT_PROTO_I_ID    30
131 #define REENTRANT_PROTO_I_IISD  31
132 #define REENTRANT_PROTO_I_ISBWR 32
133 #define REENTRANT_PROTO_I_ISD   33
134 #define REENTRANT_PROTO_I_LISBI 34
135 #define REENTRANT_PROTO_I_LISD  35
136 #define REENTRANT_PROTO_I_LS    36
137 #define REENTRANT_PROTO_I_SB    37
138 #define REENTRANT_PROTO_I_SBI   38
139 #define REENTRANT_PROTO_I_SBIE  39
140 #define REENTRANT_PROTO_I_SBIH  40
141 #define REENTRANT_PROTO_I_SBIR  41
142 #define REENTRANT_PROTO_I_SBWR  42
143 #define REENTRANT_PROTO_I_SBWRE 43
144 #define REENTRANT_PROTO_I_SD    44
145 #define REENTRANT_PROTO_I_ST    45
146 #define REENTRANT_PROTO_I_St    46
147 #define REENTRANT_PROTO_I_TISD  47
148 #define REENTRANT_PROTO_I_TS    48
149 #define REENTRANT_PROTO_I_TSBI  49
150 #define REENTRANT_PROTO_I_TSBIR 50
151 #define REENTRANT_PROTO_I_TSBWR 51
152 #define REENTRANT_PROTO_I_TSR   52
153 #define REENTRANT_PROTO_I_TsISBWRE      53
154 #define REENTRANT_PROTO_I_UISBWRE       54
155 #define REENTRANT_PROTO_I_iS    55
156 #define REENTRANT_PROTO_I_lS    56
157 #define REENTRANT_PROTO_I_uISBWRE       57
158 #define REENTRANT_PROTO_S_CBI   58
159 #define REENTRANT_PROTO_S_CCSBI 59
160 #define REENTRANT_PROTO_S_CIISBIE       60
161 #define REENTRANT_PROTO_S_CSBI  61
162 #define REENTRANT_PROTO_S_CSBIE 62
163 #define REENTRANT_PROTO_S_CWISBIE       63
164 #define REENTRANT_PROTO_S_CWISBWIE      64
165 #define REENTRANT_PROTO_S_ICSBI 65
166 #define REENTRANT_PROTO_S_ISBI  66
167 #define REENTRANT_PROTO_S_LISBI 67
168 #define REENTRANT_PROTO_S_SBI   68
169 #define REENTRANT_PROTO_S_SBIE  69
170 #define REENTRANT_PROTO_S_SBW   70
171 #define REENTRANT_PROTO_S_TISBI 71
172 #define REENTRANT_PROTO_S_TS    72
173 #define REENTRANT_PROTO_S_TSBI  73
174 #define REENTRANT_PROTO_S_TSBIE 74
175 #define REENTRANT_PROTO_S_TWISBIE       75
176 #define REENTRANT_PROTO_V_D     76
177 #define REENTRANT_PROTO_V_H     77
178 #define REENTRANT_PROTO_V_ID    78
179
180 /* Defines for indicating which special features are supported. */
181
182 /* The getgrent getgrgid getgrnam using buffer? */
183
184 #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)
185 #   define GETGRENT_R_HAS_BUFFER
186 #else
187 #   undef  GETGRENT_R_HAS_BUFFER
188 #endif
189 #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)
190 #   define GETGRGID_R_HAS_BUFFER
191 #else
192 #   undef  GETGRGID_R_HAS_BUFFER
193 #endif
194 #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)
195 #   define GETGRNAM_R_HAS_BUFFER
196 #else
197 #   undef  GETGRNAM_R_HAS_BUFFER
198 #endif
199
200 /* Any of the getgrent getgrgid getgrnam using buffer? */
201
202 #if (defined(GETGRENT_R_HAS_BUFFER) || defined(GETGRGID_R_HAS_BUFFER) || defined(GETGRNAM_R_HAS_BUFFER))
203 #   define USE_GRENT_BUFFER
204 #else
205 #   undef  USE_GRENT_BUFFER
206 #endif
207
208 /* The getgrent getgrgid getgrnam using ptr? */
209
210 #if defined(HAS_GETGRENT_R) && (GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBWR || GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBIR)
211 #   define GETGRENT_R_HAS_PTR
212 #else
213 #   undef  GETGRENT_R_HAS_PTR
214 #endif
215 #if defined(HAS_GETGRGID_R) && (GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBWR || GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBIR)
216 #   define GETGRGID_R_HAS_PTR
217 #else
218 #   undef  GETGRGID_R_HAS_PTR
219 #endif
220 #if defined(HAS_GETGRNAM_R) && (GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR || GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBIR)
221 #   define GETGRNAM_R_HAS_PTR
222 #else
223 #   undef  GETGRNAM_R_HAS_PTR
224 #endif
225
226 /* Any of the getgrent getgrgid getgrnam using ptr? */
227
228 #if (defined(GETGRENT_R_HAS_PTR) || defined(GETGRGID_R_HAS_PTR) || defined(GETGRNAM_R_HAS_PTR))
229 #   define USE_GRENT_PTR
230 #else
231 #   undef  USE_GRENT_PTR
232 #endif
233
234 /* The getpwent getpwnam getpwuid using ptr? */
235
236 #if defined(HAS_GETPWENT_R) && (GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBWR || GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBIR)
237 #   define GETPWENT_R_HAS_PTR
238 #else
239 #   undef  GETPWENT_R_HAS_PTR
240 #endif
241 #if defined(HAS_GETPWNAM_R) && (GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR || GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBIR)
242 #   define GETPWNAM_R_HAS_PTR
243 #else
244 #   undef  GETPWNAM_R_HAS_PTR
245 #endif
246 #if defined(HAS_GETPWUID_R) && (GETPWUID_R_PROTO == REENTRANT_PROTO_I_TSBWR || GETPWUID_R_PROTO == REENTRANT_PROTO_I_TSBIR)
247 #   define GETPWUID_R_HAS_PTR
248 #else
249 #   undef  GETPWUID_R_HAS_PTR
250 #endif
251
252 /* Any of the getpwent getpwnam getpwuid using ptr? */
253
254 #if (defined(GETPWENT_R_HAS_PTR) || defined(GETPWNAM_R_HAS_PTR) || defined(GETPWUID_R_HAS_PTR))
255 #   define USE_PWENT_PTR
256 #else
257 #   undef  USE_PWENT_PTR
258 #endif
259
260 /* The getspent getspnam using ptr? */
261
262 #if defined(HAS_GETSPNAM_R) && (GETSPNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR)
263 #   define GETSPNAM_R_HAS_PTR
264 #else
265 #   undef  GETSPNAM_R_HAS_PTR
266 #endif
267
268 /* Any of the getspent getspnam using ptr? */
269
270 #if (defined(GETSPENT_R_HAS_PTR) || defined(GETSPNAM_R_HAS_PTR))
271 #   define USE_SPENT_PTR
272 #else
273 #   undef  USE_SPENT_PTR
274 #endif
275
276 /* The getgrent getgrgid getgrnam setgrent endgrent using fptr? */
277
278 #if defined(HAS_GETGRENT_R) && (GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBIH)
279 #   define GETGRENT_R_HAS_FPTR
280 #else
281 #   undef  GETGRENT_R_HAS_FPTR
282 #endif
283 #if defined(HAS_SETGRENT_R) && (SETGRENT_R_PROTO == REENTRANT_PROTO_I_H || SETGRENT_R_PROTO == REENTRANT_PROTO_V_H)
284 #   define SETGRENT_R_HAS_FPTR
285 #else
286 #   undef  SETGRENT_R_HAS_FPTR
287 #endif
288 #if defined(HAS_ENDGRENT_R) && (ENDGRENT_R_PROTO == REENTRANT_PROTO_I_H || ENDGRENT_R_PROTO == REENTRANT_PROTO_V_H)
289 #   define ENDGRENT_R_HAS_FPTR
290 #else
291 #   undef  ENDGRENT_R_HAS_FPTR
292 #endif
293
294 /* Any of the getgrent getgrgid getgrnam setgrent endgrent using fptr? */
295
296 #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))
297 #   define USE_GRENT_FPTR
298 #else
299 #   undef  USE_GRENT_FPTR
300 #endif
301
302 /* The getpwent getpwnam getpwuid setpwent endpwent using fptr? */
303
304 #if defined(HAS_GETPWENT_R) && (GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBIH)
305 #   define GETPWENT_R_HAS_FPTR
306 #else
307 #   undef  GETPWENT_R_HAS_FPTR
308 #endif
309 #if defined(HAS_SETPWENT_R) && (SETPWENT_R_PROTO == REENTRANT_PROTO_I_H || SETPWENT_R_PROTO == REENTRANT_PROTO_V_H)
310 #   define SETPWENT_R_HAS_FPTR
311 #else
312 #   undef  SETPWENT_R_HAS_FPTR
313 #endif
314 #if defined(HAS_ENDPWENT_R) && (ENDPWENT_R_PROTO == REENTRANT_PROTO_I_H || ENDPWENT_R_PROTO == REENTRANT_PROTO_V_H)
315 #   define ENDPWENT_R_HAS_FPTR
316 #else
317 #   undef  ENDPWENT_R_HAS_FPTR
318 #endif
319
320 /* Any of the getpwent getpwnam getpwuid setpwent endpwent using fptr? */
321
322 #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))
323 #   define USE_PWENT_FPTR
324 #else
325 #   undef  USE_PWENT_FPTR
326 #endif
327
328 /* The getpwent getpwgid getpwnam using buffer? */
329
330 #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)
331 #   define GETPWENT_R_HAS_BUFFER
332 #else
333 #   undef  GETPWENT_R_HAS_BUFFER
334 #endif
335 #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)
336 #   define GETPWNAM_R_HAS_BUFFER
337 #else
338 #   undef  GETPWNAM_R_HAS_BUFFER
339 #endif
340
341 /* Any of the getpwent getpwgid getpwnam using buffer? */
342
343 #if (defined(GETPWENT_R_HAS_BUFFER) || defined(GETPWGID_R_HAS_BUFFER) || defined(GETPWNAM_R_HAS_BUFFER))
344 #   define USE_PWENT_BUFFER
345 #else
346 #   undef  USE_PWENT_BUFFER
347 #endif
348
349 /* The gethostent gethostbyaddr gethostbyname using ptr? */
350
351 #if defined(HAS_GETHOSTENT_R) && (GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBWRE)
352 #   define GETHOSTENT_R_HAS_PTR
353 #else
354 #   undef  GETHOSTENT_R_HAS_PTR
355 #endif
356 #if defined(HAS_GETHOSTBYADDR_R) && (GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_CWISBWRE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_TsISBWRE)
357 #   define GETHOSTBYADDR_R_HAS_PTR
358 #else
359 #   undef  GETHOSTBYADDR_R_HAS_PTR
360 #endif
361 #if defined(HAS_GETHOSTBYNAME_R) && (GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE)
362 #   define GETHOSTBYNAME_R_HAS_PTR
363 #else
364 #   undef  GETHOSTBYNAME_R_HAS_PTR
365 #endif
366
367 /* Any of the gethostent gethostbyaddr gethostbyname using ptr? */
368
369 #if (defined(GETHOSTENT_R_HAS_PTR) || defined(GETHOSTBYADDR_R_HAS_PTR) || defined(GETHOSTBYNAME_R_HAS_PTR))
370 #   define USE_HOSTENT_PTR
371 #else
372 #   undef  USE_HOSTENT_PTR
373 #endif
374
375 /* The getnetent getnetbyaddr getnetbyname using ptr? */
376
377 #if defined(HAS_GETNETENT_R) && (GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBWRE)
378 #   define GETNETENT_R_HAS_PTR
379 #else
380 #   undef  GETNETENT_R_HAS_PTR
381 #endif
382 #if defined(HAS_GETNETBYADDR_R) && (GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_UISBWRE || GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_uISBWRE)
383 #   define GETNETBYADDR_R_HAS_PTR
384 #else
385 #   undef  GETNETBYADDR_R_HAS_PTR
386 #endif
387 #if defined(HAS_GETNETBYNAME_R) && (GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE)
388 #   define GETNETBYNAME_R_HAS_PTR
389 #else
390 #   undef  GETNETBYNAME_R_HAS_PTR
391 #endif
392
393 /* Any of the getnetent getnetbyaddr getnetbyname using ptr? */
394
395 #if (defined(GETNETENT_R_HAS_PTR) || defined(GETNETBYADDR_R_HAS_PTR) || defined(GETNETBYNAME_R_HAS_PTR))
396 #   define USE_NETENT_PTR
397 #else
398 #   undef  USE_NETENT_PTR
399 #endif
400
401 /* The getprotoent getprotobyname getprotobynumber using ptr? */
402
403 #if defined(HAS_GETPROTOENT_R) && (GETPROTOENT_R_PROTO == REENTRANT_PROTO_I_SBWR)
404 #   define GETPROTOENT_R_HAS_PTR
405 #else
406 #   undef  GETPROTOENT_R_HAS_PTR
407 #endif
408 #if defined(HAS_GETPROTOBYNAME_R) && (GETPROTOBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWR)
409 #   define GETPROTOBYNAME_R_HAS_PTR
410 #else
411 #   undef  GETPROTOBYNAME_R_HAS_PTR
412 #endif
413 #if defined(HAS_GETPROTOBYNUMBER_R) && (GETPROTOBYNUMBER_R_PROTO == REENTRANT_PROTO_I_ISBWR)
414 #   define GETPROTOBYNUMBER_R_HAS_PTR
415 #else
416 #   undef  GETPROTOBYNUMBER_R_HAS_PTR
417 #endif
418
419 /* Any of the getprotoent getprotobyname getprotobynumber using ptr? */
420
421 #if (defined(GETPROTOENT_R_HAS_PTR) || defined(GETPROTOBYNAME_R_HAS_PTR) || defined(GETPROTOBYNUMBER_R_HAS_PTR))
422 #   define USE_PROTOENT_PTR
423 #else
424 #   undef  USE_PROTOENT_PTR
425 #endif
426
427 /* The getservent getservbyname getservbyport using ptr? */
428
429 #if defined(HAS_GETSERVENT_R) && (GETSERVENT_R_PROTO == REENTRANT_PROTO_I_SBWR)
430 #   define GETSERVENT_R_HAS_PTR
431 #else
432 #   undef  GETSERVENT_R_HAS_PTR
433 #endif
434 #if defined(HAS_GETSERVBYNAME_R) && (GETSERVBYNAME_R_PROTO == REENTRANT_PROTO_I_CCSBWR)
435 #   define GETSERVBYNAME_R_HAS_PTR
436 #else
437 #   undef  GETSERVBYNAME_R_HAS_PTR
438 #endif
439 #if defined(HAS_GETSERVBYPORT_R) && (GETSERVBYPORT_R_PROTO == REENTRANT_PROTO_I_ICSBWR)
440 #   define GETSERVBYPORT_R_HAS_PTR
441 #else
442 #   undef  GETSERVBYPORT_R_HAS_PTR
443 #endif
444
445 /* Any of the getservent getservbyname getservbyport using ptr? */
446
447 #if (defined(GETSERVENT_R_HAS_PTR) || defined(GETSERVBYNAME_R_HAS_PTR) || defined(GETSERVBYPORT_R_HAS_PTR))
448 #   define USE_SERVENT_PTR
449 #else
450 #   undef  USE_SERVENT_PTR
451 #endif
452
453 /* The gethostent gethostbyaddr gethostbyname using buffer? */
454
455 #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)
456 #   define GETHOSTENT_R_HAS_BUFFER
457 #else
458 #   undef  GETHOSTENT_R_HAS_BUFFER
459 #endif
460 #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)
461 #   define GETHOSTBYADDR_R_HAS_BUFFER
462 #else
463 #   undef  GETHOSTBYADDR_R_HAS_BUFFER
464 #endif
465 #if defined(HAS_GETHOSTBYNAME_R) && (GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE || GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_S_CSBIE)
466 #   define GETHOSTBYNAME_R_HAS_BUFFER
467 #else
468 #   undef  GETHOSTBYNAME_R_HAS_BUFFER
469 #endif
470
471 /* Any of the gethostent gethostbyaddr gethostbyname using buffer? */
472
473 #if (defined(GETHOSTENT_R_HAS_BUFFER) || defined(GETHOSTBYADDR_R_HAS_BUFFER) || defined(GETHOSTBYNAME_R_HAS_BUFFER))
474 #   define USE_HOSTENT_BUFFER
475 #else
476 #   undef  USE_HOSTENT_BUFFER
477 #endif
478
479 /* The getnetent getnetbyaddr getnetbyname using buffer? */
480
481 #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)
482 #   define GETNETENT_R_HAS_BUFFER
483 #else
484 #   undef  GETNETENT_R_HAS_BUFFER
485 #endif
486 #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)
487 #   define GETNETBYADDR_R_HAS_BUFFER
488 #else
489 #   undef  GETNETBYADDR_R_HAS_BUFFER
490 #endif
491 #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)
492 #   define GETNETBYNAME_R_HAS_BUFFER
493 #else
494 #   undef  GETNETBYNAME_R_HAS_BUFFER
495 #endif
496
497 /* Any of the getnetent getnetbyaddr getnetbyname using buffer? */
498
499 #if (defined(GETNETENT_R_HAS_BUFFER) || defined(GETNETBYADDR_R_HAS_BUFFER) || defined(GETNETBYNAME_R_HAS_BUFFER))
500 #   define USE_NETENT_BUFFER
501 #else
502 #   undef  USE_NETENT_BUFFER
503 #endif
504
505 /* The getprotoent getprotobyname getprotobynumber using buffer? */
506
507 #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)
508 #   define GETPROTOENT_R_HAS_BUFFER
509 #else
510 #   undef  GETPROTOENT_R_HAS_BUFFER
511 #endif
512 #if defined(HAS_GETPROTOBYNAME_R) && (GETPROTOBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWR || GETPROTOBYNAME_R_PROTO == REENTRANT_PROTO_S_CSBI)
513 #   define GETPROTOBYNAME_R_HAS_BUFFER
514 #else
515 #   undef  GETPROTOBYNAME_R_HAS_BUFFER
516 #endif
517 #if defined(HAS_GETPROTOBYNUMBER_R) && (GETPROTOBYNUMBER_R_PROTO == REENTRANT_PROTO_I_ISBWR || GETPROTOBYNUMBER_R_PROTO == REENTRANT_PROTO_S_ISBI)
518 #   define GETPROTOBYNUMBER_R_HAS_BUFFER
519 #else
520 #   undef  GETPROTOBYNUMBER_R_HAS_BUFFER
521 #endif
522
523 /* Any of the getprotoent getprotobyname getprotobynumber using buffer? */
524
525 #if (defined(GETPROTOENT_R_HAS_BUFFER) || defined(GETPROTOBYNAME_R_HAS_BUFFER) || defined(GETPROTOBYNUMBER_R_HAS_BUFFER))
526 #   define USE_PROTOENT_BUFFER
527 #else
528 #   undef  USE_PROTOENT_BUFFER
529 #endif
530
531 /* The getservent getservbyname getservbyport using buffer? */
532
533 #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)
534 #   define GETSERVENT_R_HAS_BUFFER
535 #else
536 #   undef  GETSERVENT_R_HAS_BUFFER
537 #endif
538 #if defined(HAS_GETSERVBYNAME_R) && (GETSERVBYNAME_R_PROTO == REENTRANT_PROTO_I_CCSBWR || GETSERVBYNAME_R_PROTO == REENTRANT_PROTO_S_CCSBI)
539 #   define GETSERVBYNAME_R_HAS_BUFFER
540 #else
541 #   undef  GETSERVBYNAME_R_HAS_BUFFER
542 #endif
543 #if defined(HAS_GETSERVBYPORT_R) && (GETSERVBYPORT_R_PROTO == REENTRANT_PROTO_I_ICSBWR || GETSERVBYPORT_R_PROTO == REENTRANT_PROTO_S_ICSBI)
544 #   define GETSERVBYPORT_R_HAS_BUFFER
545 #else
546 #   undef  GETSERVBYPORT_R_HAS_BUFFER
547 #endif
548
549 /* Any of the getservent getservbyname getservbyport using buffer? */
550
551 #if (defined(GETSERVENT_R_HAS_BUFFER) || defined(GETSERVBYNAME_R_HAS_BUFFER) || defined(GETSERVBYPORT_R_HAS_BUFFER))
552 #   define USE_SERVENT_BUFFER
553 #else
554 #   undef  USE_SERVENT_BUFFER
555 #endif
556
557 /* The gethostent gethostbyaddr gethostbyname using errno? */
558
559 #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)
560 #   define GETHOSTENT_R_HAS_ERRNO
561 #else
562 #   undef  GETHOSTENT_R_HAS_ERRNO
563 #endif
564 #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)
565 #   define GETHOSTBYADDR_R_HAS_ERRNO
566 #else
567 #   undef  GETHOSTBYADDR_R_HAS_ERRNO
568 #endif
569 #if defined(HAS_GETHOSTBYNAME_R) && (GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE || GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_S_CSBIE)
570 #   define GETHOSTBYNAME_R_HAS_ERRNO
571 #else
572 #   undef  GETHOSTBYNAME_R_HAS_ERRNO
573 #endif
574
575 /* Any of the gethostent gethostbyaddr gethostbyname using errno? */
576
577 #if (defined(GETHOSTENT_R_HAS_ERRNO) || defined(GETHOSTBYADDR_R_HAS_ERRNO) || defined(GETHOSTBYNAME_R_HAS_ERRNO))
578 #   define USE_HOSTENT_ERRNO
579 #else
580 #   undef  USE_HOSTENT_ERRNO
581 #endif
582
583 /* The getnetent getnetbyaddr getnetbyname using errno? */
584
585 #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)
586 #   define GETNETENT_R_HAS_ERRNO
587 #else
588 #   undef  GETNETENT_R_HAS_ERRNO
589 #endif
590 #if defined(HAS_GETNETBYADDR_R) && (GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_UISBWRE || GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_uISBWRE)
591 #   define GETNETBYADDR_R_HAS_ERRNO
592 #else
593 #   undef  GETNETBYADDR_R_HAS_ERRNO
594 #endif
595 #if defined(HAS_GETNETBYNAME_R) && (GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE)
596 #   define GETNETBYNAME_R_HAS_ERRNO
597 #else
598 #   undef  GETNETBYNAME_R_HAS_ERRNO
599 #endif
600
601 /* Any of the getnetent getnetbyaddr getnetbyname using errno? */
602
603 #if (defined(GETNETENT_R_HAS_ERRNO) || defined(GETNETBYADDR_R_HAS_ERRNO) || defined(GETNETBYNAME_R_HAS_ERRNO))
604 #   define USE_NETENT_ERRNO
605 #else
606 #   undef  USE_NETENT_ERRNO
607 #endif
608
609
610 typedef struct {
611 #ifdef HAS_ASCTIME_R
612         char*   _asctime_buffer;
613         size_t  _asctime_size;
614 #endif /* HAS_ASCTIME_R */
615 #ifdef HAS_CRYPT_R
616 #if CRYPT_R_PROTO == REENTRANT_PROTO_B_CCD
617         CRYPTD* _crypt_data;
618 #else
619         struct crypt_data *_crypt_struct_buffer;
620 #endif
621 #endif /* HAS_CRYPT_R */
622 #ifdef HAS_CTIME_R
623         char*   _ctime_buffer;
624         size_t  _ctime_size;
625 #endif /* HAS_CTIME_R */
626 #ifdef HAS_DRAND48_R
627         struct drand48_data _drand48_struct;
628         double  _drand48_double;
629 #endif /* HAS_DRAND48_R */
630 #ifdef HAS_GETGRNAM_R
631         struct group    _grent_struct;
632         char*   _grent_buffer;
633         size_t  _grent_size;
634 #   ifdef USE_GRENT_PTR
635         struct group*   _grent_ptr;
636 #   endif
637 #   ifdef USE_GRENT_FPTR
638         FILE*   _grent_fptr;
639 #   endif
640 #endif /* HAS_GETGRNAM_R */
641 #ifdef HAS_GETHOSTBYNAME_R
642         struct hostent  _hostent_struct;
643 #   if GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSD
644         struct hostent_data     _hostent_data;
645 #   else
646         char*   _hostent_buffer;
647         size_t  _hostent_size;
648 #   endif
649 #   ifdef USE_HOSTENT_PTR
650         struct hostent* _hostent_ptr;
651 #   endif
652 #   ifdef USE_HOSTENT_ERRNO
653         int     _hostent_errno;
654 #   endif 
655 #endif /* HAS_GETHOSTBYNAME_R */
656 #ifdef HAS_GETLOGIN_R
657         char*   _getlogin_buffer;
658         size_t  _getlogin_size;
659 #endif /* HAS_GETLOGIN_R */
660 #ifdef HAS_GETNETBYNAME_R
661         struct netent   _netent_struct;
662 #   if GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSD
663         struct netent_data      _netent_data;
664 #   else
665         char*   _netent_buffer;
666         size_t  _netent_size;
667 #   endif
668 #   ifdef USE_NETENT_PTR
669         struct netent*  _netent_ptr;
670 #   endif
671 #   ifdef USE_NETENT_ERRNO
672         int     _netent_errno;
673 #   endif 
674 #endif /* HAS_GETNETBYNAME_R */
675 #ifdef HAS_GETPROTOBYNAME_R
676         struct protoent _protoent_struct;
677 #   if GETPROTOBYNAME_R_PROTO == REENTRANT_PROTO_I_CSD
678         struct protoent_data    _protoent_data;
679 #   else
680         char*   _protoent_buffer;
681         size_t  _protoent_size;
682 #   endif
683 #   ifdef USE_PROTOENT_PTR
684         struct protoent*        _protoent_ptr;
685 #   endif
686 #   ifdef USE_PROTOENT_ERRNO
687         int     _protoent_errno;
688 #   endif 
689 #endif /* HAS_GETPROTOBYNAME_R */
690 #ifdef HAS_GETPWNAM_R
691         struct passwd   _pwent_struct;
692         char*   _pwent_buffer;
693         size_t  _pwent_size;
694 #   ifdef USE_PWENT_PTR
695         struct passwd*  _pwent_ptr;
696 #   endif
697 #   ifdef USE_PWENT_FPTR
698         FILE*   _pwent_fptr;
699 #   endif
700 #endif /* HAS_GETPWNAM_R */
701 #ifdef HAS_GETSERVBYNAME_R
702         struct servent  _servent_struct;
703 #   if GETSERVBYNAME_R_PROTO == REENTRANT_PROTO_I_CCSD
704         struct servent_data     _servent_data;
705 #   else
706         char*   _servent_buffer;
707         size_t  _servent_size;
708 #   endif
709 #   ifdef USE_SERVENT_PTR
710         struct servent* _servent_ptr;
711 #   endif
712 #   ifdef USE_SERVENT_ERRNO
713         int     _servent_errno;
714 #   endif 
715 #endif /* HAS_GETSERVBYNAME_R */
716 #ifdef HAS_GETSPNAM_R
717         struct spwd     _spent_struct;
718         char*   _spent_buffer;
719         size_t  _spent_size;
720 #   ifdef USE_SPENT_PTR
721         struct spwd*    _spent_ptr;
722 #   endif
723 #   ifdef USE_SPENT_FPTR
724         FILE*   _spent_fptr;
725 #   endif
726 #endif /* HAS_GETSPNAM_R */
727 #ifdef HAS_GMTIME_R
728         struct tm _gmtime_struct;
729 #endif /* HAS_GMTIME_R */
730 #ifdef HAS_LOCALTIME_R
731         struct tm _localtime_struct;
732 #endif /* HAS_LOCALTIME_R */
733 #ifdef HAS_RANDOM_R
734         struct random_data _random_struct;
735 #   if RANDOM_R_PROTO == REENTRANT_PROTO_I_iS
736         int     _random_retval;
737 #   endif
738 #   if RANDOM_R_PROTO == REENTRANT_PROTO_I_lS
739         long    _random_retval;
740 #   endif
741 #   if RANDOM_R_PROTO == REENTRANT_PROTO_I_St
742         int32_t _random_retval;
743 #   endif
744 #endif /* HAS_RANDOM_R */
745 #ifdef HAS_READDIR_R
746         struct dirent*  _readdir_struct;
747         size_t  _readdir_size;
748 #   if READDIR_R_PROTO == REENTRANT_PROTO_I_TSR
749         struct dirent*  _readdir_ptr;
750 #   endif
751 #endif /* HAS_READDIR_R */
752 #ifdef HAS_READDIR64_R
753         struct dirent64*        _readdir64_struct;
754         size_t  _readdir64_size;
755 #   if READDIR64_R_PROTO == REENTRANT_PROTO_I_TSR
756         struct dirent64*        _readdir64_ptr;
757 #   endif
758 #endif /* HAS_READDIR64_R */
759 #ifdef HAS_SETLOCALE_R
760         char*   _setlocale_buffer;
761         size_t  _setlocale_size;
762 #endif /* HAS_SETLOCALE_R */
763 #ifdef HAS_SRANDOM_R
764         struct random_data _srandom_struct;
765 #endif /* HAS_SRANDOM_R */
766 #ifdef HAS_STRERROR_R
767         char*   _strerror_buffer;
768         size_t  _strerror_size;
769 #endif /* HAS_STRERROR_R */
770 #ifdef HAS_TTYNAME_R
771         char*   _ttyname_buffer;
772         size_t  _ttyname_size;
773 #endif /* HAS_TTYNAME_R */
774
775     int dummy; /* cannot have empty structs */
776 } REENTR;
777
778 /* The wrappers. */
779
780 #ifdef HAS_ASCTIME_R
781 #   undef asctime
782 #   if !defined(asctime) && ASCTIME_R_PROTO == REENTRANT_PROTO_B_SB
783 #       define asctime(a) asctime_r(a, PL_reentrant_buffer->_asctime_buffer)
784 #   endif
785 #   if !defined(asctime) && ASCTIME_R_PROTO == REENTRANT_PROTO_B_SBI
786 #       define asctime(a) asctime_r(a, PL_reentrant_buffer->_asctime_buffer, PL_reentrant_buffer->_asctime_size)
787 #   endif
788 #   if !defined(asctime) && ASCTIME_R_PROTO == REENTRANT_PROTO_I_SB
789 #       define asctime(a) (asctime_r(a, PL_reentrant_buffer->_asctime_buffer) == 0 ? PL_reentrant_buffer->_asctime_buffer : 0)
790 #   endif
791 #   if !defined(asctime) && ASCTIME_R_PROTO == REENTRANT_PROTO_I_SBI
792 #       define asctime(a) (asctime_r(a, PL_reentrant_buffer->_asctime_buffer, PL_reentrant_buffer->_asctime_size) == 0 ? PL_reentrant_buffer->_asctime_buffer : 0)
793 #   endif
794 #endif /* HAS_ASCTIME_R */
795
796 #ifdef HAS_CRYPT_R
797 #   undef crypt
798 #   if !defined(crypt) && CRYPT_R_PROTO == REENTRANT_PROTO_B_CCS
799 #       define crypt(a, b) crypt_r(a, b, PL_reentrant_buffer->_crypt_struct_buffer)
800 #   endif
801 #   if !defined(crypt) && CRYPT_R_PROTO == REENTRANT_PROTO_B_CCD
802 #       define crypt(a, b) crypt_r(a, b, &PL_reentrant_buffer->_crypt_data)
803 #   endif
804 #endif /* HAS_CRYPT_R */
805
806 #ifdef HAS_CTERMID_R
807 #   undef ctermid
808 #   if !defined(ctermid) && CTERMID_R_PROTO == REENTRANT_PROTO_B_B
809 #       define ctermid(a) ctermid_r(a)
810 #   endif
811 #endif /* HAS_CTERMID_R */
812
813 #ifdef HAS_CTIME_R
814 #   undef ctime
815 #   if !defined(ctime) && CTIME_R_PROTO == REENTRANT_PROTO_B_SB
816 #       define ctime(a) ctime_r(a, PL_reentrant_buffer->_ctime_buffer)
817 #   endif
818 #   if !defined(ctime) && CTIME_R_PROTO == REENTRANT_PROTO_B_SBI
819 #       define ctime(a) ctime_r(a, PL_reentrant_buffer->_ctime_buffer, PL_reentrant_buffer->_ctime_size)
820 #   endif
821 #   if !defined(ctime) && CTIME_R_PROTO == REENTRANT_PROTO_I_SB
822 #       define ctime(a) (ctime_r(a, PL_reentrant_buffer->_ctime_buffer) == 0 ? PL_reentrant_buffer->_ctime_buffer : 0)
823 #   endif
824 #   if !defined(ctime) && CTIME_R_PROTO == REENTRANT_PROTO_I_SBI
825 #       define ctime(a) (ctime_r(a, PL_reentrant_buffer->_ctime_buffer, PL_reentrant_buffer->_ctime_size) == 0 ? PL_reentrant_buffer->_ctime_buffer : 0)
826 #   endif
827 #endif /* HAS_CTIME_R */
828
829 #ifdef HAS_DRAND48_R
830 #   undef drand48
831 #   if !defined(drand48) && DRAND48_R_PROTO == REENTRANT_PROTO_I_ST
832 #       define drand48() (drand48_r(&PL_reentrant_buffer->_drand48_struct, &PL_reentrant_buffer->_drand48_double) == 0 ? PL_reentrant_buffer->_drand48_double : 0)
833 #   endif
834 #endif /* HAS_DRAND48_R */
835
836 #ifdef HAS_ENDGRENT_R
837 #   undef endgrent
838 #   if !defined(endgrent) && ENDGRENT_R_PROTO == REENTRANT_PROTO_I_H
839 #       define endgrent() (endgrent_r(&PL_reentrant_buffer->_grent_fptr) == 0 ? 1 : 0)
840 #   endif
841 #   if !defined(endgrent) && ENDGRENT_R_PROTO == REENTRANT_PROTO_V_H
842 #       define endgrent() endgrent_r(&PL_reentrant_buffer->_grent_fptr)
843 #   endif
844 #endif /* HAS_ENDGRENT_R */
845
846 #ifdef HAS_ENDHOSTENT_R
847 #   undef endhostent
848 #   if !defined(endhostent) && ENDHOSTENT_R_PROTO == REENTRANT_PROTO_I_D
849 #       define endhostent() (endhostent_r(&PL_reentrant_buffer->_hostent_data) == 0 ? 1 : 0)
850 #   endif
851 #   if !defined(endhostent) && ENDHOSTENT_R_PROTO == REENTRANT_PROTO_V_D
852 #       define endhostent() endhostent_r(&PL_reentrant_buffer->_hostent_data)
853 #   endif
854 #endif /* HAS_ENDHOSTENT_R */
855
856 #ifdef HAS_ENDNETENT_R
857 #   undef endnetent
858 #   if !defined(endnetent) && ENDNETENT_R_PROTO == REENTRANT_PROTO_I_D
859 #       define endnetent() (endnetent_r(&PL_reentrant_buffer->_netent_data) == 0 ? 1 : 0)
860 #   endif
861 #   if !defined(endnetent) && ENDNETENT_R_PROTO == REENTRANT_PROTO_V_D
862 #       define endnetent() endnetent_r(&PL_reentrant_buffer->_netent_data)
863 #   endif
864 #endif /* HAS_ENDNETENT_R */
865
866 #ifdef HAS_ENDPROTOENT_R
867 #   undef endprotoent
868 #   if !defined(endprotoent) && ENDPROTOENT_R_PROTO == REENTRANT_PROTO_I_D
869 #       define endprotoent() (endprotoent_r(&PL_reentrant_buffer->_protoent_data) == 0 ? 1 : 0)
870 #   endif
871 #   if !defined(endprotoent) && ENDPROTOENT_R_PROTO == REENTRANT_PROTO_V_D
872 #       define endprotoent() endprotoent_r(&PL_reentrant_buffer->_protoent_data)
873 #   endif
874 #endif /* HAS_ENDPROTOENT_R */
875
876 #ifdef HAS_ENDPWENT_R
877 #   undef endpwent
878 #   if !defined(endpwent) && ENDPWENT_R_PROTO == REENTRANT_PROTO_I_H
879 #       define endpwent() (endpwent_r(&PL_reentrant_buffer->_pwent_fptr) == 0 ? 1 : 0)
880 #   endif
881 #   if !defined(endpwent) && ENDPWENT_R_PROTO == REENTRANT_PROTO_V_H
882 #       define endpwent() endpwent_r(&PL_reentrant_buffer->_pwent_fptr)
883 #   endif
884 #endif /* HAS_ENDPWENT_R */
885
886 #ifdef HAS_ENDSERVENT_R
887 #   undef endservent
888 #   if !defined(endservent) && ENDSERVENT_R_PROTO == REENTRANT_PROTO_I_D
889 #       define endservent() (endservent_r(&PL_reentrant_buffer->_servent_data) == 0 ? 1 : 0)
890 #   endif
891 #   if !defined(endservent) && ENDSERVENT_R_PROTO == REENTRANT_PROTO_V_D
892 #       define endservent() endservent_r(&PL_reentrant_buffer->_servent_data)
893 #   endif
894 #endif /* HAS_ENDSERVENT_R */
895
896 #ifdef HAS_GETGRENT_R
897 #   undef getgrent
898 #   if !defined(getgrent) && GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBWR
899 #       define getgrent() ((PL_reentrant_retint = getgrent_r(&PL_reentrant_buffer->_grent_struct, PL_reentrant_buffer->_grent_buffer, PL_reentrant_buffer->_grent_size, &PL_reentrant_buffer->_grent_ptr)) == 0 ? PL_reentrant_buffer->_grent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct group *) Perl_reentrant_retry("getgrent") : 0))
900 #   endif
901 #   if !defined(getgrent) && GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBIR
902 #       define getgrent() ((PL_reentrant_retint = getgrent_r(&PL_reentrant_buffer->_grent_struct, PL_reentrant_buffer->_grent_buffer, PL_reentrant_buffer->_grent_size, &PL_reentrant_buffer->_grent_ptr)) == 0 ? PL_reentrant_buffer->_grent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct group *) Perl_reentrant_retry("getgrent") : 0))
903 #   endif
904 #   if !defined(getgrent) && GETGRENT_R_PROTO == REENTRANT_PROTO_S_SBW
905 #       define getgrent() (getgrent_r(&PL_reentrant_buffer->_grent_struct, PL_reentrant_buffer->_grent_buffer, PL_reentrant_buffer->_grent_size) ? &PL_reentrant_buffer->_grent_struct : ((errno == ERANGE) ? (struct group *) Perl_reentrant_retry("getgrent") : 0))
906 #   endif
907 #   if !defined(getgrent) && GETGRENT_R_PROTO == REENTRANT_PROTO_S_SBI
908 #       define getgrent() (getgrent_r(&PL_reentrant_buffer->_grent_struct, PL_reentrant_buffer->_grent_buffer, PL_reentrant_buffer->_grent_size) ? &PL_reentrant_buffer->_grent_struct : ((errno == ERANGE) ? (struct group *) Perl_reentrant_retry("getgrent") : 0))
909 #   endif
910 #   if !defined(getgrent) && GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBI
911 #       define getgrent() ((PL_reentrant_retint = getgrent_r(&PL_reentrant_buffer->_grent_struct, PL_reentrant_buffer->_grent_buffer, PL_reentrant_buffer->_grent_size)) == 0 ? &PL_reentrant_buffer->_grent_struct : ((PL_reentrant_retint == ERANGE) ? (struct group *) Perl_reentrant_retry("getgrent") : 0))
912 #   endif
913 #   if !defined(getgrent) && GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBIH
914 #       define getgrent() ((PL_reentrant_retint = getgrent_r(&PL_reentrant_buffer->_grent_struct, PL_reentrant_buffer->_grent_buffer, PL_reentrant_buffer->_grent_size, &PL_reentrant_buffer->_grent_fptr)) == 0 ? &PL_reentrant_buffer->_grent_struct : ((PL_reentrant_retint == ERANGE) ? (struct group *) Perl_reentrant_retry("getgrent") : 0))
915 #   endif
916 #endif /* HAS_GETGRENT_R */
917
918 #ifdef HAS_GETGRGID_R
919 #   undef getgrgid
920 #   if !defined(getgrgid) && GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBWR
921 #       define getgrgid(a) ((PL_reentrant_retint = getgrgid_r(a, &PL_reentrant_buffer->_grent_struct, PL_reentrant_buffer->_grent_buffer, PL_reentrant_buffer->_grent_size, &PL_reentrant_buffer->_grent_ptr)) == 0 ? PL_reentrant_buffer->_grent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct group *) Perl_reentrant_retry("getgrgid", a) : 0))
922 #   endif
923 #   if !defined(getgrgid) && GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBIR
924 #       define getgrgid(a) ((PL_reentrant_retint = getgrgid_r(a, &PL_reentrant_buffer->_grent_struct, PL_reentrant_buffer->_grent_buffer, PL_reentrant_buffer->_grent_size, &PL_reentrant_buffer->_grent_ptr)) == 0 ? PL_reentrant_buffer->_grent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct group *) Perl_reentrant_retry("getgrgid", a) : 0))
925 #   endif
926 #   if !defined(getgrgid) && GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBI
927 #       define getgrgid(a) ((PL_reentrant_retint = getgrgid_r(a, &PL_reentrant_buffer->_grent_struct, PL_reentrant_buffer->_grent_buffer, PL_reentrant_buffer->_grent_size)) == 0 ? &PL_reentrant_buffer->_grent_struct : ((PL_reentrant_retint == ERANGE) ? (struct group *) Perl_reentrant_retry("getgrgid", a) : 0))
928 #   endif
929 #   if !defined(getgrgid) && GETGRGID_R_PROTO == REENTRANT_PROTO_S_TSBI
930 #       define getgrgid(a) (getgrgid_r(a, &PL_reentrant_buffer->_grent_struct, PL_reentrant_buffer->_grent_buffer, PL_reentrant_buffer->_grent_size) ? &PL_reentrant_buffer->_grent_struct : ((errno == ERANGE) ? (struct group *) Perl_reentrant_retry("getgrgid", a) : 0))
931 #   endif
932 #endif /* HAS_GETGRGID_R */
933
934 #ifdef HAS_GETGRNAM_R
935 #   undef getgrnam
936 #   if !defined(getgrnam) && GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR
937 #       define getgrnam(a) ((PL_reentrant_retint = getgrnam_r(a, &PL_reentrant_buffer->_grent_struct, PL_reentrant_buffer->_grent_buffer, PL_reentrant_buffer->_grent_size, &PL_reentrant_buffer->_grent_ptr)) == 0 ? PL_reentrant_buffer->_grent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct group *) Perl_reentrant_retry("getgrnam", a) : 0))
938 #   endif
939 #   if !defined(getgrnam) && GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBIR
940 #       define getgrnam(a) ((PL_reentrant_retint = getgrnam_r(a, &PL_reentrant_buffer->_grent_struct, PL_reentrant_buffer->_grent_buffer, PL_reentrant_buffer->_grent_size, &PL_reentrant_buffer->_grent_ptr)) == 0 ? PL_reentrant_buffer->_grent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct group *) Perl_reentrant_retry("getgrnam", a) : 0))
941 #   endif
942 #   if !defined(getgrnam) && GETGRNAM_R_PROTO == REENTRANT_PROTO_S_CBI
943 #       define getgrnam(a) (getgrnam_r(a, PL_reentrant_buffer->_grent_buffer, PL_reentrant_buffer->_grent_size) ? PL_reentrant_buffer->_grent_buffer : ((errno == ERANGE) ? (struct group *) Perl_reentrant_retry("getgrnam", a) : 0))
944 #   endif
945 #   if !defined(getgrnam) && GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBI
946 #       define getgrnam(a) ((PL_reentrant_retint = getgrnam_r(a, &PL_reentrant_buffer->_grent_struct, PL_reentrant_buffer->_grent_buffer, PL_reentrant_buffer->_grent_size)) == 0 ? &PL_reentrant_buffer->_grent_struct : ((PL_reentrant_retint == ERANGE) ? (struct group *) Perl_reentrant_retry("getgrnam", a) : 0))
947 #   endif
948 #   if !defined(getgrnam) && GETGRNAM_R_PROTO == REENTRANT_PROTO_S_CSBI
949 #       define getgrnam(a) (getgrnam_r(a, &PL_reentrant_buffer->_grent_struct, PL_reentrant_buffer->_grent_buffer, PL_reentrant_buffer->_grent_size) ? &PL_reentrant_buffer->_grent_struct : ((errno == ERANGE) ? (struct group *) Perl_reentrant_retry("getgrnam", a) : 0))
950 #   endif
951 #endif /* HAS_GETGRNAM_R */
952
953 #ifdef HAS_GETHOSTBYADDR_R
954 #   undef gethostbyaddr
955 #   if !defined(gethostbyaddr) && GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_CWISBWRE
956 #       define gethostbyaddr(a, b, c) ((PL_reentrant_retint = gethostbyaddr_r(a, b, c, &PL_reentrant_buffer->_hostent_struct, PL_reentrant_buffer->_hostent_buffer, PL_reentrant_buffer->_hostent_size, &PL_reentrant_buffer->_hostent_ptr, &PL_reentrant_buffer->_hostent_errno)) == 0 ? PL_reentrant_buffer->_hostent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostbyaddr", a, b, c) : 0))
957 #   endif
958 #   if !defined(gethostbyaddr) && GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CWISBWIE
959 #       define gethostbyaddr(a, b, c) (gethostbyaddr_r(a, b, c, &PL_reentrant_buffer->_hostent_struct, PL_reentrant_buffer->_hostent_buffer, PL_reentrant_buffer->_hostent_size, PL_reentrant_buffer->_hostent_size, &PL_reentrant_buffer->_hostent_errno) ? &PL_reentrant_buffer->_hostent_struct : ((errno == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostbyaddr", a, b, c) : 0))
960 #   endif
961 #   if !defined(gethostbyaddr) && GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CWISBIE
962 #       define gethostbyaddr(a, b, c) (gethostbyaddr_r(a, b, c, &PL_reentrant_buffer->_hostent_struct, PL_reentrant_buffer->_hostent_buffer, PL_reentrant_buffer->_hostent_size, &PL_reentrant_buffer->_hostent_errno) ? &PL_reentrant_buffer->_hostent_struct : ((errno == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostbyaddr", a, b, c) : 0))
963 #   endif
964 #   if !defined(gethostbyaddr) && GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_TWISBIE
965 #       define gethostbyaddr(a, b, c) (gethostbyaddr_r(a, b, c, &PL_reentrant_buffer->_hostent_struct, PL_reentrant_buffer->_hostent_buffer, PL_reentrant_buffer->_hostent_size, &PL_reentrant_buffer->_hostent_errno) ? &PL_reentrant_buffer->_hostent_struct : ((errno == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostbyaddr", a, b, c) : 0))
966 #   endif
967 #   if !defined(gethostbyaddr) && GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CIISBIE
968 #       define gethostbyaddr(a, b, c) (gethostbyaddr_r(a, b, c, &PL_reentrant_buffer->_hostent_struct, PL_reentrant_buffer->_hostent_buffer, PL_reentrant_buffer->_hostent_size, &PL_reentrant_buffer->_hostent_errno) ? &PL_reentrant_buffer->_hostent_struct : ((errno == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostbyaddr", a, b, c) : 0))
969 #   endif
970 #   if !defined(gethostbyaddr) && GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CSBIE
971 #       define gethostbyaddr(a, b, c) (gethostbyaddr_r(a, b, c, PL_reentrant_buffer->_hostent_size, &PL_reentrant_buffer->_hostent_errno) ? 1 : ((errno == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostbyaddr", a, b, c) : 0))
972 #   endif
973 #   if !defined(gethostbyaddr) && GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_TSBIE
974 #       define gethostbyaddr(a, b, c) (gethostbyaddr_r(a, b, c, PL_reentrant_buffer->_hostent_size, &PL_reentrant_buffer->_hostent_errno) ? 1 : ((errno == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostbyaddr", a, b, c) : 0))
975 #   endif
976 #   if !defined(gethostbyaddr) && GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_CWISD
977 #       define gethostbyaddr(a, b, c) ((PL_reentrant_retint = gethostbyaddr_r(a, b, c, &PL_reentrant_buffer->_hostent_struct, &PL_reentrant_buffer->_hostent_data)) == 0 ? &PL_reentrant_buffer->_hostent_struct : ((PL_reentrant_retint == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostbyaddr", a, b, c) : 0))
978 #   endif
979 #   if !defined(gethostbyaddr) && GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_CIISD
980 #       define gethostbyaddr(a, b, c) ((PL_reentrant_retint = gethostbyaddr_r(a, b, c, &PL_reentrant_buffer->_hostent_struct, &PL_reentrant_buffer->_hostent_data)) == 0 ? &PL_reentrant_buffer->_hostent_struct : ((PL_reentrant_retint == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostbyaddr", a, b, c) : 0))
981 #   endif
982 #   if !defined(gethostbyaddr) && GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_CII
983 #       define gethostbyaddr(a, b, c) ((PL_reentrant_retint = gethostbyaddr_r(a, b, c)) == 0 ? 1 : ((PL_reentrant_retint == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostbyaddr", a, b, c) : 0))
984 #   endif
985 #   if !defined(gethostbyaddr) && GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_TsISBWRE
986 #       define gethostbyaddr(a, b, c) ((PL_reentrant_retint = gethostbyaddr_r(a, b, c, &PL_reentrant_buffer->_hostent_struct, PL_reentrant_buffer->_hostent_buffer, PL_reentrant_buffer->_hostent_size, &PL_reentrant_buffer->_hostent_ptr, &PL_reentrant_buffer->_hostent_errno)) == 0 ? PL_reentrant_buffer->_hostent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostbyaddr", a, b, c) : 0))
987 #   endif
988 #endif /* HAS_GETHOSTBYADDR_R */
989
990 #ifdef HAS_GETHOSTBYNAME_R
991 #   undef gethostbyname
992 #   if !defined(gethostbyname) && GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE
993 #       define gethostbyname(a) ((PL_reentrant_retint = gethostbyname_r(a, &PL_reentrant_buffer->_hostent_struct, PL_reentrant_buffer->_hostent_buffer, PL_reentrant_buffer->_hostent_size, &PL_reentrant_buffer->_hostent_ptr, &PL_reentrant_buffer->_hostent_errno)) == 0 ? PL_reentrant_buffer->_hostent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostbyname", a) : 0))
994 #   endif
995 #   if !defined(gethostbyname) && GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_S_CSBIE
996 #       define gethostbyname(a) (gethostbyname_r(a, &PL_reentrant_buffer->_hostent_struct, PL_reentrant_buffer->_hostent_buffer, PL_reentrant_buffer->_hostent_size, &PL_reentrant_buffer->_hostent_errno) ? &PL_reentrant_buffer->_hostent_struct : ((errno == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostbyname", a) : 0))
997 #   endif
998 #   if !defined(gethostbyname) && GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSD
999 #       define gethostbyname(a) ((PL_reentrant_retint = gethostbyname_r(a, &PL_reentrant_buffer->_hostent_struct, &PL_reentrant_buffer->_hostent_data)) == 0 ? &PL_reentrant_buffer->_hostent_struct : ((PL_reentrant_retint == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostbyname", a) : 0))
1000 #   endif
1001 #endif /* HAS_GETHOSTBYNAME_R */
1002
1003 #ifdef HAS_GETHOSTENT_R
1004 #   undef gethostent
1005 #   if !defined(gethostent) && GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBWRE
1006 #       define gethostent() ((PL_reentrant_retint = gethostent_r(&PL_reentrant_buffer->_hostent_struct, PL_reentrant_buffer->_hostent_buffer, PL_reentrant_buffer->_hostent_size, &PL_reentrant_buffer->_hostent_ptr, &PL_reentrant_buffer->_hostent_errno)) == 0 ? PL_reentrant_buffer->_hostent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostent") : 0))
1007 #   endif
1008 #   if !defined(gethostent) && GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBIE
1009 #       define gethostent() ((PL_reentrant_retint = gethostent_r(&PL_reentrant_buffer->_hostent_struct, PL_reentrant_buffer->_hostent_buffer, PL_reentrant_buffer->_hostent_size, &PL_reentrant_buffer->_hostent_errno)) == 0 ? &PL_reentrant_buffer->_hostent_struct : ((PL_reentrant_retint == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostent") : 0))
1010 #   endif
1011 #   if !defined(gethostent) && GETHOSTENT_R_PROTO == REENTRANT_PROTO_S_SBIE
1012 #       define gethostent() (gethostent_r(&PL_reentrant_buffer->_hostent_struct, PL_reentrant_buffer->_hostent_buffer, PL_reentrant_buffer->_hostent_size, &PL_reentrant_buffer->_hostent_errno) ? &PL_reentrant_buffer->_hostent_struct : ((errno == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostent") : 0))
1013 #   endif
1014 #   if !defined(gethostent) && GETHOSTENT_R_PROTO == REENTRANT_PROTO_S_SBI
1015 #       define gethostent() (gethostent_r(&PL_reentrant_buffer->_hostent_struct, PL_reentrant_buffer->_hostent_buffer, PL_reentrant_buffer->_hostent_size) ? &PL_reentrant_buffer->_hostent_struct : ((errno == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostent") : 0))
1016 #   endif
1017 #   if !defined(gethostent) && GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBI
1018 #       define gethostent() ((PL_reentrant_retint = gethostent_r(&PL_reentrant_buffer->_hostent_struct, PL_reentrant_buffer->_hostent_buffer, PL_reentrant_buffer->_hostent_size)) == 0 ? &PL_reentrant_buffer->_hostent_struct : ((PL_reentrant_retint == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostent") : 0))
1019 #   endif
1020 #   if !defined(gethostent) && GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SD
1021 #       define gethostent() ((PL_reentrant_retint = gethostent_r(&PL_reentrant_buffer->_hostent_struct, &PL_reentrant_buffer->_hostent_data)) == 0 ? &PL_reentrant_buffer->_hostent_struct : ((PL_reentrant_retint == ERANGE) ? (struct hostent *) Perl_reentrant_retry("gethostent") : 0))
1022 #   endif
1023 #endif /* HAS_GETHOSTENT_R */
1024
1025 #ifdef HAS_GETLOGIN_R
1026 #   undef getlogin
1027 #   if !defined(getlogin) && GETLOGIN_R_PROTO == REENTRANT_PROTO_I_BW
1028 #       define getlogin() ((PL_reentrant_retint = getlogin_r(PL_reentrant_buffer->_getlogin_buffer, PL_reentrant_buffer->_getlogin_size)) == 0 ? PL_reentrant_buffer->_getlogin_buffer : ((PL_reentrant_retint == ERANGE) ? (char *) Perl_reentrant_retry("getlogin") : 0))
1029 #   endif
1030 #   if !defined(getlogin) && GETLOGIN_R_PROTO == REENTRANT_PROTO_I_BI
1031 #       define getlogin() ((PL_reentrant_retint = getlogin_r(PL_reentrant_buffer->_getlogin_buffer, PL_reentrant_buffer->_getlogin_size)) == 0 ? PL_reentrant_buffer->_getlogin_buffer : ((PL_reentrant_retint == ERANGE) ? (char *) Perl_reentrant_retry("getlogin") : 0))
1032 #   endif
1033 #   if !defined(getlogin) && GETLOGIN_R_PROTO == REENTRANT_PROTO_B_BW
1034 #       define getlogin() getlogin_r(PL_reentrant_buffer->_getlogin_buffer, PL_reentrant_buffer->_getlogin_size)
1035 #   endif
1036 #   if !defined(getlogin) && GETLOGIN_R_PROTO == REENTRANT_PROTO_B_BI
1037 #       define getlogin() getlogin_r(PL_reentrant_buffer->_getlogin_buffer, PL_reentrant_buffer->_getlogin_size)
1038 #   endif
1039 #endif /* HAS_GETLOGIN_R */
1040
1041 #ifdef HAS_GETNETBYADDR_R
1042 #   undef getnetbyaddr
1043 #   if !defined(getnetbyaddr) && GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_UISBWRE
1044 #       define getnetbyaddr(a, b) ((PL_reentrant_retint = getnetbyaddr_r(a, b, &PL_reentrant_buffer->_netent_struct, PL_reentrant_buffer->_netent_buffer, PL_reentrant_buffer->_netent_size, &PL_reentrant_buffer->_netent_ptr, &PL_reentrant_buffer->_netent_errno)) == 0 ? PL_reentrant_buffer->_netent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct netent *) Perl_reentrant_retry("getnetbyaddr", a, b) : 0))
1045 #   endif
1046 #   if !defined(getnetbyaddr) && GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_LISBI
1047 #       define getnetbyaddr(a, b) ((PL_reentrant_retint = getnetbyaddr_r(a, b, &PL_reentrant_buffer->_netent_struct, PL_reentrant_buffer->_netent_buffer, PL_reentrant_buffer->_netent_size)) == 0 ? &PL_reentrant_buffer->_netent_struct : ((PL_reentrant_retint == ERANGE) ? (struct netent *) Perl_reentrant_retry("getnetbyaddr", a, b) : 0))
1048 #   endif
1049 #   if !defined(getnetbyaddr) && GETNETBYADDR_R_PROTO == REENTRANT_PROTO_S_TISBI
1050 #       define getnetbyaddr(a, b) (getnetbyaddr_r(a, b, &PL_reentrant_buffer->_netent_struct, PL_reentrant_buffer->_netent_buffer, PL_reentrant_buffer->_netent_size) ? &PL_reentrant_buffer->_netent_struct : ((errno == ERANGE) ? (struct netent *) Perl_reentrant_retry("getnetbyaddr", a, b) : 0))
1051 #   endif
1052 #   if !defined(getnetbyaddr) && GETNETBYADDR_R_PROTO == REENTRANT_PROTO_S_LISBI
1053 #       define getnetbyaddr(a, b) (getnetbyaddr_r(a, b, &PL_reentrant_buffer->_netent_struct, PL_reentrant_buffer->_netent_buffer, PL_reentrant_buffer->_netent_size) ? &PL_reentrant_buffer->_netent_struct : ((errno == ERANGE) ? (struct netent *) Perl_reentrant_retry("getnetbyaddr", a, b) : 0))
1054 #   endif
1055 #   if !defined(getnetbyaddr) && GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_TISD
1056 #       define getnetbyaddr(a, b) ((PL_reentrant_retint = getnetbyaddr_r(a, b, &PL_reentrant_buffer->_netent_struct, &PL_reentrant_buffer->_netent_data)) == 0 ? &PL_reentrant_buffer->_netent_struct : ((PL_reentrant_retint == ERANGE) ? (struct netent *) Perl_reentrant_retry("getnetbyaddr", a, b) : 0))
1057 #   endif
1058 #   if !defined(getnetbyaddr) && GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_LISD
1059 #       define getnetbyaddr(a, b) ((PL_reentrant_retint = getnetbyaddr_r(a, b, &PL_reentrant_buffer->_netent_struct, &PL_reentrant_buffer->_netent_data)) == 0 ? &PL_reentrant_buffer->_netent_struct : ((PL_reentrant_retint == ERANGE) ? (struct netent *) Perl_reentrant_retry("getnetbyaddr", a, b) : 0))
1060 #   endif
1061 #   if !defined(getnetbyaddr) && GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_IISD
1062 #       define getnetbyaddr(a, b) ((PL_reentrant_retint = getnetbyaddr_r(a, b, &PL_reentrant_buffer->_netent_struct, &PL_reentrant_buffer->_netent_data)) == 0 ? &PL_reentrant_buffer->_netent_struct : ((PL_reentrant_retint == ERANGE) ? (struct netent *) Perl_reentrant_retry("getnetbyaddr", a, b) : 0))
1063 #   endif
1064 #   if !defined(getnetbyaddr) && GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_uISBWRE
1065 #       define getnetbyaddr(a, b) ((PL_reentrant_retint = getnetbyaddr_r(a, b, &PL_reentrant_buffer->_netent_struct, PL_reentrant_buffer->_netent_buffer, PL_reentrant_buffer->_netent_size, &PL_reentrant_buffer->_netent_ptr, &PL_reentrant_buffer->_netent_errno)) == 0 ? PL_reentrant_buffer->_netent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct netent *) Perl_reentrant_retry("getnetbyaddr", a, b) : 0))
1066 #   endif
1067 #endif /* HAS_GETNETBYADDR_R */
1068
1069 #ifdef HAS_GETNETBYNAME_R
1070 #   undef getnetbyname
1071 #   if !defined(getnetbyname) && GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE
1072 #       define getnetbyname(a) ((PL_reentrant_retint = getnetbyname_r(a, &PL_reentrant_buffer->_netent_struct, PL_reentrant_buffer->_netent_buffer, PL_reentrant_buffer->_netent_size, &PL_reentrant_buffer->_netent_ptr, &PL_reentrant_buffer->_netent_errno)) == 0 ? PL_reentrant_buffer->_netent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct netent *) Perl_reentrant_retry("getnetbyname", a) : 0))
1073 #   endif
1074 #   if !defined(getnetbyname) && GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBI
1075 #       define getnetbyname(a) ((PL_reentrant_retint = getnetbyname_r(a, &PL_reentrant_buffer->_netent_struct, PL_reentrant_buffer->_netent_buffer, PL_reentrant_buffer->_netent_size)) == 0 ? &PL_reentrant_buffer->_netent_struct : ((PL_reentrant_retint == ERANGE) ? (struct netent *) Perl_reentrant_retry("getnetbyname", a) : 0))
1076 #   endif
1077 #   if !defined(getnetbyname) && GETNETBYNAME_R_PROTO == REENTRANT_PROTO_S_CSBI
1078 #       define getnetbyname(a) (getnetbyname_r(a, &PL_reentrant_buffer->_netent_struct, PL_reentrant_buffer->_netent_buffer, PL_reentrant_buffer->_netent_size) ? &PL_reentrant_buffer->_netent_struct : ((errno == ERANGE) ? (struct netent *) Perl_reentrant_retry("getnetbyname", a) : 0))
1079 #   endif
1080 #   if !defined(getnetbyname) && GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSD
1081 #       define getnetbyname(a) ((PL_reentrant_retint = getnetbyname_r(a, &PL_reentrant_buffer->_netent_struct, &PL_reentrant_buffer->_netent_data)) == 0 ? &PL_reentrant_buffer->_netent_struct : ((PL_reentrant_retint == ERANGE) ? (struct netent *) Perl_reentrant_retry("getnetbyname", a) : 0))
1082 #   endif
1083 #endif /* HAS_GETNETBYNAME_R */
1084
1085 #ifdef HAS_GETNETENT_R
1086 #   undef getnetent
1087 #   if !defined(getnetent) && GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBWRE
1088 #       define getnetent() ((PL_reentrant_retint = getnetent_r(&PL_reentrant_buffer->_netent_struct, PL_reentrant_buffer->_netent_buffer, PL_reentrant_buffer->_netent_size, &PL_reentrant_buffer->_netent_ptr, &PL_reentrant_buffer->_netent_errno)) == 0 ? PL_reentrant_buffer->_netent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct netent *) Perl_reentrant_retry("getnetent") : 0))
1089 #   endif
1090 #   if !defined(getnetent) && GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBIE
1091 #       define getnetent() ((PL_reentrant_retint = getnetent_r(&PL_reentrant_buffer->_netent_struct, PL_reentrant_buffer->_netent_buffer, PL_reentrant_buffer->_netent_size, &PL_reentrant_buffer->_netent_errno)) == 0 ? &PL_reentrant_buffer->_netent_struct : ((PL_reentrant_retint == ERANGE) ? (struct netent *) Perl_reentrant_retry("getnetent") : 0))
1092 #   endif
1093 #   if !defined(getnetent) && GETNETENT_R_PROTO == REENTRANT_PROTO_S_SBIE
1094 #       define getnetent() (getnetent_r(&PL_reentrant_buffer->_netent_struct, PL_reentrant_buffer->_netent_buffer, PL_reentrant_buffer->_netent_size, &PL_reentrant_buffer->_netent_errno) ? &PL_reentrant_buffer->_netent_struct : ((errno == ERANGE) ? (struct netent *) Perl_reentrant_retry("getnetent") : 0))
1095 #   endif
1096 #   if !defined(getnetent) && GETNETENT_R_PROTO == REENTRANT_PROTO_S_SBI
1097 #       define getnetent() (getnetent_r(&PL_reentrant_buffer->_netent_struct, PL_reentrant_buffer->_netent_buffer, PL_reentrant_buffer->_netent_size) ? &PL_reentrant_buffer->_netent_struct : ((errno == ERANGE) ? (struct netent *) Perl_reentrant_retry("getnetent") : 0))
1098 #   endif
1099 #   if !defined(getnetent) && GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBI
1100 #       define getnetent() ((PL_reentrant_retint = getnetent_r(&PL_reentrant_buffer->_netent_struct, PL_reentrant_buffer->_netent_buffer, PL_reentrant_buffer->_netent_size)) == 0 ? &PL_reentrant_buffer->_netent_struct : ((PL_reentrant_retint == ERANGE) ? (struct netent *) Perl_reentrant_retry("getnetent") : 0))
1101 #   endif
1102 #   if !defined(getnetent) && GETNETENT_R_PROTO == REENTRANT_PROTO_I_SD
1103 #       define getnetent() ((PL_reentrant_retint = getnetent_r(&PL_reentrant_buffer->_netent_struct, &PL_reentrant_buffer->_netent_data)) == 0 ? &PL_reentrant_buffer->_netent_struct : ((PL_reentrant_retint == ERANGE) ? (struct netent *) Perl_reentrant_retry("getnetent") : 0))
1104 #   endif
1105 #endif /* HAS_GETNETENT_R */
1106
1107 #ifdef HAS_GETPROTOBYNAME_R
1108 #   undef getprotobyname
1109 #   if !defined(getprotobyname) && GETPROTOBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWR
1110 #       define getprotobyname(a) ((PL_reentrant_retint = getprotobyname_r(a, &PL_reentrant_buffer->_protoent_struct, PL_reentrant_buffer->_protoent_buffer, PL_reentrant_buffer->_protoent_size, &PL_reentrant_buffer->_protoent_ptr)) == 0 ? PL_reentrant_buffer->_protoent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct protoent *) Perl_reentrant_retry("getprotobyname", a) : 0))
1111 #   endif
1112 #   if !defined(getprotobyname) && GETPROTOBYNAME_R_PROTO == REENTRANT_PROTO_S_CSBI
1113 #       define getprotobyname(a) (getprotobyname_r(a, &PL_reentrant_buffer->_protoent_struct, PL_reentrant_buffer->_protoent_buffer, PL_reentrant_buffer->_protoent_size) ? &PL_reentrant_buffer->_protoent_struct : ((errno == ERANGE) ? (struct protoent *) Perl_reentrant_retry("getprotobyname", a) : 0))
1114 #   endif
1115 #   if !defined(getprotobyname) && GETPROTOBYNAME_R_PROTO == REENTRANT_PROTO_I_CSD
1116 #       define getprotobyname(a) (REENTR_MEMZERO(&PL_reentrant_buffer->_protoent_data, sizeof(PL_reentrant_buffer->_protoent_data))(PL_reentrant_retint = getprotobyname_r(a, &PL_reentrant_buffer->_protoent_struct, &PL_reentrant_buffer->_protoent_data)) == 0 ? &PL_reentrant_buffer->_protoent_struct : ((PL_reentrant_retint == ERANGE) ? (struct protoent *) Perl_reentrant_retry("getprotobyname", a) : 0))
1117 #   endif
1118 #endif /* HAS_GETPROTOBYNAME_R */
1119
1120 #ifdef HAS_GETPROTOBYNUMBER_R
1121 #   undef getprotobynumber
1122 #   if !defined(getprotobynumber) && GETPROTOBYNUMBER_R_PROTO == REENTRANT_PROTO_I_ISBWR
1123 #       define getprotobynumber(a) ((PL_reentrant_retint = getprotobynumber_r(a, &PL_reentrant_buffer->_protoent_struct, PL_reentrant_buffer->_protoent_buffer, PL_reentrant_buffer->_protoent_size, &PL_reentrant_buffer->_protoent_ptr)) == 0 ? PL_reentrant_buffer->_protoent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct protoent *) Perl_reentrant_retry("getprotobynumber", a) : 0))
1124 #   endif
1125 #   if !defined(getprotobynumber) && GETPROTOBYNUMBER_R_PROTO == REENTRANT_PROTO_S_ISBI
1126 #       define getprotobynumber(a) (getprotobynumber_r(a, &PL_reentrant_buffer->_protoent_struct, PL_reentrant_buffer->_protoent_buffer, PL_reentrant_buffer->_protoent_size) ? &PL_reentrant_buffer->_protoent_struct : ((errno == ERANGE) ? (struct protoent *) Perl_reentrant_retry("getprotobynumber", a) : 0))
1127 #   endif
1128 #   if !defined(getprotobynumber) && GETPROTOBYNUMBER_R_PROTO == REENTRANT_PROTO_I_ISD
1129 #       define getprotobynumber(a) (REENTR_MEMZERO(&PL_reentrant_buffer->_protoent_data, sizeof(PL_reentrant_buffer->_protoent_data))(PL_reentrant_retint = getprotobynumber_r(a, &PL_reentrant_buffer->_protoent_struct, &PL_reentrant_buffer->_protoent_data)) == 0 ? &PL_reentrant_buffer->_protoent_struct : ((PL_reentrant_retint == ERANGE) ? (struct protoent *) Perl_reentrant_retry("getprotobynumber", a) : 0))
1130 #   endif
1131 #endif /* HAS_GETPROTOBYNUMBER_R */
1132
1133 #ifdef HAS_GETPROTOENT_R
1134 #   undef getprotoent
1135 #   if !defined(getprotoent) && GETPROTOENT_R_PROTO == REENTRANT_PROTO_I_SBWR
1136 #       define getprotoent() ((PL_reentrant_retint = getprotoent_r(&PL_reentrant_buffer->_protoent_struct, PL_reentrant_buffer->_protoent_buffer, PL_reentrant_buffer->_protoent_size, &PL_reentrant_buffer->_protoent_ptr)) == 0 ? PL_reentrant_buffer->_protoent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct protoent *) Perl_reentrant_retry("getprotoent") : 0))
1137 #   endif
1138 #   if !defined(getprotoent) && GETPROTOENT_R_PROTO == REENTRANT_PROTO_I_SBI
1139 #       define getprotoent() ((PL_reentrant_retint = getprotoent_r(&PL_reentrant_buffer->_protoent_struct, PL_reentrant_buffer->_protoent_buffer, PL_reentrant_buffer->_protoent_size)) == 0 ? &PL_reentrant_buffer->_protoent_struct : ((PL_reentrant_retint == ERANGE) ? (struct protoent *) Perl_reentrant_retry("getprotoent") : 0))
1140 #   endif
1141 #   if !defined(getprotoent) && GETPROTOENT_R_PROTO == REENTRANT_PROTO_S_SBI
1142 #       define getprotoent() (getprotoent_r(&PL_reentrant_buffer->_protoent_struct, PL_reentrant_buffer->_protoent_buffer, PL_reentrant_buffer->_protoent_size) ? &PL_reentrant_buffer->_protoent_struct : ((errno == ERANGE) ? (struct protoent *) Perl_reentrant_retry("getprotoent") : 0))
1143 #   endif
1144 #   if !defined(getprotoent) && GETPROTOENT_R_PROTO == REENTRANT_PROTO_I_SD
1145 #       define getprotoent() (REENTR_MEMZERO(&PL_reentrant_buffer->_protoent_data, sizeof(PL_reentrant_buffer->_protoent_data))(PL_reentrant_retint = getprotoent_r(&PL_reentrant_buffer->_protoent_struct, &PL_reentrant_buffer->_protoent_data)) == 0 ? &PL_reentrant_buffer->_protoent_struct : ((PL_reentrant_retint == ERANGE) ? (struct protoent *) Perl_reentrant_retry("getprotoent") : 0))
1146 #   endif
1147 #endif /* HAS_GETPROTOENT_R */
1148
1149 #ifdef HAS_GETPWENT_R
1150 #   undef getpwent
1151 #   if !defined(getpwent) && GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBWR
1152 #       define getpwent() ((PL_reentrant_retint = getpwent_r(&PL_reentrant_buffer->_pwent_struct, PL_reentrant_buffer->_pwent_buffer, PL_reentrant_buffer->_pwent_size, &PL_reentrant_buffer->_pwent_ptr)) == 0 ? PL_reentrant_buffer->_pwent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct passwd *) Perl_reentrant_retry("getpwent") : 0))
1153 #   endif
1154 #   if !defined(getpwent) && GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBIR
1155 #       define getpwent() ((PL_reentrant_retint = getpwent_r(&PL_reentrant_buffer->_pwent_struct, PL_reentrant_buffer->_pwent_buffer, PL_reentrant_buffer->_pwent_size, &PL_reentrant_buffer->_pwent_ptr)) == 0 ? PL_reentrant_buffer->_pwent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct passwd *) Perl_reentrant_retry("getpwent") : 0))
1156 #   endif
1157 #   if !defined(getpwent) && GETPWENT_R_PROTO == REENTRANT_PROTO_S_SBW
1158 #       define getpwent() (getpwent_r(&PL_reentrant_buffer->_pwent_struct, PL_reentrant_buffer->_pwent_buffer, PL_reentrant_buffer->_pwent_size) ? &PL_reentrant_buffer->_pwent_struct : ((errno == ERANGE) ? (struct passwd *) Perl_reentrant_retry("getpwent") : 0))
1159 #   endif
1160 #   if !defined(getpwent) && GETPWENT_R_PROTO == REENTRANT_PROTO_S_SBI
1161 #       define getpwent() (getpwent_r(&PL_reentrant_buffer->_pwent_struct, PL_reentrant_buffer->_pwent_buffer, PL_reentrant_buffer->_pwent_size) ? &PL_reentrant_buffer->_pwent_struct : ((errno == ERANGE) ? (struct passwd *) Perl_reentrant_retry("getpwent") : 0))
1162 #   endif
1163 #   if !defined(getpwent) && GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBI
1164 #       define getpwent() ((PL_reentrant_retint = getpwent_r(&PL_reentrant_buffer->_pwent_struct, PL_reentrant_buffer->_pwent_buffer, PL_reentrant_buffer->_pwent_size)) == 0 ? &PL_reentrant_buffer->_pwent_struct : ((PL_reentrant_retint == ERANGE) ? (struct passwd *) Perl_reentrant_retry("getpwent") : 0))
1165 #   endif
1166 #   if !defined(getpwent) && GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBIH
1167 #       define getpwent() ((PL_reentrant_retint = getpwent_r(&PL_reentrant_buffer->_pwent_struct, PL_reentrant_buffer->_pwent_buffer, PL_reentrant_buffer->_pwent_size, &PL_reentrant_buffer->_pwent_fptr)) == 0 ? &PL_reentrant_buffer->_pwent_struct : ((PL_reentrant_retint == ERANGE) ? (struct passwd *) Perl_reentrant_retry("getpwent") : 0))
1168 #   endif
1169 #endif /* HAS_GETPWENT_R */
1170
1171 #ifdef HAS_GETPWNAM_R
1172 #   undef getpwnam
1173 #   if !defined(getpwnam) && GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR
1174 #       define getpwnam(a) ((PL_reentrant_retint = getpwnam_r(a, &PL_reentrant_buffer->_pwent_struct, PL_reentrant_buffer->_pwent_buffer, PL_reentrant_buffer->_pwent_size, &PL_reentrant_buffer->_pwent_ptr)) == 0 ? PL_reentrant_buffer->_pwent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct passwd *) Perl_reentrant_retry("getpwnam", a) : 0))
1175 #   endif
1176 #   if !defined(getpwnam) && GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBIR
1177 #       define getpwnam(a) ((PL_reentrant_retint = getpwnam_r(a, &PL_reentrant_buffer->_pwent_struct, PL_reentrant_buffer->_pwent_buffer, PL_reentrant_buffer->_pwent_size, &PL_reentrant_buffer->_pwent_ptr)) == 0 ? PL_reentrant_buffer->_pwent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct passwd *) Perl_reentrant_retry("getpwnam", a) : 0))
1178 #   endif
1179 #   if !defined(getpwnam) && GETPWNAM_R_PROTO == REENTRANT_PROTO_S_CSBI
1180 #       define getpwnam(a) (getpwnam_r(a, &PL_reentrant_buffer->_pwent_struct, PL_reentrant_buffer->_pwent_buffer, PL_reentrant_buffer->_pwent_size) ? &PL_reentrant_buffer->_pwent_struct : ((errno == ERANGE) ? (struct passwd *) Perl_reentrant_retry("getpwnam", a) : 0))
1181 #   endif
1182 #   if !defined(getpwnam) && GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBI
1183 #       define getpwnam(a) ((PL_reentrant_retint = getpwnam_r(a, &PL_reentrant_buffer->_pwent_struct, PL_reentrant_buffer->_pwent_buffer, PL_reentrant_buffer->_pwent_size)) == 0 ? &PL_reentrant_buffer->_pwent_struct : ((PL_reentrant_retint == ERANGE) ? (struct passwd *) Perl_reentrant_retry("getpwnam", a) : 0))
1184 #   endif
1185 #endif /* HAS_GETPWNAM_R */
1186
1187 #ifdef HAS_GETPWUID_R
1188 #   undef getpwuid
1189 #   if !defined(getpwuid) && GETPWUID_R_PROTO == REENTRANT_PROTO_I_TSBWR
1190 #       define getpwuid(a) ((PL_reentrant_retint = getpwuid_r(a, &PL_reentrant_buffer->_pwent_struct, PL_reentrant_buffer->_pwent_buffer, PL_reentrant_buffer->_pwent_size, &PL_reentrant_buffer->_pwent_ptr)) == 0 ? PL_reentrant_buffer->_pwent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct passwd *) Perl_reentrant_retry("getpwuid", a) : 0))
1191 #   endif
1192 #   if !defined(getpwuid) && GETPWUID_R_PROTO == REENTRANT_PROTO_I_TSBIR
1193 #       define getpwuid(a) ((PL_reentrant_retint = getpwuid_r(a, &PL_reentrant_buffer->_pwent_struct, PL_reentrant_buffer->_pwent_buffer, PL_reentrant_buffer->_pwent_size, &PL_reentrant_buffer->_pwent_ptr)) == 0 ? PL_reentrant_buffer->_pwent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct passwd *) Perl_reentrant_retry("getpwuid", a) : 0))
1194 #   endif
1195 #   if !defined(getpwuid) && GETPWUID_R_PROTO == REENTRANT_PROTO_I_TSBI
1196 #       define getpwuid(a) ((PL_reentrant_retint = getpwuid_r(a, &PL_reentrant_buffer->_pwent_struct, PL_reentrant_buffer->_pwent_buffer, PL_reentrant_buffer->_pwent_size)) == 0 ? &PL_reentrant_buffer->_pwent_struct : ((PL_reentrant_retint == ERANGE) ? (struct passwd *) Perl_reentrant_retry("getpwuid", a) : 0))
1197 #   endif
1198 #   if !defined(getpwuid) && GETPWUID_R_PROTO == REENTRANT_PROTO_S_TSBI
1199 #       define getpwuid(a) (getpwuid_r(a, &PL_reentrant_buffer->_pwent_struct, PL_reentrant_buffer->_pwent_buffer, PL_reentrant_buffer->_pwent_size) ? &PL_reentrant_buffer->_pwent_struct : ((errno == ERANGE) ? (struct passwd *) Perl_reentrant_retry("getpwuid", a) : 0))
1200 #   endif
1201 #endif /* HAS_GETPWUID_R */
1202
1203 #ifdef HAS_GETSERVBYNAME_R
1204 #   undef getservbyname
1205 #   if !defined(getservbyname) && GETSERVBYNAME_R_PROTO == REENTRANT_PROTO_I_CCSBWR
1206 #       define getservbyname(a, b) ((PL_reentrant_retint = getservbyname_r(a, b, &PL_reentrant_buffer->_servent_struct, PL_reentrant_buffer->_servent_buffer, PL_reentrant_buffer->_servent_size, &PL_reentrant_buffer->_servent_ptr)) == 0 ? PL_reentrant_buffer->_servent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct servent *) Perl_reentrant_retry("getservbyname", a, b) : 0))
1207 #   endif
1208 #   if !defined(getservbyname) && GETSERVBYNAME_R_PROTO == REENTRANT_PROTO_S_CCSBI
1209 #       define getservbyname(a, b) (getservbyname_r(a, b, &PL_reentrant_buffer->_servent_struct, PL_reentrant_buffer->_servent_buffer, PL_reentrant_buffer->_servent_size) ? &PL_reentrant_buffer->_servent_struct : ((errno == ERANGE) ? (struct servent *) Perl_reentrant_retry("getservbyname", a, b) : 0))
1210 #   endif
1211 #   if !defined(getservbyname) && GETSERVBYNAME_R_PROTO == REENTRANT_PROTO_I_CCSD
1212 #       define getservbyname(a, b) (REENTR_MEMZERO(&PL_reentrant_buffer->_servent_data, sizeof(PL_reentrant_buffer->_servent_data))(PL_reentrant_retint = getservbyname_r(a, b, &PL_reentrant_buffer->_servent_struct, &PL_reentrant_buffer->_servent_data)) == 0 ? &PL_reentrant_buffer->_servent_struct : ((PL_reentrant_retint == ERANGE) ? (struct servent *) Perl_reentrant_retry("getservbyname", a, b) : 0))
1213 #   endif
1214 #endif /* HAS_GETSERVBYNAME_R */
1215
1216 #ifdef HAS_GETSERVBYPORT_R
1217 #   undef getservbyport
1218 #   if !defined(getservbyport) && GETSERVBYPORT_R_PROTO == REENTRANT_PROTO_I_ICSBWR
1219 #       define getservbyport(a, b) ((PL_reentrant_retint = getservbyport_r(a, b, &PL_reentrant_buffer->_servent_struct, PL_reentrant_buffer->_servent_buffer, PL_reentrant_buffer->_servent_size, &PL_reentrant_buffer->_servent_ptr)) == 0 ? PL_reentrant_buffer->_servent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct servent *) Perl_reentrant_retry("getservbyport", a, b) : 0))
1220 #   endif
1221 #   if !defined(getservbyport) && GETSERVBYPORT_R_PROTO == REENTRANT_PROTO_S_ICSBI
1222 #       define getservbyport(a, b) (getservbyport_r(a, b, &PL_reentrant_buffer->_servent_struct, PL_reentrant_buffer->_servent_buffer, PL_reentrant_buffer->_servent_size) ? &PL_reentrant_buffer->_servent_struct : ((errno == ERANGE) ? (struct servent *) Perl_reentrant_retry("getservbyport", a, b) : 0))
1223 #   endif
1224 #   if !defined(getservbyport) && GETSERVBYPORT_R_PROTO == REENTRANT_PROTO_I_ICSD
1225 #       define getservbyport(a, b) (REENTR_MEMZERO(&PL_reentrant_buffer->_servent_data, sizeof(PL_reentrant_buffer->_servent_data))(PL_reentrant_retint = getservbyport_r(a, b, &PL_reentrant_buffer->_servent_struct, &PL_reentrant_buffer->_servent_data)) == 0 ? &PL_reentrant_buffer->_servent_struct : ((PL_reentrant_retint == ERANGE) ? (struct servent *) Perl_reentrant_retry("getservbyport", a, b) : 0))
1226 #   endif
1227 #endif /* HAS_GETSERVBYPORT_R */
1228
1229 #ifdef HAS_GETSERVENT_R
1230 #   undef getservent
1231 #   if !defined(getservent) && GETSERVENT_R_PROTO == REENTRANT_PROTO_I_SBWR
1232 #       define getservent() ((PL_reentrant_retint = getservent_r(&PL_reentrant_buffer->_servent_struct, PL_reentrant_buffer->_servent_buffer, PL_reentrant_buffer->_servent_size, &PL_reentrant_buffer->_servent_ptr)) == 0 ? PL_reentrant_buffer->_servent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct servent *) Perl_reentrant_retry("getservent") : 0))
1233 #   endif
1234 #   if !defined(getservent) && GETSERVENT_R_PROTO == REENTRANT_PROTO_I_SBI
1235 #       define getservent() ((PL_reentrant_retint = getservent_r(&PL_reentrant_buffer->_servent_struct, PL_reentrant_buffer->_servent_buffer, PL_reentrant_buffer->_servent_size)) == 0 ? &PL_reentrant_buffer->_servent_struct : ((PL_reentrant_retint == ERANGE) ? (struct servent *) Perl_reentrant_retry("getservent") : 0))
1236 #   endif
1237 #   if !defined(getservent) && GETSERVENT_R_PROTO == REENTRANT_PROTO_S_SBI
1238 #       define getservent() (getservent_r(&PL_reentrant_buffer->_servent_struct, PL_reentrant_buffer->_servent_buffer, PL_reentrant_buffer->_servent_size) ? &PL_reentrant_buffer->_servent_struct : ((errno == ERANGE) ? (struct servent *) Perl_reentrant_retry("getservent") : 0))
1239 #   endif
1240 #   if !defined(getservent) && GETSERVENT_R_PROTO == REENTRANT_PROTO_I_SD
1241 #       define getservent() (REENTR_MEMZERO(&PL_reentrant_buffer->_servent_data, sizeof(PL_reentrant_buffer->_servent_data))(PL_reentrant_retint = getservent_r(&PL_reentrant_buffer->_servent_struct, &PL_reentrant_buffer->_servent_data)) == 0 ? &PL_reentrant_buffer->_servent_struct : ((PL_reentrant_retint == ERANGE) ? (struct servent *) Perl_reentrant_retry("getservent") : 0))
1242 #   endif
1243 #endif /* HAS_GETSERVENT_R */
1244
1245 #ifdef HAS_GETSPNAM_R
1246 #   undef getspnam
1247 #   if !defined(getspnam) && GETSPNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR
1248 #       define getspnam(a) ((PL_reentrant_retint = getspnam_r(a, &PL_reentrant_buffer->_spent_struct, PL_reentrant_buffer->_spent_buffer, PL_reentrant_buffer->_spent_size, &PL_reentrant_buffer->_spent_ptr)) == 0 ? PL_reentrant_buffer->_spent_ptr : ((PL_reentrant_retint == ERANGE) ? (struct spwd *) Perl_reentrant_retry("getspnam", a) : 0))
1249 #   endif
1250 #   if !defined(getspnam) && GETSPNAM_R_PROTO == REENTRANT_PROTO_S_CSBI
1251 #       define getspnam(a) (getspnam_r(a, &PL_reentrant_buffer->_spent_struct, PL_reentrant_buffer->_spent_buffer, PL_reentrant_buffer->_spent_size) ? &PL_reentrant_buffer->_spent_struct : ((errno == ERANGE) ? (struct spwd *) Perl_reentrant_retry("getspnam", a) : 0))
1252 #   endif
1253 #endif /* HAS_GETSPNAM_R */
1254
1255 #ifdef HAS_GMTIME_R
1256 #   undef gmtime
1257 #   if !defined(gmtime) && GMTIME_R_PROTO == REENTRANT_PROTO_S_TS
1258 #       define gmtime(a) (gmtime_r(a, &PL_reentrant_buffer->_gmtime_struct) ? &PL_reentrant_buffer->_gmtime_struct : 0)
1259 #   endif
1260 #   if !defined(gmtime) && GMTIME_R_PROTO == REENTRANT_PROTO_I_TS
1261 #       define gmtime(a) (gmtime_r(a, &PL_reentrant_buffer->_gmtime_struct) == 0 ? &PL_reentrant_buffer->_gmtime_struct : 0)
1262 #   endif
1263 #endif /* HAS_GMTIME_R */
1264
1265 #ifdef HAS_LOCALTIME_R
1266 #   undef localtime
1267 #   if !defined(localtime) && LOCALTIME_R_PROTO == REENTRANT_PROTO_S_TS
1268 #       define localtime(a) (localtime_r(a, &PL_reentrant_buffer->_localtime_struct) ? &PL_reentrant_buffer->_localtime_struct : 0)
1269 #   endif
1270 #   if !defined(localtime) && LOCALTIME_R_PROTO == REENTRANT_PROTO_I_TS
1271 #       define localtime(a) (localtime_r(a, &PL_reentrant_buffer->_localtime_struct) == 0 ? &PL_reentrant_buffer->_localtime_struct : 0)
1272 #   endif
1273 #endif /* HAS_LOCALTIME_R */
1274
1275 #ifdef HAS_RANDOM_R
1276 #   undef random
1277 #   if !defined(random) && RANDOM_R_PROTO == REENTRANT_PROTO_I_iS
1278 #       define random() (random_r(&PL_reentrant_buffer->_random_retval, &PL_reentrant_buffer->_random_struct) == 0 ? PL_reentrant_buffer->_random_retval : 0)
1279 #   endif
1280 #   if !defined(random) && RANDOM_R_PROTO == REENTRANT_PROTO_I_lS
1281 #       define random() (random_r(&PL_reentrant_buffer->_random_retval, &PL_reentrant_buffer->_random_struct) == 0 ? PL_reentrant_buffer->_random_retval : 0)
1282 #   endif
1283 #   if !defined(random) && RANDOM_R_PROTO == REENTRANT_PROTO_I_St
1284 #       define random() (random_r(&PL_reentrant_buffer->_random_struct, &PL_reentrant_buffer->_random_retval) == 0 ? PL_reentrant_buffer->_random_retval : 0)
1285 #   endif
1286 #endif /* HAS_RANDOM_R */
1287
1288 #ifdef HAS_READDIR_R
1289 #   undef readdir
1290 #   if !defined(readdir) && READDIR_R_PROTO == REENTRANT_PROTO_I_TSR
1291 #       define readdir(a) (readdir_r(a, PL_reentrant_buffer->_readdir_struct, &PL_reentrant_buffer->_readdir_ptr) == 0 ? PL_reentrant_buffer->_readdir_ptr : 0)
1292 #   endif
1293 #   if !defined(readdir) && READDIR_R_PROTO == REENTRANT_PROTO_I_TS
1294 #       define readdir(a) (readdir_r(a, PL_reentrant_buffer->_readdir_struct) == 0 ? PL_reentrant_buffer->_readdir_struct : 0)
1295 #   endif
1296 #endif /* HAS_READDIR_R */
1297
1298 #ifdef HAS_READDIR64_R
1299 #   undef readdir64
1300 #   if !defined(readdir64) && READDIR64_R_PROTO == REENTRANT_PROTO_I_TSR
1301 #       define readdir64(a) (readdir64_r(a, PL_reentrant_buffer->_readdir64_struct, &PL_reentrant_buffer->_readdir64_ptr) == 0 ? PL_reentrant_buffer->_readdir64_ptr : 0)
1302 #   endif
1303 #   if !defined(readdir64) && READDIR64_R_PROTO == REENTRANT_PROTO_I_TS
1304 #       define readdir64(a) (readdir64_r(a, PL_reentrant_buffer->_readdir64_struct) == 0 ? PL_reentrant_buffer->_readdir64_struct : 0)
1305 #   endif
1306 #endif /* HAS_READDIR64_R */
1307
1308 #ifdef HAS_SETGRENT_R
1309 #   undef setgrent
1310 #   if !defined(setgrent) && SETGRENT_R_PROTO == REENTRANT_PROTO_I_H
1311 #       define setgrent() (setgrent_r(&PL_reentrant_buffer->_grent_fptr) == 0 ? 1 : 0)
1312 #   endif
1313 #   if !defined(setgrent) && SETGRENT_R_PROTO == REENTRANT_PROTO_V_H
1314 #       define setgrent() setgrent_r(&PL_reentrant_buffer->_grent_fptr)
1315 #   endif
1316 #endif /* HAS_SETGRENT_R */
1317
1318 #ifdef HAS_SETHOSTENT_R
1319 #   undef sethostent
1320 #   if !defined(sethostent) && SETHOSTENT_R_PROTO == REENTRANT_PROTO_I_ID
1321 #       define sethostent(a) (sethostent_r(a, &PL_reentrant_buffer->_hostent_data) == 0 ? 1 : 0)
1322 #   endif
1323 #   if !defined(sethostent) && SETHOSTENT_R_PROTO == REENTRANT_PROTO_V_ID
1324 #       define sethostent(a) sethostent_r(a, &PL_reentrant_buffer->_hostent_data)
1325 #   endif
1326 #endif /* HAS_SETHOSTENT_R */
1327
1328 #ifdef HAS_SETLOCALE_R
1329 #   undef setlocale
1330 #   if !defined(setlocale) && SETLOCALE_R_PROTO == REENTRANT_PROTO_I_ICBI
1331 #       define setlocale(a, b) (setlocale_r(a, b, PL_reentrant_buffer->_setlocale_buffer, PL_reentrant_buffer->_setlocale_size) == 0 ? PL_reentrant_buffer->_setlocale_buffer : 0)
1332 #   endif
1333 #endif /* HAS_SETLOCALE_R */
1334
1335 #ifdef HAS_SETNETENT_R
1336 #   undef setnetent
1337 #   if !defined(setnetent) && SETNETENT_R_PROTO == REENTRANT_PROTO_I_ID
1338 #       define setnetent(a) (setnetent_r(a, &PL_reentrant_buffer->_netent_data) == 0 ? 1 : 0)
1339 #   endif
1340 #   if !defined(setnetent) && SETNETENT_R_PROTO == REENTRANT_PROTO_V_ID
1341 #       define setnetent(a) setnetent_r(a, &PL_reentrant_buffer->_netent_data)
1342 #   endif
1343 #endif /* HAS_SETNETENT_R */
1344
1345 #ifdef HAS_SETPROTOENT_R
1346 #   undef setprotoent
1347 #   if !defined(setprotoent) && SETPROTOENT_R_PROTO == REENTRANT_PROTO_I_ID
1348 #       define setprotoent(a) (setprotoent_r(a, &PL_reentrant_buffer->_protoent_data) == 0 ? 1 : 0)
1349 #   endif
1350 #   if !defined(setprotoent) && SETPROTOENT_R_PROTO == REENTRANT_PROTO_V_ID
1351 #       define setprotoent(a) setprotoent_r(a, &PL_reentrant_buffer->_protoent_data)
1352 #   endif
1353 #endif /* HAS_SETPROTOENT_R */
1354
1355 #ifdef HAS_SETPWENT_R
1356 #   undef setpwent
1357 #   if !defined(setpwent) && SETPWENT_R_PROTO == REENTRANT_PROTO_I_H
1358 #       define setpwent() (setpwent_r(&PL_reentrant_buffer->_pwent_fptr) == 0 ? 1 : 0)
1359 #   endif
1360 #   if !defined(setpwent) && SETPWENT_R_PROTO == REENTRANT_PROTO_V_H
1361 #       define setpwent() setpwent_r(&PL_reentrant_buffer->_pwent_fptr)
1362 #   endif
1363 #endif /* HAS_SETPWENT_R */
1364
1365 #ifdef HAS_SETSERVENT_R
1366 #   undef setservent
1367 #   if !defined(setservent) && SETSERVENT_R_PROTO == REENTRANT_PROTO_I_ID
1368 #       define setservent(a) (setservent_r(a, &PL_reentrant_buffer->_servent_data) == 0 ? 1 : 0)
1369 #   endif
1370 #   if !defined(setservent) && SETSERVENT_R_PROTO == REENTRANT_PROTO_V_ID
1371 #       define setservent(a) setservent_r(a, &PL_reentrant_buffer->_servent_data)
1372 #   endif
1373 #endif /* HAS_SETSERVENT_R */
1374
1375 #ifdef HAS_SRAND48_R
1376 #   undef srand48
1377 #   if !defined(srand48) && SRAND48_R_PROTO == REENTRANT_PROTO_I_LS
1378 #       define srand48(a) (srand48_r(a, &PL_reentrant_buffer->_drand48_struct) == 0 ? &PL_reentrant_buffer->_drand48_struct : 0)
1379 #   endif
1380 #endif /* HAS_SRAND48_R */
1381
1382 #ifdef HAS_SRANDOM_R
1383 #   undef srandom
1384 #   if !defined(srandom) && SRANDOM_R_PROTO == REENTRANT_PROTO_I_TS
1385 #       define srandom(a) (srandom_r(a, &PL_reentrant_buffer->_srandom_struct) == 0 ? &PL_reentrant_buffer->_srandom_struct : 0)
1386 #   endif
1387 #endif /* HAS_SRANDOM_R */
1388
1389 #ifdef HAS_STRERROR_R
1390 #   undef strerror
1391 #   if !defined(strerror) && STRERROR_R_PROTO == REENTRANT_PROTO_I_IBW
1392 #       define strerror(a) (strerror_r(a, PL_reentrant_buffer->_strerror_buffer, PL_reentrant_buffer->_strerror_size) == 0 ? PL_reentrant_buffer->_strerror_buffer : 0)
1393 #   endif
1394 #   if !defined(strerror) && STRERROR_R_PROTO == REENTRANT_PROTO_I_IBI
1395 #       define strerror(a) (strerror_r(a, PL_reentrant_buffer->_strerror_buffer, PL_reentrant_buffer->_strerror_size) == 0 ? PL_reentrant_buffer->_strerror_buffer : 0)
1396 #   endif
1397 #   if !defined(strerror) && STRERROR_R_PROTO == REENTRANT_PROTO_B_IBW
1398 #       define strerror(a) strerror_r(a, PL_reentrant_buffer->_strerror_buffer, PL_reentrant_buffer->_strerror_size)
1399 #   endif
1400 #endif /* HAS_STRERROR_R */
1401
1402 #ifdef HAS_TMPNAM_R
1403 #   undef tmpnam
1404 #   if !defined(tmpnam) && TMPNAM_R_PROTO == REENTRANT_PROTO_B_B
1405 #       define tmpnam(a) tmpnam_r(a)
1406 #   endif
1407 #endif /* HAS_TMPNAM_R */
1408
1409 #ifdef HAS_TTYNAME_R
1410 #   undef ttyname
1411 #   if !defined(ttyname) && TTYNAME_R_PROTO == REENTRANT_PROTO_I_IBW
1412 #       define ttyname(a) (ttyname_r(a, PL_reentrant_buffer->_ttyname_buffer, PL_reentrant_buffer->_ttyname_size) == 0 ? PL_reentrant_buffer->_ttyname_buffer : 0)
1413 #   endif
1414 #   if !defined(ttyname) && TTYNAME_R_PROTO == REENTRANT_PROTO_I_IBI
1415 #       define ttyname(a) (ttyname_r(a, PL_reentrant_buffer->_ttyname_buffer, PL_reentrant_buffer->_ttyname_size) == 0 ? PL_reentrant_buffer->_ttyname_buffer : 0)
1416 #   endif
1417 #   if !defined(ttyname) && TTYNAME_R_PROTO == REENTRANT_PROTO_B_IBI
1418 #       define ttyname(a) ttyname_r(a, PL_reentrant_buffer->_ttyname_buffer, PL_reentrant_buffer->_ttyname_size)
1419 #   endif
1420 #endif /* HAS_TTYNAME_R */
1421
1422
1423
1424 #endif /* USE_REENTRANT_API */
1425  
1426 #endif
1427
1428 /* ex: set ro: */