source: trunk/essentials/dev-lang/perl/reentr.inc@ 3392

Last change on this file since 3392 was 3181, checked in by bird, 19 years ago

perl 5.8.8

File size: 123.8 KB
Line 
1/*
2 * reentr.inc
3 *
4 * You may distribute under the terms of either the GNU General Public
5 * License or the Artistic License, as specified in the README file.
6 *
7 * !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
8 * This file is built by reentrl.pl from data in reentr.pl.
9 */
10
11#ifndef REENTRINC
12#define REENTRINC
13
14#ifdef USE_REENTRANT_API
15
16/*
17 * As of OpenBSD 3.7, reentrant functions are now working, they just are
18 * incompatible with everyone else. To make OpenBSD happy, we have to
19 * memzero out certain structures before calling the functions.
20 */
21#if defined(__OpenBSD__)
22# define REENTR_MEMZERO(a,b) memzero(a,b)
23#else
24# define REENTR_MEMZERO(a,b) 0
25#endif
26
27/* The reentrant wrappers. */
28
29#ifdef HAS_ASCTIME_R
30# undef asctime
31# if !defined(asctime) && ASCTIME_R_PROTO == REENTRANT_PROTO_B_SB
32# define asctime(a) asctime_r(a, PL_reentrant_buffer->_asctime_buffer)
33# endif
34# if !defined(asctime) && ASCTIME_R_PROTO == REENTRANT_PROTO_B_SBI
35# define asctime(a) asctime_r(a, PL_reentrant_buffer->_asctime_buffer, PL_reentrant_buffer->_asctime_size)
36# endif
37# if !defined(asctime) && ASCTIME_R_PROTO == REENTRANT_PROTO_I_SB
38# define asctime(a) (asctime_r(a, PL_reentrant_buffer->_asctime_buffer) == 0 ? PL_reentrant_buffer->_asctime_buffer : 0)
39# endif
40# if !defined(asctime) && ASCTIME_R_PROTO == REENTRANT_PROTO_I_SBI
41# define asctime(a) (asctime_r(a, PL_reentrant_buffer->_asctime_buffer, PL_reentrant_buffer->_asctime_size) == 0 ? PL_reentrant_buffer->_asctime_buffer : 0)
42# endif
43#endif /* HAS_ASCTIME_R */
44
45#ifdef HAS_CRYPT_R
46# undef crypt
47# if !defined(crypt) && CRYPT_R_PROTO == REENTRANT_PROTO_B_CCS
48# define crypt(a, b) crypt_r(a, b, PL_reentrant_buffer->_crypt_struct_buffer)
49# endif
50# if !defined(crypt) && CRYPT_R_PROTO == REENTRANT_PROTO_B_CCD
51# define crypt(a, b) crypt_r(a, b, &PL_reentrant_buffer->_crypt_data)
52# endif
53#endif /* HAS_CRYPT_R */
54
55#ifdef HAS_CTERMID_R
56# undef ctermid
57# if !defined(ctermid) && CTERMID_R_PROTO == REENTRANT_PROTO_B_B
58# define ctermid(a) ctermid_r(a)
59# endif
60#endif /* HAS_CTERMID_R */
61
62#ifdef HAS_CTIME_R
63# undef ctime
64# if !defined(ctime) && CTIME_R_PROTO == REENTRANT_PROTO_B_SB
65# define ctime(a) ctime_r(a, PL_reentrant_buffer->_ctime_buffer)
66# endif
67# if !defined(ctime) && CTIME_R_PROTO == REENTRANT_PROTO_B_SBI
68# define ctime(a) ctime_r(a, PL_reentrant_buffer->_ctime_buffer, PL_reentrant_buffer->_ctime_size)
69# endif
70# if !defined(ctime) && CTIME_R_PROTO == REENTRANT_PROTO_I_SB
71# define ctime(a) (ctime_r(a, PL_reentrant_buffer->_ctime_buffer) == 0 ? PL_reentrant_buffer->_ctime_buffer : 0)
72# endif
73# if !defined(ctime) && CTIME_R_PROTO == REENTRANT_PROTO_I_SBI
74# define ctime(a) (ctime_r(a, PL_reentrant_buffer->_ctime_buffer, PL_reentrant_buffer->_ctime_size) == 0 ? PL_reentrant_buffer->_ctime_buffer : 0)
75# endif
76#endif /* HAS_CTIME_R */
77
78#ifdef HAS_DRAND48_R
79# undef drand48
80# if !defined(drand48) && DRAND48_R_PROTO == REENTRANT_PROTO_I_ST
81# define drand48() (drand48_r(&PL_reentrant_buffer->_drand48_struct, &PL_reentrant_buffer->_drand48_double) == 0 ? PL_reentrant_buffer->_drand48_double : 0)
82# endif
83#endif /* HAS_DRAND48_R */
84
85#ifdef HAS_ENDGRENT_R
86# undef endgrent
87# if !defined(endgrent) && ENDGRENT_R_PROTO == REENTRANT_PROTO_I_H
88# define endgrent() (endgrent_r(&PL_reentrant_buffer->_grent_fptr) == 0 ? 1 : 0)
89# endif
90# if !defined(endgrent) && ENDGRENT_R_PROTO == REENTRANT_PROTO_V_H
91# define endgrent() endgrent_r(&PL_reentrant_buffer->_grent_fptr)
92# endif
93#endif /* HAS_ENDGRENT_R */
94
95#ifdef HAS_ENDHOSTENT_R
96# undef endhostent
97# if !defined(endhostent) && ENDHOSTENT_R_PROTO == REENTRANT_PROTO_I_D
98# define endhostent() (endhostent_r(&PL_reentrant_buffer->_hostent_data) == 0 ? 1 : 0)
99# endif
100# if !defined(endhostent) && ENDHOSTENT_R_PROTO == REENTRANT_PROTO_V_D
101# define endhostent() endhostent_r(&PL_reentrant_buffer->_hostent_data)
102# endif
103#endif /* HAS_ENDHOSTENT_R */
104
105#ifdef HAS_ENDNETENT_R
106# undef endnetent
107# if !defined(endnetent) && ENDNETENT_R_PROTO == REENTRANT_PROTO_I_D
108# define endnetent() (endnetent_r(&PL_reentrant_buffer->_netent_data) == 0 ? 1 : 0)
109# endif
110# if !defined(endnetent) && ENDNETENT_R_PROTO == REENTRANT_PROTO_V_D
111# define endnetent() endnetent_r(&PL_reentrant_buffer->_netent_data)
112# endif
113#endif /* HAS_ENDNETENT_R */
114
115#ifdef HAS_ENDPROTOENT_R
116# undef endprotoent
117# if !defined(endprotoent) && ENDPROTOENT_R_PROTO == REENTRANT_PROTO_I_D
118# define endprotoent() (endprotoent_r(&PL_reentrant_buffer->_protoent_data) == 0 ? 1 : 0)
119# endif
120# if !defined(endprotoent) && ENDPROTOENT_R_PROTO == REENTRANT_PROTO_V_D
121# define endprotoent() endprotoent_r(&PL_reentrant_buffer->_protoent_data)
122# endif
123#endif /* HAS_ENDPROTOENT_R */
124
125#ifdef HAS_ENDPWENT_R
126# undef endpwent
127# if !defined(endpwent) && ENDPWENT_R_PROTO == REENTRANT_PROTO_I_H
128# define endpwent() (endpwent_r(&PL_reentrant_buffer->_pwent_fptr) == 0 ? 1 : 0)
129# endif
130# if !defined(endpwent) && ENDPWENT_R_PROTO == REENTRANT_PROTO_V_H
131# define endpwent() endpwent_r(&PL_reentrant_buffer->_pwent_fptr)
132# endif
133#endif /* HAS_ENDPWENT_R */
134
135#ifdef HAS_ENDSERVENT_R
136# undef endservent
137# if !defined(endservent) && ENDSERVENT_R_PROTO == REENTRANT_PROTO_I_D
138# define endservent() (endservent_r(&PL_reentrant_buffer->_servent_data) == 0 ? 1 : 0)
139# endif
140# if !defined(endservent) && ENDSERVENT_R_PROTO == REENTRANT_PROTO_V_D
141# define endservent() endservent_r(&PL_reentrant_buffer->_servent_data)
142# endif
143#endif /* HAS_ENDSERVENT_R */
144
145#ifdef HAS_GETGRENT_R
146# undef getgrent
147# if !defined(getgrent) && GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBWR
148# ifdef PERL_CORE
149# 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) || (errno == ERANGE)) ? (struct group*)Perl_reentrant_retry("getgrent") : 0)))
150# else
151# if defined(__GNUC__) && !defined(__STRICT_ANSI__) && !defined(PERL_GCC_PEDANTIC)
152# define getgrent() ({int PL_REENTRANT_RETINT; ; ((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) || (errno == ERANGE)) ? (struct group*)Perl_reentrant_retry("getgrent") : 0));})
153# else
154# define getgrent() Perl_reentr_getgrent()
155 static struct group* Perl_reentr_getgrent() {
156 dTHX;
157 int PL_REENTRANT_RETINT;
158 ;
159 return ((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) || (errno == ERANGE)) ? (struct group*)Perl_reentrant_retry("getgrent") : 0));
160 }
161# endif
162# endif
163# endif
164# if !defined(getgrent) && GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBIR
165# ifdef PERL_CORE
166# 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) || (errno == ERANGE)) ? (struct group*)Perl_reentrant_retry("getgrent") : 0)))
167# else
168# if defined(__GNUC__) && !defined(__STRICT_ANSI__) && !defined(PERL_GCC_PEDANTIC)
169# define getgrent() ({int PL_REENTRANT_RETINT; ; ((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) || (errno == ERANGE)) ? (struct group*)Perl_reentrant_retry("getgrent") : 0));})
170# else
171# define getgrent() Perl_reentr_getgrent()
172 static struct group* Perl_reentr_getgrent() {
173 dTHX;
174 int PL_REENTRANT_RETINT;
175 ;
176 return ((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) || (errno == ERANGE)) ? (struct group*)Perl_reentrant_retry("getgrent") : 0));
177 }
178# endif
179# endif
180# endif
181# if !defined(getgrent) && GETGRENT_R_PROTO == REENTRANT_PROTO_S_SBW
182# 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))
183# endif
184# if !defined(getgrent) && GETGRENT_R_PROTO == REENTRANT_PROTO_S_SBI
185# 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))
186# endif
187# if !defined(getgrent) && GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBI
188# ifdef PERL_CORE
189# 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) || (errno == ERANGE)) ? (struct group*)Perl_reentrant_retry("getgrent") : 0)))
190# else
191# if defined(__GNUC__) && !defined(__STRICT_ANSI__) && !defined(PERL_GCC_PEDANTIC)
192# define getgrent() ({int PL_REENTRANT_RETINT; ; ((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) || (errno == ERANGE)) ? (struct group*)Perl_reentrant_retry("getgrent") : 0));})
193# else
194# define getgrent() Perl_reentr_getgrent()
195 static struct group* Perl_reentr_getgrent() {
196 dTHX;
197 int PL_REENTRANT_RETINT;
198 ;
199 return ((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) || (errno == ERANGE)) ? (struct group*)Perl_reentrant_retry("getgrent") : 0));
200 }
201# endif
202# endif
203# endif
204# if !defined(getgrent) && GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBIH
205# ifdef PERL_CORE
206# 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) || (errno == ERANGE)) ? (struct group*)Perl_reentrant_retry("getgrent") : 0)))
207# else
208# if defined(__GNUC__) && !defined(__STRICT_ANSI__) && !defined(PERL_GCC_PEDANTIC)
209# define getgrent() ({int PL_REENTRANT_RETINT; ; ((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) || (errno == ERANGE)) ? (struct group*)Perl_reentrant_retry("getgrent") : 0));})
210# else
211# define getgrent() Perl_reentr_getgrent()
212 static struct group* Perl_reentr_getgrent() {
213 dTHX;
214 int PL_REENTRANT_RETINT;
215 ;
216 return ((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) || (errno == ERANGE)) ? (struct group*)Perl_reentrant_retry("getgrent") : 0));
217 }
218# endif
219# endif
220# endif
221#endif /* HAS_GETGRENT_R */
222
223#ifdef HAS_GETGRGID_R
224# undef getgrgid
225# if !defined(getgrgid) && GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBWR
226# ifdef PERL_CORE
227# 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) || (errno == ERANGE)) ? (struct group*)Perl_reentrant_retry("getgrgid", a) : 0)))
228# else
229# if defined(__GNUC__) && !defined(__STRICT_ANSI__) && !defined(PERL_GCC_PEDANTIC)
230# define getgrgid(a) ({int PL_REENTRANT_RETINT; ; ((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) || (errno == ERANGE)) ? (struct group*)Perl_reentrant_retry("getgrgid", a) : 0));})
231# else
232# define getgrgid(a) Perl_reentr_getgrgid(a)
233 static struct group* Perl_reentr_getgrgid(gid_t a) {
234 dTHX;
235 int PL_REENTRANT_RETINT;
236 ;
237 return ((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) || (errno == ERANGE)) ? (struct group*)Perl_reentrant_retry("getgrgid", a) : 0));
238 }