[3181] | 1 | /* -*- buffer-read-only: t -*-
|
---|
| 2 | *
|
---|
| 3 | * reentr.h
|
---|
| 4 | *
|
---|
| 5 | * Copyright (C) 2002, 2003, 2005 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 | #ifdef PERL_CORE
|
---|
| 20 | # define PL_REENTRANT_RETINT PL_reentrant_retint
|
---|
| 21 | #endif
|
---|
| 22 |
|
---|
| 23 | /* Deprecations: some platforms have the said reentrant interfaces
|
---|
| 24 | * but they are declared obsolete and are not to be used. Often this
|
---|
| 25 | * means that the platform has threadsafed the interfaces (hopefully).
|
---|
| 26 | * All this is OS version dependent, so we are of course fooling ourselves.
|
---|
| 27 | * If you know of more deprecations on some platforms, please add your own. */
|
---|
| 28 |
|
---|
| 29 | #ifdef __hpux
|
---|
| 30 | # undef HAS_CRYPT_R
|
---|
| 31 | # undef HAS_DRAND48_R
|
---|
| 32 | # undef HAS_ENDGRENT_R
|
---|
| 33 | # undef HAS_ENDPWENT_R
|
---|
| 34 | # undef HAS_GETGRENT_R
|
---|
| 35 | # undef HAS_GETPWENT_R
|
---|
| 36 | # undef HAS_SETLOCALE_R
|
---|
| 37 | # undef HAS_SRAND48_R
|
---|
| 38 | # undef HAS_STRERROR_R
|
---|
| 39 | # define NETDB_R_OBSOLETE
|
---|
| 40 | #endif
|
---|
| 41 |
|
---|
| 42 | #if defined(__osf__) && defined(__alpha) /* Tru64 aka Digital UNIX */
|
---|
| 43 | # undef HAS_CRYPT_R
|
---|
| 44 | # undef HAS_STRERROR_R
|
---|
| 45 | # define NETDB_R_OBSOLETE
|
---|
| 46 | #endif
|
---|
| 47 |
|
---|
| 48 | #ifdef NETDB_R_OBSOLETE
|
---|
| 49 | # undef HAS_ENDHOSTENT_R
|
---|
| 50 | # undef HAS_ENDNETENT_R
|
---|
| 51 | # undef HAS_ENDPROTOENT_R
|
---|
| 52 | # undef HAS_ENDSERVENT_R
|
---|
| 53 | # undef HAS_GETHOSTBYADDR_R
|
---|
| 54 | # undef HAS_GETHOSTBYNAME_R
|
---|
| 55 | # undef HAS_GETHOSTENT_R
|
---|
| 56 | # undef HAS_GETNETBYADDR_R
|
---|
| 57 | # undef HAS_GETNETBYNAME_R
|
---|
| 58 | # undef HAS_GETNETENT_R
|
---|
| 59 | # undef HAS_GETPROTOBYNAME_R
|
---|
| 60 | # undef HAS_GETPROTOBYNUMBER_R
|
---|
| 61 | # undef HAS_GETPROTOENT_R
|
---|
| 62 | # undef HAS_GETSERVBYNAME_R
|
---|
| 63 | # undef HAS_GETSERVBYPORT_R
|
---|
| 64 | # undef HAS_GETSERVENT_R
|
---|
| 65 | # undef HAS_SETHOSTENT_R
|
---|
| 66 | # undef HAS_SETNETENT_R
|
---|
| 67 | # undef HAS_SETPROTOENT_R
|
---|
| 68 | # undef HAS_SETSERVENT_R
|
---|
| 69 | #endif
|
---|
| 70 |
|
---|
| 71 | #ifdef I_PWD
|
---|
| 72 | # include <pwd.h>
|
---|
| 73 | #endif
|
---|
| 74 | #ifdef I_GRP
|
---|
| 75 | # include <grp.h>
|
---|
| 76 | #endif
|
---|
| 77 | #ifdef I_NETDB
|
---|
| 78 | # include <netdb.h>
|
---|
| 79 | #endif
|
---|
| 80 | #ifdef I_STDLIB
|
---|
| 81 | # include <stdlib.h> /* drand48_data */
|
---|
| 82 | #endif
|
---|
| 83 | #ifdef I_CRYPT
|
---|
| 84 | # ifdef I_CRYPT
|
---|
| 85 | # include <crypt.h>
|
---|
| 86 | # endif
|
---|
| 87 | #endif
|
---|
| 88 | #ifdef HAS_GETSPNAM_R
|
---|
| 89 | # ifdef I_SHADOW
|
---|
| 90 | # include <shadow.h>
|
---|
| 91 | # endif
|
---|
| 92 | #endif
|
---|
| 93 |
|
---|
| 94 | #define REENTRANT_PROTO_B_B 1
|
---|
| 95 | #define REENTRANT_PROTO_B_BI 2
|
---|
| 96 | #define REENTRANT_PROTO_B_BW 3
|
---|
| 97 | #define REENTRANT_PROTO_B_CCD 4
|
---|
| 98 | #define REENTRANT_PROTO_B_CCS 5
|
---|
| 99 | #define REENTRANT_PROTO_B_IBI 6
|
---|
| 100 | #define REENTRANT_PROTO_B_IBW 7
|
---|
| 101 | #define REENTRANT_PROTO_B_SB 8
|
---|
| 102 | #define REENTRANT_PROTO_B_SBI 9
|
---|
| 103 | #define REENTRANT_PROTO_I_BI 10
|
---|
| 104 | #define REENTRANT_PROTO_I_BW 11
|
---|
| 105 | #define REENTRANT_PROTO_I_CCSBWR 12
|
---|
| 106 | #define REENTRANT_PROTO_I_CCSD 13
|
---|
| 107 | #define REENTRANT_PROTO_I_CII 14
|
---|
| 108 | #define REENTRANT_PROTO_I_CIISD 15
|
---|
| 109 | #define REENTRANT_PROTO_I_CSBI 16
|
---|
| 110 | #define REENTRANT_PROTO_I_CSBIR 17
|
---|
| 111 | #define REENTRANT_PROTO_I_CSBWR 18
|
---|
| 112 | #define REENTRANT_PROTO_I_CSBWRE 19
|
---|
| 113 | #define REENTRANT_PROTO_I_CSD 20
|
---|
| 114 | #define REENTRANT_PROTO_I_CWISBWRE 21
|
---|
| 115 | #define REENTRANT_PROTO_I_CWISD 22
|
---|
| 116 | #define REENTRANT_PROTO_I_D 23
|
---|
| 117 | #define REENTRANT_PROTO_I_H 24
|
---|
| 118 | #define REENTRANT_PROTO_I_IBI 25
|
---|
| 119 | #define REENTRANT_PROTO_I_IBW 26
|
---|
| 120 | #define REENTRANT_PROTO_I_ICBI 27
|
---|
| 121 | #define REENTRANT_PROTO_I_ICSBWR 28
|
---|
| 122 | #define REENTRANT_PROTO_I_ICSD 29
|
---|
| 123 | #define REENTRANT_PROTO_I_ID 30
|
---|
| 124 | #define REENTRANT_PROTO_I_IISD 31
|
---|
| 125 | #define REENTRANT_PROTO_I_ISBWR 32
|
---|
| 126 | #define REENTRANT_PROTO_I_ISD 33
|
---|
| 127 | #define REENTRANT_PROTO_I_LISBI 34
|
---|
| 128 | #define REENTRANT_PROTO_I_LISD 35
|
---|
| 129 | #define REENTRANT_PROTO_I_LS 36
|
---|
| 130 | #define REENTRANT_PROTO_I_SB 37
|
---|
| 131 | #define REENTRANT_PROTO_I_SBI 38
|
---|
| 132 | #define REENTRANT_PROTO_I_SBIE 39
|
---|
| 133 | #define REENTRANT_PROTO_I_SBIH 40
|
---|
| 134 | #define REENTRANT_PROTO_I_SBIR 41
|
---|
| 135 | #define REENTRANT_PROTO_I_SBWR 42
|
---|
| 136 | #define REENTRANT_PROTO_I_SBWRE 43
|
---|
| 137 | #define REENTRANT_PROTO_I_SD 44
|
---|
| 138 | #define REENTRANT_PROTO_I_ST 45
|
---|
| 139 | #define REENTRANT_PROTO_I_St 46
|
---|
| 140 | #define REENTRANT_PROTO_I_TISD 47
|
---|
| 141 | #define REENTRANT_PROTO_I_TS 48
|
---|
| 142 | #define REENTRANT_PROTO_I_TSBI 49
|
---|
| 143 | #define REENTRANT_PROTO_I_TSBIR 50
|
---|
| 144 | #define REENTRANT_PROTO_I_TSBWR 51
|
---|
| 145 | #define REENTRANT_PROTO_I_TSR 52
|
---|
| 146 | #define REENTRANT_PROTO_I_TsISBWRE 53
|
---|
| 147 | #define REENTRANT_PROTO_I_UISBWRE 54
|
---|
| 148 | #define REENTRANT_PROTO_I_iS 55
|
---|
| 149 | #define REENTRANT_PROTO_I_lS 56
|
---|
| 150 | #define REENTRANT_PROTO_I_uISBWRE 57
|
---|
| 151 | #define REENTRANT_PROTO_S_CBI 58
|
---|
| 152 | #define REENTRANT_PROTO_S_CCSBI 59
|
---|
| 153 | #define REENTRANT_PROTO_S_CIISBIE 60
|
---|
| 154 | #define REENTRANT_PROTO_S_CSBI 61
|
---|
| 155 | #define REENTRANT_PROTO_S_CSBIE 62
|
---|
| 156 | #define REENTRANT_PROTO_S_CWISBIE 63
|
---|
| 157 | #define REENTRANT_PROTO_S_CWISBWIE 64
|
---|
| 158 | #define REENTRANT_PROTO_S_ICSBI 65
|
---|
| 159 | #define REENTRANT_PROTO_S_ISBI 66
|
---|
| 160 | #define REENTRANT_PROTO_S_LISBI 67
|
---|
| 161 | #define REENTRANT_PROTO_S_SBI 68
|
---|
| 162 | #define REENTRANT_PROTO_S_SBIE 69
|
---|
| 163 | #define REENTRANT_PROTO_S_SBW 70
|
---|
| 164 | #define REENTRANT_PROTO_S_TISBI 71
|
---|
| 165 | #define REENTRANT_PROTO_S_TS 72
|
---|
| 166 | #define REENTRANT_PROTO_S_TSBI 73
|
---|
| 167 | #define REENTRANT_PROTO_S_TSBIE 74
|
---|
| 168 | #define REENTRANT_PROTO_S_TWISBIE 75
|
---|
| 169 | #define REENTRANT_PROTO_V_D 76
|
---|
| 170 | #define REENTRANT_PROTO_V_H 77
|
---|
| 171 | #define REENTRANT_PROTO_V_ID 78
|
---|
| 172 |
|
---|
| 173 | /* Defines for indicating which special features are supported. */
|
---|
| 174 |
|
---|
| 175 | /* The getgrent getgrgid getgrnam using buffer? */
|
---|
| 176 |
|
---|
| 177 | #if defined(HAS_GETGRENT_R) && (GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBWR || GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBIR || GETGRENT_R_PROTO == REENTRANT_PROTO_S_SBW || GETGRENT_R_PROTO == REENTRANT_PROTO_S_SBI || GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBI || GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBIH)
|
---|
| 178 | # define GETGRENT_R_HAS_BUFFER
|
---|
| 179 | #else
|
---|
| 180 | # undef GETGRENT_R_HAS_BUFFER
|
---|
| 181 | #endif
|
---|
| 182 | #if defined(HAS_GETGRGID_R) && (GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBWR || GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBIR || GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBI || GETGRGID_R_PROTO == REENTRANT_PROTO_S_TSBI)
|
---|
| 183 | # define GETGRGID_R_HAS_BUFFER
|
---|
| 184 | #else
|
---|
| 185 | # undef GETGRGID_R_HAS_BUFFER
|
---|
| 186 | #endif
|
---|
| 187 | #if defined(HAS_GETGRNAM_R) && (GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR || GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBIR || GETGRNAM_R_PROTO == REENTRANT_PROTO_S_CBI || GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBI || GETGRNAM_R_PROTO == REENTRANT_PROTO_S_CSBI)
|
---|
| 188 | # define GETGRNAM_R_HAS_BUFFER
|
---|
| 189 | #else
|
---|
| 190 | # undef GETGRNAM_R_HAS_BUFFER
|
---|
| 191 | #endif
|
---|
| 192 |
|
---|
| 193 | /* Any of the getgrent getgrgid getgrnam using buffer? */
|
---|
| 194 |
|
---|
| 195 | #if (defined(GETGRENT_R_HAS_BUFFER) || defined(GETGRGID_R_HAS_BUFFER) || defined(GETGRNAM_R_HAS_BUFFER))
|
---|
| 196 | # define USE_GRENT_BUFFER
|
---|
| 197 | #else
|
---|
| 198 | # undef USE_GRENT_BUFFER
|
---|
| 199 | #endif
|
---|
| 200 |
|
---|
| 201 | /* The getgrent getgrgid getgrnam using ptr? */
|
---|
| 202 |
|
---|
| 203 | #if defined(HAS_GETGRENT_R) && (GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBWR || GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBIR)
|
---|
| 204 | # define GETGRENT_R_HAS_PTR
|
---|
| 205 | #else
|
---|
| 206 | # undef GETGRENT_R_HAS_PTR
|
---|
| 207 | #endif
|
---|
| 208 | #if defined(HAS_GETGRGID_R) && (GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBWR || GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBIR)
|
---|
| 209 | # define GETGRGID_R_HAS_PTR
|
---|
| 210 | #else
|
---|
| 211 | # undef GETGRGID_R_HAS_PTR
|
---|
| 212 | #endif
|
---|
| 213 | #if defined(HAS_GETGRNAM_R) && (GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR || GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBIR)
|
---|
| 214 | # define GETGRNAM_R_HAS_PTR
|
---|
| 215 | #else
|
---|
| 216 | # undef GETGRNAM_R_HAS_PTR
|
---|
| 217 | #endif
|
---|
| 218 |
|
---|
| 219 | /* Any of the getgrent getgrgid getgrnam using ptr? */
|
---|
| 220 |
|
---|
| 221 | #if (defined(GETGRENT_R_HAS_PTR) || defined(GETGRGID_R_HAS_PTR) || defined(GETGRNAM_R_HAS_PTR))
|
---|
| 222 | # define USE_GRENT_PTR
|
---|
| 223 | #else
|
---|
| 224 | # undef USE_GRENT_PTR
|
---|
| 225 | #endif
|
---|
| 226 |
|
---|
| 227 | /* The getpwent getpwnam getpwuid using ptr? */
|
---|
| 228 |
|
---|
| 229 | #if defined(HAS_GETPWENT_R) && (GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBWR || GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBIR)
|
---|
| 230 | # define GETPWENT_R_HAS_PTR
|
---|
| 231 | #else
|
---|
| 232 | # undef GETPWENT_R_HAS_PTR
|
---|
| 233 | #endif
|
---|
| 234 | #if defined(HAS_GETPWNAM_R) && (GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR || GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBIR)
|
---|
| 235 | # define GETPWNAM_R_HAS_PTR
|
---|
| 236 | #else
|
---|
| 237 | # undef GETPWNAM_R_HAS_PTR
|
---|
| 238 | #endif
|
---|
| 239 | #if defined(HAS_GETPWUID_R) && (GETPWUID_R_PROTO == REENTRANT_PROTO_I_TSBWR || GETPWUID_R_PROTO == REENTRANT_PROTO_I_TSBIR)
|
---|
| 240 | # define GETPWUID_R_HAS_PTR
|
---|
| 241 | #else
|
---|
| 242 | # undef GETPWUID_R_HAS_PTR
|
---|
| 243 | #endif
|
---|
| 244 |
|
---|
| 245 | /* Any of the getpwent getpwnam getpwuid using ptr? */
|
---|
| 246 |
|
---|
| 247 | #if (defined(GETPWENT_R_HAS_PTR) || defined(GETPWNAM_R_HAS_PTR) || defined(GETPWUID_R_HAS_PTR))
|
---|
| 248 | # define USE_PWENT_PTR
|
---|
| 249 | #else
|
---|
| 250 | # undef USE_PWENT_PTR
|
---|
| 251 | #endif
|
---|
| 252 |
|
---|
| 253 | /* The getspent getspnam using ptr? */
|
---|
| 254 |
|
---|
| 255 | #if defined(HAS_GETSPNAM_R) && (GETSPNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR)
|
---|
| 256 | # define GETSPNAM_R_HAS_PTR
|
---|
| 257 | #else
|
---|
| 258 | # undef GETSPNAM_R_HAS_PTR
|
---|
| 259 | #endif
|
---|
| 260 |
|
---|
| 261 | /* Any of the getspent getspnam using ptr? */
|
---|
| 262 |
|
---|
| 263 | #if (defined(GETSPENT_R_HAS_PTR) || defined(GETSPNAM_R_HAS_PTR))
|
---|
| 264 | # define USE_SPENT_PTR
|
---|
| 265 | #else
|
---|
| 266 | # undef USE_SPENT_PTR
|
---|
| 267 | #endif
|
---|
| 268 |
|
---|
| 269 | /* The getgrent getgrgid getgrnam setgrent endgrent using fptr? */
|
---|
| 270 |
|
---|
| 271 | #if defined(HAS_GETGRENT_R) && (GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBIH)
|
---|
| 272 | # define GETGRENT_R_HAS_FPTR
|
---|
| 273 | #else
|
---|
| 274 | # undef GETGRENT_R_HAS_FPTR
|
---|
| 275 | #endif
|
---|
| 276 | #if defined(HAS_SETGRENT_R) && (SETGRENT_R_PROTO == REENTRANT_PROTO_I_H || SETGRENT_R_PROTO == REENTRANT_PROTO_V_H)
|
---|
| 277 | # define SETGRENT_R_HAS_FPTR
|
---|
| 278 | #else
|
---|
| 279 | # undef SETGRENT_R_HAS_FPTR
|
---|
| 280 | #endif
|
---|
| 281 | #if defined(HAS_ENDGRENT_R) && (ENDGRENT_R_PROTO == REENTRANT_PROTO_I_H || ENDGRENT_R_PROTO == REENTRANT_PROTO_V_H)
|
---|
| 282 | # define ENDGRENT_R_HAS_FPTR
|
---|
| 283 | #else
|
---|
| 284 | # undef ENDGRENT_R_HAS_FPTR
|
---|
| 285 | #endif
|
---|
| 286 |
|
---|
| 287 | /* Any of the getgrent getgrgid getgrnam setgrent endgrent using fptr? */
|
---|
| 288 |
|
---|
| 289 | #if (defined(GETGRENT_R_HAS_FPTR) || defined(GETGRGID_R_HAS_FPTR) || defined(GETGRNAM_R_HAS_FPTR) || defined(SETGRENT_R_HAS_FPTR) || defined(ENDGRENT_R_HAS_FPTR))
|
---|
| 290 | # define USE_GRENT_FPTR
|
---|
| 291 | #else
|
---|
| 292 | # undef USE_GRENT_FPTR
|
---|
| 293 | #endif
|
---|
| 294 |
|
---|
| 295 | /* The getpwent getpwnam getpwuid setpwent endpwent using fptr? */
|
---|
| 296 |
|
---|
| 297 | #if defined(HAS_GETPWENT_R) && (GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBIH)
|
---|
| 298 | # define GETPWENT_R_HAS_FPTR
|
---|
| 299 | #else
|
---|
| 300 | # undef GETPWENT_R_HAS_FPTR
|
---|
| 301 | #endif
|
---|
| 302 | #if defined(HAS_SETPWENT_R) && (SETPWENT_R_PROTO == REENTRANT_PROTO_I_H || SETPWENT_R_PROTO == REENTRANT_PROTO_V_H)
|
---|
| 303 | # define SETPWENT_R_HAS_FPTR
|
---|
| 304 | #else
|
---|
| 305 | # undef SETPWENT_R_HAS_FPTR
|
---|
| 306 | #endif
|
---|
| 307 | #if defined(HAS_ENDPWENT_R) && (ENDPWENT_R_PROTO == REENTRANT_PROTO_I_H || ENDPWENT_R_PROTO == REENTRANT_PROTO_V_H)
|
---|
| 308 | # define ENDPWENT_R_HAS_FPTR
|
---|
| 309 | #else
|
---|
| 310 | # undef ENDPWENT_R_HAS_FPTR
|
---|
| 311 | #endif
|
---|
| 312 |
|
---|
| 313 | /* Any of the getpwent getpwnam getpwuid setpwent endpwent using fptr? */
|
---|
| 314 |
|
---|
| 315 | #if (defined(GETPWENT_R_HAS_FPTR) || defined(GETPWNAM_R_HAS_FPTR) || defined(GETPWUID_R_HAS_FPTR) || defined(SETPWENT_R_HAS_FPTR) || defined(ENDPWENT_R_HAS_FPTR))
|
---|
| 316 | # define USE_PWENT_FPTR
|
---|
| 317 | #else
|
---|
| 318 | # undef USE_PWENT_FPTR
|
---|
| 319 | #endif
|
---|
| 320 |
|
---|
| 321 | /* The getpwent getpwgid getpwnam using buffer? */
|
---|
| 322 |
|
---|
| 323 | #if defined(HAS_GETPWENT_R) && (GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBWR || GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBIR || GETPWENT_R_PROTO == REENTRANT_PROTO_S_SBW || GETPWENT_R_PROTO == REENTRANT_PROTO_S_SBI || GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBI || GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBIH)
|
---|
| 324 | # define GETPWENT_R_HAS_BUFFER
|
---|
| 325 | #else
|
---|
| 326 | # undef GETPWENT_R_HAS_BUFFER
|
---|
| 327 | #endif
|
---|
| 328 | #if defined(HAS_GETPWNAM_R) && (GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR || GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBIR || GETPWNAM_R_PROTO == REENTRANT_PROTO_S_CSBI || GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBI)
|
---|
| 329 | # define GETPWNAM_R_HAS_BUFFER
|
---|
| 330 | #else
|
---|
| 331 | # undef GETPWNAM_R_HAS_BUFFER
|
---|
| 332 | #endif
|
---|
| 333 |
|
---|
| 334 | /* Any of the getpwent getpwgid getpwnam using buffer? */
|
---|
| 335 |
|
---|
| 336 | #if (defined(GETPWENT_R_HAS_BUFFER) || defined(GETPWGID_R_HAS_BUFFER) || defined(GETPWNAM_R_HAS_BUFFER))
|
---|
| 337 | # define USE_PWENT_BUFFER
|
---|
| 338 | #else
|
---|
| 339 | # undef USE_PWENT_BUFFER
|
---|
| 340 | #endif
|
---|
| 341 |
|
---|
| 342 | /* The gethostent gethostbyaddr gethostbyname using ptr? */
|
---|
| 343 |
|
---|
| 344 | #if defined(HAS_GETHOSTENT_R) && (GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBWRE)
|
---|
| 345 | # define GETHOSTENT_R_HAS_PTR
|
---|
| 346 | #else
|
---|
| 347 | # undef GETHOSTENT_R_HAS_PTR
|
---|
| 348 | #endif
|
---|
| 349 | #if defined(HAS_GETHOSTBYADDR_R) && (GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_CWISBWRE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_TsISBWRE)
|
---|
| 350 | # define GETHOSTBYADDR_R_HAS_PTR
|
---|
| 351 | #else
|
---|
| 352 | # undef GETHOSTBYADDR_R_HAS_PTR
|
---|
| 353 | #endif
|
---|
| 354 | #if defined(HAS_GETHOSTBYNAME_R) && (GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE)
|
---|
| 355 | # define GETHOSTBYNAME_R_HAS_PTR
|
---|
| 356 | #else
|
---|
| 357 | # undef GETHOSTBYNAME_R_HAS_PTR
|
---|
| 358 | #endif
|
---|
| 359 |
|
---|
| 360 | /* Any of the gethostent gethostbyaddr gethostbyname using ptr? */
|
---|
| 361 |
|
---|
| 362 | #if (defined(GETHOSTENT_R_HAS_PTR) || defined(GETHOSTBYADDR_R_HAS_PTR) || defined(GETHOSTBYNAME_R_HAS_PTR))
|
---|
| 363 | # define USE_HOSTENT_PTR
|
---|
| 364 | #else
|
---|
| 365 | # undef USE_HOSTENT_PTR
|
---|
| 366 | #endif
|
---|
| 367 |
|
---|
| 368 | /* The getnetent getnetbyaddr getnetbyname using ptr? */
|
---|
| 369 |
|
---|
| 370 | #if defined(HAS_GETNETENT_R) && (GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBWRE)
|
---|
| 371 | # define GETNETENT_R_HAS_PTR
|
---|
| 372 | #else
|
---|
| 373 | # undef GETNETENT_R_HAS_PTR
|
---|
| 374 | #endif
|
---|
| 375 | #if defined(HAS_GETNETBYADDR_R) && (GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_UISBWRE || GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_uISBWRE)
|
---|
| 376 | # define GETNETBYADDR_R_HAS_PTR
|
---|
| 377 | #else
|
---|
| 378 | # undef GETNETBYADDR_R_HAS_PTR
|
---|
| 379 | #endif
|
---|
| 380 | #if defined(HAS_GETNETBYNAME_R) && (GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE)
|
---|
| 381 | # define GETNETBYNAME_R_HAS_PTR
|
---|
| 382 | #else
|
---|
| 383 | # undef GETNETBYNAME_R_HAS_PTR
|
---|
| 384 | #endif
|
---|
| 385 |
|
---|
| 386 | /* Any of the getnetent getnetbyaddr getnetbyname using ptr? */
|
---|
| 387 |
|
---|
| 388 | #if (defined(GETNETENT_R_HAS_PTR) || defined(GETNETBYADDR_R_HAS_PTR) || defined(GETNETBYNAME_R_HAS_PTR))
|
---|
| 389 | # define USE_NETENT_PTR
|
---|
| 390 | #else
|
---|
| 391 | # undef USE_NETENT_PTR
|
---|
| 392 | #endif
|
---|
| 393 |
|
---|
| 394 | /* The getprotoent getprotobyname getprotobynumber using ptr? */
|
---|
| 395 |
|
---|
| 396 | #if defined(HAS_GETPROTOENT_R) && (GETPROTOENT_R_PROTO == REENTRANT_PROTO_I_SBWR)
|
---|
| 397 | # define GETPROTOENT_R_HAS_PTR
|
---|
| 398 | #else
|
---|
| 399 | # undef GETPROTOENT_R_HAS_PTR
|
---|
| 400 | #endif
|
---|
| 401 | #if defined(HAS_GETPROTOBYNAME_R) && (GETPROTOBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWR)
|
---|
| 402 | # define GETPROTOBYNAME_R_HAS_PTR
|
---|
| 403 | #else
|
---|
| 404 | # undef GETPROTOBYNAME_R_HAS_PTR
|
---|
| 405 | #endif
|
---|
| 406 | #if defined(HAS_GETPROTOBYNUMBER_R) && (GETPROTOBYNUMBER_R_PROTO == REENTRANT_PROTO_I_ISBWR)
|
---|
| 407 | # define GETPROTOBYNUMBER_R_HAS_PTR
|
---|
| 408 | #else
|
---|
| 409 | # undef GETPROTOBYNUMBER_R_HAS_PTR
|
---|
| 410 | #endif
|
---|
| 411 |
|
---|
| 412 | /* Any of the getprotoent getprotobyname getprotobynumber using ptr? */
|
---|
| 413 |
|
---|
| 414 | #if (defined(GETPROTOENT_R_HAS_PTR) || defined(GETPROTOBYNAME_R_HAS_PTR) || defined(GETPROTOBYNUMBER_R_HAS_PTR))
|
---|
| 415 | # define USE_PROTOENT_PTR
|
---|
| 416 | #else
|
---|
| 417 | # undef USE_PROTOENT_PTR
|
---|
| 418 | #endif
|
---|
| 419 |
|
---|
| 420 | /* The getservent getservbyname getservbyport using ptr? */
|
---|
| 421 |
|
---|
| 422 | #if defined(HAS_GETSERVENT_R) && (GETSERVENT_R_PROTO == REENTRANT_PROTO_I_SBWR)
|
---|
| 423 | # define GETSERVENT_R_HAS_PTR
|
---|
| 424 | #else
|
---|
| 425 | # undef GETSERVENT_R_HAS_PTR
|
---|
| 426 | #endif
|
---|
| 427 | #if defined(HAS_GETSERVBYNAME_R) && (GETSERVBYNAME_R_PROTO == REENTRANT_PROTO_I_CCSBWR)
|
---|
| 428 | # define GETSERVBYNAME_R_HAS_PTR
|
---|
| 429 | #else
|
---|
| 430 | # undef GETSERVBYNAME_R_HAS_PTR
|
---|
| 431 | #endif
|
---|
| 432 | #if defined(HAS_GETSERVBYPORT_R) && (GETSERVBYPORT_R_PROTO == REENTRANT_PROTO_I_ICSBWR)
|
---|
| 433 | # define GETSERVBYPORT_R_HAS_PTR
|
---|
| 434 | #else
|
---|
| 435 | # undef GETSERVBYPORT_R_HAS_PTR
|
---|
| 436 | #endif
|
---|
| 437 |
|
---|
| 438 | /* Any of the getservent getservbyname getservbyport using ptr? */
|
---|
| 439 |
|
---|
| 440 | #if (defined(GETSERVENT_R_HAS_PTR) || defined(GETSERVBYNAME_R_HAS_PTR) || defined(GETSERVBYPORT_R_HAS_PTR))
|
---|
| 441 | # define USE_SERVENT_PTR
|
---|
| 442 | #else
|
---|
| 443 | # undef USE_SERVENT_PTR
|
---|
| 444 | #endif
|
---|
| 445 |
|
---|
| 446 | /* The gethostent gethostbyaddr gethostbyname using buffer? */
|
---|
| 447 |
|
---|
| 448 | #if defined(HAS_GETHOSTENT_R) && (GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBWRE || GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBIE || GETHOSTENT_R_PROTO == REENTRANT_PROTO_S_SBIE || GETHOSTENT_R_PROTO == REENTRANT_PROTO_S_SBI || GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBI)
|
---|
| 449 | # define GETHOSTENT_R_HAS_BUFFER
|
---|
| 450 | #else
|
---|
| 451 | # undef GETHOSTENT_R_HAS_BUFFER
|
---|
| 452 | #endif
|
---|
| 453 | #if defined(HAS_GETHOSTBYADDR_R) && (GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_CWISBWRE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CWISBWIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CWISBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_TWISBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CIISBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CSBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_TSBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_TsISBWRE)
|
---|
| 454 | # define GETHOSTBYADDR_R_HAS_BUFFER
|
---|
| 455 | #else
|
---|
| 456 | # undef GETHOSTBYADDR_R_HAS_BUFFER
|
---|
| 457 | #endif
|
---|
| 458 | #if defined(HAS_GETHOSTBYNAME_R) && (GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE || GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_S_CSBIE)
|
---|
| 459 | # define GETHOSTBYNAME_R_HAS_BUFFER
|
---|
| 460 | #else
|
---|
| 461 | # undef GETHOSTBYNAME_R_HAS_BUFFER
|
---|
| 462 | #endif
|
---|
| 463 |
|
---|
| 464 | /* Any of the gethostent gethostbyaddr gethostbyname using buffer? */
|
---|
| 465 |
|
---|
| 466 | #if (defined(GETHOSTENT_R_HAS_BUFFER) || defined(GETHOSTBYADDR_R_HAS_BUFFER) || defined(GETHOSTBYNAME_R_HAS_BUFFER))
|
---|
| 467 | # define USE_HOSTENT_BUFFER
|
---|
| 468 | #else
|
---|
| 469 | # undef USE_HOSTENT_BUFFER
|
---|
| 470 | #endif
|
---|
| 471 |
|
---|
| 472 | /* The getnetent getnetbyaddr getnetbyname using buffer? */
|
---|
| 473 |
|
---|
| 474 | #if defined(HAS_GETNETENT_R) && (GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBWRE || GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBIE || GETNETENT_R_PROTO == REENTRANT_PROTO_S_SBIE || GETNETENT_R_PROTO == REENTRANT_PROTO_S_SBI || GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBI)
|
---|
| 475 | # define GETNETENT_R_HAS_BUFFER
|
---|
| 476 | #else
|
---|
| 477 | # undef GETNETENT_R_HAS_BUFFER
|
---|
| 478 | #endif
|
---|
| 479 | #if defined(HAS_GETNETBYADDR_R) && (GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_UISBWRE || GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_LISBI || GETNETBYADDR_R_PROTO == REENTRANT_PROTO_S_TISBI || GETNETBYADDR_R_PROTO == REENTRANT_PROTO_S_LISBI || GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_uISBWRE)
|
---|
| 480 | # define GETNETBYADDR_R_HAS_BUFFER
|
---|
| 481 | #else
|
---|
| 482 | # undef GETNETBYADDR_R_HAS_BUFFER
|
---|
| 483 | #endif
|
---|
| 484 | #if defined(HAS_GETNETBYNAME_R) && (GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE || GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBI || GETNETBYNAME_R_PROTO == REENTRANT_PROTO_S_CSBI)
|
---|
| 485 | # define GETNETBYNAME_R_HAS_BUFFER
|
---|
| 486 | #else
|
---|
| 487 | # undef GETNETBYNAME_R_HAS_BUFFER
|
---|
| 488 | #endif
|
---|
| 489 |
|
---|
| 490 | /* Any of the getnetent getnetbyaddr getnetbyname using buffer? */
|
---|
| 491 |
|
---|
| 492 | #if (defined(GETNETENT_R_HAS_BUFFER) || defined(GETNETBYADDR_R_HAS_BUFFER) || defined(GETNETBYNAME_R_HAS_BUFFER))
|
---|
| 493 | # define USE_NETENT_BUFFER
|
---|
| 494 | #else
|
---|
| 495 | # undef USE_NETENT_BUFFER
|
---|
| 496 | #endif
|
---|
| 497 |
|
---|
| 498 | /* The getprotoent getprotobyname getprotobynumber using buffer? */
|
---|
| 499 |
|
---|
| 500 | #if defined(HAS_GETPROTOENT_R) && (GETPROTOENT_R_PROTO == REENTRANT_PROTO_I_SBWR || GETPROTOENT_R_PROTO == REENTRANT_PROTO_I_SBI || GETPROTOENT_R_PROTO == REENTRANT_PROTO_S_SBI)
|
---|
| 501 | # define GETPROTOENT_R_HAS_BUFFER
|
---|
| 502 | #else
|
---|
| 503 | # undef GETPROTOENT_R_HAS_BUFFER
|
---|
| 504 | #endif
|
---|
| 505 | #if defined(HAS_GETPROTOBYNAME_R) && (GETPROTOBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWR || GETPROTOBYNAME_R_PROTO == REENTRANT_PROTO_S_CSBI)
|
---|
| 506 | # define GETPROTOBYNAME_R_HAS_BUFFER
|
---|
| 507 | #else
|
---|
| 508 | # undef GETPROTOBYNAME_R_HAS_BUFFER
|
---|
| 509 | #endif
|
---|
| 510 | #if defined(HAS_GETPROTOBYNUMBER_R) && (GETPROTOBYNUMBER_R_PROTO == REENTRANT_PROTO_I_ISBWR || GETPROTOBYNUMBER_R_PROTO == REENTRANT_PROTO_S_ISBI)
|
---|
| 511 | # define GETPROTOBYNUMBER_R_HAS_BUFFER
|
---|
| 512 | #else
|
---|
| 513 | # undef GETPROTOBYNUMBER_R_HAS_BUFFER
|
---|
| 514 | #endif
|
---|
| 515 |
|
---|
| 516 | /* Any of the getprotoent getprotobyname getprotobynumber using buffer? */
|
---|
| 517 |
|
---|
| 518 | #if (defined(GETPROTOENT_R_HAS_BUFFER) || defined(GETPROTOBYNAME_R_HAS_BUFFER) || defined(GETPROTOBYNUMBER_R_HAS_BUFFER))
|
---|
| 519 | # define USE_PROTOENT_BUFFER
|
---|
| 520 | #else
|
---|
| 521 | # undef USE_PROTOENT_BUFFER
|
---|
| 522 | #endif
|
---|
| 523 |
|
---|
| 524 | /* The getservent getservbyname getservbyport using buffer? */
|
---|
| 525 |
|
---|
| 526 | #if defined(HAS_GETSERVENT_R) && (GETSERVENT_R_PROTO == REENTRANT_PROTO_I_SBWR || GETSERVENT_R_PROTO == REENTRANT_PROTO_I_SBI || GETSERVENT_R_PROTO == REENTRANT_PROTO_S_SBI)
|
---|
| 527 | # define GETSERVENT_R_HAS_BUFFER
|
---|
| 528 | #else
|
---|
| 529 | # undef GETSERVENT_R_HAS_BUFFER
|
---|
| 530 | #endif
|
---|
| 531 | #if defined(HAS_GETSERVBYNAME_R) && (GETSERVBYNAME_R_PROTO == REENTRANT_PROTO_I_CCSBWR || GETSERVBYNAME_R_PROTO == REENTRANT_PROTO_S_CCSBI)
|
---|
| 532 | # define GETSERVBYNAME_R_HAS_BUFFER
|
---|
| 533 | #else
|
---|
| 534 | # undef GETSERVBYNAME_R_HAS_BUFFER
|
---|
| 535 | #endif
|
---|
| 536 | #if defined(HAS_GETSERVBYPORT_R) && (GETSERVBYPORT_R_PROTO == REENTRANT_PROTO_I_ICSBWR || GETSERVBYPORT_R_PROTO == REENTRANT_PROTO_S_ICSBI)
|
---|
| 537 | # define GETSERVBYPORT_R_HAS_BUFFER
|
---|
| 538 | #else
|
---|
| 539 | # undef GETSERVBYPORT_R_HAS_BUFFER
|
---|
| 540 | #endif
|
---|
| 541 |
|
---|
| 542 | /* Any of the getservent getservbyname getservbyport using buffer? */
|
---|
| 543 |
|
---|
| 544 | #if (defined(GETSERVENT_R_HAS_BUFFER) || defined(GETSERVBYNAME_R_HAS_BUFFER) || defined(GETSERVBYPORT_R_HAS_BUFFER))
|
---|
| 545 | # define USE_SERVENT_BUFFER
|
---|
| 546 | #else
|
---|
| 547 | # undef USE_SERVENT_BUFFER
|
---|
| 548 | #endif
|
---|
| 549 |
|
---|
| 550 | /* The gethostent gethostbyaddr gethostbyname using errno? */
|
---|
| 551 |
|
---|
| 552 | #if defined(HAS_GETHOSTENT_R) && (GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBWRE || GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBIE || GETHOSTENT_R_PROTO == REENTRANT_PROTO_S_SBIE)
|
---|
| 553 | # define GETHOSTENT_R_HAS_ERRNO
|
---|
| 554 | #else
|
---|
| 555 | # undef GETHOSTENT_R_HAS_ERRNO
|
---|
| 556 | #endif
|
---|
| 557 | #if defined(HAS_GETHOSTBYADDR_R) && (GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_CWISBWRE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CWISBWIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CWISBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_TWISBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CIISBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CSBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_TSBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_TsISBWRE)
|
---|
| 558 | # define GETHOSTBYADDR_R_HAS_ERRNO
|
---|
| 559 | #else
|
---|
| 560 | # undef GETHOSTBYADDR_R_HAS_ERRNO
|
---|
| 561 | #endif
|
---|
| 562 | #if defined(HAS_GETHOSTBYNAME_R) && (GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE || GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_S_CSBIE)
|
---|
| 563 | # define GETHOSTBYNAME_R_HAS_ERRNO
|
---|
| 564 | #else
|
---|
| 565 | # undef GETHOSTBYNAME_R_HAS_ERRNO
|
---|
| 566 | #endif
|
---|
| 567 |
|
---|
| 568 | /* Any of the gethostent gethostbyaddr gethostbyname using errno? */
|
---|
| 569 |
|
---|
| 570 | #if (defined(GETHOSTENT_R_HAS_ERRNO) || defined(GETHOSTBYADDR_R_HAS_ERRNO) || defined(GETHOSTBYNAME_R_HAS_ERRNO))
|
---|
| 571 | # define USE_HOSTENT_ERRNO
|
---|
| 572 | #else
|
---|
| 573 | # undef USE_HOSTENT_ERRNO
|
---|
| 574 | #endif
|
---|
| 575 |
|
---|
| 576 | /* The getnetent getnetbyaddr getnetbyname using errno? */
|
---|
| 577 |
|
---|
| 578 | #if defined(HAS_GETNETENT_R) && (GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBWRE || GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBIE || GETNETENT_R_PROTO == REENTRANT_PROTO_S_SBIE)
|
---|
| 579 | # define GETNETENT_R_HAS_ERRNO
|
---|
| 580 | #else
|
---|
| 581 | # undef GETNETENT_R_HAS_ERRNO
|
---|
| 582 | #endif
|
---|
| 583 | #if defined(HAS_GETNETBYADDR_R) && (GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_UISBWRE || GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_uISBWRE)
|
---|
| 584 | # define GETNETBYADDR_R_HAS_ERRNO
|
---|
| 585 | #else
|
---|
| 586 | # undef GETNETBYADDR_R_HAS_ERRNO
|
---|
| 587 | #endif
|
---|
| 588 | #if defined(HAS_GETNETBYNAME_R) && (GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE)
|
---|
| 589 | # define GETNETBYNAME_R_HAS_ERRNO
|
---|
| 590 | #else
|
---|
| 591 | # undef GETNETBYNAME_R_HAS_ERRNO
|
---|
| 592 | #endif
|
---|
| 593 |
|
---|
| 594 | /* Any of the getnetent getnetbyaddr getnetbyname using errno? */
|
---|
| 595 |
|
---|
| 596 | #if (defined(GETNETENT_R_HAS_ERRNO) || defined(GETNETBYADDR_R_HAS_ERRNO) || defined(GETNETBYNAME_R_HAS_ERRNO))
|
---|
| 597 | # define USE_NETENT_ERRNO
|
---|
| 598 | #else
|
---|
| 599 | # undef USE_NETENT_ERRNO
|
---|
| 600 | #endif
|
---|
| 601 |
|
---|
| 602 |
|
---|
| 603 | typedef struct {
|
---|
| 604 | #ifdef HAS_ASCTIME_R
|
---|
| 605 | char* _asctime_buffer;
|
---|
| 606 | size_t _asctime_size;
|
---|
| 607 | #endif /* HAS_ASCTIME_R */
|
---|
| 608 | #ifdef HAS_CRYPT_R
|
---|
| 609 | #if CRYPT_R_PROTO == REENTRANT_PROTO_B_CCD
|
---|
| 610 | CRYPTD* _crypt_data;
|
---|
| 611 | #else
|
---|
| 612 | struct crypt_data _crypt_struct;
|
---|
| 613 | #endif
|
---|
| 614 | #endif /* HAS_CRYPT_R */
|
---|
| 615 | #ifdef HAS_CTIME_R
|
---|
| 616 | char* _ctime_buffer;
|
---|
| 617 | size_t _ctime_size;
|
---|
| 618 | #endif /* HAS_CTIME_R */
|
---|
| 619 | #ifdef HAS_DRAND48_R
|
---|
| 620 | struct drand48_data _drand48_struct;
|
---|
| 621 | double _drand48_double;
|
---|
| 622 | #endif /* HAS_DRAND48_R */
|
---|
| 623 | #ifdef HAS_GETGRNAM_R
|
---|
| 624 | struct group _grent_struct;
|
---|
| 625 | char* _grent_buffer;
|
---|
| 626 | size_t _grent_size;
|
---|
| 627 | # ifdef USE_GRENT_PTR
|
---|
| 628 | struct group* _grent_ptr;
|
---|
| 629 | # endif
|
---|
| 630 | # ifdef USE_GRENT_FPTR
|
---|
| 631 | FILE* _grent_fptr;
|
---|
| 632 | # endif
|
---|
| 633 | #endif /* HAS_GETGRNAM_R */
|
---|
| 634 | #ifdef HAS_GETHOSTBYNAME_R
|
---|
| 635 | struct hostent _hostent_struct;
|
---|
| 636 | # if GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSD
|
---|
| 637 | struct hostent_data _hostent_data;
|
---|
| 638 | # else
|
---|
| 639 | char* _hostent_buffer;
|
---|
| 640 | size_t _hostent_size;
|
---|
| 641 | # endif
|
---|
| 642 | # ifdef USE_HOSTENT_PTR
|
---|
| 643 | struct hostent* _hostent_ptr;
|
---|
| 644 | # endif
|
---|
| 645 | # ifdef USE_HOSTENT_ERRNO
|
---|
| 646 | int _hostent_errno;
|
---|
| 647 | # endif
|
---|
| 648 | #endif /* HAS_GETHOSTBYNAME_R */
|
---|
| 649 | #ifdef HAS_GETLOGIN_R
|
---|
| 650 | char* _getlogin_buffer;
|
---|
| 651 | size_t _getlogin_size;
|
---|
| 652 | #endif /* HAS_GETLOGIN_R */
|
---|
| 653 | #ifdef HAS_GETNETBYNAME_R
|
---|
| 654 | struct netent _netent_struct;
|
---|
| 655 | # if GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSD
|
---|
| 656 | struct netent_data _netent_data;
|
---|
| 657 | # else
|
---|
| 658 | char* _netent_buffer;
|
---|
| 659 | size_t _netent_size;
|
---|
| 660 | # endif
|
---|
| 661 | # ifdef USE_NETENT_PTR
|
---|
| 662 | struct netent* _netent_ptr;
|
---|
| 663 | # endif
|
---|
| 664 | # ifdef USE_NETENT_ERRNO
|
---|
| 665 | int _netent_errno;
|
---|
| 666 | # endif
|
---|
| 667 | #endif /* HAS_GETNETBYNAME_R */
|
---|
| 668 | #ifdef HAS_GETPROTOBYNAME_R
|
---|
| 669 | struct protoent _protoent_struct;
|
---|
| 670 | # if GETPROTOBYNAME_R_PROTO == REENTRANT_PROTO_I_CSD
|
---|
| 671 | struct protoent_data _protoent_data;
|
---|
| 672 | # else
|
---|
| 673 | char* _protoent_buffer;
|
---|
| 674 | size_t _protoent_size;
|
---|
| 675 | # endif
|
---|
| 676 | # ifdef USE_PROTOENT_PTR
|
---|
| 677 | struct protoent* _protoent_ptr;
|
---|
| 678 | # endif
|
---|
| 679 | # ifdef USE_PROTOENT_ERRNO
|
---|
| 680 | int _protoent_errno;
|
---|
| 681 | # endif
|
---|
| 682 | #endif /* HAS_GETPROTOBYNAME_R */
|
---|
| 683 | #ifdef HAS_GETPWNAM_R
|
---|
| 684 | struct passwd _pwent_struct;
|
---|
| 685 | char* _pwent_buffer;
|
---|
| 686 | size_t _pwent_size;
|
---|
| 687 | # ifdef USE_PWENT_PTR
|
---|
| 688 | struct passwd* _pwent_ptr;
|
---|
| 689 | # endif
|
---|
| 690 | # ifdef USE_PWENT_FPTR
|
---|
| 691 | FILE* _pwent_fptr;
|
---|
| 692 | # endif
|
---|
| 693 | #endif /* HAS_GETPWNAM_R */
|
---|
| 694 | #ifdef HAS_GETSERVBYNAME_R
|
---|
| 695 | struct servent _servent_struct;
|
---|
| 696 | # if GETSERVBYNAME_R_PROTO == REENTRANT_PROTO_I_CCSD
|
---|
| 697 | struct servent_data _servent_data;
|
---|
| 698 | # else
|
---|
| 699 | char* _servent_buffer;
|
---|
| 700 | size_t _servent_size;
|
---|
| 701 | # endif
|
---|
| 702 | # ifdef USE_SERVENT_PTR
|
---|
| 703 | struct servent* _servent_ptr;
|
---|
| 704 | # endif
|
---|
| 705 | # ifdef USE_SERVENT_ERRNO
|
---|
| 706 | int _servent_errno;
|
---|
| 707 | # endif
|
---|
| 708 | #endif /* HAS_GETSERVBYNAME_R */
|
---|
| 709 | #ifdef HAS_GETSPNAM_R
|
---|
| 710 | struct spwd _spent_struct;
|
---|
| 711 | char* _spent_buffer;
|
---|
| 712 | size_t _spent_size;
|
---|
| 713 | # ifdef USE_SPENT_PTR
|
---|
| 714 | struct spwd* _spent_ptr;
|
---|
| 715 | # endif
|
---|
| 716 | # ifdef USE_SPENT_FPTR
|
---|
| 717 | FILE* _spent_fptr;
|
---|
| 718 | # endif
|
---|
| 719 | #endif /* HAS_GETSPNAM_R */
|
---|
| 720 | #ifdef HAS_GMTIME_R
|
---|
| 721 | struct tm _gmtime_struct;
|
---|
| 722 | #endif /* HAS_GMTIME_R */
|
---|
| 723 | #ifdef HAS_LOCALTIME_R
|
---|
| 724 | struct tm _localtime_struct;
|
---|
| 725 | #endif /* HAS_LOCALTIME_R */
|
---|
| 726 | #ifdef HAS_RANDOM_R
|
---|
| 727 | # if RANDOM_R_PROTO != REENTRANT_PROTO_I_St
|
---|
| 728 | struct random_data _random_struct;
|
---|
| 729 | # endif
|
---|
| 730 | #endif /* HAS_RANDOM_R */
|
---|
| 731 | #ifdef HAS_READDIR_R
|
---|
| 732 | struct dirent* _readdir_struct;
|
---|
| 733 | size_t _readdir_size;
|
---|
| 734 | # if READDIR_R_PROTO == REENTRANT_PROTO_I_TSR
|
---|
| 735 | struct dirent* _readdir_ptr;
|
---|
| 736 | # endif
|
---|
| 737 | #endif /* HAS_READDIR_R */
|
---|
| 738 | #ifdef HAS_READDIR64_R
|
---|
| 739 | struct dirent64* _readdir64_struct;
|
---|
| 740 | size_t _readdir64_size;
|
---|
| 741 | # if READDIR64_R_PROTO == REENTRANT_PROTO_I_TSR
|
---|
| 742 | struct dirent64* _readdir64_ptr;
|
---|
| 743 | # endif
|
---|
| 744 | #endif /* HAS_READDIR64_R */
|
---|
| 745 | #ifdef HAS_SETLOCALE_R
|
---|
| 746 | char* _setlocale_buffer;
|
---|
| 747 | size_t _setlocale_size;
|
---|
| 748 | #endif /* HAS_SETLOCALE_R */
|
---|
| 749 | #ifdef HAS_STRERROR_R
|
---|
| 750 | char* _strerror_buffer;
|
---|
| 751 | size_t _strerror_size;
|
---|
| 752 | #endif /* HAS_STRERROR_R */
|
---|
| 753 | #ifdef HAS_TTYNAME_R
|
---|
| 754 | char* _ttyname_buffer;
|
---|
| 755 | size_t _ttyname_size;
|
---|
| 756 | #endif /* HAS_TTYNAME_R */
|
---|
| 757 | #ifdef HAS_CRYPT_R
|
---|
| 758 | #if CRYPT_R_PROTO == REENTRANT_PROTO_B_CCD
|
---|
| 759 | #else
|
---|
| 760 | struct crypt_data *_crypt_struct_buffer;
|
---|
| 761 | #endif
|
---|
| 762 | #endif /* HAS_CRYPT_R */
|
---|
| 763 | #ifdef HAS_RANDOM_R
|
---|
| 764 | # if RANDOM_R_PROTO == REENTRANT_PROTO_I_iS
|
---|
| 765 | int _random_retval;
|
---|
| 766 | # endif
|
---|
| 767 | # if RANDOM_R_PROTO == REENTRANT_PROTO_I_lS
|
---|
| 768 | long _random_retval;
|
---|
| 769 | # endif
|
---|
| 770 | # if RANDOM_R_PROTO == REENTRANT_PROTO_I_St
|
---|
| 771 | struct random_data _random_struct;
|
---|
| 772 | int32_t _random_retval;
|
---|
| 773 | # endif
|
---|
| 774 | #endif /* HAS_RANDOM_R */
|
---|
| 775 | #ifdef HAS_SRANDOM_R
|
---|
| 776 | struct random_data _srandom_struct;
|
---|
| 777 | #endif /* HAS_SRANDOM_R */
|
---|
| 778 |
|
---|
| 779 | int dummy; /* cannot have empty structs */
|
---|
| 780 | } REENTR;
|
---|
| 781 |
|
---|
| 782 | #endif /* USE_REENTRANT_API */
|
---|
| 783 |
|
---|
| 784 | #endif
|
---|