File: | obj/gnu/usr.bin/perl/ext/POSIX/POSIX.c |
Warning: | line 3391, column 2 Value stored to 'RETVAL' is never read |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
1 | /* |
2 | * This file was generated automatically by ExtUtils::ParseXS version 3.40 from the |
3 | * contents of POSIX.xs. Do not edit this file, edit POSIX.xs instead. |
4 | * |
5 | * ANY CHANGES MADE HERE WILL BE LOST! |
6 | * |
7 | */ |
8 | |
9 | #line 1 "POSIX.xs" |
10 | #define PERL_EXT_POSIX |
11 | #define PERL_EXT |
12 | |
13 | #ifdef NETWARE |
14 | #define _POSIX_ |
15 | /* |
16 | * Ideally this should be somewhere down in the includes |
17 | * but putting it in other places is giving compiler errors. |
18 | * Also here I am unable to check for HAS_UNAME since it wouldn't have |
19 | * yet come into the file at this stage - sgp 18th Oct 2000 |
20 | */ |
21 | #include <sys/utsname.h> |
22 | #endif /* NETWARE */ |
23 | |
24 | #define PERL_NO_GET_CONTEXT |
25 | |
26 | #include "EXTERN.h" |
27 | #define PERLIO_NOT_STDIO1 1 |
28 | #include "perl.h" |
29 | #include "XSUB.h" |
30 | |
31 | static int not_here(const char *s); |
32 | |
33 | #if defined(PERL_IMPLICIT_SYS) |
34 | # undef signal |
35 | # undef open |
36 | # undef setmode |
37 | # define open PerlLIO_open3 |
38 | #endif |
39 | #include <ctype.h> |
40 | #ifdef I_DIRENT /* XXX maybe better to just rely on perl.h? */ |
41 | #include <dirent.h> |
42 | #endif |
43 | #include <errno(*__errno()).h> |
44 | #ifdef WIN32 |
45 | #include <sys/errno2.h> |
46 | #endif |
47 | #include <float.h> |
48 | #ifdef I_FENV |
49 | #if !(defined(__vax__) && defined(__NetBSD__)) |
50 | #include <fenv.h> |
51 | #endif |
52 | #endif |
53 | #include <limits.h> |
54 | #include <locale.h> |
55 | #include <math.h> |
56 | #ifdef I_PWD |
57 | #include <pwd.h> |
58 | #endif |
59 | #include <setjmp.h> |
60 | #include <signal.h> |
61 | #include <stdarg.h> |
62 | #include <stddef.h> |
63 | |
64 | #ifdef I_UNISTD |
65 | #include <unistd.h> |
66 | #endif |
67 | |
68 | #ifdef I_SYS_TIME |
69 | # include <sys/time.h> |
70 | #endif |
71 | |
72 | #ifdef I_SYS_RESOURCE |
73 | # include <sys/resource.h> |
74 | #endif |
75 | |
76 | /* Cygwin's stdio.h doesn't make cuserid() visible with -D_GNU_SOURCE, |
77 | unlike Linux. |
78 | */ |
79 | #ifdef __CYGWIN__ |
80 | # undef HAS_CUSERID |
81 | #endif |
82 | |
83 | #if defined(USE_QUADMATH) && defined(I_QUADMATH) |
84 | |
85 | # undef M_E((double)2.7182818284590452354) |
86 | # undef M_LOG2E((double)1.4426950408889634074) |
87 | # undef M_LOG10E((double)0.43429448190325182765) |
88 | # undef M_LN2((double)0.69314718055994530942) |
89 | # undef M_LN10((double)2.30258509299404568402) |
90 | # undef M_PI((double)3.14159265358979323846) |
91 | # undef M_PI_2((double)1.57079632679489661923) |
92 | # undef M_PI_4((double)0.78539816339744830962) |
93 | # undef M_1_PI((double)0.31830988618379067154) |
94 | # undef M_2_PI((double)0.63661977236758134308) |
95 | # undef M_2_SQRTPI((double)1.12837916709551257390) |
96 | # undef M_SQRT2((double)1.41421356237309504880) |
97 | # undef M_SQRT1_2((double)0.70710678118654752440) |
98 | |
99 | # define M_E((double)2.7182818284590452354) M_Eq |
100 | # define M_LOG2E((double)1.4426950408889634074) M_LOG2Eq |
101 | # define M_LOG10E((double)0.43429448190325182765) M_LOG10Eq |
102 | # define M_LN2((double)0.69314718055994530942) M_LN2q |
103 | # define M_LN10((double)2.30258509299404568402) M_LN10q |
104 | # define M_PI((double)3.14159265358979323846) M_PIq |
105 | # define M_PI_2((double)1.57079632679489661923) M_PI_2q |
106 | # define M_PI_4((double)0.78539816339744830962) M_PI_4q |
107 | # define M_1_PI((double)0.31830988618379067154) M_1_PIq |
108 | # define M_2_PI((double)0.63661977236758134308) M_2_PIq |
109 | # define M_2_SQRTPI((double)1.12837916709551257390) M_2_SQRTPIq |
110 | # define M_SQRT2((double)1.41421356237309504880) M_SQRT2q |
111 | # define M_SQRT1_2((double)0.70710678118654752440) M_SQRT1_2q |
112 | |
113 | #else |
114 | |
115 | # ifdef USE_LONG_DOUBLE |
116 | # undef M_E((double)2.7182818284590452354) |
117 | # undef M_LOG2E((double)1.4426950408889634074) |
118 | # undef M_LOG10E((double)0.43429448190325182765) |
119 | # undef M_LN2((double)0.69314718055994530942) |
120 | # undef M_LN10((double)2.30258509299404568402) |
121 | # undef M_PI((double)3.14159265358979323846) |
122 | # undef M_PI_2((double)1.57079632679489661923) |
123 | # undef M_PI_4((double)0.78539816339744830962) |
124 | # undef M_1_PI((double)0.31830988618379067154) |
125 | # undef M_2_PI((double)0.63661977236758134308) |
126 | # undef M_2_SQRTPI((double)1.12837916709551257390) |
127 | # undef M_SQRT2((double)1.41421356237309504880) |
128 | # undef M_SQRT1_2((double)0.70710678118654752440) |
129 | # define FLOAT_C(c)(c) CAT2(c,L)cL |
130 | # else |
131 | # define FLOAT_C(c)(c) (c) |
132 | # endif |
133 | |
134 | # ifndef M_E((double)2.7182818284590452354) |
135 | # define M_E((double)2.7182818284590452354) FLOAT_C(2.71828182845904523536028747135266250)(2.71828182845904523536028747135266250) |
136 | # endif |
137 | # ifndef M_LOG2E((double)1.4426950408889634074) |
138 | # define M_LOG2E((double)1.4426950408889634074) FLOAT_C(1.44269504088896340735992468100189214)(1.44269504088896340735992468100189214) |
139 | # endif |
140 | # ifndef M_LOG10E((double)0.43429448190325182765) |
141 | # define M_LOG10E((double)0.43429448190325182765) FLOAT_C(0.434294481903251827651128918916605082)(0.434294481903251827651128918916605082) |
142 | # endif |
143 | # ifndef M_LN2((double)0.69314718055994530942) |
144 | # define M_LN2((double)0.69314718055994530942) FLOAT_C(0.693147180559945309417232121458176568)(0.693147180559945309417232121458176568) |
145 | # endif |
146 | # ifndef M_LN10((double)2.30258509299404568402) |
147 | # define M_LN10((double)2.30258509299404568402) FLOAT_C(2.30258509299404568401799145468436421)(2.30258509299404568401799145468436421) |
148 | # endif |
149 | # ifndef M_PI((double)3.14159265358979323846) |
150 | # define M_PI((double)3.14159265358979323846) FLOAT_C(3.14159265358979323846264338327950288)(3.14159265358979323846264338327950288) |
151 | # endif |
152 | # ifndef M_PI_2((double)1.57079632679489661923) |
153 | # define M_PI_2((double)1.57079632679489661923) FLOAT_C(1.57079632679489661923132169163975144)(1.57079632679489661923132169163975144) |
154 | # endif |
155 | # ifndef M_PI_4((double)0.78539816339744830962) |
156 | # define M_PI_4((double)0.78539816339744830962) FLOAT_C(0.785398163397448309615660845819875721)(0.785398163397448309615660845819875721) |
157 | # endif |
158 | # ifndef M_1_PI((double)0.31830988618379067154) |
159 | # define M_1_PI((double)0.31830988618379067154) FLOAT_C(0.318309886183790671537767526745028724)(0.318309886183790671537767526745028724) |
160 | # endif |
161 | # ifndef M_2_PI((double)0.63661977236758134308) |
162 | # define M_2_PI((double)0.63661977236758134308) FLOAT_C(0.636619772367581343075535053490057448)(0.636619772367581343075535053490057448) |
163 | # endif |
164 | # ifndef M_2_SQRTPI((double)1.12837916709551257390) |
165 | # define M_2_SQRTPI((double)1.12837916709551257390) FLOAT_C(1.12837916709551257389615890312154517)(1.12837916709551257389615890312154517) |
166 | # endif |
167 | # ifndef M_SQRT2((double)1.41421356237309504880) |
168 | # define M_SQRT2((double)1.41421356237309504880) FLOAT_C(1.41421356237309504880168872420969808)(1.41421356237309504880168872420969808) |
169 | # endif |
170 | # ifndef M_SQRT1_2((double)0.70710678118654752440) |
171 | # define M_SQRT1_2((double)0.70710678118654752440) FLOAT_C(0.707106781186547524400844362104849039)(0.707106781186547524400844362104849039) |
172 | # endif |
173 | |
174 | #endif |
175 | |
176 | #if !defined(INFINITY__builtin_inff()) && defined(NV_INFPL_inf.nv) |
177 | # define INFINITY__builtin_inff() NV_INFPL_inf.nv |
178 | #endif |
179 | |
180 | #if !defined(NAN__builtin_nanf("")) && defined(NV_NANPL_nan.nv) |
181 | # define NAN__builtin_nanf("") NV_NANPL_nan.nv |
182 | #endif |
183 | |
184 | #if !defined(InfPL_inf.nv) && defined(NV_INFPL_inf.nv) |
185 | # define InfPL_inf.nv NV_INFPL_inf.nv |
186 | #endif |
187 | |
188 | #if !defined(NaNPL_nan.nv) && defined(NV_NANPL_nan.nv) |
189 | # define NaNPL_nan.nv NV_NANPL_nan.nv |
190 | #endif |
191 | |
192 | /* We will have an emulation. */ |
193 | #ifndef FP_INFINITE0x01 |
194 | # define FP_INFINITE0x01 0 |
195 | # define FP_NAN0x02 1 |
196 | # define FP_NORMAL0x04 2 |
197 | # define FP_SUBNORMAL0x08 3 |
198 | # define FP_ZERO0x10 4 |
199 | #endif |
200 | |
201 | /* We will have an emulation. */ |
202 | #ifndef FE_TONEAREST0x000 |
203 | # define FE_TOWARDZERO0xc00 0 |
204 | # define FE_TONEAREST0x000 1 |
205 | # define FE_UPWARD0x800 2 |
206 | # define FE_DOWNWARD0x400 3 |
207 | #endif |
208 | |
209 | /* C89 math.h: |
210 | |
211 | acos asin atan atan2 ceil cos cosh exp fabs floor fmod frexp ldexp |
212 | log log10 modf pow sin sinh sqrt tan tanh |
213 | |
214 | * Implemented in core: |
215 | |
216 | atan2 cos exp log pow sin sqrt |
217 | |
218 | * C99 math.h added: |
219 | |
220 | acosh asinh atanh cbrt copysign erf erfc exp2 expm1 fdim fma fmax |
221 | fmin fpclassify hypot ilogb isfinite isgreater isgreaterequal isinf |
222 | isless islessequal islessgreater isnan isnormal isunordered lgamma |
223 | log1p log2 logb lrint lround nan nearbyint nextafter nexttoward remainder |
224 | remquo rint round scalbn signbit tgamma trunc |
225 | |
226 | See: |
227 | http://pubs.opengroup.org/onlinepubs/009695399/basedefs/math.h.html |
228 | |
229 | * Berkeley/SVID extensions: |
230 | |
231 | j0 j1 jn y0 y1 yn |
232 | |
233 | * Configure already (5.21.5) scans for: |
234 | |
235 | copysign*l* fpclassify isfinite isinf isnan isnan*l* ilogb*l* signbit scalbn*l* |
236 | |
237 | * For floating-point round mode (which matters for e.g. lrint and rint) |
238 | |
239 | fegetround fesetround |
240 | |
241 | */ |
242 | |
243 | /* XXX Constant FP_FAST_FMA (if true, FMA is faster) */ |
244 | |
245 | /* XXX Add ldiv(), lldiv()? It's C99, but from stdlib.h, not math.h */ |
246 | |
247 | /* XXX Beware old gamma() -- one cannot know whether that is the |
248 | * gamma or the log of gamma, that's why the new tgamma and lgamma. |
249 | * Though also remember lgamma_r. */ |
250 | |
251 | /* Certain AIX releases have the C99 math, but not in long double. |
252 | * The <math.h> has them, e.g. __expl128, but no library has them! |
253 | * |
254 | * Also see the comments in hints/aix.sh about long doubles. */ |
255 | |
256 | #if defined(USE_QUADMATH) && defined(I_QUADMATH) |
257 | # define c99_acoshacosh acoshq |
258 | # define c99_asinhasinh asinhq |
259 | # define c99_atanhatanh atanhq |
260 | # define c99_cbrtcbrt cbrtq |
261 | # define c99_copysigncopysign copysignq |
262 | # define c99_erferf erfq |
263 | # define c99_erfcerfc erfcq |
264 | /* no exp2q */ |
265 | # define c99_expm1expm1 expm1q |
266 | # define c99_fdimfdim fdimq |
267 | # define c99_fmafma fmaq |
268 | # define c99_fmaxfmax fmaxq |
269 | # define c99_fminfmin fminq |
270 | # define c99_hypothypot hypotq |
271 | # define c99_ilogbilogb ilogbq |
272 | # define c99_lgammalgamma lgammaq |
273 | # define c99_log1plog1p log1pq |
274 | # define c99_log2log2 log2q |
275 | /* no logbq */ |
276 | # if defined(USE_64_BIT_INT) && QUADKIND2 == QUAD_IS_LONG_LONG3 |
277 | # define c99_lrintlrint llrintq |
278 | # define c99_lroundlround llroundq |
279 | # else |
280 | # define c99_lrintlrint lrintq |
281 | # define c99_lroundlround lroundq |
282 | # endif |
283 | # define c99_nannan nanq |
284 | # define c99_nearbyintnearbyint nearbyintq |
285 | # define c99_nextafternextafter nextafterq |
286 | /* no nexttowardq */ |
287 | # define c99_remainderremainder remainderq |
288 | # define c99_remquoremquo remquoq |
289 | # define c99_rintrint rintq |
290 | # define c99_roundround roundq |
291 | # define c99_scalbnscalbn scalbnq |
292 | # define c99_signbitsignbit signbitq |
293 | # define c99_tgammatgamma tgammaq |
294 | # define c99_trunctrunc truncq |
295 | # define bessel_j0j0 j0q |
296 | # define bessel_j1j1 j1q |
297 | # define bessel_jnjn jnq |
298 | # define bessel_y0y0 y0q |
299 | # define bessel_y1y1 y1q |
300 | # define bessel_ynyn ynq |
301 | #elif defined(USE_LONG_DOUBLE) && \ |
302 | (defined(HAS_FREXPL) || defined(HAS_ILOGBL)) && defined(HAS_SQRTL) |
303 | /* Use some of the Configure scans for long double math functions |
304 | * as the canary for all the C99 *l variants being defined. */ |
305 | # define c99_acoshacosh acoshl |
306 | # define c99_asinhasinh asinhl |
307 | # define c99_atanhatanh atanhl |
308 | # define c99_cbrtcbrt cbrtl |
309 | # define c99_copysigncopysign copysignl |
310 | # define c99_erferf erfl |
311 | # define c99_erfcerfc erfcl |
312 | # define c99_exp2exp2 exp2l |
313 | # define c99_expm1expm1 expm1l |
314 | # define c99_fdimfdim fdiml |
315 | # define c99_fmafma fmal |
316 | # define c99_fmaxfmax fmaxl |
317 | # define c99_fminfmin fminl |
318 | # define c99_hypothypot hypotl |
319 | # define c99_ilogbilogb ilogbl |
320 | # define c99_lgammalgamma lgammal |
321 | # define c99_log1plog1p log1pl |
322 | # define c99_log2log2 log2l |
323 | # define c99_logblogb logbl |
324 | # if defined(USE_64_BIT_INT) && QUADKIND2 == QUAD_IS_LONG_LONG3 && defined(HAS_LLRINTL) |
325 | # define c99_lrintlrint llrintl |
326 | # elif defined(HAS_LRINTL) |
327 | # define c99_lrintlrint lrintl |
328 | # endif |
329 | # if defined(USE_64_BIT_INT) && QUADKIND2 == QUAD_IS_LONG_LONG3 && defined(HAS_LLROUNDL) |
330 | # define c99_lroundlround llroundl |
331 | # elif defined(HAS_LROUNDL) |
332 | # define c99_lroundlround lroundl |
333 | # endif |
334 | # define c99_nannan nanl |
335 | # define c99_nearbyintnearbyint nearbyintl |
336 | # define c99_nextafternextafter nextafterl |
337 | # define c99_nexttowardnexttoward nexttowardl |
338 | # define c99_remainderremainder remainderl |
339 | # define c99_remquoremquo remquol |
340 | # define c99_rintrint rintl |
341 | # define c99_roundround roundl |
342 | # define c99_scalbnscalbn scalbnl |
343 | # ifdef HAS_SIGNBIT /* possibly bad assumption */ |
344 | # define c99_signbitsignbit signbitl |
345 | # endif |
346 | # define c99_tgammatgamma tgammal |
347 | # define c99_trunctrunc truncl |
348 | #else |
349 | # define c99_acoshacosh acosh |
350 | # define c99_asinhasinh asinh |
351 | # define c99_atanhatanh atanh |
352 | # define c99_cbrtcbrt cbrt |
353 | # define c99_copysigncopysign copysign |
354 | # define c99_erferf erf |
355 | # define c99_erfcerfc erfc |
356 | # define c99_exp2exp2 exp2 |
357 | # define c99_expm1expm1 expm1 |
358 | # define c99_fdimfdim fdim |
359 | # define c99_fmafma fma |
360 | # define c99_fmaxfmax fmax |
361 | # define c99_fminfmin fmin |
362 | # define c99_hypothypot hypot |
363 | # define c99_ilogbilogb ilogb |
364 | # define c99_lgammalgamma lgamma |
365 | # define c99_log1plog1p log1p |
366 | # define c99_log2log2 log2 |
367 | # define c99_logblogb logb |
368 | # if defined(USE_64_BIT_INT) && QUADKIND2 == QUAD_IS_LONG_LONG3 && defined(HAS_LLRINT) |
369 | # define c99_lrintlrint llrint |
370 | # else |
371 | # define c99_lrintlrint lrint |
372 | # endif |
373 | # if defined(USE_64_BIT_INT) && QUADKIND2 == QUAD_IS_LONG_LONG3 && defined(HAS_LLROUND) |
374 | # define c99_lroundlround llround |
375 | # else |
376 | # define c99_lroundlround lround |
377 | # endif |
378 | # define c99_nannan nan |
379 | # define c99_nearbyintnearbyint nearbyint |
380 | # define c99_nextafternextafter nextafter |
381 | # define c99_nexttowardnexttoward nexttoward |
382 | # define c99_remainderremainder remainder |
383 | # define c99_remquoremquo remquo |
384 | # define c99_rintrint rint |
385 | # define c99_roundround round |
386 | # define c99_scalbnscalbn scalbn |
387 | /* We already define Perl_signbit in perl.h. */ |
388 | # ifdef HAS_SIGNBIT |
389 | # define c99_signbitsignbit signbit |
390 | # endif |
391 | # define c99_tgammatgamma tgamma |
392 | # define c99_trunctrunc trunc |
393 | #endif |
394 | |
395 | /* AIX xlc (__IBMC__) really doesn't have the following long double |
396 | * math interfaces (no __acoshl128 aka acoshl, etc.), see |
397 | * hints/aix.sh. These are in the -lc128 but fail to be found |
398 | * during dynamic linking/loading. |
399 | * |
400 | * XXX1 Better Configure scans |
401 | * XXX2 Is this xlc version dependent? */ |
402 | #if defined(USE_LONG_DOUBLE) && defined(__IBMC__) |
403 | # undef c99_acoshacosh |
404 | # undef c99_asinhasinh |
405 | # undef c99_atanhatanh |
406 | # undef c99_cbrtcbrt |
407 | # undef c99_copysigncopysign |
408 | # undef c99_exp2exp2 |
409 | # undef c99_expm1expm1 |
410 | # undef c99_fdimfdim |
411 | # undef c99_fmafma |
412 | # undef c99_fmaxfmax |
413 | # undef c99_fminfmin |
414 | # undef c99_hypothypot |
415 | # undef c99_ilogbilogb |
416 | # undef c99_lrintlrint |
417 | # undef c99_lroundlround |
418 | # undef c99_log1plog1p |
419 | # undef c99_log2log2 |
420 | # undef c99_logblogb |
421 | # undef c99_nannan |
422 | # undef c99_nearbyintnearbyint |
423 | # undef c99_nextafternextafter |
424 | # undef c99_nexttowardnexttoward |
425 | # undef c99_remainderremainder |
426 | # undef c99_remquoremquo |
427 | # undef c99_rintrint |
428 | # undef c99_roundround |
429 | # undef c99_scalbnscalbn |
430 | # undef c99_tgammatgamma |
431 | # undef c99_trunctrunc |
432 | #endif |
433 | |
434 | #ifndef isunordered |
435 | # ifdef Perl_isnan |
436 | # define isunordered(x, y)(((sizeof (x) == sizeof (float)) ? __isnanf(x) : (sizeof (x) == sizeof (double)) ? __isnan(x) : __isnanl(x)) || ((sizeof (y) == sizeof (float)) ? __isnanf(y) : (sizeof (y) == sizeof (double )) ? __isnan(y) : __isnanl(y))) (Perl_isnan(x)((sizeof (x) == sizeof (float)) ? __isnanf(x) : (sizeof (x) == sizeof (double)) ? __isnan(x) : __isnanl(x)) || Perl_isnan(y)((sizeof (y) == sizeof (float)) ? __isnanf(y) : (sizeof (y) == sizeof (double)) ? __isnan(y) : __isnanl(y))) |
437 | # elif defined(HAS_UNORDERED) |
438 | # define isunordered(x, y)(((sizeof (x) == sizeof (float)) ? __isnanf(x) : (sizeof (x) == sizeof (double)) ? __isnan(x) : __isnanl(x)) || ((sizeof (y) == sizeof (float)) ? __isnanf(y) : (sizeof (y) == sizeof (double )) ? __isnan(y) : __isnanl(y))) unordered(x, y) |
439 | # endif |
440 | #endif |
441 | |
442 | /* XXX these isgreater/isnormal/isunordered macros definitions should |
443 | * be moved further in the file to be part of the emulations, so that |
444 | * platforms can e.g. #undef c99_isunordered and have it work like |
445 | * it does for the other interfaces. */ |
446 | |
447 | #if !defined(isgreater) && defined(isunordered) |
448 | # define isgreater(x, y)(!(((sizeof ((x)) == sizeof (float)) ? __isnanf((x)) : (sizeof ((x)) == sizeof (double)) ? __isnan((x)) : __isnanl((x))) || ((sizeof ((y)) == sizeof (float)) ? __isnanf((y)) : (sizeof ( (y)) == sizeof (double)) ? __isnan((y)) : __isnanl((y)))) && (x) > (y)) (!isunordered((x), (y))(((sizeof ((x)) == sizeof (float)) ? __isnanf((x)) : (sizeof ( (x)) == sizeof (double)) ? __isnan((x)) : __isnanl((x))) || ( (sizeof ((y)) == sizeof (float)) ? __isnanf((y)) : (sizeof (( y)) == sizeof (double)) ? __isnan((y)) : __isnanl((y)))) && (x) > (y)) |
449 | # define isgreaterequal(x, y)(!(((sizeof ((x)) == sizeof (float)) ? __isnanf((x)) : (sizeof ((x)) == sizeof (double)) ? __isnan((x)) : __isnanl((x))) || ((sizeof ((y)) == sizeof (float)) ? __isnanf((y)) : (sizeof ( (y)) == sizeof (double)) ? __isnan((y)) : __isnanl((y)))) && (x) >= (y)) (!isunordered((x), (y))(((sizeof ((x)) == sizeof (float)) ? __isnanf((x)) : (sizeof ( (x)) == sizeof (double)) ? __isnan((x)) : __isnanl((x))) || ( (sizeof ((y)) == sizeof (float)) ? __isnanf((y)) : (sizeof (( y)) == sizeof (double)) ? __isnan((y)) : __isnanl((y)))) && (x) >= (y)) |
450 | # define isless(x, y)(!(((sizeof ((x)) == sizeof (float)) ? __isnanf((x)) : (sizeof ((x)) == sizeof (double)) ? __isnan((x)) : __isnanl((x))) || ((sizeof ((y)) == sizeof (float)) ? __isnanf((y)) : (sizeof ( (y)) == sizeof (double)) ? __isnan((y)) : __isnanl((y)))) && (x) < (y)) (!isunordered((x), (y))(((sizeof ((x)) == sizeof (float)) ? __isnanf((x)) : (sizeof ( (x)) == sizeof (double)) ? __isnan((x)) : __isnanl((x))) || ( (sizeof ((y)) == sizeof (float)) ? __isnanf((y)) : (sizeof (( y)) == sizeof (double)) ? __isnan((y)) : __isnanl((y)))) && (x) < (y)) |
451 | # define islessequal(x, y)(!(((sizeof ((x)) == sizeof (float)) ? __isnanf((x)) : (sizeof ((x)) == sizeof (double)) ? __isnan((x)) : __isnanl((x))) || ((sizeof ((y)) == sizeof (float)) ? __isnanf((y)) : (sizeof ( (y)) == sizeof (double)) ? __isnan((y)) : __isnanl((y)))) && (x) <= (y)) (!isunordered((x), (y))(((sizeof ((x)) == sizeof (float)) ? __isnanf((x)) : (sizeof ( (x)) == sizeof (double)) ? __isnan((x)) : __isnanl((x))) || ( (sizeof ((y)) == sizeof (float)) ? __isnanf((y)) : (sizeof (( y)) == sizeof (double)) ? __isnan((y)) : __isnanl((y)))) && (x) <= (y)) |
452 | # define islessgreater(x, y)(!(((sizeof ((x)) == sizeof (float)) ? __isnanf((x)) : (sizeof ((x)) == sizeof (double)) ? __isnan((x)) : __isnanl((x))) || ((sizeof ((y)) == sizeof (float)) ? __isnanf((y)) : (sizeof ( (y)) == sizeof (double)) ? __isnan((y)) : __isnanl((y)))) && ((x) > (y) || (y) > (x))) (!isunordered((x), (y))(((sizeof ((x)) == sizeof (float)) ? __isnanf((x)) : (sizeof ( (x)) == sizeof (double)) ? __isnan((x)) : __isnanl((x))) || ( (sizeof ((y)) == sizeof (float)) ? __isnanf((y)) : (sizeof (( y)) == sizeof (double)) ? __isnan((y)) : __isnanl((y)))) && \ |
453 | ((x) > (y) || (y) > (x))) |
454 | #endif |
455 | |
456 | /* Check both the Configure symbol and the macro-ness (like C99 promises). */ |
457 | #if defined(HAS_FPCLASSIFY) && defined(fpclassify) |
458 | # define c99_fpclassifyfpclassify fpclassify |
459 | #endif |
460 | /* Like isnormal(), the isfinite(), isinf(), and isnan() are also C99 |
461 | and also (sizeof-arg-aware) macros, but they are already well taken |
462 | care of by Configure et al, and defined in perl.h as |
463 | Perl_isfinite(), Perl_isinf(), and Perl_isnan(). */ |
464 | #ifdef isnormal |
465 | # define c99_isnormalisnormal isnormal |
466 | #endif |
467 | #ifdef isgreater /* canary for all the C99 is*<cmp>* macros. */ |
468 | # define c99_isgreaterisgreater isgreater |
469 | # define c99_isgreaterequalisgreaterequal isgreaterequal |
470 | # define c99_islessisless isless |
471 | # define c99_islessequalislessequal islessequal |
472 | # define c99_islessgreaterislessgreater islessgreater |
473 | # define c99_isunorderedisunordered isunordered |
474 | #endif |
475 | |
476 | /* The Great Wall of Undef where according to the definedness of HAS_FOO symbols |
477 | * the corresponding c99_foo wrappers are undefined. This list doesn't include |
478 | * the isfoo() interfaces because they are either type-aware macros, or dealt |
479 | * separately, already in perl.h */ |
480 | |
481 | #ifndef HAS_ACOSH |
482 | # undef c99_acoshacosh |
483 | #endif |
484 | #ifndef HAS_ASINH |
485 | # undef c99_asinhasinh |
486 | #endif |
487 | #ifndef HAS_ATANH |
488 | # undef c99_atanhatanh |
489 | #endif |
490 | #ifndef HAS_CBRT |
491 | # undef c99_cbrtcbrt |
492 | #endif |
493 | #ifndef HAS_COPYSIGN |
494 | # undef c99_copysigncopysign |
495 | #endif |
496 | #ifndef HAS_ERF |
497 | # undef c99_erferf |
498 | #endif |
499 | #ifndef HAS_ERFC |
500 | # undef c99_erfcerfc |
501 | #endif |
502 | #ifndef HAS_EXP2 |
503 | # undef c99_exp2exp2 |
504 | #endif |
505 | #ifndef HAS_EXPM1 |
506 | # undef c99_expm1expm1 |
507 | #endif |
508 | #ifndef HAS_FDIM |
509 | # undef c99_fdimfdim |
510 | #endif |
511 | #ifndef HAS_FMA |
512 | # undef c99_fmafma |
513 | #endif |
514 | #ifndef HAS_FMAX |
515 | # undef c99_fmaxfmax |
516 | #endif |
517 | #ifndef HAS_FMIN |
518 | # undef c99_fminfmin |
519 | #endif |
520 | #ifndef HAS_FPCLASSIFY |
521 | # undef c99_fpclassifyfpclassify |
522 | #endif |
523 | #ifndef HAS_HYPOT |
524 | # undef c99_hypothypot |
525 | #endif |
526 | #ifndef HAS_ILOGB |
527 | # undef c99_ilogbilogb |
528 | #endif |
529 | #ifndef HAS_LGAMMA |
530 | # undef c99_lgammalgamma |
531 | #endif |
532 | #ifndef HAS_LOG1P |
533 | # undef c99_log1plog1p |
534 | #endif |
535 | #ifndef HAS_LOG2 |
536 | # undef c99_log2log2 |
537 | #endif |
538 | #ifndef HAS_LOGB |
539 | # undef c99_logblogb |
540 | #endif |
541 | #ifndef HAS_LRINT |
542 | # undef c99_lrintlrint |
543 | #endif |
544 | #ifndef HAS_LROUND |
545 | # undef c99_lroundlround |
546 | #endif |
547 | #ifndef HAS_NAN |
548 | # undef c99_nannan |
549 | #endif |
550 | #ifndef HAS_NEARBYINT |
551 | # undef c99_nearbyintnearbyint |
552 | #endif |
553 | #ifndef HAS_NEXTAFTER |
554 | # undef c99_nextafternextafter |
555 | #endif |
556 | #ifndef HAS_NEXTTOWARD |
557 | # undef c99_nexttowardnexttoward |
558 | #endif |
559 | #ifndef HAS_REMAINDER |
560 | # undef c99_remainderremainder |
561 | #endif |
562 | #ifndef HAS_REMQUO |
563 | # undef c99_remquoremquo |
564 | #endif |
565 | #ifndef HAS_RINT |
566 | # undef c99_rintrint |
567 | #endif |
568 | #ifndef HAS_ROUND |
569 | # undef c99_roundround |
570 | #endif |
571 | #ifndef HAS_SCALBN |
572 | # undef c99_scalbnscalbn |
573 | #endif |
574 | #ifndef HAS_SIGNBIT |
575 | # undef c99_signbitsignbit |
576 | #endif |
577 | #ifndef HAS_TGAMMA |
578 | # undef c99_tgammatgamma |
579 | #endif |
580 | #ifndef HAS_TRUNC |
581 | # undef c99_trunctrunc |
582 | #endif |
583 | |
584 | #ifdef _MSC_VER |
585 | |
586 | /* Some APIs exist under Win32 with "underbar" names. */ |
587 | # undef c99_hypothypot |
588 | # undef c99_logblogb |
589 | # undef c99_nextafternextafter |
590 | # define c99_hypothypot _hypot |
591 | # define c99_logblogb _logb |
592 | # define c99_nextafternextafter _nextafter |
593 | |
594 | # define bessel_j0j0 _j0 |
595 | # define bessel_j1j1 _j1 |
596 | # define bessel_jnjn _jn |
597 | # define bessel_y0y0 _y0 |
598 | # define bessel_y1y1 _y1 |
599 | # define bessel_ynyn _yn |
600 | |
601 | #endif |
602 | |
603 | /* The Bessel functions: BSD, SVID, XPG4, and POSIX. But not C99. */ |
604 | #if defined(HAS_J0) && !defined(bessel_j0j0) |
605 | # if defined(USE_LONG_DOUBLE) && defined(HAS_J0L) |
606 | # define bessel_j0j0 j0l |
607 | # define bessel_j1j1 j1l |
608 | # define bessel_jnjn jnl |
609 | # define bessel_y0y0 y0l |
610 | # define bessel_y1y1 y1l |
611 | # define bessel_ynyn ynl |
612 | # else |
613 | # define bessel_j0j0 j0 |
614 | # define bessel_j1j1 j1 |
615 | # define bessel_jnjn jn |
616 | # define bessel_y0y0 y0 |
617 | # define bessel_y1y1 y1 |
618 | # define bessel_ynyn yn |
619 | # endif |
620 | #endif |
621 | |
622 | /* Emulations for missing math APIs. |
623 | * |
624 | * Keep in mind that the point of many of these functions is that |
625 | * they, if available, are supposed to give more precise/more |
626 | * numerically stable results. |
627 | * |
628 | * See e.g. http://www.johndcook.com/math_h.html |
629 | */ |
630 | |
631 | #ifndef c99_acoshacosh |
632 | static NV my_acosh(NV x) |
633 | { |
634 | return Perl_loglog(x + Perl_sqrtsqrt(x * x - 1)); |
635 | } |
636 | # define c99_acoshacosh my_acosh |
637 | #endif |
638 | |
639 | #ifndef c99_asinhasinh |
640 | static NV my_asinh(NV x) |
641 | { |
642 | return Perl_loglog(x + Perl_sqrtsqrt(x * x + 1)); |
643 | } |
644 | # define c99_asinhasinh my_asinh |
645 | #endif |
646 | |
647 | #ifndef c99_atanhatanh |
648 | static NV my_atanh(NV x) |
649 | { |
650 | return (Perl_loglog(1 + x) - Perl_loglog(1 - x)) / 2; |
651 | } |
652 | # define c99_atanhatanh my_atanh |
653 | #endif |
654 | |
655 | #ifndef c99_cbrtcbrt |
656 | static NV my_cbrt(NV x) |
657 | { |
658 | static const NV one_third = (NV)1.0/3; |
659 | return x >= 0.0 ? Perl_powpow(x, one_third) : -Perl_powpow(-x, one_third); |
660 | } |
661 | # define c99_cbrtcbrt my_cbrt |
662 | #endif |
663 | |
664 | #ifndef c99_copysigncopysign |
665 | static NV my_copysign(NV x, NV y) |
666 | { |
667 | return y >= 0 ? (x < 0 ? -x : x) : (x < 0 ? x : -x); |
668 | } |
669 | # define c99_copysigncopysign my_copysign |
670 | #endif |
671 | |
672 | /* XXX cosh (though c89) */ |
673 | |
674 | #ifndef c99_erferf |
675 | static NV my_erf(NV x) |
676 | { |
677 | /* http://www.johndcook.com/cpp_erf.html -- public domain */ |
678 | NV a1 = 0.254829592; |
679 | NV a2 = -0.284496736; |
680 | NV a3 = 1.421413741; |
681 | NV a4 = -1.453152027; |
682 | NV a5 = 1.061405429; |
683 | NV p = 0.3275911; |
684 | NV t, y; |
685 | int sign = x < 0 ? -1 : 1; /* Save the sign. */ |
686 | x = PERL_ABS(x)((x) < 0 ? -(x) : (x)); |
687 | |
688 | /* Abramowitz and Stegun formula 7.1.26 */ |
689 | t = 1.0 / (1.0 + p * x); |
690 | y = 1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1) * t * Perl_expexp(-x*x); |
691 | |
692 | return sign * y; |
693 | } |
694 | # define c99_erferf my_erf |
695 | #endif |
696 | |
697 | #ifndef c99_erfcerfc |
698 | static NV my_erfc(NV x) { |
699 | /* This is not necessarily numerically stable, but better than nothing. */ |
700 | return 1.0 - c99_erferf(x); |
701 | } |
702 | # define c99_erfcerfc my_erfc |
703 | #endif |
704 | |
705 | #ifndef c99_exp2exp2 |
706 | static NV my_exp2(NV x) |
707 | { |
708 | return Perl_powpow((NV)2.0, x); |
709 | } |
710 | # define c99_exp2exp2 my_exp2 |
711 | #endif |
712 | |
713 | #ifndef c99_expm1expm1 |
714 | static NV my_expm1(NV x) |
715 | { |
716 | if (PERL_ABS(x)((x) < 0 ? -(x) : (x)) < 1e-5) |
717 | /* http://www.johndcook.com/cpp_expm1.html -- public domain. |
718 | * Taylor series, the first four terms (the last term quartic). */ |
719 | /* Probably not enough for long doubles. */ |
720 | return x * (1.0 + x * (1/2.0 + x * (1/6.0 + x/24.0))); |
721 | else |
722 | return Perl_expexp(x) - 1; |
723 | } |
724 | # define c99_expm1expm1 my_expm1 |
725 | #endif |
726 | |
727 | #ifndef c99_fdimfdim |
728 | static NV my_fdim(NV x, NV y) |
729 | { |
730 | #ifdef NV_NANPL_nan.nv |
731 | return (Perl_isnan(x)((sizeof (x) == sizeof (float)) ? __isnanf(x) : (sizeof (x) == sizeof (double)) ? __isnan(x) : __isnanl(x)) || Perl_isnan(y)((sizeof (y) == sizeof (float)) ? __isnanf(y) : (sizeof (y) == sizeof (double)) ? __isnan(y) : __isnanl(y))) ? NV_NANPL_nan.nv : (x > y ? x - y : 0); |
732 | #else |
733 | return (x > y ? x - y : 0); |
734 | #endif |
735 | } |
736 | # define c99_fdimfdim my_fdim |
737 | #endif |
738 | |
739 | #ifndef c99_fmafma |
740 | static NV my_fma(NV x, NV y, NV z) |
741 | { |
742 | return (x * y) + z; |
743 | } |
744 | # define c99_fmafma my_fma |
745 | #endif |
746 | |
747 | #ifndef c99_fmaxfmax |
748 | static NV my_fmax(NV x, NV y) |
749 | { |
750 | #ifdef NV_NANPL_nan.nv |
751 | if (Perl_isnan(x)((sizeof (x) == sizeof (float)) ? __isnanf(x) : (sizeof (x) == sizeof (double)) ? __isnan(x) : __isnanl(x))) { |
752 | return Perl_isnan(y)((sizeof (y) == sizeof (float)) ? __isnanf(y) : (sizeof (y) == sizeof (double)) ? __isnan(y) : __isnanl(y)) ? NV_NANPL_nan.nv : y; |
753 | } else if (Perl_isnan(y)((sizeof (y) == sizeof (float)) ? __isnanf(y) : (sizeof (y) == sizeof (double)) ? __isnan(y) : __isnanl(y))) { |
754 | return x; |
755 | } |
756 | #endif |
757 | return x > y ? x : y; |
758 | } |
759 | # define c99_fmaxfmax my_fmax |
760 | #endif |
761 | |
762 | #ifndef c99_fminfmin |
763 | static NV my_fmin(NV x, NV y) |
764 | { |
765 | #ifdef NV_NANPL_nan.nv |
766 | if (Perl_isnan(x)((sizeof (x) == sizeof (float)) ? __isnanf(x) : (sizeof (x) == sizeof (double)) ? __isnan(x) : __isnanl(x))) { |
767 | return Perl_isnan(y)((sizeof (y) == sizeof (float)) ? __isnanf(y) : (sizeof (y) == sizeof (double)) ? __isnan(y) : __isnanl(y)) ? NV_NANPL_nan.nv : y; |
768 | } else if (Perl_isnan(y)((sizeof (y) == sizeof (float)) ? __isnanf(y) : (sizeof (y) == sizeof (double)) ? __isnan(y) : __isnanl(y))) { |
769 | return x; |
770 | } |
771 | #endif |
772 | return x < y ? x : y; |
773 | } |
774 | # define c99_fminfmin my_fmin |
775 | #endif |
776 | |
777 | #ifndef c99_fpclassifyfpclassify |
778 | |
779 | static IV my_fpclassify(NV x) |
780 | { |
781 | #ifdef Perl_fp_class_inf |
782 | if (Perl_fp_class_inf(x)(((sizeof (x) == sizeof (float)) ? __fpclassifyf(x) : (sizeof (x) == sizeof (double)) ? __fpclassify(x) : __fpclassifyl(x) )==0x01)) return FP_INFINITE0x01; |
783 | if (Perl_fp_class_nan(x)(((sizeof (x) == sizeof (float)) ? __fpclassifyf(x) : (sizeof (x) == sizeof (double)) ? __fpclassify(x) : __fpclassifyl(x) )==0x02)) return FP_NAN0x02; |
784 | if (Perl_fp_class_norm(x)(((sizeof (x) == sizeof (float)) ? __fpclassifyf(x) : (sizeof (x) == sizeof (double)) ? __fpclassify(x) : __fpclassifyl(x) )==0x04)) return FP_NORMAL0x04; |
785 | if (Perl_fp_class_denorm(x)(((sizeof (x) == sizeof (float)) ? __fpclassifyf(x) : (sizeof (x) == sizeof (double)) ? __fpclassify(x) : __fpclassifyl(x) )==0x08)) return FP_SUBNORMAL0x08; |
786 | if (Perl_fp_class_zero(x)(((sizeof (x) == sizeof (float)) ? __fpclassifyf(x) : (sizeof (x) == sizeof (double)) ? __fpclassify(x) : __fpclassifyl(x) )==0x10)) return FP_ZERO0x10; |
787 | # define c99_fpclassifyfpclassify my_fpclassify |
788 | #endif |
789 | return -1; |
790 | } |
791 | |
792 | #endif |
793 | |
794 | #ifndef c99_hypothypot |
795 | static NV my_hypot(NV x, NV y) |
796 | { |
797 | /* http://en.wikipedia.org/wiki/Hypot */ |
798 | NV t; |
799 | x = PERL_ABS(x)((x) < 0 ? -(x) : (x)); /* Take absolute values. */ |
800 | if (y == 0) |
801 | return x; |
802 | #ifdef NV_INFPL_inf.nv |
803 | if (Perl_isnan(y)((sizeof (y) == sizeof (float)) ? __isnanf(y) : (sizeof (y) == sizeof (double)) ? __isnan(y) : __isnanl(y))) |
804 | return NV_INFPL_inf.nv; |
805 | #endif |
806 | y = PERL_ABS(y)((y) < 0 ? -(y) : (y)); |
807 | if (x < y) { /* Swap so that y is less. */ |
808 | t = x; |
809 | x = y; |
810 | y = t; |
811 | } |
812 | t = y / x; |
813 | return x * Perl_sqrtsqrt(1.0 + t * t); |
814 | } |
815 | # define c99_hypothypot my_hypot |
816 | #endif |
817 | |
818 | #ifndef c99_ilogbilogb |
819 | static IV my_ilogb(NV x) |
820 | { |
821 | return (IV)(Perl_loglog(x) * M_LOG2E((double)1.4426950408889634074)); |
822 | } |
823 | # define c99_ilogbilogb my_ilogb |
824 | #endif |
825 | |
826 | /* tgamma and lgamma emulations based on |
827 | * http://www.johndcook.com/cpp_gamma.html, |
828 | * code placed in public domain. |
829 | * |
830 | * Note that these implementations (neither the johndcook originals |
831 | * nor these) do NOT set the global signgam variable. This is not |
832 | * necessarily a bad thing. */ |
833 | |
834 | /* Note that the tgamma() and lgamma() implementations |
835 | * here depend on each other. */ |
836 | |
837 | #if !defined(HAS_TGAMMA) || !defined(c99_tgammatgamma) |
838 | static NV my_tgamma(NV x); |
839 | # define c99_tgammatgamma my_tgamma |
840 | # define USE_MY_TGAMMA |
841 | #endif |
842 | #if !defined(HAS_LGAMMA) || !defined(c99_lgammalgamma) |
843 | static NV my_lgamma(NV x); |
844 | # define c99_lgammalgamma my_lgamma |
845 | # define USE_MY_LGAMMA |
846 | #endif |
847 | |
848 | #ifdef USE_MY_TGAMMA |
849 | static NV my_tgamma(NV x) |
850 | { |
851 | const NV gamma = 0.577215664901532860606512090; /* Euler's gamma constant. */ |
852 | #ifdef NV_NANPL_nan.nv |
853 | if (Perl_isnan(x)((sizeof (x) == sizeof (float)) ? __isnanf(x) : (sizeof (x) == sizeof (double)) ? __isnan(x) : __isnanl(x)) || x < 0.0) |
854 | return NV_NANPL_nan.nv; |
855 | #endif |
856 | #ifdef NV_INFPL_inf.nv |
857 | if (x == 0.0 || x == NV_INFPL_inf.nv) |
858 | #ifdef DOUBLE_IS_IEEE_FORMAT |
859 | return x == -0.0 ? -NV_INFPL_inf.nv : NV_INFPL_inf.nv; |
860 | #else |
861 | return NV_INFPL_inf.nv; |
862 | #endif |
863 | #endif |
864 | |
865 | /* The function domain is split into three intervals: |
866 | * (0, 0.001), [0.001, 12), and (12, infinity) */ |
867 | |
868 | /* First interval: (0, 0.001) |
869 | * For small values, 1/tgamma(x) has power series x + gamma x^2, |
870 | * so in this range, 1/tgamma(x) = x + gamma x^2 with error on the order of x^3. |
871 | * The relative error over this interval is less than 6e-7. */ |
872 | if (x < 0.001) |
873 | return 1.0 / (x * (1.0 + gamma * x)); |
874 | |
875 | /* Second interval: [0.001, 12) */ |
876 | if (x < 12.0) { |
877 | double y = x; /* Working copy. */ |
878 | int n = 0; |
879 | /* Numerator coefficients for approximation over the interval (1,2) */ |
880 | static const NV p[] = { |
881 | -1.71618513886549492533811E+0, |
882 | 2.47656508055759199108314E+1, |
883 | -3.79804256470945635097577E+2, |
884 | 6.29331155312818442661052E+2, |
885 | 8.66966202790413211295064E+2, |
886 | -3.14512729688483675254357E+4, |
887 | -3.61444134186911729807069E+4, |
888 | 6.64561438202405440627855E+4 |
889 | }; |
890 | /* Denominator coefficients for approximation over the interval (1, 2) */ |
891 | static const NV q[] = { |
892 | -3.08402300119738975254353E+1, |
893 | 3.15350626979604161529144E+2, |
894 | -1.01515636749021914166146E+3, |
895 | -3.10777167157231109440444E+3, |
896 | 2.25381184209801510330112E+4, |
897 | 4.75584627752788110767815E+3, |
898 | -1.34659959864969306392456E+5, |
899 | -1.15132259675553483497211E+5 |
900 | }; |
901 | NV num = 0.0; |
902 | NV den = 1.0; |
903 | NV z; |
904 | NV result; |
905 | int i; |
906 | |
907 | if (x < 1.0) |
908 | y += 1.0; |
909 | else { |
910 | n = (int)Perl_floorfloor(y) - 1; |
911 | y -= n; |
912 | } |
913 | z = y - 1; |
914 | for (i = 0; i < 8; i++) { |
915 | num = (num + p[i]) * z; |
916 | den = den * z + q[i]; |
917 | } |
918 | result = num / den + 1.0; |
919 | |
920 | if (x < 1.0) { |
921 | /* Use the identity tgamma(z) = tgamma(z+1)/z |
922 | * The variable "result" now holds tgamma of the original y + 1 |
923 | * Thus we use y - 1 to get back the original y. */ |
924 | result /= (y - 1.0); |
925 | } |
926 | else { |
927 | /* Use the identity tgamma(z+n) = z*(z+1)* ... *(z+n-1)*tgamma(z) */ |
928 | for (i = 0; i < n; i++) |
929 | result *= y++; |
930 | } |
931 | |
932 | return result; |
933 | } |
934 | |
935 | #ifdef NV_INFPL_inf.nv |
936 | /* Third interval: [12, +Inf) */ |
937 | #if LDBL_MANT_DIG64 == 113 /* IEEE quad prec */ |
938 | if (x > 1755.548) { |
939 | return NV_INFPL_inf.nv; |
940 | } |
941 | #else |
942 | if (x > 171.624) { |
943 | return NV_INFPL_inf.nv; |
944 | } |
945 | #endif |
946 | #endif |
947 | |
948 | return Perl_expexp(c99_lgammalgamma(x)); |
949 | } |
950 | #endif |
951 | |
952 | #ifdef USE_MY_LGAMMA |
953 | static NV my_lgamma(NV x) |
954 | { |
955 | #ifdef NV_NANPL_nan.nv |
956 | if (Perl_isnan(x)((sizeof (x) == sizeof (float)) ? __isnanf(x) : (sizeof (x) == sizeof (double)) ? __isnan(x) : __isnanl(x))) |
957 | return NV_NANPL_nan.nv; |
958 | #endif |
959 | #ifdef NV_INFPL_inf.nv |
960 | if (x <= 0 || x == NV_INFPL_inf.nv) |
961 | return NV_INFPL_inf.nv; |
962 | #endif |
963 | if (x == 1.0 || x == 2.0) |
964 | return 0; |
965 | if (x < 12.0) |
966 | return Perl_loglog(PERL_ABS(c99_tgamma(x))((tgamma(x)) < 0 ? -(tgamma(x)) : (tgamma(x)))); |
967 | /* Abramowitz and Stegun 6.1.41 |
968 | * Asymptotic series should be good to at least 11 or 12 figures |
969 | * For error analysis, see Whittiker and Watson |
970 | * A Course in Modern Analysis (1927), page 252 */ |
971 | { |
972 | static const NV c[8] = { |
973 | 1.0/12.0, |
974 | -1.0/360.0, |
975 | 1.0/1260.0, |
976 | -1.0/1680.0, |
977 | 1.0/1188.0, |
978 | -691.0/360360.0, |
979 | 1.0/156.0, |
980 | -3617.0/122400.0 |
981 | }; |
982 | NV z = 1.0 / (x * x); |
983 | NV sum = c[7]; |
984 | static const NV half_log_of_two_pi = |
985 | 0.91893853320467274178032973640562; |
986 | NV series; |
987 | int i; |
988 | for (i = 6; i >= 0; i--) { |
989 | sum *= z; |
990 | sum += c[i]; |
991 | } |
992 | series = sum / x; |
993 | return (x - 0.5) * Perl_loglog(x) - x + half_log_of_two_pi + series; |
994 | } |
995 | } |
996 | #endif |
997 | |
998 | #ifndef c99_log1plog1p |
999 | static NV my_log1p(NV x) |
1000 | { |
1001 | /* http://www.johndcook.com/cpp_log_one_plus_x.html -- public domain. |
1002 | * Taylor series, the first four terms (the last term quartic). */ |
1003 | #ifdef NV_NANPL_nan.nv |
1004 | if (x < -1.0) |
1005 | return NV_NANPL_nan.nv; |
1006 | #endif |
1007 | #ifdef NV_INFPL_inf.nv |
1008 | if (x == -1.0) |
1009 | return -NV_INFPL_inf.nv; |
1010 | #endif |
1011 | if (PERL_ABS(x)((x) < 0 ? -(x) : (x)) > 1e-4) |
1012 | return Perl_loglog(1.0 + x); |
1013 | else |
1014 | /* Probably not enough for long doubles. */ |
1015 | return x * (1.0 + x * (-1/2.0 + x * (1/3.0 - x/4.0))); |
1016 | } |
1017 | # define c99_log1plog1p my_log1p |
1018 | #endif |
1019 | |
1020 | #ifndef c99_log2log2 |
1021 | static NV my_log2(NV x) |
1022 | { |
1023 | return Perl_loglog(x) * M_LOG2E((double)1.4426950408889634074); |
1024 | } |
1025 | # define c99_log2log2 my_log2 |
1026 | #endif |
1027 | |
1028 | /* XXX nextafter */ |
1029 | |
1030 | /* XXX nexttoward */ |
1031 | |
1032 | static int my_fegetround() |
1033 | { |
1034 | #ifdef HAS_FEGETROUND |
1035 | return fegetround(); |
1036 | #elif defined(HAS_FPGETROUND) |
1037 | switch (fpgetround()) { |
1038 | case FP_RN: return FE_TONEAREST0x000; |
1039 | case FP_RZ: return FE_TOWARDZERO0xc00; |
1040 | case FP_RM: return FE_DOWNWARD0x400; |
1041 | case FP_RP: return FE_UPWARD0x800; |
1042 | default: return -1; |
1043 | } |
1044 | #elif defined(FLT_ROUNDS(__builtin_flt_rounds())) |
1045 | switch (FLT_ROUNDS(__builtin_flt_rounds())) { |
1046 | case 0: return FE_TOWARDZERO0xc00; |
1047 | case 1: return FE_TONEAREST0x000; |
1048 | case 2: return FE_UPWARD0x800; |
1049 | case 3: return FE_DOWNWARD0x400; |
1050 | default: return -1; |
1051 | } |
1052 | #elif defined(__osf__) /* Tru64 */ |
1053 | switch (read_rnd()) { |
1054 | case FP_RND_RN: return FE_TONEAREST0x000; |
1055 | case FP_RND_RZ: return FE_TOWARDZERO0xc00; |
1056 | case FP_RND_RM: return FE_DOWNWARD0x400; |
1057 | case FP_RND_RP: return FE_UPWARD0x800; |
1058 | default: return -1; |
1059 | } |
1060 | #else |
1061 | return -1; |
1062 | #endif |
1063 | } |
1064 | |
1065 | /* Toward closest integer. */ |
1066 | #define MY_ROUND_NEAREST(x)((NV)((IV)((x) >= 0.0 ? (x) + 0.5 : (x) - 0.5))) ((NV)((IV)((x) >= 0.0 ? (x) + 0.5 : (x) - 0.5))) |
1067 | |
1068 | /* Toward zero. */ |
1069 | #define MY_ROUND_TRUNC(x)((NV)((IV)(x))) ((NV)((IV)(x))) |
1070 | |
1071 | /* Toward minus infinity. */ |
1072 | #define MY_ROUND_DOWN(x)((NV)((IV)((x) >= 0.0 ? (x) : (x) - 0.5))) ((NV)((IV)((x) >= 0.0 ? (x) : (x) - 0.5))) |
1073 | |
1074 | /* Toward plus infinity. */ |
1075 | #define MY_ROUND_UP(x)((NV)((IV)((x) >= 0.0 ? (x) + 0.5 : (x)))) ((NV)((IV)((x) >= 0.0 ? (x) + 0.5 : (x)))) |
1076 | |
1077 | #if (!defined(c99_nearbyintnearbyint) || !defined(c99_lrintlrint)) && defined(FE_TONEAREST0x000) |
1078 | static NV my_rint(NV x) |
1079 | { |
1080 | #ifdef FE_TONEAREST0x000 |
1081 | switch (my_fegetround()) { |
1082 | case FE_TONEAREST0x000: return MY_ROUND_NEAREST(x)((NV)((IV)((x) >= 0.0 ? (x) + 0.5 : (x) - 0.5))); |
1083 | case FE_TOWARDZERO0xc00: return MY_ROUND_TRUNC(x)((NV)((IV)(x))); |
1084 | case FE_DOWNWARD0x400: return MY_ROUND_DOWN(x)((NV)((IV)((x) >= 0.0 ? (x) : (x) - 0.5))); |
1085 | case FE_UPWARD0x800: return MY_ROUND_UP(x)((NV)((IV)((x) >= 0.0 ? (x) + 0.5 : (x)))); |
1086 | default: break; |
1087 | } |
1088 | #elif defined(HAS_FPGETROUND) |
1089 | switch (fpgetround()) { |
1090 | case FP_RN: return MY_ROUND_NEAREST(x)((NV)((IV)((x) >= 0.0 ? (x) + 0.5 : (x) - 0.5))); |
1091 | case FP_RZ: return MY_ROUND_TRUNC(x)((NV)((IV)(x))); |
1092 | case FP_RM: return MY_ROUND_DOWN(x)((NV)((IV)((x) >= 0.0 ? (x) : (x) - 0.5))); |
1093 | case FE_RP: return MY_ROUND_UP(x)((NV)((IV)((x) >= 0.0 ? (x) + 0.5 : (x)))); |
1094 | default: break; |
1095 | } |
1096 | #endif |
1097 | not_here("rint"); |
1098 | NOT_REACHED((!"UNREACHABLE") ? (void) 0 : __builtin_unreachable()); /* NOTREACHED */ |
1099 | } |
1100 | #endif |
1101 | |
1102 | /* XXX nearbyint() and rint() are not really identical -- but the difference |
1103 | * is messy: nearbyint is defined NOT to raise FE_INEXACT floating point |
1104 | * exceptions, while rint() is defined to MAYBE raise them. At the moment |
1105 | * Perl is blissfully unaware of such fine detail of floating point. */ |
1106 | #ifndef c99_nearbyintnearbyint |
1107 | # ifdef FE_TONEAREST0x000 |
1108 | # define c99_nearbyrint my_rint |
1109 | # endif |
1110 | #endif |
1111 | |
1112 | #ifndef c99_lrintlrint |
1113 | # ifdef FE_TONEAREST0x000 |
1114 | static IV my_lrint(NV x) |
1115 | { |
1116 | return (IV)my_rint(x); |
1117 | } |
1118 | # define c99_lrintlrint my_lrint |
1119 | # endif |
1120 | #endif |
1121 | |
1122 | #ifndef c99_lroundlround |
1123 | static IV my_lround(NV x) |
1124 | { |
1125 | return (IV)MY_ROUND_NEAREST(x)((NV)((IV)((x) >= 0.0 ? (x) + 0.5 : (x) - 0.5))); |
1126 | } |
1127 | # define c99_lroundlround my_lround |
1128 | #endif |
1129 | |
1130 | /* XXX remainder */ |
1131 | |
1132 | /* XXX remquo */ |
1133 | |
1134 | #ifndef c99_rintrint |
1135 | # ifdef FE_TONEAREST0x000 |
1136 | # define c99_rintrint my_rint |
1137 | # endif |
1138 | #endif |
1139 | |
1140 | #ifndef c99_roundround |
1141 | static NV my_round(NV x) |
1142 | { |
1143 | return MY_ROUND_NEAREST(x)((NV)((IV)((x) >= 0.0 ? (x) + 0.5 : (x) - 0.5))); |
1144 | } |
1145 | # define c99_roundround my_round |
1146 | #endif |
1147 | |
1148 | #ifndef c99_scalbnscalbn |
1149 | # if defined(Perl_ldexp) && FLT_RADIX2 == 2 |
1150 | static NV my_scalbn(NV x, int y) |
1151 | { |
1152 | return Perl_ldexp(x, y)ldexp(x,y); |
1153 | } |
1154 | # define c99_scalbnscalbn my_scalbn |
1155 | # endif |
1156 | #endif |
1157 | |
1158 | /* XXX sinh (though c89) */ |
1159 | |
1160 | /* tgamma -- see lgamma */ |
1161 | |
1162 | /* XXX tanh (though c89) */ |
1163 | |
1164 | #ifndef c99_trunctrunc |
1165 | static NV my_trunc(NV x) |
1166 | { |
1167 | return MY_ROUND_TRUNC(x)((NV)((IV)(x))); |
1168 | } |
1169 | # define c99_trunctrunc my_trunc |
1170 | #endif |
1171 | |
1172 | #ifdef NV_NANPL_nan.nv |
1173 | |
1174 | #undef NV_PAYLOAD_DEBUG |
1175 | |
1176 | /* NOTE: the NaN payload API implementation is hand-rolled, since the |
1177 | * APIs are only proposed ones as of June 2015, so very few, if any, |
1178 | * platforms have implementations yet, so HAS_SETPAYLOAD and such are |
1179 | * unlikely to be helpful. |
1180 | * |
1181 | * XXX - if the core numification wants to actually generate |
1182 | * the nan payload in "nan(123)", and maybe "nans(456)", for |
1183 | * signaling payload", this needs to be moved to e.g. numeric.c |
1184 | * (look for grok_infnan) |
1185 | * |
1186 | * Conversely, if the core stringification wants the nan payload |
1187 | * and/or the nan quiet/signaling distinction, S_getpayload() |
1188 | * from this file needs to be moved, to e.g. sv.c (look for S_infnan_2pv), |
1189 | * and the (trivial) functionality of issignaling() copied |
1190 | * (for generating "NaNS", or maybe even "NaNQ") -- or maybe there |
1191 | * are too many formatting parameters for simple stringification? |
1192 | */ |
1193 | |
1194 | /* While it might make sense for the payload to be UV or IV, |
1195 | * to avoid conversion loss, the proposed ISO interfaces use |
1196 | * a floating point input, which is then truncated to integer, |
1197 | * and only the integer part being used. This is workable, |
1198 | * except for: (1) the conversion loss (2) suboptimal for |
1199 | * 32-bit integer platforms. A workaround API for (2) and |
1200 | * in general for bit-honesty would be an array of integers |
1201 | * as the payload... but the proposed C API does nothing of |
1202 | * the kind. */ |
1203 | #if NVSIZE8 == UVSIZE8 |
1204 | # define NV_PAYLOAD_TYPEUV UV |
1205 | #else |
1206 | # define NV_PAYLOAD_TYPEUV NV |
1207 | #endif |
1208 | |
1209 | #if defined(USE_LONG_DOUBLE) && defined(LONGDOUBLE_DOUBLEDOUBLE) |
1210 | # define NV_PAYLOAD_SIZEOF_ASSERT(a)do { _Static_assert(sizeof(a) == 8, "sizeof(a) == 8"); } while (0) \ |
1211 | STATIC_ASSERT_STMT(sizeof(a) == NVSIZE / 2)do { _Static_assert(sizeof(a) == 8 / 2, "sizeof(a) == 8 / 2") ; } while (0) |
1212 | #else |
1213 | # define NV_PAYLOAD_SIZEOF_ASSERT(a)do { _Static_assert(sizeof(a) == 8, "sizeof(a) == 8"); } while (0) \ |
1214 | STATIC_ASSERT_STMT(sizeof(a) == NVSIZE)do { _Static_assert(sizeof(a) == 8, "sizeof(a) == 8"); } while (0) |
1215 | #endif |
1216 | |
1217 | static void S_setpayload(NV* nvp, NV_PAYLOAD_TYPEUV payload, bool_Bool signaling) |
1218 | { |
1219 | dTHXstruct Perl___notused_struct; |
1220 | static const U8 m[] = { NV_NAN_PAYLOAD_MASK0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00 }; |
1221 | static const U8 p[] = { NV_NAN_PAYLOAD_PERM0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0xFF }; |
1222 | UV a[(NVSIZE8 + UVSIZE8 - 1) / UVSIZE8] = { 0 }; |
1223 | int i; |
1224 | NV_PAYLOAD_SIZEOF_ASSERT(m)do { _Static_assert(sizeof(m) == 8, "sizeof(m) == 8"); } while (0); |
1225 | NV_PAYLOAD_SIZEOF_ASSERT(p)do { _Static_assert(sizeof(p) == 8, "sizeof(p) == 8"); } while (0); |
1226 | *nvp = NV_NANPL_nan.nv; |
1227 | /* Divide the input into the array in "base unsigned integer" in |
1228 | * little-endian order. Note that the integer might be smaller than |
1229 | * an NV (if UV is U32, for example). */ |
1230 | #if NVSIZE8 == UVSIZE8 |
1231 | a[0] = payload; /* The trivial case. */ |
1232 | #else |
1233 | { |
1234 | NV t1 = c99_trunctrunc(payload); /* towards zero (drop fractional) */ |
1235 | #ifdef NV_PAYLOAD_DEBUG |
1236 | Perl_warn(aTHX_ "t1 = %" NVgf"g" " (payload %" NVgf"g" ")\n", t1, payload); |
1237 | #endif |
1238 | if (t1 <= UV_MAX(~(UV)0)) { |
1239 | a[0] = (UV)t1; /* Fast path, also avoids rounding errors (right?) */ |
1240 | } else { |
1241 | /* UVSIZE < NVSIZE or payload > UV_MAX. |
1242 | * |
1243 | * This may happen for example if: |
1244 | * (1) UVSIZE == 32 and common 64-bit double NV |
1245 | * (32-bit system not using -Duse64bitint) |
1246 | * (2) UVSIZE == 64 and the x86-style 80-bit long double NV |
1247 | * (note that here the room for payload is actually the 64 bits) |
1248 | * (3) UVSIZE == 64 and the 128-bit IEEE 764 quadruple NV |
1249 | * (112 bits in mantissa, 111 bits room for payload) |
1250 | * |
1251 | * NOTE: this is very sensitive to correctly functioning |
1252 | * fmod()/fmodl(), and correct casting of big-unsigned-integer to NV. |
1253 | * If these don't work right, especially the low order bits |
1254 | * are in danger. For example Solaris and AIX seem to have issues |
1255 | * here, especially if using 32-bit UVs. */ |
1256 | NV t2; |
1257 | for (i = 0, t2 = t1; i < (int)C_ARRAY_LENGTH(a)(sizeof(a)/sizeof((a)[0])); i++) { |
1258 | a[i] = (UV)Perl_fmodfmod(t2, (NV)UV_MAX(~(UV)0)); |
1259 | t2 = Perl_floorfloor(t2 / (NV)UV_MAX(~(UV)0)); |
1260 | } |
1261 | } |
1262 | } |
1263 | #endif |
1264 | #ifdef NV_PAYLOAD_DEBUG |
1265 | for (i = 0; i < (int)C_ARRAY_LENGTH(a)(sizeof(a)/sizeof((a)[0])); i++) { |
1266 | Perl_warn(aTHX_ "a[%d] = 0x%" UVxf"lx" "\n", i, a[i]); |
1267 | } |
1268 | #endif |
1269 | for (i = 0; i < (int)sizeof(p); i++) { |
1270 | if (m[i] && p[i] < sizeof(p)) { |
1271 | U8 s = (p[i] % UVSIZE8) << 3; |
1272 | UV u = a[p[i] / UVSIZE8] & ((UV)0xFF << s); |
1273 | U8 b = (U8)((u >> s) & m[i]); |
1274 | ((U8 *)(nvp))[i] &= ~m[i]; /* For NaNs with non-zero payload bits. */ |
1275 | ((U8 *)(nvp))[i] |= b; |
1276 | #ifdef NV_PAYLOAD_DEBUG |
1277 | Perl_warn(aTHX_ |
1278 | "set p[%2d] = %02x (i = %d, m = %02x, s = %2d, b = %02x, u = %08" |
1279 | UVxf"lx" ")\n", i, ((U8 *)(nvp))[i], i, m[i], s, b, u); |
1280 | #endif |
1281 | a[p[i] / UVSIZE8] &= ~u; |
1282 | } |
1283 | } |
1284 | if (signaling) { |
1285 | NV_NAN_SET_SIGNALING(nvp)((((((U8*)(PL_nan.u8))[6]) & (1 << ((((52 - 1)) % 8 )))) == (1 << ((((52 - 1)) % 8)))) ? ((((U8*)(nvp))[6]) &= ~(1 << ((((52 - 1)) % 8)))) : ((((U8*)(nvp))[6] ) |= (1 << ((((52 - 1)) % 8))))); |
1286 | } |
1287 | #ifdef USE_LONG_DOUBLE |
1288 | # if LONG_DOUBLEKIND3 == 3 || LONG_DOUBLEKIND3 == 4 |
1289 | # if LONG_DOUBLESIZE16 > 10 |
1290 | memset((char *)nvp + 10, '\0', LONG_DOUBLESIZE16 - 10); /* x86 long double */ |
1291 | # endif |
1292 | # endif |
1293 | #endif |
1294 | for (i = 0; i < (int)C_ARRAY_LENGTH(a)(sizeof(a)/sizeof((a)[0])); i++) { |
1295 | if (a[i]) { |
1296 | Perl_warn(aTHX_ "payload lost bits (%" UVxf"lx" ")", a[i]); |
1297 | break; |
1298 | } |
1299 | } |
1300 | #ifdef NV_PAYLOAD_DEBUG |
1301 | for (i = 0; i < NVSIZE8; i++) { |
1302 | PerlIO_printf(Perl_debug_logPerl_PerlIO_stderr(), "%02x ", ((U8 *)(nvp))[i]); |
1303 | } |
1304 | PerlIO_printf(Perl_debug_logPerl_PerlIO_stderr(), "\n"); |
1305 | #endif |
1306 | } |
1307 | |
1308 | static NV_PAYLOAD_TYPEUV S_getpayload(NV nv) |
1309 | { |
1310 | dTHXstruct Perl___notused_struct; |
1311 | static const U8 m[] = { NV_NAN_PAYLOAD_MASK0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00 }; |
1312 | static const U8 p[] = { NV_NAN_PAYLOAD_PERM0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0xFF }; |
1313 | UV a[(NVSIZE8 + UVSIZE8 - 1) / UVSIZE8] = { 0 }; |
1314 | int i; |
1315 | NV payload; |
1316 | NV_PAYLOAD_SIZEOF_ASSERT(m)do { _Static_assert(sizeof(m) == 8, "sizeof(m) == 8"); } while (0); |
1317 | NV_PAYLOAD_SIZEOF_ASSERT(p)do { _Static_assert(sizeof(p) == 8, "sizeof(p) == 8"); } while (0); |
1318 | payload = 0; |
1319 | for (i = 0; i < (int)sizeof(p); i++) { |
1320 | if (m[i] && p[i] < NVSIZE8) { |
1321 | U8 s = (p[i] % UVSIZE8) << 3; |
1322 | a[p[i] / UVSIZE8] |= (UV)(((U8 *)(&nv))[i] & m[i]) << s; |
1323 | } |
1324 | } |
1325 | for (i = (int)C_ARRAY_LENGTH(a)(sizeof(a)/sizeof((a)[0])) - 1; i >= 0; i--) { |
1326 | #ifdef NV_PAYLOAD_DEBUG |
1327 | Perl_warn(aTHX_ "a[%d] = %" UVxf"lx" "\n", i, a[i]); |
1328 | #endif |
1329 | payload *= UV_MAX(~(UV)0); |
1330 | payload += a[i]; |
1331 | } |
1332 | #ifdef NV_PAYLOAD_DEBUG |
1333 | for (i = 0; i < NVSIZE8; i++) { |
1334 | PerlIO_printf(Perl_debug_logPerl_PerlIO_stderr(), "%02x ", ((U8 *)(&nv))[i]); |
1335 | } |
1336 | PerlIO_printf(Perl_debug_logPerl_PerlIO_stderr(), "\n"); |
1337 | #endif |
1338 | return payload; |
1339 | } |
1340 | |
1341 | #endif /* #ifdef NV_NAN */ |
1342 | |
1343 | /* XXX This comment is just to make I_TERMIO and I_SGTTY visible to |
1344 | metaconfig for future extension writers. We don't use them in POSIX. |
1345 | (This is really sneaky :-) --AD |
1346 | */ |
1347 | #if defined(I_TERMIOS) |
1348 | #include <termios.h> |
1349 | #endif |
1350 | #include <stdlib.h> |
1351 | #ifndef __ultrix__ |
1352 | #include <string.h> |
1353 | #endif |
1354 | #include <sys/stat.h> |
1355 | #include <sys/types.h> |
1356 | #include <time.h> |
1357 | #ifdef I_UNISTD |
1358 | #include <unistd.h> |
1359 | #endif |
1360 | #include <fcntl.h> |
1361 | |
1362 | #ifdef HAS_TZNAME |
1363 | # if !defined(WIN32) && !defined(__CYGWIN__) && !defined(NETWARE) && !defined(__UWIN__) |
1364 | extern char *tzname[]; |
1365 | # endif |
1366 | #else |
1367 | #if !defined(WIN32) && !defined(__UWIN__) || (defined(__MINGW32__) && !defined(tzname)) |
1368 | char *tzname[] = { "" , "" }; |
1369 | #endif |
1370 | #endif |
1371 | |
1372 | #if defined(__VMS) && !defined(__POSIX_SOURCE) |
1373 | |
1374 | # include <utsname.h> |
1375 | |
1376 | # undef mkfifo |
1377 | # define mkfifo(a,b) (not_here("mkfifo"),-1) |
1378 | |
1379 | /* The POSIX notion of ttyname() is better served by getname() under VMS */ |
1380 | static char ttnambuf[64]; |
1381 | # define ttyname(fd) (isatty(fd) > 0 ? getname(fd,ttnambuf,0) : NULL((void*)0)) |
1382 | |
1383 | #else |
1384 | #if defined (__CYGWIN__) |
1385 | # define tzname _tzname |
1386 | #endif |
1387 | #if defined (WIN32) || defined (NETWARE) |
1388 | # undef mkfifo |
1389 | # define mkfifo(a,b) not_here("mkfifo") |
1390 | # define ttyname(a) (char*)not_here("ttyname") |
1391 | # define sigset_t long |
1392 | # define pid_t long |
1393 | # ifdef _MSC_VER |
1394 | # define mode_t short |
1395 | # endif |
1396 | # ifdef __MINGW32__ |
1397 | # define mode_t short |
1398 | # ifndef tzset |
1399 | # define tzset() not_here("tzset") |
1400 | # endif |
1401 | # ifndef _POSIX_OPEN_MAX20 |
1402 | # define _POSIX_OPEN_MAX20 FOPEN_MAX20 /* XXX bogus ? */ |
1403 | # endif |
1404 | # endif |
1405 | # define sigaction(a,b,c) not_here("sigaction") |
1406 | # define sigpending(a) not_here("sigpending") |
1407 | # define sigprocmask(a,b,c) not_here("sigprocmask") |
1408 | # define sigsuspend(a) not_here("sigsuspend") |
1409 | # define sigemptyset(a) not_here("sigemptyset") |
1410 | # define sigaddset(a,b) not_here("sigaddset") |
1411 | # define sigdelset(a,b) not_here("sigdelset") |
1412 | # define sigfillset(a) not_here("sigfillset") |
1413 | # define sigismember(a,b) not_here("sigismember") |
1414 | #ifndef NETWARE |
1415 | # undef setuid |
1416 | # undef setgid |
1417 | # define setuid(a) not_here("setuid") |
1418 | # define setgid(a) not_here("setgid") |
1419 | #endif /* NETWARE */ |
1420 | #ifndef USE_LONG_DOUBLE |
1421 | # define strtold(s1,s2) not_here("strtold") |
1422 | #endif /* USE_LONG_DOUBLE */ |
1423 | #else |
1424 | |
1425 | # ifndef HAS_MKFIFO |
1426 | # if defined(OS2) || defined(__amigaos4__) |
1427 | # define mkfifo(a,b) not_here("mkfifo") |
1428 | # else /* !( defined OS2 ) */ |
1429 | # ifndef mkfifo |
1430 | # define mkfifo(path, mode) (mknod((path), (mode) | S_IFIFO0010000, 0)) |
1431 | # endif |
1432 | # endif |
1433 | # endif /* !HAS_MKFIFO */ |
1434 | |
1435 | # ifdef I_GRP |
1436 | # include <grp.h> |
1437 | # endif |
1438 | # include <sys/times.h> |
1439 | # ifdef HAS_UNAME |
1440 | # include <sys/utsname.h> |
1441 | # endif |
1442 | # ifndef __amigaos4__ |
1443 | # include <sys/wait.h> |
1444 | # endif |
1445 | # ifdef I_UTIME |
1446 | # include <utime.h> |
1447 | # endif |
1448 | #endif /* WIN32 || NETWARE */ |
1449 | #endif /* __VMS */ |
1450 | |
1451 | typedef int SysRet; |
1452 | typedef long SysRetLong; |
1453 | typedef sigset_t* POSIX__SigSet; |
1454 | typedef HV* POSIX__SigAction; |
1455 | typedef int POSIX__SigNo; |
1456 | typedef int POSIX__Fd; |
1457 | #ifdef I_TERMIOS |
1458 | typedef struct termios* POSIX__Termios; |
1459 | #else /* Define termios types to int, and call not_here for the functions.*/ |
1460 | #define POSIX__Termios int |
1461 | #define speed_t int |
1462 | #define tcflag_t int |
1463 | #define cc_t int |
1464 | #define cfgetispeed(x) not_here("cfgetispeed") |
1465 | #define cfgetospeed(x) not_here("cfgetospeed") |
1466 | #define tcdrain(x) not_here("tcdrain") |
1467 | #define tcflush(x,y) not_here("tcflush") |
1468 | #define tcsendbreak(x,y) not_here("tcsendbreak") |
1469 | #define cfsetispeed(x,y) not_here("cfsetispeed") |
1470 | #define cfsetospeed(x,y) not_here("cfsetospeed") |
1471 | #define ctermid(x) (char *) not_here("ctermid") |
1472 | #define tcflow(x,y) not_here("tcflow") |
1473 | #define tcgetattr(x,y) not_here("tcgetattr") |
1474 | #define tcsetattr(x,y,z) not_here("tcsetattr") |
1475 | #endif |
1476 | |
1477 | /* Possibly needed prototypes */ |
1478 | #ifndef WIN32 |
1479 | START_EXTERN_C |
1480 | double strtod (const char *, char **); |
1481 | long strtol (const char *, char **, int); |
1482 | unsigned long strtoul (const char *, char **, int); |
1483 | #ifdef HAS_STRTOLD |
1484 | long double strtold (const char *, char **); |
1485 | #endif |
1486 | END_EXTERN_C |
1487 | #endif |
1488 | |
1489 | #ifndef HAS_DIFFTIME |
1490 | #ifndef difftime |
1491 | #define difftime(a,b) not_here("difftime") |
1492 | #endif |
1493 | #endif |
1494 | #ifndef HAS_FPATHCONF |
1495 | #define fpathconf(f,n) (SysRetLong) not_here("fpathconf") |
1496 | #endif |
1497 | #ifndef HAS_MKTIME |
1498 | #define mktime(a) not_here("mktime") |
1499 | #endif |
1500 | #ifndef HAS_NICE |
1501 | #define nice(a) not_here("nice") |
1502 | #endif |
1503 | #ifndef HAS_PATHCONF |
1504 | #define pathconf(f,n) (SysRetLong) not_here("pathconf") |
1505 | #endif |
1506 | #ifndef HAS_SYSCONF |
1507 | #define sysconf(n) (SysRetLong) not_here("sysconf") |
1508 | #endif |
1509 | #ifndef HAS_READLINK |
1510 | #define readlink(a,b,c) not_here("readlink") |
1511 | #endif |
1512 | #ifndef HAS_SETPGID |
1513 | #define setpgid(a,b) not_here("setpgid") |
1514 | #endif |
1515 | #ifndef HAS_SETSID |
1516 | #define setsid() not_here("setsid") |
1517 | #endif |
1518 | #ifndef HAS_STRCOLL |
1519 | #define strcoll(s1,s2) not_here("strcoll") |
1520 | #endif |
1521 | #ifndef HAS_STRTOD |
1522 | #define strtod(s1,s2) not_here("strtod") |
1523 | #endif |
1524 | #ifndef HAS_STRTOLD |
1525 | #define strtold(s1,s2) not_here("strtold") |
1526 | #endif |
1527 | #ifndef HAS_STRTOL |
1528 | #define strtol(s1,s2,b) not_here("strtol") |
1529 | #endif |
1530 | #ifndef HAS_STRTOUL |
1531 | #define strtoul(s1,s2,b) not_here("strtoul") |
1532 | #endif |
1533 | #ifndef HAS_STRXFRM |
1534 | #define strxfrm(s1,s2,n) not_here("strxfrm") |
1535 | #endif |
1536 | #ifndef HAS_TCGETPGRP |
1537 | #define tcgetpgrp(a) not_here("tcgetpgrp") |
1538 | #endif |
1539 | #ifndef HAS_TCSETPGRP |
1540 | #define tcsetpgrp(a,b) not_here("tcsetpgrp") |
1541 | #endif |
1542 | #ifndef HAS_TIMES |
1543 | #ifndef NETWARE |
1544 | #define times(a) not_here("times") |
1545 | #endif /* NETWARE */ |
1546 | #endif |
1547 | #ifndef HAS_UNAME |
1548 | #define uname(a) not_here("uname") |
1549 | #endif |
1550 | #ifndef HAS_WAITPID |
1551 | #define waitpid(a,b,c) not_here("waitpid") |
1552 | #endif |
1553 | |
1554 | #if ! defined(HAS_MBLEN) && ! defined(HAS_MBRLEN) |
1555 | #define mblen(a,b) not_here("mblen") |
1556 | #endif |
1557 | #if ! defined(HAS_MBTOWC) && ! defined(HAS_MBRTOWC) |
1558 | #define mbtowc(pwc, s, n) not_here("mbtowc") |
1559 | #endif |
1560 | #ifndef HAS_WCTOMB |
1561 | #define wctomb(s, wchar) not_here("wctomb") |
1562 | #endif |
1563 | #if !defined(HAS_MBLEN) && !defined(HAS_MBSTOWCS) && !defined(HAS_MBTOWC) && !defined(HAS_WCSTOMBS) && !defined(HAS_WCTOMB) |
1564 | /* If we don't have these functions, then we wouldn't have gotten a typedef |
1565 | for wchar_t, the wide character type. Defining wchar_t allows the |
1566 | functions referencing it to compile. Its actual type is then meaningless, |
1567 | since without the above functions, all sections using it end up calling |
1568 | not_here() and croak. --Kaveh Ghazi (ghazi@noc.rutgers.edu) 9/18/94. */ |
1569 | #ifndef wchar_t |
1570 | #define wchar_t char |
1571 | #endif |
1572 | #endif |
1573 | |
1574 | #ifndef HAS_LOCALECONV |
1575 | # define localeconv() not_here("localeconv") |
1576 | #else |
1577 | struct lconv_offset { |
1578 | const char *name; |
1579 | size_t offset; |
1580 | }; |
1581 | |
1582 | static const struct lconv_offset lconv_strings[] = { |
1583 | #ifdef USE_LOCALE_NUMERIC |
1584 | {"decimal_point", STRUCT_OFFSET(struct lconv, decimal_point)__builtin_offsetof(struct lconv, decimal_point)}, |
1585 | {"thousands_sep", STRUCT_OFFSET(struct lconv, thousands_sep)__builtin_offsetof(struct lconv, thousands_sep)}, |
1586 | # ifndef NO_LOCALECONV_GROUPING |
1587 | {"grouping", STRUCT_OFFSET(struct lconv, grouping)__builtin_offsetof(struct lconv, grouping)}, |
1588 | # endif |
1589 | #endif |
1590 | #ifdef USE_LOCALE_MONETARY |
1591 | {"int_curr_symbol", STRUCT_OFFSET(struct lconv, int_curr_symbol)__builtin_offsetof(struct lconv, int_curr_symbol)}, |
1592 | {"currency_symbol", STRUCT_OFFSET(struct lconv, currency_symbol)__builtin_offsetof(struct lconv, currency_symbol)}, |
1593 | {"mon_decimal_point", STRUCT_OFFSET(struct lconv, mon_decimal_point)__builtin_offsetof(struct lconv, mon_decimal_point)}, |
1594 | # ifndef NO_LOCALECONV_MON_THOUSANDS_SEP |
1595 | {"mon_thousands_sep", STRUCT_OFFSET(struct lconv, mon_thousands_sep)__builtin_offsetof(struct lconv, mon_thousands_sep)}, |
1596 | # endif |
1597 | # ifndef NO_LOCALECONV_MON_GROUPING |
1598 | {"mon_grouping", STRUCT_OFFSET(struct lconv, mon_grouping)__builtin_offsetof(struct lconv, mon_grouping)}, |
1599 | # endif |
1600 | {"positive_sign", STRUCT_OFFSET(struct lconv, positive_sign)__builtin_offsetof(struct lconv, positive_sign)}, |
1601 | {"negative_sign", STRUCT_OFFSET(struct lconv, negative_sign)__builtin_offsetof(struct lconv, negative_sign)}, |
1602 | #endif |
1603 | {NULL((void*)0), 0} |
1604 | }; |
1605 | |
1606 | #ifdef USE_LOCALE_NUMERIC |
1607 | |
1608 | /* The Linux man pages say these are the field names for the structure |
1609 | * components that are LC_NUMERIC; the rest being LC_MONETARY */ |
1610 | # define isLC_NUMERIC_STRING(name)(0) ( strEQ(name, "decimal_point")(strcmp(name,"decimal_point") == 0) \ |
1611 | || strEQ(name, "thousands_sep")(strcmp(name,"thousands_sep") == 0) \ |
1612 | \ |
1613 | /* There should be no harm done \ |
1614 | * checking for this, even if \ |
1615 | * NO_LOCALECONV_GROUPING */ \ |
1616 | || strEQ(name, "grouping")(strcmp(name,"grouping") == 0)) |
1617 | #else |
1618 | # define isLC_NUMERIC_STRING(name)(0) (0) |
1619 | #endif |
1620 | |
1621 | static const struct lconv_offset lconv_integers[] = { |
1622 | #ifdef USE_LOCALE_MONETARY |
1623 | {"int_frac_digits", STRUCT_OFFSET(struct lconv, int_frac_digits)__builtin_offsetof(struct lconv, int_frac_digits)}, |
1624 | {"frac_digits", STRUCT_OFFSET(struct lconv, frac_digits)__builtin_offsetof(struct lconv, frac_digits)}, |
1625 | {"p_cs_precedes", STRUCT_OFFSET(struct lconv, p_cs_precedes)__builtin_offsetof(struct lconv, p_cs_precedes)}, |
1626 | {"p_sep_by_space", STRUCT_OFFSET(struct lconv, p_sep_by_space)__builtin_offsetof(struct lconv, p_sep_by_space)}, |
1627 | {"n_cs_precedes", STRUCT_OFFSET(struct lconv, n_cs_precedes)__builtin_offsetof(struct lconv, n_cs_precedes)}, |
1628 | {"n_sep_by_space", STRUCT_OFFSET(struct lconv, n_sep_by_space)__builtin_offsetof(struct lconv, n_sep_by_space)}, |
1629 | {"p_sign_posn", STRUCT_OFFSET(struct lconv, p_sign_posn)__builtin_offsetof(struct lconv, p_sign_posn)}, |
1630 | {"n_sign_posn", STRUCT_OFFSET(struct lconv, n_sign_posn)__builtin_offsetof(struct lconv, n_sign_posn)}, |
1631 | #ifdef HAS_LC_MONETARY_2008 |
1632 | {"int_p_cs_precedes", STRUCT_OFFSET(struct lconv, int_p_cs_precedes)__builtin_offsetof(struct lconv, int_p_cs_precedes)}, |
1633 | {"int_p_sep_by_space", STRUCT_OFFSET(struct lconv, int_p_sep_by_space)__builtin_offsetof(struct lconv, int_p_sep_by_space)}, |
1634 | {"int_n_cs_precedes", STRUCT_OFFSET(struct lconv, int_n_cs_precedes)__builtin_offsetof(struct lconv, int_n_cs_precedes)}, |
1635 | {"int_n_sep_by_space", STRUCT_OFFSET(struct lconv, int_n_sep_by_space)__builtin_offsetof(struct lconv, int_n_sep_by_space)}, |
1636 | {"int_p_sign_posn", STRUCT_OFFSET(struct lconv, int_p_sign_posn)__builtin_offsetof(struct lconv, int_p_sign_posn)}, |
1637 | {"int_n_sign_posn", STRUCT_OFFSET(struct lconv, int_n_sign_posn)__builtin_offsetof(struct lconv, int_n_sign_posn)}, |
1638 | #endif |
1639 | #endif |
1640 | {NULL((void*)0), 0} |
1641 | }; |
1642 | |
1643 | #endif /* HAS_LOCALECONV */ |
1644 | |
1645 | #ifdef HAS_LONG_DOUBLE |
1646 | # if LONG_DOUBLESIZE16 > NVSIZE8 |
1647 | # undef HAS_LONG_DOUBLE /* XXX until we figure out how to use them */ |
1648 | # endif |
1649 | #endif |
1650 | |
1651 | #ifndef HAS_LONG_DOUBLE |
1652 | #ifdef LDBL_MAX |
1653 | #undef LDBL_MAX |
1654 | #endif |
1655 | #ifdef LDBL_MIN |
1656 | #undef LDBL_MIN |
1657 | #endif |
1658 | #ifdef LDBL_EPSILON |
1659 | #undef LDBL_EPSILON |
1660 | #endif |
1661 | #endif |
1662 | |
1663 | /* Background: in most systems the low byte of the wait status |
1664 | * is the signal (the lowest 7 bits) and the coredump flag is |
1665 | * the eight bit, and the second lowest byte is the exit status. |
1666 | * BeOS bucks the trend and has the bytes in different order. |
1667 | * See beos/beos.c for how the reality is bent even in BeOS |
1668 | * to follow the traditional. However, to make the POSIX |
1669 | * wait W*() macros to work in BeOS, we need to unbend the |
1670 | * reality back in place. --jhi */ |
1671 | /* In actual fact the code below is to blame here. Perl has an internal |
1672 | * representation of the exit status ($?), which it re-composes from the |
1673 | * OS's representation using the W*() POSIX macros. The code below |
1674 | * incorrectly uses the W*() macros on the internal representation, |
1675 | * which fails for OSs that have a different representation (namely BeOS |
1676 | * and Haiku). WMUNGE() is a hack that converts the internal |
1677 | * representation into the OS specific one, so that the W*() macros work |
1678 | * as expected. The better solution would be not to use the W*() macros |
1679 | * in the first place, though. -- Ingo Weinhold |
1680 | */ |
1681 | #if defined(__HAIKU__) |
1682 | # define WMUNGE(x)(x) (((x) & 0xFF00) >> 8 | ((x) & 0x00FF) << 8) |
1683 | #else |
1684 | # define WMUNGE(x)(x) (x) |
1685 | #endif |
1686 | |
1687 | static int |
1688 | not_here(const char *s) |
1689 | { |
1690 | croakPerl_croak("POSIX::%s not implemented on this architecture", s); |
1691 | return -1; |
1692 | } |
1693 | |
1694 | #include "const-c.inc" |
1695 | |
1696 | static void |
1697 | restore_sigmask(pTHX_ SV *osset_sv) |
1698 | { |
1699 | /* Fortunately, restoring the signal mask can't fail, because |
1700 | * there's nothing we can do about it if it does -- we're not |
1701 | * supposed to return -1 from sigaction unless the disposition |
1702 | * was unaffected. |
1703 | */ |
1704 | #if !(defined(__amigaos4__) && defined(__NEWLIB__)) |
1705 | sigset_t *ossetp = (sigset_t *) SvPV_nolen( osset_sv )((((osset_sv)->sv_flags & (0x00000400|0x00200000)) == 0x00000400 ) ? ((osset_sv)->sv_u.svu_pv) : Perl_sv_2pv_flags( osset_sv ,0,2)); |
1706 | (void)sigprocmask(SIG_SETMASK3, ossetp, (sigset_t *)0); |
1707 | #endif |
1708 | } |
1709 | |
1710 | static void * |
1711 | allocate_struct(pTHX_ SV *rv, const STRLEN size, const char *packname) { |
1712 | SV *const t = newSVrv(rv, packname)Perl_newSVrv( rv,packname); |
1713 | void *const p = sv_grow(t, size + 1)Perl_sv_grow( t,size + 1); |
1714 | |
1715 | /* Ensure at least one use of not_here() to avoid "defined but not |
1716 | * used" warning. This is not at all related to allocate_struct(); I |
1717 | * just needed somewhere to dump it - DAPM */ |
1718 | if (0) { not_here(""); } |
1719 | |
1720 | SvCUR_set(t, size)do { ((void)0); ((void)0); ((void)0); (((XPV*) (t)->sv_any )->xpv_cur = (size)); } while (0); |
1721 | SvPOK_on(t)( (t)->sv_flags |= (0x00000400|0x00004000)); |
1722 | return p; |
1723 | } |
1724 | |
1725 | #ifdef WIN32 |
1726 | |
1727 | /* |
1728 | * (1) The CRT maintains its own copy of the environment, separate from |
1729 | * the Win32API copy. |
1730 | * |
1731 | * (2) CRT getenv() retrieves from this copy. CRT putenv() updates this |
1732 | * copy, and then calls SetEnvironmentVariableA() to update the Win32API |
1733 | * copy. |
1734 | * |
1735 | * (3) win32_getenv() and win32_putenv() call GetEnvironmentVariableA() and |
1736 | * SetEnvironmentVariableA() directly, bypassing the CRT copy of the |
1737 | * environment. |
1738 | * |
1739 | * (4) The CRT strftime() "%Z" implementation calls __tzset(). That |
1740 | * calls CRT tzset(), but only the first time it is called, and in turn |
1741 | * that uses CRT getenv("TZ") to retrieve the timezone info from the CRT |
1742 | * local copy of the environment and hence gets the original setting as |
1743 | * perl never updates the CRT copy when assigning to $ENV{TZ}. |
1744 | * |
1745 | * Therefore, we need to retrieve the value of $ENV{TZ} and call CRT |
1746 | * putenv() to update the CRT copy of the environment (if it is different) |
1747 | * whenever we're about to call tzset(). |
1748 | * |
1749 | * In addition to all that, when perl is built with PERL_IMPLICIT_SYS |
1750 | * defined: |
1751 | * |
1752 | * (a) Each interpreter has its own copy of the environment inside the |
1753 | * perlhost structure. That allows applications that host multiple |
1754 | * independent Perl interpreters to isolate environment changes from |
1755 | * each other. (This is similar to how the perlhost mechanism keeps a |
1756 | * separate working directory for each Perl interpreter, so that calling |
1757 | * chdir() will not affect other interpreters.) |
1758 | * |
1759 | * (b) Only the first Perl interpreter instantiated within a process will |
1760 | * "write through" environment changes to the process environment. |
1761 | * |
1762 | * (c) Even the primary Perl interpreter won't update the CRT copy of the |
1763 | * environment, only the Win32API copy (it calls win32_putenv()). |
1764 | * |
1765 | * As with CPerlHost::Getenv() and CPerlHost::Putenv() themselves, it makes |
1766 | * sense to only update the process environment when inside the main |
1767 | * interpreter, but we don't have access to CPerlHost's m_bTopLevel member |
1768 | * from here so we'll just have to check PL_curinterp instead. |
1769 | * |
1770 | * Therefore, we can simply #undef getenv() and putenv() so that those names |
1771 | * always refer to the CRT functions, and explicitly call win32_getenv() to |
1772 | * access perl's %ENV. |
1773 | * |
1774 | * We also #undef malloc() and free() to be sure we are using the CRT |
1775 | * functions otherwise under PERL_IMPLICIT_SYS they are redefined to calls |
1776 | * into VMem::Malloc() and VMem::Free() and all allocations will be freed |
1777 | * when the Perl interpreter is being destroyed so we'd end up with a pointer |
1778 | * into deallocated memory in environ[] if a program embedding a Perl |
1779 | * interpreter continues to operate even after the main Perl interpreter has |
1780 | * been destroyed. |
1781 | * |
1782 | * Note that we don't free() the malloc()ed memory unless and until we call |
1783 | * malloc() again ourselves because the CRT putenv() function simply puts its |
1784 | * pointer argument into the environ[] array (it doesn't make a copy of it) |
1785 | * so this memory must otherwise be leaked. |
1786 | */ |
1787 | |
1788 | #undef getenv |
1789 | #undef putenv |
1790 | #undef malloc |
1791 | #undef free |
1792 | |
1793 | static void |
1794 | fix_win32_tzenv(void) |
1795 | { |
1796 | static char* oldenv = NULL((void*)0); |
1797 | char* newenv; |
1798 | const char* perl_tz_env = win32_getenv("TZ"); |
1799 | const char* crt_tz_env = getenv("TZ"); |
1800 | if (perl_tz_env == NULL((void*)0)) |
1801 | perl_tz_env = ""; |
1802 | if (crt_tz_env == NULL((void*)0)) |
1803 | crt_tz_env = ""; |
1804 | if (strNE(perl_tz_env, crt_tz_env)(strcmp(perl_tz_env,crt_tz_env) != 0)) { |
1805 | newenv = (char*)malloc((strlen(perl_tz_env) + 4) * sizeof(char)); |
1806 | if (newenv != NULL((void*)0)) { |
1807 | sprintf(newenv, "TZ=%s", perl_tz_env); |
1808 | putenv(newenv); |
1809 | if (oldenv != NULL((void*)0)) |
1810 | free(oldenv); |
1811 | oldenv = newenv; |
1812 | } |
1813 | } |
1814 | } |
1815 | |
1816 | #endif |
1817 | |
1818 | /* |
1819 | * my_tzset - wrapper to tzset() with a fix to make it work (better) on Win32. |
1820 | * This code is duplicated in the Time-Piece module, so any changes made here |
1821 | * should be made there too. |
1822 | */ |
1823 | static void |
1824 | my_tzset(pTHXvoid) |
1825 | { |
1826 | #ifdef WIN32 |
1827 | #if defined(USE_ITHREADS) && defined(PERL_IMPLICIT_SYS) |
1828 | if (PL_curinterp == aTHX) |
1829 | #endif |
1830 | fix_win32_tzenv(); |
1831 | #endif |
1832 | tzset(); |
1833 | } |
1834 | |
1835 | #line 1836 "POSIX.c" |
1836 | #ifndef PERL_UNUSED_VAR |
1837 | # define PERL_UNUSED_VAR(var)((void)sizeof(var)) if (0) var = var |
1838 | #endif |
1839 | |
1840 | #ifndef dVARstruct Perl___notused_struct |
1841 | # define dVARstruct Perl___notused_struct dNOOPstruct Perl___notused_struct |
1842 | #endif |
1843 | |
1844 | |
1845 | /* This stuff is not part of the API! You have been warned. */ |
1846 | #ifndef PERL_VERSION_DECIMAL |
1847 | # define PERL_VERSION_DECIMAL(r,v,s)(r*1000000 + v*1000 + s) (r*1000000 + v*1000 + s) |
1848 | #endif |
1849 | #ifndef PERL_DECIMAL_VERSION(5*1000000 + 32*1000 + 1) |
1850 | # define PERL_DECIMAL_VERSION(5*1000000 + 32*1000 + 1) \ |
1851 | PERL_VERSION_DECIMAL(PERL_REVISION,PERL_VERSION,PERL_SUBVERSION)(5*1000000 + 32*1000 + 1) |
1852 | #endif |
1853 | #ifndef PERL_VERSION_GE |
1854 | # define PERL_VERSION_GE(r,v,s)((5*1000000 + 32*1000 + 1) >= (r*1000000 + v*1000 + s)) \ |
1855 | (PERL_DECIMAL_VERSION(5*1000000 + 32*1000 + 1) >= PERL_VERSION_DECIMAL(r,v,s)(r*1000000 + v*1000 + s)) |
1856 | #endif |
1857 | #ifndef PERL_VERSION_LE |
1858 | # define PERL_VERSION_LE(r,v,s)((5*1000000 + 32*1000 + 1) <= (r*1000000 + v*1000 + s)) \ |
1859 | (PERL_DECIMAL_VERSION(5*1000000 + 32*1000 + 1) <= PERL_VERSION_DECIMAL(r,v,s)(r*1000000 + v*1000 + s)) |
1860 | #endif |
1861 | |
1862 | /* XS_INTERNAL is the explicit static-linkage variant of the default |
1863 | * XS macro. |
1864 | * |
1865 | * XS_EXTERNAL is the same as XS_INTERNAL except it does not include |
1866 | * "STATIC", ie. it exports XSUB symbols. You probably don't want that |
1867 | * for anything but the BOOT XSUB. |
1868 | * |
1869 | * See XSUB.h in core! |
1870 | */ |
1871 | |
1872 | |
1873 | /* TODO: This might be compatible further back than 5.10.0. */ |
1874 | #if PERL_VERSION_GE(5, 10, 0)((5*1000000 + 32*1000 + 1) >= (5*1000000 + 10*1000 + 0)) && PERL_VERSION_LE(5, 15, 1)((5*1000000 + 32*1000 + 1) <= (5*1000000 + 15*1000 + 1)) |
1875 | # undef XS_EXTERNAL |
1876 | # undef XS_INTERNAL |
1877 | # if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING) |
1878 | # define XS_EXTERNAL(name)void name( CV* cv __attribute__((unused))) __declspec(dllexport) XSPROTO(name)void name( CV* cv __attribute__((unused))) |
1879 | # define XS_INTERNAL(name)static void name( CV* cv __attribute__((unused))) STATICstatic XSPROTO(name)void name( CV* cv __attribute__((unused))) |
1880 | # endif |
1881 | # if defined(__SYMBIAN32__) |
1882 | # define XS_EXTERNAL(name)void name( CV* cv __attribute__((unused))) EXPORT_C XSPROTO(name)void name( CV* cv __attribute__((unused))) |
1883 | # define XS_INTERNAL(name)static void name( CV* cv __attribute__((unused))) EXPORT_C STATICstatic XSPROTO(name)void name( CV* cv __attribute__((unused))) |
1884 | # endif |
1885 | # ifndef XS_EXTERNAL |
1886 | # if defined(HASATTRIBUTE_UNUSED) && !defined(__cplusplus) |
1887 | # define XS_EXTERNAL(name)void name( CV* cv __attribute__((unused))) void name(pTHX_ CV* cv __attribute__unused____attribute__((unused))) |
1888 | # define XS_INTERNAL(name)static void name( CV* cv __attribute__((unused))) STATICstatic void name(pTHX_ CV* cv __attribute__unused____attribute__((unused))) |
1889 | # else |
1890 | # ifdef __cplusplus |
1891 | # define XS_EXTERNAL(name)void name( CV* cv __attribute__((unused))) extern "C" XSPROTO(name)void name( CV* cv __attribute__((unused))) |
1892 | # define XS_INTERNAL(name)static void name( CV* cv __attribute__((unused))) static XSPROTO(name)void name( CV* cv __attribute__((unused))) |
1893 | # else |
1894 | # define XS_EXTERNAL(name)void name( CV* cv __attribute__((unused))) XSPROTO(name)void name( CV* cv __attribute__((unused))) |
1895 | # define XS_INTERNAL(name)static void name( CV* cv __attribute__((unused))) STATICstatic XSPROTO(name)void name( CV* cv __attribute__((unused))) |
1896 | # endif |
1897 | # endif |
1898 | # endif |
1899 | #endif |
1900 | |
1901 | /* perl >= 5.10.0 && perl <= 5.15.1 */ |
1902 | |
1903 | |
1904 | /* The XS_EXTERNAL macro is used for functions that must not be static |
1905 | * like the boot XSUB of a module. If perl didn't have an XS_EXTERNAL |
1906 | * macro defined, the best we can do is assume XS is the same. |
1907 | * Dito for XS_INTERNAL. |
1908 | */ |
1909 | #ifndef XS_EXTERNAL |
1910 | # define XS_EXTERNAL(name)void name( CV* cv __attribute__((unused))) XS(name)void name( CV* cv __attribute__((unused))) |
1911 | #endif |
1912 | #ifndef XS_INTERNAL |
1913 | # define XS_INTERNAL(name)static void name( CV* cv __attribute__((unused))) XS(name)void name( CV* cv __attribute__((unused))) |
1914 | #endif |
1915 | |
1916 | /* Now, finally, after all this mess, we want an ExtUtils::ParseXS |
1917 | * internal macro that we're free to redefine for varying linkage due |
1918 | * to the EXPORT_XSUB_SYMBOLS XS keyword. This is internal, use |
1919 | * XS_EXTERNAL(name) or XS_INTERNAL(name) in your code if you need to! |
1920 | */ |
1921 | |
1922 | #undef XS_EUPXS |
1923 | #if defined(PERL_EUPXS_ALWAYS_EXPORT) |
1924 | # define XS_EUPXS(name)static void name( CV* cv __attribute__((unused))) XS_EXTERNAL(name)void name( CV* cv __attribute__((unused))) |
1925 | #else |
1926 | /* default to internal */ |
1927 | # define XS_EUPXS(name)static void name( CV* cv __attribute__((unused))) XS_INTERNAL(name)static void name( CV* cv __attribute__((unused))) |
1928 | #endif |
1929 | |
1930 | #ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE((void)0); ((void)0) |
1931 | #define PERL_ARGS_ASSERT_CROAK_XS_USAGE((void)0); ((void)0) assert(cv)((void)0); assert(params)((void)0) |
1932 | |
1933 | /* prototype to pass -Wmissing-prototypes */ |
1934 | STATICstatic void |
1935 | S_croak_xs_usage(const CV *const cv, const char *const params); |
1936 | |
1937 | STATICstatic void |
1938 | S_croak_xs_usage(const CV *const cv, const char *const params) |
1939 | { |
1940 | const GV *const gv = CvGV(cv)Perl_CvGV( (CV *)(cv)); |
1941 | |
1942 | PERL_ARGS_ASSERT_CROAK_XS_USAGE((void)0); ((void)0); |
1943 | |
1944 | if (gv) { |
1945 | const char *const gvname = GvNAME(gv)((((XPVGV*)(gv)->sv_any)->xiv_u.xivu_namehek))->hek_key; |
1946 | const HV *const stash = GvSTASH(gv)(((XPVGV*)(gv)->sv_any)->xnv_u.xgv_stash); |
1947 | const char *const hvname = stash ? HvNAME(stash)((((stash)->sv_flags & 0x02000000) && ((struct xpvhv_aux*)&(((stash)->sv_u.svu_hash)[((XPVHV*) (stash )->sv_any)->xhv_max+1]))->xhv_name_u.xhvnameu_name && ( ((struct xpvhv_aux*)&(((stash)->sv_u.svu_hash)[((XPVHV *) (stash)->sv_any)->xhv_max+1]))->xhv_name_count ? * ((struct xpvhv_aux*)&(((stash)->sv_u.svu_hash)[((XPVHV *) (stash)->sv_any)->xhv_max+1]))->xhv_name_u.xhvnameu_names : ((struct xpvhv_aux*)&(((stash)->sv_u.svu_hash)[((XPVHV *) (stash)->sv_any)->xhv_max+1]))->xhv_name_u.xhvnameu_name )) ? (( ((struct xpvhv_aux*)&(((stash)->sv_u.svu_hash )[((XPVHV*) (stash)->sv_any)->xhv_max+1]))->xhv_name_count ? *((struct xpvhv_aux*)&(((stash)->sv_u.svu_hash)[((XPVHV *) (stash)->sv_any)->xhv_max+1]))->xhv_name_u.xhvnameu_names : ((struct xpvhv_aux*)&(((stash)->sv_u.svu_hash)[((XPVHV *) (stash)->sv_any)->xhv_max+1]))->xhv_name_u.xhvnameu_name ))->hek_key : ((void*)0)) : NULL((void*)0); |
1948 | |
1949 | if (hvname) |
1950 | Perl_croak_nocontextPerl_croak("Usage: %s::%s(%s)", hvname, gvname, params); |
1951 | else |
1952 | Perl_croak_nocontextPerl_croak("Usage: %s(%s)", gvname, params); |
1953 | } else { |
1954 | /* Pants. I don't think that it should be possible to get here. */ |
1955 | Perl_croak_nocontextPerl_croak("Usage: CODE(0x%" UVxf"lx" ")(%s)", PTR2UV(cv)(UV)(cv), params); |
1956 | } |
1957 | } |
1958 | #undef PERL_ARGS_ASSERT_CROAK_XS_USAGE((void)0); ((void)0) |
1959 | |
1960 | #define croak_xs_usagePerl_croak_xs_usage S_croak_xs_usage |
1961 | |
1962 | #endif |
1963 | |
1964 | /* NOTE: the prototype of newXSproto() is different in versions of perls, |
1965 | * so we define a portable version of newXSproto() |
1966 | */ |
1967 | #ifdef newXS_flags |
1968 | #define newXSproto_portable(name, c_impl, file, proto)Perl_newXS_flags( name,c_impl,file,proto,0) newXS_flags(name, c_impl, file, proto, 0)Perl_newXS_flags( name,c_impl,file,proto,0) |
1969 | #else |
1970 | #define newXSproto_portable(name, c_impl, file, proto)Perl_newXS_flags( name,c_impl,file,proto,0) (PL_Sv=(SV*)newXS(name, c_impl, file)Perl_newXS( name,c_impl,file), sv_setpv(PL_Sv, proto)Perl_sv_setpv( PL_Sv,proto), (CV*)PL_Sv) |
1971 | #endif /* !defined(newXS_flags) */ |
1972 | |
1973 | #if PERL_VERSION_LE(5, 21, 5)((5*1000000 + 32*1000 + 1) <= (5*1000000 + 21*1000 + 5)) |
1974 | # define newXS_deffile(a,b)Perl_newXS_deffile( a,b) Perl_newXS(aTHX_ a,b,file) |
1975 | #else |
1976 | # define newXS_deffile(a,b)Perl_newXS_deffile( a,b) Perl_newXS_deffile(aTHX_ a,b) |
1977 | #endif |
1978 | |
1979 | #line 1980 "POSIX.c" |
1980 | |
1981 | XS_EUPXS(XS_POSIX__SigSet_new)static void XS_POSIX__SigSet_new( CV* cv __attribute__((unused ))); /* prototype to pass -Wmissing-prototypes */ |
1982 | XS_EUPXS(XS_POSIX__SigSet_new)static void XS_POSIX__SigSet_new( CV* cv __attribute__((unused ))) |
1983 | { |
1984 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
1985 | PERL_UNUSED_VAR(cv)((void)sizeof(cv)); /* -W */ |
1986 | PERL_UNUSED_VAR(items)((void)sizeof(items)); /* -W */ |
1987 | { |
1988 | const char * packname; |
1989 | |
1990 | if (items < 1) |
1991 | packname = "POSIX::SigSet"; |
1992 | else { |
1993 | packname = (const char *)SvPV_nolen(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((PL_stack_base[ax + (0)])->sv_u.svu_pv ) : Perl_sv_2pv_flags( PL_stack_base[ax + (0)],0,2)) |
1994 | ; |
1995 | } |
1996 | #line 1832 "POSIX.xs" |
1997 | { |
1998 | int i; |
1999 | sigset_t *const s |
2000 | = (sigset_t *) allocate_struct(aTHX_ (ST(0)PL_stack_base[ax + (0)] = sv_newmortal()Perl_sv_newmortal()), |
2001 | sizeof(sigset_t), |
2002 | packname); |
2003 | sigemptyset(s); |
2004 | for (i = 1; i < items; i++) { |
2005 | IV sig = SvIV(ST(i))((((PL_stack_base[ax + (i)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (i)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( i)],2)); |
2006 | if (sigaddset(s, sig) < 0) |
2007 | croakPerl_croak("POSIX::Sigset->new: failed to add signal %" IVdf"ld", sig); |
2008 | } |
2009 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
2010 | } |
2011 | #line 2012 "POSIX.c" |
2012 | } |
2013 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
2014 | } |
2015 | |
2016 | |
2017 | XS_EUPXS(XS_POSIX__SigSet_addset)static void XS_POSIX__SigSet_addset( CV* cv __attribute__((unused ))); /* prototype to pass -Wmissing-prototypes */ |
2018 | XS_EUPXS(XS_POSIX__SigSet_addset)static void XS_POSIX__SigSet_addset( CV* cv __attribute__((unused ))) |
2019 | { |
2020 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
2021 | dXSI32I32 ix = ((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))-> xcv_start_u.xcv_xsubany.any_i32; |
2022 | if (items != 2) |
2023 | croak_xs_usagePerl_croak_xs_usage(cv, "sigset, sig"); |
2024 | { |
2025 | POSIX__SigSet sigset; |
2026 | POSIX__SigNo sig; |
2027 | SysRet RETVAL; |
2028 | |
2029 | { |
2030 | SV * sv = ST(0)PL_stack_base[ax + (0)]; |
2031 | if (SvROK(sv)((sv)->sv_flags & 0x00000800) && sv_derived_from(sv, "POSIX::SigSet")Perl_sv_derived_from( sv,"POSIX::SigSet")) |
2032 | sigset = (POSIX__SigSet)SvPV_nolen(SvRV(sv))((((((sv)->sv_u.svu_rv))->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((((sv)->sv_u.svu_rv))->sv_u.svu_pv ) : Perl_sv_2pv_flags( ((sv)->sv_u.svu_rv),0,2)); |
2033 | else |
2034 | croakPerl_croak("%s: %s is not of type %s", |
2035 | GvNAME(CvGV(cv))((((XPVGV*)(Perl_CvGV( (CV *)(cv)))->sv_any)->xiv_u.xivu_namehek ))->hek_key, |
2036 | "sigset", "POSIX::SigSet"); |
2037 | } |
2038 | ; |
2039 | |
2040 | if ((sig = SvIV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (1)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 1)],2))) < 0) { |
2041 | croakPerl_croak("%s: Negative signals are not allowed %d", |
2042 | GvNAME(CvGV(cv))((((XPVGV*)(Perl_CvGV( (CV *)(cv)))->sv_any)->xiv_u.xivu_namehek ))->hek_key, |
2043 | sig); |
2044 | } |
2045 | ; |
2046 | #line 1854 "POSIX.xs" |
2047 | RETVAL = ix ? sigdelset(sigset, sig) : sigaddset(sigset, sig); |
2048 | #line 2049 "POSIX.c" |
2049 | { |
2050 | SV * RETVALSV; |
2051 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
2052 | if (RETVAL != -1) { |
2053 | if (RETVAL == 0) |
2054 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
2055 | else |
2056 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
2057 | } |
2058 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
2059 | } |
2060 | } |
2061 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
2062 | } |
2063 | |
2064 | |
2065 | XS_EUPXS(XS_POSIX__SigSet_emptyset)static void XS_POSIX__SigSet_emptyset( CV* cv __attribute__(( unused))); /* prototype to pass -Wmissing-prototypes */ |
2066 | XS_EUPXS(XS_POSIX__SigSet_emptyset)static void XS_POSIX__SigSet_emptyset( CV* cv __attribute__(( unused))) |
2067 | { |
2068 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
2069 | dXSI32I32 ix = ((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))-> xcv_start_u.xcv_xsubany.any_i32; |
2070 | if (items != 1) |
2071 | croak_xs_usagePerl_croak_xs_usage(cv, "sigset"); |
2072 | { |
2073 | POSIX__SigSet sigset; |
2074 | SysRet RETVAL; |
2075 | |
2076 | { |
2077 | SV * sv = ST(0)PL_stack_base[ax + (0)]; |
2078 | if (SvROK(sv)((sv)->sv_flags & 0x00000800) && sv_derived_from(sv, "POSIX::SigSet")Perl_sv_derived_from( sv,"POSIX::SigSet")) |
2079 | sigset = (POSIX__SigSet)SvPV_nolen(SvRV(sv))((((((sv)->sv_u.svu_rv))->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((((sv)->sv_u.svu_rv))->sv_u.svu_pv ) : Perl_sv_2pv_flags( ((sv)->sv_u.svu_rv),0,2)); |
2080 | else |
2081 | croakPerl_croak("%s: %s is not of type %s", |
2082 | GvNAME(CvGV(cv))((((XPVGV*)(Perl_CvGV( (CV *)(cv)))->sv_any)->xiv_u.xivu_namehek ))->hek_key, |
2083 | "sigset", "POSIX::SigSet"); |
2084 | } |
2085 | ; |
2086 | #line 1864 "POSIX.xs" |
2087 | RETVAL = ix ? sigfillset(sigset) : sigemptyset(sigset); |
2088 | #line 2089 "POSIX.c" |
2089 | { |
2090 | SV * RETVALSV; |
2091 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
2092 | if (RETVAL != -1) { |
2093 | if (RETVAL == 0) |
2094 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
2095 | else |
2096 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
2097 | } |
2098 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
2099 | } |
2100 | } |
2101 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
2102 | } |
2103 | |
2104 | |
2105 | XS_EUPXS(XS_POSIX__SigSet_ismember)static void XS_POSIX__SigSet_ismember( CV* cv __attribute__(( unused))); /* prototype to pass -Wmissing-prototypes */ |
2106 | XS_EUPXS(XS_POSIX__SigSet_ismember)static void XS_POSIX__SigSet_ismember( CV* cv __attribute__(( unused))) |
2107 | { |
2108 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
2109 | if (items != 2) |
2110 | croak_xs_usagePerl_croak_xs_usage(cv, "sigset, sig"); |
2111 | { |
2112 | POSIX__SigSet sigset; |
2113 | POSIX__SigNo sig; |
2114 | int RETVAL; |
2115 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
2116 | |
2117 | { |
2118 | SV * sv = ST(0)PL_stack_base[ax + (0)]; |
2119 | if (SvROK(sv)((sv)->sv_flags & 0x00000800) && sv_derived_from(sv, "POSIX::SigSet")Perl_sv_derived_from( sv,"POSIX::SigSet")) |
2120 | sigset = (POSIX__SigSet)SvPV_nolen(SvRV(sv))((((((sv)->sv_u.svu_rv))->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((((sv)->sv_u.svu_rv))->sv_u.svu_pv ) : Perl_sv_2pv_flags( ((sv)->sv_u.svu_rv),0,2)); |
2121 | else |
2122 | croakPerl_croak("%s: %s is not of type %s", |
2123 | "POSIX::SigSet::ismember", |
2124 | "sigset", "POSIX::SigSet"); |
2125 | } |
2126 | ; |
2127 | |
2128 | if ((sig = SvIV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (1)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 1)],2))) < 0) { |
2129 | croakPerl_croak("%s: Negative signals are not allowed %d", |
2130 | "POSIX::SigSet::ismember", |
2131 | sig); |
2132 | } |
2133 | ; |
2134 | |
2135 | RETVAL = sigismember(sigset, sig); |
2136 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHi((IV)RETVAL)do { do { IV TARGi_iv = (IV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000)|0x80000000)) == SVt_IV) & (1 ? !(((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool) 0),(0))) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0) ,(1))) { ((void)0); (targ)->sv_flags |= (0x00000100|0x00001000 ); targ->sv_u.svu_iv = TARGi_iv; } else Perl_sv_setiv_mg( targ ,TARGi_iv); } while (0); (*++sp = (targ)); } while (0); |
2137 | } |
2138 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
2139 | } |
2140 | |
2141 | |
2142 | XS_EUPXS(XS_POSIX__Termios_new)static void XS_POSIX__Termios_new( CV* cv __attribute__((unused ))); /* prototype to pass -Wmissing-prototypes */ |
2143 | XS_EUPXS(XS_POSIX__Termios_new)static void XS_POSIX__Termios_new( CV* cv __attribute__((unused ))) |
2144 | { |
2145 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
2146 | PERL_UNUSED_VAR(cv)((void)sizeof(cv)); /* -W */ |
2147 | PERL_UNUSED_VAR(items)((void)sizeof(items)); /* -W */ |
2148 | { |
2149 | const char * packname; |
2150 | |
2151 | if (items < 1) |
2152 | packname = "POSIX::Termios"; |
2153 | else { |
2154 | packname = (const char *)SvPV_nolen(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((PL_stack_base[ax + (0)])->sv_u.svu_pv ) : Perl_sv_2pv_flags( PL_stack_base[ax + (0)],0,2)) |
2155 | ; |
2156 | } |
2157 | #line 1879 "POSIX.xs" |
2158 | { |
2159 | #ifdef I_TERMIOS |
2160 | void *const p = allocate_struct(aTHX_ (ST(0)PL_stack_base[ax + (0)] = sv_newmortal()Perl_sv_newmortal()), |
2161 | sizeof(struct termios), packname); |
2162 | /* The previous implementation stored a pointer to an uninitialised |
2163 | struct termios. Seems safer to initialise it, particularly as |
2164 | this implementation exposes the struct to prying from perl-space. |
2165 | */ |
2166 | memset(p, 0, 1 + sizeof(struct termios)); |
2167 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
2168 | #else |
2169 | not_here("termios"); |
2170 | #endif |
2171 | } |
2172 | #line 2173 "POSIX.c" |
2173 | } |
2174 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
2175 | } |
2176 | |
2177 | |
2178 | XS_EUPXS(XS_POSIX__Termios_getattr)static void XS_POSIX__Termios_getattr( CV* cv __attribute__(( unused))); /* prototype to pass -Wmissing-prototypes */ |
2179 | XS_EUPXS(XS_POSIX__Termios_getattr)static void XS_POSIX__Termios_getattr( CV* cv __attribute__(( unused))) |
2180 | { |
2181 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
2182 | if (items < 1 || items > 2) |
2183 | croak_xs_usagePerl_croak_xs_usage(cv, "termios_ref, fd = 0"); |
2184 | { |
2185 | POSIX__Termios termios_ref; |
2186 | POSIX__Fd fd; |
2187 | SysRet RETVAL; |
2188 | |
2189 | { |
2190 | SV * sv = ST(0)PL_stack_base[ax + (0)]; |
2191 | if (SvROK(sv)((sv)->sv_flags & 0x00000800) && sv_derived_from(sv, "POSIX::Termios")Perl_sv_derived_from( sv,"POSIX::Termios")) |
2192 | termios_ref = (POSIX__Termios)SvPV_nolen(SvRV(sv))((((((sv)->sv_u.svu_rv))->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((((sv)->sv_u.svu_rv))->sv_u.svu_pv ) : Perl_sv_2pv_flags( ((sv)->sv_u.svu_rv),0,2)); |
2193 | else |
2194 | croakPerl_croak("%s: %s is not of type %s", |
2195 | "POSIX::Termios::getattr", |
2196 | "termios_ref", "POSIX::Termios"); |
2197 | } |
2198 | ; |
2199 | |
2200 | if (items < 2) |
2201 | fd = 0; |
2202 | else { |
2203 | if ((fd = (int)SvIV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (1)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 1)],2))) < 0) { |
2204 | SETERRNO(EBADF, RMS_IFI)((*__errno()) = (9)); |
2205 | XSRETURN_IV(-1)do { (PL_stack_base[ax + (0)] = Perl_sv_2mortal( Perl_newSViv ( -1)) ); do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
2206 | } |
2207 | ; |
2208 | } |
2209 | #line 1899 "POSIX.xs" |
2210 | RETVAL = tcgetattr(fd, termios_ref); |
2211 | #line 2212 "POSIX.c" |
2212 | { |
2213 | SV * RETVALSV; |
2214 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
2215 | if (RETVAL != -1) { |
2216 | if (RETVAL == 0) |
2217 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
2218 | else |
2219 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
2220 | } |
2221 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
2222 | } |
2223 | } |
2224 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
2225 | } |
2226 | |
2227 | #ifndef TCSANOW0 |
2228 | # define DEF_SETATTR_ACTION0 0 |
2229 | #else |
2230 | # define DEF_SETATTR_ACTION0 TCSANOW0 |
2231 | #endif |
2232 | |
2233 | XS_EUPXS(XS_POSIX__Termios_setattr)static void XS_POSIX__Termios_setattr( CV* cv __attribute__(( unused))); /* prototype to pass -Wmissing-prototypes */ |
2234 | XS_EUPXS(XS_POSIX__Termios_setattr)static void XS_POSIX__Termios_setattr( CV* cv __attribute__(( unused))) |
2235 | { |
2236 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
2237 | if (items < 1 || items > 3) |
2238 | croak_xs_usagePerl_croak_xs_usage(cv, "termios_ref, fd = 0, optional_actions = DEF_SETATTR_ACTION"); |
2239 | { |
2240 | POSIX__Termios termios_ref; |
2241 | POSIX__Fd fd; |
2242 | int optional_actions; |
2243 | SysRet RETVAL; |
2244 | |
2245 | { |
2246 | SV * sv = ST(0)PL_stack_base[ax + (0)]; |
2247 | if (SvROK(sv)((sv)->sv_flags & 0x00000800) && sv_derived_from(sv, "POSIX::Termios")Perl_sv_derived_from( sv,"POSIX::Termios")) |
2248 | termios_ref = (POSIX__Termios)SvPV_nolen(SvRV(sv))((((((sv)->sv_u.svu_rv))->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((((sv)->sv_u.svu_rv))->sv_u.svu_pv ) : Perl_sv_2pv_flags( ((sv)->sv_u.svu_rv),0,2)); |
2249 | else |
2250 | croakPerl_croak("%s: %s is not of type %s", |
2251 | "POSIX::Termios::setattr", |
2252 | "termios_ref", "POSIX::Termios"); |
2253 | } |
2254 | ; |
2255 | |
2256 | if (items < 2) |
2257 | fd = 0; |
2258 | else { |
2259 | if ((fd = (int)SvIV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (1)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 1)],2))) < 0) { |
2260 | SETERRNO(EBADF, RMS_IFI)((*__errno()) = (9)); |
2261 | XSRETURN_IV(-1)do { (PL_stack_base[ax + (0)] = Perl_sv_2mortal( Perl_newSViv ( -1)) ); do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
2262 | } |
2263 | ; |
2264 | } |
2265 | |
2266 | if (items < 3) |
2267 | optional_actions = DEF_SETATTR_ACTION0; |
2268 | else { |
2269 | optional_actions = (int)SvIV(ST(2))((((PL_stack_base[ax + (2)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (2)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 2)],2)) |
2270 | ; |
2271 | } |
2272 | #line 1917 "POSIX.xs" |
2273 | /* The second argument to the call is mandatory, but we'd like to give |
2274 | it a useful default. 0 isn't valid on all operating systems - on |
2275 | Solaris (at least) TCSANOW, TCSADRAIN and TCSAFLUSH have the same |
2276 | values as the equivalent ioctls, TCSETS, TCSETSW and TCSETSF. */ |
2277 | if (optional_actions < 0) { |
2278 | SETERRNO(EINVAL, LIB_INVARG)((*__errno()) = (22)); |
2279 | RETVAL = -1; |
2280 | } else { |
2281 | RETVAL = tcsetattr(fd, optional_actions, termios_ref); |
2282 | } |
2283 | #line 2284 "POSIX.c" |
2284 | { |
2285 | SV * RETVALSV; |
2286 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
2287 | if (RETVAL != -1) { |
2288 | if (RETVAL == 0) |
2289 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
2290 | else |
2291 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
2292 | } |
2293 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
2294 | } |
2295 | } |
2296 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
2297 | } |
2298 | |
2299 | |
2300 | XS_EUPXS(XS_POSIX__Termios_getispeed)static void XS_POSIX__Termios_getispeed( CV* cv __attribute__ ((unused))); /* prototype to pass -Wmissing-prototypes */ |
2301 | XS_EUPXS(XS_POSIX__Termios_getispeed)static void XS_POSIX__Termios_getispeed( CV* cv __attribute__ ((unused))) |
2302 | { |
2303 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
2304 | dXSI32I32 ix = ((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))-> xcv_start_u.xcv_xsubany.any_i32; |
2305 | if (items != 1) |
2306 | croak_xs_usagePerl_croak_xs_usage(cv, "termios_ref"); |
2307 | { |
2308 | POSIX__Termios termios_ref; |
2309 | speed_t RETVAL; |
2310 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
2311 | |
2312 | { |
2313 | SV * sv = ST(0)PL_stack_base[ax + (0)]; |
2314 | if (SvROK(sv)((sv)->sv_flags & 0x00000800) && sv_derived_from(sv, "POSIX::Termios")Perl_sv_derived_from( sv,"POSIX::Termios")) |
2315 | termios_ref = (POSIX__Termios)SvPV_nolen(SvRV(sv))((((((sv)->sv_u.svu_rv))->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((((sv)->sv_u.svu_rv))->sv_u.svu_pv ) : Perl_sv_2pv_flags( ((sv)->sv_u.svu_rv),0,2)); |
2316 | else |
2317 | croakPerl_croak("%s: %s is not of type %s", |
2318 | GvNAME(CvGV(cv))((((XPVGV*)(Perl_CvGV( (CV *)(cv)))->sv_any)->xiv_u.xivu_namehek ))->hek_key, |
2319 | "termios_ref", "POSIX::Termios"); |
2320 | } |
2321 | ; |
2322 | #line 1936 "POSIX.xs" |
2323 | RETVAL = ix ? cfgetospeed(termios_ref) : cfgetispeed(termios_ref); |
2324 | #line 2325 "POSIX.c" |
2325 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHi((IV)RETVAL)do { do { IV TARGi_iv = (IV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000)|0x80000000)) == SVt_IV) & (1 ? !(((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool) 0),(0))) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0) ,(1))) { ((void)0); (targ)->sv_flags |= (0x00000100|0x00001000 ); targ->sv_u.svu_iv = TARGi_iv; } else Perl_sv_setiv_mg( targ ,TARGi_iv); } while (0); (*++sp = (targ)); } while (0); |
2326 | } |
2327 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
2328 | } |
2329 | |
2330 | |
2331 | XS_EUPXS(XS_POSIX__Termios_getiflag)static void XS_POSIX__Termios_getiflag( CV* cv __attribute__( (unused))); /* prototype to pass -Wmissing-prototypes */ |
2332 | XS_EUPXS(XS_POSIX__Termios_getiflag)static void XS_POSIX__Termios_getiflag( CV* cv __attribute__( (unused))) |
2333 | { |
2334 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
2335 | dXSI32I32 ix = ((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))-> xcv_start_u.xcv_xsubany.any_i32; |
2336 | if (items != 1) |
2337 | croak_xs_usagePerl_croak_xs_usage(cv, "termios_ref"); |
2338 | { |
2339 | POSIX__Termios termios_ref; |
2340 | tcflag_t RETVAL; |
2341 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
2342 | |
2343 | { |
2344 | SV * sv = ST(0)PL_stack_base[ax + (0)]; |
2345 | if (SvROK(sv)((sv)->sv_flags & 0x00000800) && sv_derived_from(sv, "POSIX::Termios")Perl_sv_derived_from( sv,"POSIX::Termios")) |
2346 | termios_ref = (POSIX__Termios)SvPV_nolen(SvRV(sv))((((((sv)->sv_u.svu_rv))->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((((sv)->sv_u.svu_rv))->sv_u.svu_pv ) : Perl_sv_2pv_flags( ((sv)->sv_u.svu_rv),0,2)); |
2347 | else |
2348 | croakPerl_croak("%s: %s is not of type %s", |
2349 | GvNAME(CvGV(cv))((((XPVGV*)(Perl_CvGV( (CV *)(cv)))->sv_any)->xiv_u.xivu_namehek ))->hek_key, |
2350 | "termios_ref", "POSIX::Termios"); |
2351 | } |
2352 | ; |
2353 | #line 1948 "POSIX.xs" |
2354 | #ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */ |
2355 | switch(ix) { |
2356 | case 0: |
2357 | RETVAL = termios_ref->c_iflag; |
2358 | break; |
2359 | case 1: |
2360 | RETVAL = termios_ref->c_oflag; |
2361 | break; |
2362 | case 2: |
2363 | RETVAL = termios_ref->c_cflag; |
2364 | break; |
2365 | case 3: |
2366 | RETVAL = termios_ref->c_lflag; |
2367 | break; |
2368 | default: |
2369 | RETVAL = 0; /* silence compiler warning */ |
2370 | } |
2371 | #else |
2372 | not_here(GvNAME(CvGV(cv))((((XPVGV*)(Perl_CvGV( (CV *)(cv)))->sv_any)->xiv_u.xivu_namehek ))->hek_key); |
2373 | RETVAL = 0; |
2374 | #endif |
2375 | #line 2376 "POSIX.c" |
2376 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHi((IV)RETVAL)do { do { IV TARGi_iv = (IV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000)|0x80000000)) == SVt_IV) & (1 ? !(((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool) 0),(0))) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0) ,(1))) { ((void)0); (targ)->sv_flags |= (0x00000100|0x00001000 ); targ->sv_u.svu_iv = TARGi_iv; } else Perl_sv_setiv_mg( targ ,TARGi_iv); } while (0); (*++sp = (targ)); } while (0); |
2377 | } |
2378 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
2379 | } |
2380 | |
2381 | |
2382 | XS_EUPXS(XS_POSIX__Termios_getcc)static void XS_POSIX__Termios_getcc( CV* cv __attribute__((unused ))); /* prototype to pass -Wmissing-prototypes */ |
2383 | XS_EUPXS(XS_POSIX__Termios_getcc)static void XS_POSIX__Termios_getcc( CV* cv __attribute__((unused ))) |
2384 | { |
2385 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
2386 | if (items != 2) |
2387 | croak_xs_usagePerl_croak_xs_usage(cv, "termios_ref, ccix"); |
2388 | { |
2389 | POSIX__Termios termios_ref; |
2390 | unsigned int ccix = (unsigned int)SvUV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x80000000 |0x00200000)) == (0x00000100|0x80000000)) ? ((XPVUV*) (PL_stack_base [ax + (1)])->sv_any)->xuv_u.xivu_uv : Perl_sv_2uv_flags ( PL_stack_base[ax + (1)],2)) |
2391 | ; |
2392 | cc_t RETVAL; |
2393 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
2394 | |
2395 | { |
2396 | SV * sv = ST(0)PL_stack_base[ax + (0)]; |
2397 | if (SvROK(sv)((sv)->sv_flags & 0x00000800) && sv_derived_from(sv, "POSIX::Termios")Perl_sv_derived_from( sv,"POSIX::Termios")) |
2398 | termios_ref = (POSIX__Termios)SvPV_nolen(SvRV(sv))((((((sv)->sv_u.svu_rv))->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((((sv)->sv_u.svu_rv))->sv_u.svu_pv ) : Perl_sv_2pv_flags( ((sv)->sv_u.svu_rv),0,2)); |
2399 | else |
2400 | croakPerl_croak("%s: %s is not of type %s", |
2401 | "POSIX::Termios::getcc", |
2402 | "termios_ref", "POSIX::Termios"); |
2403 | } |
2404 | ; |
2405 | #line 1977 "POSIX.xs" |
2406 | #ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */ |
2407 | if (ccix >= NCCS20) |
2408 | croakPerl_croak("Bad getcc subscript"); |
2409 | RETVAL = termios_ref->c_cc[ccix]; |
2410 | #else |
2411 | not_here("getcc"); |
2412 | RETVAL = 0; |
2413 | #endif |
2414 | #line 2415 "POSIX.c" |
2415 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHi((IV)RETVAL)do { do { IV TARGi_iv = (IV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000)|0x80000000)) == SVt_IV) & (1 ? !(((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool) 0),(0))) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0) ,(1))) { ((void)0); (targ)->sv_flags |= (0x00000100|0x00001000 ); targ->sv_u.svu_iv = TARGi_iv; } else Perl_sv_setiv_mg( targ ,TARGi_iv); } while (0); (*++sp = (targ)); } while (0); |
2416 | } |
2417 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
2418 | } |
2419 | |
2420 | |
2421 | XS_EUPXS(XS_POSIX__Termios_setispeed)static void XS_POSIX__Termios_setispeed( CV* cv __attribute__ ((unused))); /* prototype to pass -Wmissing-prototypes */ |
2422 | XS_EUPXS(XS_POSIX__Termios_setispeed)static void XS_POSIX__Termios_setispeed( CV* cv __attribute__ ((unused))) |
2423 | { |
2424 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
2425 | dXSI32I32 ix = ((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))-> xcv_start_u.xcv_xsubany.any_i32; |
2426 | if (items != 2) |
2427 | croak_xs_usagePerl_croak_xs_usage(cv, "termios_ref, speed"); |
2428 | { |
2429 | POSIX__Termios termios_ref; |
2430 | speed_t speed = (speed_t)SvIV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (1)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 1)],2)) |
2431 | ; |
2432 | SysRet RETVAL; |
2433 | |
2434 | { |
2435 | SV * sv = ST(0)PL_stack_base[ax + (0)]; |
2436 | if (SvROK(sv)((sv)->sv_flags & 0x00000800) && sv_derived_from(sv, "POSIX::Termios")Perl_sv_derived_from( sv,"POSIX::Termios")) |
2437 | termios_ref = (POSIX__Termios)SvPV_nolen(SvRV(sv))((((((sv)->sv_u.svu_rv))->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((((sv)->sv_u.svu_rv))->sv_u.svu_pv ) : Perl_sv_2pv_flags( ((sv)->sv_u.svu_rv),0,2)); |
2438 | else |
2439 | croakPerl_croak("%s: %s is not of type %s", |
2440 | GvNAME(CvGV(cv))((((XPVGV*)(Perl_CvGV( (CV *)(cv)))->sv_any)->xiv_u.xivu_namehek ))->hek_key, |
2441 | "termios_ref", "POSIX::Termios"); |
2442 | } |
2443 | ; |
2444 | #line 1995 "POSIX.xs" |
2445 | RETVAL = ix |
2446 | ? cfsetospeed(termios_ref, speed) : cfsetispeed(termios_ref, speed); |
2447 | #line 2448 "POSIX.c" |
2448 | { |
2449 | SV * RETVALSV; |
2450 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
2451 | if (RETVAL != -1) { |
2452 | if (RETVAL == 0) |
2453 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
2454 | else |
2455 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
2456 | } |
2457 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
2458 | } |
2459 | } |
2460 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
2461 | } |
2462 | |
2463 | |
2464 | XS_EUPXS(XS_POSIX__Termios_setiflag)static void XS_POSIX__Termios_setiflag( CV* cv __attribute__( (unused))); /* prototype to pass -Wmissing-prototypes */ |
2465 | XS_EUPXS(XS_POSIX__Termios_setiflag)static void XS_POSIX__Termios_setiflag( CV* cv __attribute__( (unused))) |
2466 | { |
2467 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
2468 | dXSI32I32 ix = ((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))-> xcv_start_u.xcv_xsubany.any_i32; |
2469 | if (items != 2) |
2470 | croak_xs_usagePerl_croak_xs_usage(cv, "termios_ref, flag"); |
2471 | { |
2472 | POSIX__Termios termios_ref; |
2473 | tcflag_t flag = (tcflag_t)SvIV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (1)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 1)],2)) |
2474 | ; |
2475 | |
2476 | { |
2477 | SV * sv = ST(0)PL_stack_base[ax + (0)]; |
2478 | if (SvROK(sv)((sv)->sv_flags & 0x00000800) && sv_derived_from(sv, "POSIX::Termios")Perl_sv_derived_from( sv,"POSIX::Termios")) |
2479 | termios_ref = (POSIX__Termios)SvPV_nolen(SvRV(sv))((((((sv)->sv_u.svu_rv))->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((((sv)->sv_u.svu_rv))->sv_u.svu_pv ) : Perl_sv_2pv_flags( ((sv)->sv_u.svu_rv),0,2)); |
2480 | else |
2481 | croakPerl_croak("%s: %s is not of type %s", |
2482 | GvNAME(CvGV(cv))((((XPVGV*)(Perl_CvGV( (CV *)(cv)))->sv_any)->xiv_u.xivu_namehek ))->hek_key, |
2483 | "termios_ref", "POSIX::Termios"); |
2484 | } |
2485 | ; |
2486 | #line 2009 "POSIX.xs" |
2487 | #ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */ |
2488 | switch(ix) { |
2489 | case 0: |
2490 | termios_ref->c_iflag = flag; |
2491 | break; |
2492 | case 1: |
2493 | termios_ref->c_oflag = flag; |
2494 | break; |
2495 | case 2: |
2496 | termios_ref->c_cflag = flag; |
2497 | break; |
2498 | case 3: |
2499 | termios_ref->c_lflag = flag; |
2500 | break; |
2501 | } |
2502 | #else |
2503 | not_here(GvNAME(CvGV(cv))((((XPVGV*)(Perl_CvGV( (CV *)(cv)))->sv_any)->xiv_u.xivu_namehek ))->hek_key); |
2504 | #endif |
2505 | #line 2506 "POSIX.c" |
2506 | } |
2507 | XSRETURN_EMPTYdo { do { const IV tmpXSoff = (0); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
2508 | } |
2509 | |
2510 | |
2511 | XS_EUPXS(XS_POSIX__Termios_setcc)static void XS_POSIX__Termios_setcc( CV* cv __attribute__((unused ))); /* prototype to pass -Wmissing-prototypes */ |
2512 | XS_EUPXS(XS_POSIX__Termios_setcc)static void XS_POSIX__Termios_setcc( CV* cv __attribute__((unused ))) |
2513 | { |
2514 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
2515 | if (items != 3) |
2516 | croak_xs_usagePerl_croak_xs_usage(cv, "termios_ref, ccix, cc"); |
2517 | { |
2518 | POSIX__Termios termios_ref; |
2519 | unsigned int ccix = (unsigned int)SvUV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x80000000 |0x00200000)) == (0x00000100|0x80000000)) ? ((XPVUV*) (PL_stack_base [ax + (1)])->sv_any)->xuv_u.xivu_uv : Perl_sv_2uv_flags ( PL_stack_base[ax + (1)],2)) |
2520 | ; |
2521 | cc_t cc = (cc_t)SvIV(ST(2))((((PL_stack_base[ax + (2)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (2)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 2)],2)) |
2522 | ; |
2523 | |
2524 | { |
2525 | SV * sv = ST(0)PL_stack_base[ax + (0)]; |
2526 | if (SvROK(sv)((sv)->sv_flags & 0x00000800) && sv_derived_from(sv, "POSIX::Termios")Perl_sv_derived_from( sv,"POSIX::Termios")) |
2527 | termios_ref = (POSIX__Termios)SvPV_nolen(SvRV(sv))((((((sv)->sv_u.svu_rv))->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((((sv)->sv_u.svu_rv))->sv_u.svu_pv ) : Perl_sv_2pv_flags( ((sv)->sv_u.svu_rv),0,2)); |
2528 | else |
2529 | croakPerl_croak("%s: %s is not of type %s", |
2530 | "POSIX::Termios::setcc", |
2531 | "termios_ref", "POSIX::Termios"); |
2532 | } |
2533 | ; |
2534 | #line 2034 "POSIX.xs" |
2535 | #ifdef I_TERMIOS /* References a termios structure member so ifdef it out. */ |
2536 | if (ccix >= NCCS20) |
2537 | croakPerl_croak("Bad setcc subscript"); |
2538 | termios_ref->c_cc[ccix] = cc; |
2539 | #else |
2540 | not_here("setcc"); |
2541 | #endif |
2542 | #line 2543 "POSIX.c" |
2543 | } |
2544 | XSRETURN_EMPTYdo { do { const IV tmpXSoff = (0); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
2545 | } |
2546 | |
2547 | |
2548 | /* INCLUDE: Including 'const-xs.inc' from 'POSIX.xs' */ |
2549 | |
2550 | |
2551 | XS_EUPXS(XS_POSIX_constant)static void XS_POSIX_constant( CV* cv __attribute__((unused)) ); /* prototype to pass -Wmissing-prototypes */ |
2552 | XS_EUPXS(XS_POSIX_constant)static void XS_POSIX_constant( CV* cv __attribute__((unused)) ) |
2553 | { |
2554 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
2555 | if (items != 1) |
2556 | croak_xs_usagePerl_croak_xs_usage(cv, "sv"); |
2557 | PERL_UNUSED_VAR(ax)((void)sizeof(ax)); /* -Wall */ |
2558 | SPsp -= items; |
2559 | { |
2560 | SV * sv = ST(0)PL_stack_base[ax + (0)] |
2561 | ; |
2562 | #line 1572 "./const-xs.inc" |
2563 | const PERL_CONTEXT *cx = caller_cx(0, NULL)Perl_caller_cx( 0,((void*)0)); |
2564 | /* cx is NULL if we've been called from the top level. PL_curcop isn't |
2565 | ideal, but it's much cheaper than other ways of not going SEGV. */ |
2566 | const COP *cop = cx ? cx->blk_oldcopcx_u.cx_blk.blku_oldcop : PL_curcop; |
2567 | #line 2568 "POSIX.c" |
2568 | #line 1577 "./const-xs.inc" |
2569 | #ifndef SYMBIAN |
2570 | /* It's not obvious how to calculate this at C pre-processor time. |
2571 | However, any compiler optimiser worth its salt should be able to |
2572 | remove the dead code, and hopefully the now-obviously-unused static |
2573 | function too. */ |
2574 | HV *constant_missing = (C_ARRAY_LENGTH(values_for_notfound)(sizeof(values_for_notfound)/sizeof((values_for_notfound)[0]) ) > 1) |
2575 | ? get_missing_hash(aTHX) : NULL((void*)0); |
2576 | if ((C_ARRAY_LENGTH(values_for_notfound)(sizeof(values_for_notfound)/sizeof((values_for_notfound)[0]) ) > 1) |
2577 | ? hv_exists_ent(constant_missing, sv, 0)((Perl_hv_common( (constant_missing),(sv),((void*)0),0,0,0x08 ,0,(0))) ? (_Bool)1 : (_Bool)0) : 0) { |
2578 | sv = newSVpvfPerl_newSVpvf("Your vendor has not defined POSIX macro %" SVf"-p" |
2579 | ", used at %" COP_FILE_F"-p" " line %" UVuf"lu" "\n", |
2580 | sv, COP_FILE(cop)(((cop)->cop_filegv) ? ((0+(((cop)->cop_filegv))->sv_u .svu_gp)->gp_sv) : ((void*)0)), (UV)CopLINE(cop)((cop)->cop_line)); |
2581 | } else |
2582 | #endif |
2583 | { |
2584 | sv = newSVpvfPerl_newSVpvf("%" SVf"-p" |
2585 | " is not a valid POSIX macro at %" |
2586 | COP_FILE_F"-p" " line %" UVuf"lu" "\n", |
2587 | sv, COP_FILE(cop)(((cop)->cop_filegv) ? ((0+(((cop)->cop_filegv))->sv_u .svu_gp)->gp_sv) : ((void*)0)), (UV)CopLINE(cop)((cop)->cop_line)); |
2588 | } |
2589 | croak_sv(sv_2mortal(sv))Perl_croak_sv( Perl_sv_2mortal( sv)); |
2590 | #line 2591 "POSIX.c" |
2591 | PUTBACKPL_stack_sp = sp; |
2592 | return; |
2593 | } |
2594 | } |
2595 | |
2596 | |
2597 | /* INCLUDE: Returning to 'POSIX.xs' from 'const-xs.inc' */ |
2598 | |
2599 | |
2600 | XS_EUPXS(XS_POSIX_WEXITSTATUS)static void XS_POSIX_WEXITSTATUS( CV* cv __attribute__((unused ))); /* prototype to pass -Wmissing-prototypes */ |
2601 | XS_EUPXS(XS_POSIX_WEXITSTATUS)static void XS_POSIX_WEXITSTATUS( CV* cv __attribute__((unused ))) |
2602 | { |
2603 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
2604 | dXSI32I32 ix = ((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))-> xcv_start_u.xcv_xsubany.any_i32; |
2605 | if (items != 1) |
2606 | croak_xs_usagePerl_croak_xs_usage(cv, "status"); |
2607 | { |
2608 | int status = (int)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2)) |
2609 | ; |
2610 | int RETVAL; |
2611 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
2612 | #line 2057 "POSIX.xs" |
2613 | #if !defined(WEXITSTATUS) || !defined(WIFEXITED) || !defined(WIFSIGNALED) \ |
2614 | || !defined(WIFSTOPPED) || !defined(WSTOPSIG) || !defined(WTERMSIG) |
2615 | RETVAL = 0; /* Silence compilers that notice this, but don't realise |
2616 | that not_here() can't return. */ |
2617 | #endif |
2618 | switch(ix) { |
2619 | case 0: |
2620 | #ifdef WEXITSTATUS |
2621 | RETVAL = WEXITSTATUS(WMUNGE(status))(int)(((unsigned)((status)) >> 8) & 0xff); |
2622 | #else |
2623 | not_here("WEXITSTATUS"); |
2624 | #endif |
2625 | break; |
2626 | case 1: |
2627 | #ifdef WIFEXITED |
2628 | RETVAL = WIFEXITED(WMUNGE(status))((((status)) & 0177) == 0); |
2629 | #else |
2630 | not_here("WIFEXITED"); |
2631 | #endif |
2632 | break; |
2633 | case 2: |
2634 | #ifdef WIFSIGNALED |
2635 | RETVAL = WIFSIGNALED(WMUNGE(status))((((status)) & 0177) != 0177 && (((status)) & 0177) != 0); |
2636 | #else |
2637 | not_here("WIFSIGNALED"); |
2638 | #endif |
2639 | break; |
2640 | case 3: |
2641 | #ifdef WIFSTOPPED |
2642 | RETVAL = WIFSTOPPED(WMUNGE(status))((((status)) & 0xff) == 0177); |
2643 | #else |
2644 | not_here("WIFSTOPPED"); |
2645 | #endif |
2646 | break; |
2647 | case 4: |
2648 | #ifdef WSTOPSIG |
2649 | RETVAL = WSTOPSIG(WMUNGE(status))(int)(((unsigned)((status)) >> 8) & 0xff); |
2650 | #else |
2651 | not_here("WSTOPSIG"); |
2652 | #endif |
2653 | break; |
2654 | case 5: |
2655 | #ifdef WTERMSIG |
2656 | RETVAL = WTERMSIG(WMUNGE(status))((((status)) & 0177)); |
2657 | #else |
2658 | not_here("WTERMSIG"); |
2659 | #endif |
2660 | break; |
2661 | default: |
2662 | croakPerl_croak("Illegal alias %d for POSIX::W*", (int)ix); |
2663 | } |
2664 | #line 2665 "POSIX.c" |
2665 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHi((IV)RETVAL)do { do { IV TARGi_iv = (IV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000)|0x80000000)) == SVt_IV) & (1 ? !(((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool) 0),(0))) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0) ,(1))) { ((void)0); (targ)->sv_flags |= (0x00000100|0x00001000 ); targ->sv_u.svu_iv = TARGi_iv; } else Perl_sv_setiv_mg( targ ,TARGi_iv); } while (0); (*++sp = (targ)); } while (0); |
2666 | } |
2667 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
2668 | } |
2669 | |
2670 | |
2671 | XS_EUPXS(XS_POSIX_open)static void XS_POSIX_open( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
2672 | XS_EUPXS(XS_POSIX_open)static void XS_POSIX_open( CV* cv __attribute__((unused))) |
2673 | { |
2674 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
2675 | if (items < 1 || items > 3) |
2676 | croak_xs_usagePerl_croak_xs_usage(cv, "filename, flags = O_RDONLY, mode = 0666"); |
2677 | { |
2678 | char * filename = (char *)SvPV_nolen(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((PL_stack_base[ax + (0)])->sv_u.svu_pv ) : Perl_sv_2pv_flags( PL_stack_base[ax + (0)],0,2)) |
2679 | ; |
2680 | int flags; |
2681 | Mode_tmode_t mode; |
2682 | SysRet RETVAL; |
2683 | |
2684 | if (items < 2) |
2685 | flags = O_RDONLY0x0000; |
2686 | else { |
2687 | flags = (int)SvIV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (1)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 1)],2)) |
2688 | ; |
2689 | } |
2690 | |
2691 | if (items < 3) |
2692 | mode = 0666; |
2693 | else { |
2694 | mode = (Mode_tmode_t)SvNV(ST(2))((((PL_stack_base[ax + (2)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (2)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (2 )],2)) |
2695 | ; |
2696 | } |
2697 | #line 2117 "POSIX.xs" |
2698 | if (flags & (O_APPEND0x0008|O_CREAT0x0200|O_TRUNC0x0400|O_RDWR0x0002|O_WRONLY0x0001|O_EXCL0x0800)) |
2699 | TAINT_PROPER("open")if (__builtin_expect(((PL_tainting) ? (_Bool)1 : (_Bool)0),(0 ))) { Perl_taint_proper( ((void*)0),"open"); }; |
2700 | RETVAL = open(filename, flags, mode); |
2701 | #line 2702 "POSIX.c" |
2702 | { |
2703 | SV * RETVALSV; |
2704 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
2705 | if (RETVAL != -1) { |
2706 | if (RETVAL == 0) |
2707 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
2708 | else |
2709 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
2710 | } |
2711 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
2712 | } |
2713 | } |
2714 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
2715 | } |
2716 | |
2717 | |
2718 | XS_EUPXS(XS_POSIX_localeconv)static void XS_POSIX_localeconv( CV* cv __attribute__((unused ))); /* prototype to pass -Wmissing-prototypes */ |
2719 | XS_EUPXS(XS_POSIX_localeconv)static void XS_POSIX_localeconv( CV* cv __attribute__((unused ))) |
2720 | { |
2721 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
2722 | if (items != 0) |
2723 | croak_xs_usagePerl_croak_xs_usage(cv, ""); |
2724 | { |
2725 | HV * RETVAL; |
2726 | #line 2127 "POSIX.xs" |
2727 | #ifndef HAS_LOCALECONV |
2728 | localeconv(); /* A stub to call not_here(). */ |
2729 | #else |
2730 | struct lconv *lcbuf; |
2731 | # if defined(USE_ITHREADS) \ |
2732 | && defined(HAS_POSIX_2008_LOCALE) \ |
2733 | && defined(HAS_LOCALECONV_L) /* Prefer this thread-safe version */ |
2734 | bool_Bool do_free = FALSE(0); |
2735 | locale_t cur = NULL((void*)0); |
2736 | # elif defined(TS_W32_BROKEN_LOCALECONV) |
2737 | const char * save_global; |
2738 | const char * save_thread; |
2739 | # endif |
2740 | DECLARATION_FOR_LC_NUMERIC_MANIPULATIONstruct Perl___notused_struct; |
2741 | |
2742 | /* localeconv() deals with both LC_NUMERIC and LC_MONETARY, but |
2743 | * LC_MONETARY is already in the correct locale */ |
2744 | # ifdef USE_LOCALE_MONETARY |
2745 | |
2746 | const bool_Bool is_monetary_utf8 = _is_cur_LC_category_utf8(LC_MONETARY)Perl__is_cur_LC_category_utf8( 3); |
2747 | # endif |
2748 | # ifdef USE_LOCALE_NUMERIC |
2749 | |
2750 | bool_Bool is_numeric_utf8; |
2751 | |
2752 | STORE_LC_NUMERIC_FORCE_TO_UNDERLYING(); |
2753 | |
2754 | is_numeric_utf8 = _is_cur_LC_category_utf8(LC_NUMERIC)Perl__is_cur_LC_category_utf8( 4); |
2755 | # endif |
2756 | |
2757 | RETVAL = newHV()((HV *)({ void *_p = (Perl_newSV_type( SVt_PVHV)); _p; })); |
2758 | sv_2mortal((SV*)RETVAL)Perl_sv_2mortal( (SV*)RETVAL); |
2759 | # if defined(USE_ITHREADS) \ |
2760 | && defined(HAS_POSIX_2008_LOCALE) \ |
2761 | && defined(HAS_LOCALECONV_L) \ |
2762 | && defined(HAS_DUPLOCALE) |
2763 | |
2764 | cur = uselocale((locale_t) 0); |
2765 | if (cur == LC_GLOBAL_LOCALE((locale_t)-1)) { |
2766 | cur = duplocale(LC_GLOBAL_LOCALE((locale_t)-1)); |
2767 | do_free = TRUE(1); |
2768 | } |
2769 | |
2770 | lcbuf = localeconv_l(cur); |
2771 | # else |
2772 | LOCALE_LOCK_V; /* Prevent interference with other threads using |
2773 | localeconv() */ |
2774 | # ifdef TS_W32_BROKEN_LOCALECONV |
2775 | /* This is a workaround for a Windows bug prior to VS 15, in which |
2776 | * localeconv only looks at the global locale. We toggle to the global |
2777 | * locale; populate the return; then toggle back. We have to use |
2778 | * LC_ALL instead of the individual ones because of another bug in |
2779 | * Windows */ |
2780 | |
2781 | save_thread = savepv(Perl_setlocale(LC_NUMERIC, NULL))Perl_savepv( Perl_setlocale(4, ((void*)0))); |
2782 | |
2783 | _configthreadlocale(_DISABLE_PER_THREAD_LOCALE); |
2784 | |
2785 | save_global = savepv(Perl_setlocale(LC_ALL, NULL))Perl_savepv( Perl_setlocale(0, ((void*)0))); |
2786 | |
2787 | Perl_setlocale(LC_ALL0, save_thread); |
2788 | # endif |
2789 | lcbuf = localeconv(); |
2790 | # endif |
2791 | if (lcbuf) { |
2792 | const struct lconv_offset *strings = lconv_strings; |
2793 | const struct lconv_offset *integers = lconv_integers; |
2794 | const char *ptr = (const char *) lcbuf; |
2795 | |
2796 | while (strings->name) { |
2797 | /* This string may be controlled by either LC_NUMERIC, or |
2798 | * LC_MONETARY */ |
2799 | const bool_Bool is_utf8_locale = |
2800 | # if defined(USE_LOCALE_NUMERIC) && defined(USE_LOCALE_MONETARY) |
2801 | (isLC_NUMERIC_STRING(strings->name)(0)) |
2802 | ? is_numeric_utf8 |
2803 | : is_monetary_utf8; |
2804 | # elif defined(USE_LOCALE_NUMERIC) |
2805 | is_numeric_utf8; |
2806 | # elif defined(USE_LOCALE_MONETARY) |
2807 | is_monetary_utf8; |
2808 | # else |
2809 | FALSE(0); |
2810 | # endif |
2811 | |
2812 | const char *value = *((const char **)(ptr + strings->offset)); |
2813 | |
2814 | if (value && *value) { |
2815 | const STRLEN value_len = strlen(value); |
2816 | |
2817 | /* We mark it as UTF-8 if a utf8 locale and is valid and |
2818 | * variant under UTF-8 */ |
2819 | const bool_Bool is_utf8 = is_utf8_locale |
2820 | && is_utf8_non_invariant_stringPerl_is_utf8_non_invariant_string( |
2821 | (U8*) value, |
2822 | value_len); |
2823 | (void) hv_store(RETVAL,((SV**) Perl_hv_common_key_len( (RETVAL),(strings->name),( strlen(strings->name)),(0x04|0x20),(Perl_newSVpvn_flags( ( value),(value_len),(is_utf8) ? 0x20000000 : 0)),(0))) |
2824 | strings->name,((SV**) Perl_hv_common_key_len( (RETVAL),(strings->name),( strlen(strings->name)),(0x04|0x20),(Perl_newSVpvn_flags( ( value),(value_len),(is_utf8) ? 0x20000000 : 0)),(0))) |
2825 | strlen(strings->name),((SV**) Perl_hv_common_key_len( (RETVAL),(strings->name),( strlen(strings->name)),(0x04|0x20),(Perl_newSVpvn_flags( ( value),(value_len),(is_utf8) ? 0x20000000 : 0)),(0))) |
2826 | newSVpvn_utf8(value, value_len, is_utf8),((SV**) Perl_hv_common_key_len( (RETVAL),(strings->name),( strlen(strings->name)),(0x04|0x20),(Perl_newSVpvn_flags( ( value),(value_len),(is_utf8) ? 0x20000000 : 0)),(0))) |
2827 | 0)((SV**) Perl_hv_common_key_len( (RETVAL),(strings->name),( strlen(strings->name)),(0x04|0x20),(Perl_newSVpvn_flags( ( value),(value_len),(is_utf8) ? 0x20000000 : 0)),(0))); |
2828 | } |
2829 | strings++; |
2830 | } |
2831 | |
2832 | while (integers->name) { |
2833 | const char value = *((const char *)(ptr + integers->offset)); |
2834 | |
2835 | if (value != CHAR_MAX127) |
2836 | (void) hv_store(RETVAL, integers->name,((SV**) Perl_hv_common_key_len( (RETVAL),(integers->name), (strlen(integers->name)),(0x04|0x20),(Perl_newSViv( value) ),(0))) |
2837 | strlen(integers->name), newSViv(value), 0)((SV**) Perl_hv_common_key_len( (RETVAL),(integers->name), (strlen(integers->name)),(0x04|0x20),(Perl_newSViv( value) ),(0))); |
2838 | integers++; |
2839 | } |
2840 | } |
2841 | # if defined(USE_ITHREADS) \ |
2842 | && defined(HAS_POSIX_2008_LOCALE) \ |
2843 | && defined(HAS_LOCALECONV_L) |
2844 | if (do_free) { |
2845 | freelocale(cur); |
2846 | } |
2847 | # else |
2848 | # ifdef TS_W32_BROKEN_LOCALECONV |
2849 | Perl_setlocale(LC_ALL0, save_global); |
2850 | |
2851 | _configthreadlocale(_ENABLE_PER_THREAD_LOCALE); |
2852 | |
2853 | Perl_setlocale(LC_ALL0, save_thread); |
2854 | |
2855 | Safefree(save_global)Perl_safesysfree(((void *)(save_global))); |
2856 | Safefree(save_thread)Perl_safesysfree(((void *)(save_thread))); |
2857 | # endif |
2858 | LOCALE_UNLOCK_V; |
2859 | # endif |
2860 | RESTORE_LC_NUMERIC(); |
2861 | #endif /* HAS_LOCALECONV */ |
2862 | #line 2863 "POSIX.c" |
2863 | { |
2864 | SV * RETVALSV; |
2865 | RETVALSV = newRV((SV*)RETVAL)Perl_newRV( (SV*)RETVAL); |
2866 | RETVALSV = sv_2mortal(RETVALSV)Perl_sv_2mortal( RETVALSV); |
2867 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
2868 | } |
2869 | } |
2870 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
2871 | } |
2872 | |
2873 | |
2874 | XS_EUPXS(XS_POSIX_setlocale)static void XS_POSIX_setlocale( CV* cv __attribute__((unused) )); /* prototype to pass -Wmissing-prototypes */ |
2875 | XS_EUPXS(XS_POSIX_setlocale)static void XS_POSIX_setlocale( CV* cv __attribute__((unused) )) |
2876 | { |
2877 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
2878 | if (items < 1 || items > 2) |
2879 | croak_xs_usagePerl_croak_xs_usage(cv, "category, locale = 0"); |
2880 | { |
2881 | int category = (int)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2)) |
2882 | ; |
2883 | const char * locale; |
2884 | #line 2270 "POSIX.xs" |
2885 | char * retval; |
2886 | #line 2887 "POSIX.c" |
2887 | char * RETVAL; |
2888 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
2889 | |
2890 | if (items < 2) |
2891 | locale = 0; |
2892 | else { |
2893 | locale = (const char *)SvPV_nolen(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((PL_stack_base[ax + (1)])->sv_u.svu_pv ) : Perl_sv_2pv_flags( PL_stack_base[ax + (1)],0,2)) |
2894 | ; |
2895 | } |
2896 | #line 2272 "POSIX.xs" |
2897 | retval = (char *) Perl_setlocale(category, locale); |
2898 | if (! retval) { |
2899 | XSRETURN_UNDEFdo { (PL_stack_base[ax + (0)] = &(PL_sv_immortals[1])); do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
2900 | } |
2901 | |
2902 | RETVAL = retval; |
2903 | #line 2904 "POSIX.c" |
2904 | sv_setpv(TARG, RETVAL)Perl_sv_setpv( targ,RETVAL); XSprePUSH(sp = PL_stack_base + ax - 1); PUSHTARGdo { do { if (__builtin_expect(((((targ)->sv_flags & 0x00400000 )) ? (_Bool)1 : (_Bool)0),(0))) Perl_mg_set( targ); } while ( 0); (*++sp = (targ)); } while (0); |
2905 | } |
2906 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
2907 | } |
2908 | |
2909 | |
2910 | XS_EUPXS(XS_POSIX_acos)static void XS_POSIX_acos( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
2911 | XS_EUPXS(XS_POSIX_acos)static void XS_POSIX_acos( CV* cv __attribute__((unused))) |
2912 | { |
2913 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
2914 | dXSI32I32 ix = ((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))-> xcv_start_u.xcv_xsubany.any_i32; |
2915 | if (items != 1) |
2916 | croak_xs_usagePerl_croak_xs_usage(cv, "x"); |
2917 | { |
2918 | NV x = (NV)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
2919 | ; |
2920 | NV RETVAL; |
2921 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
2922 | #line 2316 "POSIX.xs" |
2923 | PERL_UNUSED_VAR(x)((void)sizeof(x)); |
2924 | #ifdef NV_NANPL_nan.nv |
2925 | RETVAL = NV_NANPL_nan.nv; |
2926 | #else |
2927 | RETVAL = 0; |
2928 | #endif |
2929 | switch (ix) { |
2930 | case 0: |
2931 | RETVAL = Perl_acosacos(x); /* C89 math */ |
2932 | break; |
2933 | case 1: |
2934 | #ifdef c99_acoshacosh |
2935 | RETVAL = c99_acoshacosh(x); |
2936 | #else |
2937 | not_here("acosh"); |
2938 | #endif |
2939 | break; |
2940 | case 2: |
2941 | RETVAL = Perl_asinasin(x); /* C89 math */ |
2942 | break; |
2943 | case 3: |
2944 | #ifdef c99_asinhasinh |
2945 | RETVAL = c99_asinhasinh(x); |
2946 | #else |
2947 | not_here("asinh"); |
2948 | #endif |
2949 | break; |
2950 | case 4: |
2951 | RETVAL = Perl_atanatan(x); /* C89 math */ |
2952 | break; |
2953 | case 5: |
2954 | #ifdef c99_atanhatanh |
2955 | RETVAL = c99_atanhatanh(x); |
2956 | #else |
2957 | not_here("atanh"); |
2958 | #endif |
2959 | break; |
2960 | case 6: |
2961 | #ifdef c99_cbrtcbrt |
2962 | RETVAL = c99_cbrtcbrt(x); |
2963 | #else |
2964 | not_here("cbrt"); |
2965 | #endif |
2966 | break; |
2967 | case 7: |
2968 | RETVAL = Perl_ceilceil(x); /* C89 math */ |
2969 | break; |
2970 | case 8: |
2971 | RETVAL = Perl_coshcosh(x); /* C89 math */ |
2972 | break; |
2973 | case 9: |
2974 | #ifdef c99_erferf |
2975 | RETVAL = c99_erferf(x); |
2976 | #else |
2977 | not_here("erf"); |
2978 | #endif |
2979 | break; |
2980 | case 10: |
2981 | #ifdef c99_erfcerfc |
2982 | RETVAL = c99_erfcerfc(x); |
2983 | #else |
2984 | not_here("erfc"); |
2985 | #endif |
2986 | break; |
2987 | case 11: |
2988 | #ifdef c99_exp2exp2 |
2989 | RETVAL = c99_exp2exp2(x); |
2990 | #else |
2991 | not_here("exp2"); |
2992 | #endif |
2993 | break; |
2994 | case 12: |
2995 | #ifdef c99_expm1expm1 |
2996 | RETVAL = c99_expm1expm1(x); |
2997 | #else |
2998 | not_here("expm1"); |
2999 | #endif |
3000 | break; |
3001 | case 13: |
3002 | RETVAL = Perl_floorfloor(x); /* C89 math */ |
3003 | break; |
3004 | case 14: |
3005 | #ifdef bessel_j0j0 |
3006 | RETVAL = bessel_j0j0(x); |
3007 | #else |
3008 | not_here("j0"); |
3009 | #endif |
3010 | break; |
3011 | case 15: |
3012 | #ifdef bessel_j1j1 |
3013 | RETVAL = bessel_j1j1(x); |
3014 | #else |
3015 | not_here("j1"); |
3016 | #endif |
3017 | break; |
3018 | case 16: |
3019 | /* XXX Note: the lgamma modifies a global variable (signgam), |
3020 | * which is evil. Some platforms have lgamma_r, which has |
3021 | * extra output parameter instead of the global variable. */ |
3022 | #ifdef c99_lgammalgamma |
3023 | RETVAL = c99_lgammalgamma(x); |
3024 | #else |
3025 | not_here("lgamma"); |
3026 | #endif |
3027 | break; |
3028 | case 17: |
3029 | RETVAL = Perl_log10log10(x); /* C89 math */ |
3030 | break; |
3031 | case 18: |
3032 | #ifdef c99_log1plog1p |
3033 | RETVAL = c99_log1plog1p(x); |
3034 | #else |
3035 | not_here("log1p"); |
3036 | #endif |
3037 | break; |
3038 | case 19: |
3039 | #ifdef c99_log2log2 |
3040 | RETVAL = c99_log2log2(x); |
3041 | #else |
3042 | not_here("log2"); |
3043 | #endif |
3044 | break; |
3045 | case 20: |
3046 | #ifdef c99_logblogb |
3047 | RETVAL = c99_logblogb(x); |
3048 | #elif defined(c99_log2log2) && FLT_RADIX2 == 2 |
3049 | RETVAL = Perl_floorfloor(c99_log2log2(PERL_ABS(x)((x) < 0 ? -(x) : (x)))); |
3050 | #else |
3051 | not_here("logb"); |
3052 | #endif |
3053 | break; |
3054 | case 21: |
3055 | #ifdef c99_nearbyintnearbyint |
3056 | RETVAL = c99_nearbyintnearbyint(x); |
3057 | #else |
3058 | not_here("nearbyint"); |
3059 | #endif |
3060 | break; |
3061 | case 22: |
3062 | #ifdef c99_rintrint |
3063 | RETVAL = c99_rintrint(x); |
3064 | #else |
3065 | not_here("rint"); |
3066 | #endif |
3067 | break; |
3068 | case 23: |
3069 | #ifdef c99_roundround |
3070 | RETVAL = c99_roundround(x); |
3071 | #else |
3072 | not_here("round"); |
3073 | #endif |
3074 | break; |
3075 | case 24: |
3076 | RETVAL = Perl_sinhsinh(x); /* C89 math */ |
3077 | break; |
3078 | case 25: |
3079 | RETVAL = Perl_tantan(x); /* C89 math */ |
3080 | break; |
3081 | case 26: |
3082 | RETVAL = Perl_tanhtanh(x); /* C89 math */ |
3083 | break; |
3084 | case 27: |
3085 | #ifdef c99_tgammatgamma |
3086 | RETVAL = c99_tgammatgamma(x); |
3087 | #else |
3088 | not_here("tgamma"); |
3089 | #endif |
3090 | break; |
3091 | case 28: |
3092 | #ifdef c99_trunctrunc |
3093 | RETVAL = c99_trunctrunc(x); |
3094 | #else |
3095 | not_here("trunc"); |
3096 | #endif |
3097 | break; |
3098 | case 29: |
3099 | #ifdef bessel_y0y0 |
3100 | RETVAL = bessel_y0y0(x); |
3101 | #else |
3102 | not_here("y0"); |
3103 | #endif |
3104 | break; |
3105 | case 30: |
3106 | default: |
3107 | #ifdef bessel_y1y1 |
3108 | RETVAL = bessel_y1y1(x); |
3109 | #else |
3110 | not_here("y1"); |
3111 | #endif |
3112 | } |
3113 | #line 3114 "POSIX.c" |
3114 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHn((NV)RETVAL)do { do { NV TARGn_nv = (NV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000))) == SVt_NV) & (1 ? ! (((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool)0),(0)) ) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0),(1))) { ((void)0); (targ)->sv_flags |= (0x00000200|0x00002000); do { ((void)0); ((void)0); (((XPVNV*)(targ)->sv_any)->xnv_u .xnv_nv = (TARGn_nv)); } while (0); } else Perl_sv_setnv_mg( targ ,TARGn_nv); } while (0); (*++sp = (targ)); } while (0); |
3115 | } |
3116 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
3117 | } |
3118 | |
3119 | |
3120 | XS_EUPXS(XS_POSIX_fegetround)static void XS_POSIX_fegetround( CV* cv __attribute__((unused ))); /* prototype to pass -Wmissing-prototypes */ |
3121 | XS_EUPXS(XS_POSIX_fegetround)static void XS_POSIX_fegetround( CV* cv __attribute__((unused ))) |
3122 | { |
3123 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
3124 | if (items != 0) |
3125 | croak_xs_usagePerl_croak_xs_usage(cv, ""); |
3126 | { |
3127 | IV RETVAL; |
3128 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
3129 | #line 2512 "POSIX.xs" |
3130 | #ifdef HAS_FEGETROUND |
3131 | RETVAL = my_fegetround(); |
3132 | #else |
3133 | RETVAL = -1; |
3134 | not_here("fegetround"); |
3135 | #endif |
3136 | #line 3137 "POSIX.c" |
3137 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHi((IV)RETVAL)do { do { IV TARGi_iv = (IV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000)|0x80000000)) == SVt_IV) & (1 ? !(((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool) 0),(0))) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0) ,(1))) { ((void)0); (targ)->sv_flags |= (0x00000100|0x00001000 ); targ->sv_u.svu_iv = TARGi_iv; } else Perl_sv_setiv_mg( targ ,TARGi_iv); } while (0); (*++sp = (targ)); } while (0); |
3138 | } |
3139 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
3140 | } |
3141 | |
3142 | |
3143 | XS_EUPXS(XS_POSIX_fesetround)static void XS_POSIX_fesetround( CV* cv __attribute__((unused ))); /* prototype to pass -Wmissing-prototypes */ |
3144 | XS_EUPXS(XS_POSIX_fesetround)static void XS_POSIX_fesetround( CV* cv __attribute__((unused ))) |
3145 | { |
3146 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
3147 | if (items != 1) |
3148 | croak_xs_usagePerl_croak_xs_usage(cv, "x"); |
3149 | { |
3150 | IV x = (IV)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2)) |
3151 | ; |
3152 | IV RETVAL; |
3153 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
3154 | #line 2525 "POSIX.xs" |
3155 | #ifdef HAS_FEGETROUND /* canary for fesetround */ |
3156 | RETVAL = fesetround(x); |
3157 | #elif defined(HAS_FPGETROUND) /* canary for fpsetround */ |
3158 | switch (x) { |
3159 | case FE_TONEAREST0x000: RETVAL = fpsetround(FP_RN); break; |
3160 | case FE_TOWARDZERO0xc00: RETVAL = fpsetround(FP_RZ); break; |
3161 | case FE_DOWNWARD0x400: RETVAL = fpsetround(FP_RM); break; |
3162 | case FE_UPWARD0x800: RETVAL = fpsetround(FP_RP); break; |
3163 | default: RETVAL = -1; break; |
3164 | } |
3165 | #elif defined(__osf__) /* Tru64 */ |
3166 | switch (x) { |
3167 | case FE_TONEAREST0x000: RETVAL = write_rnd(FP_RND_RN); break; |
3168 | case FE_TOWARDZERO0xc00: RETVAL = write_rnd(FP_RND_RZ); break; |
3169 | case FE_DOWNWARD0x400: RETVAL = write_rnd(FP_RND_RM); break; |
3170 | case FE_UPWARD0x800: RETVAL = write_rnd(FP_RND_RP); break; |
3171 | default: RETVAL = -1; break; |
3172 | } |
3173 | #else |
3174 | PERL_UNUSED_VAR(x)((void)sizeof(x)); |
3175 | RETVAL = -1; |
3176 | not_here("fesetround"); |
3177 | #endif |
3178 | #line 3179 "POSIX.c" |
3179 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHi((IV)RETVAL)do { do { IV TARGi_iv = (IV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000)|0x80000000)) == SVt_IV) & (1 ? !(((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool) 0),(0))) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0) ,(1))) { ((void)0); (targ)->sv_flags |= (0x00000100|0x00001000 ); targ->sv_u.svu_iv = TARGi_iv; } else Perl_sv_setiv_mg( targ ,TARGi_iv); } while (0); (*++sp = (targ)); } while (0); |
3180 | } |
3181 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
3182 | } |
3183 | |
3184 | |
3185 | XS_EUPXS(XS_POSIX_fpclassify)static void XS_POSIX_fpclassify( CV* cv __attribute__((unused ))); /* prototype to pass -Wmissing-prototypes */ |
3186 | XS_EUPXS(XS_POSIX_fpclassify)static void XS_POSIX_fpclassify( CV* cv __attribute__((unused ))) |
3187 | { |
3188 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
3189 | dXSI32I32 ix = ((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))-> xcv_start_u.xcv_xsubany.any_i32; |
3190 | if (items != 1) |
3191 | croak_xs_usagePerl_croak_xs_usage(cv, "x"); |
3192 | { |
3193 | NV x = (NV)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
3194 | ; |
3195 | IV RETVAL; |
3196 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
3197 | #line 2564 "POSIX.xs" |
3198 | PERL_UNUSED_VAR(x)((void)sizeof(x)); |
3199 | RETVAL = -1; |
3200 | switch (ix) { |
3201 | case 0: |
3202 | #ifdef c99_fpclassifyfpclassify |
3203 | RETVAL = c99_fpclassify(x)((sizeof (x) == sizeof (float)) ? __fpclassifyf(x) : (sizeof ( x) == sizeof (double)) ? __fpclassify(x) : __fpclassifyl(x)); |
3204 | #else |
3205 | not_here("fpclassify"); |
3206 | #endif |
3207 | break; |
3208 | case 1: |
3209 | #ifdef c99_ilogbilogb |
3210 | RETVAL = c99_ilogbilogb(x); |
3211 | #else |
3212 | not_here("ilogb"); |
3213 | #endif |
3214 | break; |
3215 | case 2: |
3216 | RETVAL = Perl_isfinite(x)((sizeof (x) == sizeof (float)) ? __isfinitef(x) : (sizeof (x ) == sizeof (double)) ? __isfinite(x) : __isfinitel(x)); |
3217 | break; |
3218 | case 3: |
3219 | RETVAL = Perl_isinf(x)((sizeof (x) == sizeof (float)) ? __isinff(x) : (sizeof (x) == sizeof (double)) ? __isinf(x) : __isinfl(x)); |
3220 | break; |
3221 | case 4: |
3222 | RETVAL = Perl_isnan(x)((sizeof (x) == sizeof (float)) ? __isnanf(x) : (sizeof (x) == sizeof (double)) ? __isnan(x) : __isnanl(x)); |
3223 | break; |
3224 | case 5: |
3225 | #ifdef c99_isnormalisnormal |
3226 | RETVAL = c99_isnormal(x)((sizeof (x) == sizeof (float)) ? __isnormalf(x) : (sizeof (x ) == sizeof (double)) ? __isnormal(x) : __isnormall(x)); |
3227 | #else |
3228 | not_here("isnormal"); |
3229 | #endif |
3230 | break; |
3231 | case 6: |
3232 | #ifdef c99_lrintlrint |
3233 | RETVAL = c99_lrintlrint(x); |
3234 | #else |
3235 | not_here("lrint"); |
3236 | #endif |
3237 | break; |
3238 | case 7: |
3239 | #ifdef c99_lroundlround |
3240 | RETVAL = c99_lroundlround(x); |
3241 | #else |
3242 | not_here("lround"); |
3243 | #endif |
3244 | break; |
3245 | case 8: |
3246 | default: |
3247 | #ifdef Perl_signbitsignbit |
3248 | RETVAL = Perl_signbit(x)((sizeof (x) == sizeof (float)) ? __signbitf(x) : (sizeof (x) == sizeof (double)) ? __signbit(x) : __signbitl(x)); |
3249 | #else |
3250 | RETVAL = (x < 0); |
3251 | #ifdef DOUBLE_IS_IEEE_FORMAT |
3252 | if (x == -0.0) { |
3253 | RETVAL = TRUE(1); |
3254 | } |
3255 | #endif |
3256 | #endif |
3257 | break; |
3258 | } |
3259 | #line 3260 "POSIX.c" |
3260 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHi((IV)RETVAL)do { do { IV TARGi_iv = (IV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000)|0x80000000)) == SVt_IV) & (1 ? !(((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool) 0),(0))) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0) ,(1))) { ((void)0); (targ)->sv_flags |= (0x00000100|0x00001000 ); targ->sv_u.svu_iv = TARGi_iv; } else Perl_sv_setiv_mg( targ ,TARGi_iv); } while (0); (*++sp = (targ)); } while (0); |
3261 | } |
3262 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
3263 | } |
3264 | |
3265 | |
3266 | XS_EUPXS(XS_POSIX_getpayload)static void XS_POSIX_getpayload( CV* cv __attribute__((unused ))); /* prototype to pass -Wmissing-prototypes */ |
3267 | XS_EUPXS(XS_POSIX_getpayload)static void XS_POSIX_getpayload( CV* cv __attribute__((unused ))) |
3268 | { |
3269 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
3270 | if (items != 1) |
3271 | croak_xs_usagePerl_croak_xs_usage(cv, "nv"); |
3272 | { |
3273 | NV nv = (NV)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
3274 | ; |
3275 | NV RETVAL; |
3276 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
3277 | #line 2632 "POSIX.xs" |
3278 | #ifdef DOUBLE_HAS_NAN |
3279 | RETVAL = S_getpayload(nv); |
3280 | #else |
3281 | PERL_UNUSED_VAR(nv)((void)sizeof(nv)); |
3282 | RETVAL = 0.0; |
3283 | not_here("getpayload"); |
3284 | #endif |
3285 | #line 3286 "POSIX.c" |
3286 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHn((NV)RETVAL)do { do { NV TARGn_nv = (NV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000))) == SVt_NV) & (1 ? ! (((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool)0),(0)) ) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0),(1))) { ((void)0); (targ)->sv_flags |= (0x00000200|0x00002000); do { ((void)0); ((void)0); (((XPVNV*)(targ)->sv_any)->xnv_u .xnv_nv = (TARGn_nv)); } while (0); } else Perl_sv_setnv_mg( targ ,TARGn_nv); } while (0); (*++sp = (targ)); } while (0); |
3287 | } |
3288 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
3289 | } |
3290 | |
3291 | |
3292 | XS_EUPXS(XS_POSIX_setpayload)static void XS_POSIX_setpayload( CV* cv __attribute__((unused ))); /* prototype to pass -Wmissing-prototypes */ |
3293 | XS_EUPXS(XS_POSIX_setpayload)static void XS_POSIX_setpayload( CV* cv __attribute__((unused ))) |
3294 | { |
3295 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
3296 | if (items != 2) |
3297 | croak_xs_usagePerl_croak_xs_usage(cv, "nv, payload"); |
3298 | { |
3299 | NV nv = (NV)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
3300 | ; |
3301 | NV payload = (NV)SvNV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (1)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (1 )],2)) |
3302 | ; |
3303 | #line 2647 "POSIX.xs" |
3304 | #ifdef DOUBLE_HAS_NAN |
3305 | S_setpayload(&nv, payload, FALSE(0)); |
3306 | #else |
3307 | PERL_UNUSED_VAR(nv)((void)sizeof(nv)); |
3308 | PERL_UNUSED_VAR(payload)((void)sizeof(payload)); |
3309 | not_here("setpayload"); |
3310 | #endif |
3311 | #line 3312 "POSIX.c" |
3312 | sv_setnv(ST(0), (NV)nv)Perl_sv_setnv( PL_stack_base[ax + (0)],(NV)nv); |
3313 | SvSETMAGIC(ST(0))do { if (__builtin_expect(((((PL_stack_base[ax + (0)])->sv_flags & 0x00400000)) ? (_Bool)1 : (_Bool)0),(0))) Perl_mg_set( PL_stack_base[ax + (0)]); } while (0); |
3314 | } |
3315 | XSRETURN_EMPTYdo { do { const IV tmpXSoff = (0); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
3316 | } |
3317 | |
3318 | |
3319 | XS_EUPXS(XS_POSIX_setpayloadsig)static void XS_POSIX_setpayloadsig( CV* cv __attribute__((unused ))); /* prototype to pass -Wmissing-prototypes */ |
3320 | XS_EUPXS(XS_POSIX_setpayloadsig)static void XS_POSIX_setpayloadsig( CV* cv __attribute__((unused ))) |
3321 | { |
3322 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
3323 | if (items != 2) |
3324 | croak_xs_usagePerl_croak_xs_usage(cv, "nv, payload"); |
3325 | { |
3326 | NV nv = (NV)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
3327 | ; |
3328 | NV payload = (NV)SvNV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (1)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (1 )],2)) |
3329 | ; |
3330 | #line 2662 "POSIX.xs" |
3331 | #ifdef DOUBLE_HAS_NAN |
3332 | nv = NV_NANPL_nan.nv; |
3333 | S_setpayload(&nv, payload, TRUE(1)); |
3334 | #else |
3335 | PERL_UNUSED_VAR(nv)((void)sizeof(nv)); |
3336 | PERL_UNUSED_VAR(payload)((void)sizeof(payload)); |
3337 | not_here("setpayloadsig"); |
3338 | #endif |
3339 | #line 3340 "POSIX.c" |
3340 | sv_setnv(ST(0), (NV)nv)Perl_sv_setnv( PL_stack_base[ax + (0)],(NV)nv); |
3341 | SvSETMAGIC(ST(0))do { if (__builtin_expect(((((PL_stack_base[ax + (0)])->sv_flags & 0x00400000)) ? (_Bool)1 : (_Bool)0),(0))) Perl_mg_set( PL_stack_base[ax + (0)]); } while (0); |
3342 | } |
3343 | XSRETURN_EMPTYdo { do { const IV tmpXSoff = (0); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
3344 | } |
3345 | |
3346 | |
3347 | XS_EUPXS(XS_POSIX_issignaling)static void XS_POSIX_issignaling( CV* cv __attribute__((unused ))); /* prototype to pass -Wmissing-prototypes */ |
3348 | XS_EUPXS(XS_POSIX_issignaling)static void XS_POSIX_issignaling( CV* cv __attribute__((unused ))) |
3349 | { |
3350 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
3351 | if (items != 1) |
3352 | croak_xs_usagePerl_croak_xs_usage(cv, "nv"); |
3353 | { |
3354 | NV nv = (NV)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
3355 | ; |
3356 | int RETVAL; |
3357 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
3358 | #line 2677 "POSIX.xs" |
3359 | #ifdef DOUBLE_HAS_NAN |
3360 | RETVAL = Perl_isnan(nv)((sizeof (nv) == sizeof (float)) ? __isnanf(nv) : (sizeof (nv ) == sizeof (double)) ? __isnan(nv) : __isnanl(nv)) && NV_NAN_IS_SIGNALING(&nv)(((((U8*)(&nv))[6]) & (1 << ((((52 - 1)) % 8))) ) == ((((((U8*)(PL_nan.u8))[6]) & (1 << ((((52 - 1) ) % 8)))) == (1 << ((((52 - 1)) % 8)))) ? 0 : (1 << ((((52 - 1)) % 8))))); |
3361 | #else |
3362 | PERL_UNUSED_VAR(nv)((void)sizeof(nv)); |
3363 | RETVAL = 0.0; |
3364 | not_here("issignaling"); |
3365 | #endif |
3366 | #line 3367 "POSIX.c" |
3367 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHi((IV)RETVAL)do { do { IV TARGi_iv = (IV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000)|0x80000000)) == SVt_IV) & (1 ? !(((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool) 0),(0))) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0) ,(1))) { ((void)0); (targ)->sv_flags |= (0x00000100|0x00001000 ); targ->sv_u.svu_iv = TARGi_iv; } else Perl_sv_setiv_mg( targ ,TARGi_iv); } while (0); (*++sp = (targ)); } while (0); |
3368 | } |
3369 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
3370 | } |
3371 | |
3372 | |
3373 | XS_EUPXS(XS_POSIX_copysign)static void XS_POSIX_copysign( CV* cv __attribute__((unused)) ); /* prototype to pass -Wmissing-prototypes */ |
3374 | XS_EUPXS(XS_POSIX_copysign)static void XS_POSIX_copysign( CV* cv __attribute__((unused)) ) |
3375 | { |
3376 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
3377 | dXSI32I32 ix = ((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))-> xcv_start_u.xcv_xsubany.any_i32; |
3378 | if (items != 2) |
3379 | croak_xs_usagePerl_croak_xs_usage(cv, "x, y"); |
3380 | { |
3381 | NV x = (NV)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
3382 | ; |
3383 | NV y = (NV)SvNV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (1)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (1 )],2)) |
3384 | ; |
3385 | NV RETVAL; |
3386 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
3387 | #line 2707 "POSIX.xs" |
3388 | PERL_UNUSED_VAR(x)((void)sizeof(x)); |
3389 | PERL_UNUSED_VAR(y)((void)sizeof(y)); |
3390 | #ifdef NV_NANPL_nan.nv |
3391 | RETVAL = NV_NANPL_nan.nv; |
Value stored to 'RETVAL' is never read | |
3392 | #else |
3393 | RETVAL = 0; |
3394 | #endif |
3395 | switch (ix) { |
3396 | case 0: |
3397 | #ifdef c99_copysigncopysign |
3398 | RETVAL = c99_copysigncopysign(x, y); |
3399 | #else |
3400 | not_here("copysign"); |
3401 | #endif |
3402 | break; |
3403 | case 1: |
3404 | #ifdef c99_fdimfdim |
3405 | RETVAL = c99_fdimfdim(x, y); |
3406 | #else |
3407 | not_here("fdim"); |
3408 | #endif |
3409 | break; |
3410 | case 2: |
3411 | #ifdef c99_fmaxfmax |
3412 | RETVAL = c99_fmaxfmax(x, y); |
3413 | #else |
3414 | not_here("fmax"); |
3415 | #endif |
3416 | break; |
3417 | case 3: |
3418 | #ifdef c99_fminfmin |
3419 | RETVAL = c99_fminfmin(x, y); |
3420 | #else |
3421 | not_here("fmin"); |
3422 | #endif |
3423 | break; |
3424 | case 4: |
3425 | RETVAL = Perl_fmodfmod(x, y); /* C89 math */ |
3426 | break; |
3427 | case 5: |
3428 | #ifdef c99_hypothypot |
3429 | RETVAL = c99_hypothypot(x, y); |
3430 | #else |
3431 | not_here("hypot"); |
3432 | #endif |
3433 | break; |
3434 | case 6: |
3435 | #ifdef c99_isgreaterisgreater |
3436 | RETVAL = c99_isgreater(x, y)(!(((sizeof ((x)) == sizeof (float)) ? __isnanf((x)) : (sizeof ((x)) == sizeof (double)) ? __isnan((x)) : __isnanl((x))) || ((sizeof ((y)) == sizeof (float)) ? __isnanf((y)) : (sizeof ( (y)) == sizeof (double)) ? __isnan((y)) : __isnanl((y)))) && (x) > (y)); |
3437 | #else |
3438 | not_here("isgreater"); |
3439 | #endif |
3440 | break; |
3441 | case 7: |
3442 | #ifdef c99_isgreaterequalisgreaterequal |
3443 | RETVAL = c99_isgreaterequal(x, y)(!(((sizeof ((x)) == sizeof (float)) ? __isnanf((x)) : (sizeof ((x)) == sizeof (double)) ? __isnan((x)) : __isnanl((x))) || ((sizeof ((y)) == sizeof (float)) ? __isnanf((y)) : (sizeof ( (y)) == sizeof (double)) ? __isnan((y)) : __isnanl((y)))) && (x) >= (y)); |
3444 | #else |
3445 | not_here("isgreaterequal"); |
3446 | #endif |
3447 | break; |
3448 | case 8: |
3449 | #ifdef c99_islessisless |
3450 | RETVAL = c99_isless(x, y)(!(((sizeof ((x)) == sizeof (float)) ? __isnanf((x)) : (sizeof ((x)) == sizeof (double)) ? __isnan((x)) : __isnanl((x))) || ((sizeof ((y)) == sizeof (float)) ? __isnanf((y)) : (sizeof ( (y)) == sizeof (double)) ? __isnan((y)) : __isnanl((y)))) && (x) < (y)); |
3451 | #else |
3452 | not_here("isless"); |
3453 | #endif |
3454 | break; |
3455 | case 9: |
3456 | #ifdef c99_islessequalislessequal |
3457 | RETVAL = c99_islessequal(x, y)(!(((sizeof ((x)) == sizeof (float)) ? __isnanf((x)) : (sizeof ((x)) == sizeof (double)) ? __isnan((x)) : __isnanl((x))) || ((sizeof ((y)) == sizeof (float)) ? __isnanf((y)) : (sizeof ( (y)) == sizeof (double)) ? __isnan((y)) : __isnanl((y)))) && (x) <= (y)); |
3458 | #else |
3459 | not_here("islessequal"); |
3460 | #endif |
3461 | break; |
3462 | case 10: |
3463 | #ifdef c99_islessgreaterislessgreater |
3464 | RETVAL = c99_islessgreater(x, y)(!(((sizeof ((x)) == sizeof (float)) ? __isnanf((x)) : (sizeof ((x)) == sizeof (double)) ? __isnan((x)) : __isnanl((x))) || ((sizeof ((y)) == sizeof (float)) ? __isnanf((y)) : (sizeof ( (y)) == sizeof (double)) ? __isnan((y)) : __isnanl((y)))) && ((x) > (y) || (y) > (x))); |
3465 | #else |
3466 | not_here("islessgreater"); |
3467 | #endif |
3468 | break; |
3469 | case 11: |
3470 | #ifdef c99_isunorderedisunordered |
3471 | RETVAL = c99_isunordered(x, y)(((sizeof (x) == sizeof (float)) ? __isnanf(x) : (sizeof (x) == sizeof (double)) ? __isnan(x) : __isnanl(x)) || ((sizeof (y) == sizeof (float)) ? __isnanf(y) : (sizeof (y) == sizeof (double )) ? __isnan(y) : __isnanl(y))); |
3472 | #else |
3473 | not_here("isunordered"); |
3474 | #endif |
3475 | break; |
3476 | case 12: |
3477 | #ifdef c99_nextafternextafter |
3478 | RETVAL = c99_nextafternextafter(x, y); |
3479 | #else |
3480 | not_here("nextafter"); |
3481 | #endif |
3482 | break; |
3483 | case 13: |
3484 | #ifdef c99_nexttowardnexttoward |
3485 | RETVAL = c99_nexttowardnexttoward(x, y); |
3486 | #else |
3487 | not_here("nexttoward"); |
3488 | #endif |
3489 | break; |
3490 | case 14: |
3491 | default: |
3492 | #ifdef c99_remainderremainder |
3493 | RETVAL = c99_remainderremainder(x, y); |
3494 | #else |
3495 | not_here("remainder"); |
3496 | #endif |
3497 | break; |
3498 | } |
3499 | #line 3500 "POSIX.c" |
3500 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHn((NV)RETVAL)do { do { NV TARGn_nv = (NV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000))) == SVt_NV) & (1 ? ! (((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool)0),(0)) ) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0),(1))) { ((void)0); (targ)->sv_flags |= (0x00000200|0x00002000); do { ((void)0); ((void)0); (((XPVNV*)(targ)->sv_any)->xnv_u .xnv_nv = (TARGn_nv)); } while (0); } else Perl_sv_setnv_mg( targ ,TARGn_nv); } while (0); (*++sp = (targ)); } while (0); |
3501 | } |
3502 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
3503 | } |
3504 | |
3505 | |
3506 | XS_EUPXS(XS_POSIX_frexp)static void XS_POSIX_frexp( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
3507 | XS_EUPXS(XS_POSIX_frexp)static void XS_POSIX_frexp( CV* cv __attribute__((unused))) |
3508 | { |
3509 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
3510 | if (items != 1) |
3511 | croak_xs_usagePerl_croak_xs_usage(cv, "x"); |
3512 | PERL_UNUSED_VAR(ax)((void)sizeof(ax)); /* -Wall */ |
3513 | SPsp -= items; |
3514 | { |
3515 | NV x = (NV)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
3516 | ; |
3517 | #line 2825 "POSIX.xs" |
3518 | int expvar; |
3519 | /* (We already know stack is long enough.) */ |
3520 | PUSHs(sv_2mortal(newSVnv(Perl_frexp(x,&expvar))))(*++sp = (Perl_sv_2mortal( Perl_newSVnv( frexp(x,&expvar) )))); /* C89 math */ |
3521 | PUSHs(sv_2mortal(newSViv(expvar)))(*++sp = (Perl_sv_2mortal( Perl_newSViv( expvar)))); |
3522 | #line 3523 "POSIX.c" |
3523 | PUTBACKPL_stack_sp = sp; |
3524 | return; |
3525 | } |
3526 | } |
3527 | |
3528 | |
3529 | XS_EUPXS(XS_POSIX_ldexp)static void XS_POSIX_ldexp( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
3530 | XS_EUPXS(XS_POSIX_ldexp)static void XS_POSIX_ldexp( CV* cv __attribute__((unused))) |
3531 | { |
3532 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
3533 | if (items != 2) |
3534 | croak_xs_usagePerl_croak_xs_usage(cv, "x, exp"); |
3535 | { |
3536 | NV x = (NV)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
3537 | ; |
3538 | int exp = (int)SvIV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (1)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 1)],2)) |
3539 | ; |
3540 | NV RETVAL; |
3541 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
3542 | #line 2835 "POSIX.xs" |
3543 | RETVAL = Perl_ldexp(x, exp)ldexp(x,exp); |
3544 | #line 3545 "POSIX.c" |
3545 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHn((NV)RETVAL)do { do { NV TARGn_nv = (NV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000))) == SVt_NV) & (1 ? ! (((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool)0),(0)) ) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0),(1))) { ((void)0); (targ)->sv_flags |= (0x00000200|0x00002000); do { ((void)0); ((void)0); (((XPVNV*)(targ)->sv_any)->xnv_u .xnv_nv = (TARGn_nv)); } while (0); } else Perl_sv_setnv_mg( targ ,TARGn_nv); } while (0); (*++sp = (targ)); } while (0); |
3546 | } |
3547 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
3548 | } |
3549 | |
3550 | |
3551 | XS_EUPXS(XS_POSIX_modf)static void XS_POSIX_modf( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
3552 | XS_EUPXS(XS_POSIX_modf)static void XS_POSIX_modf( CV* cv __attribute__((unused))) |
3553 | { |
3554 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
3555 | if (items != 1) |
3556 | croak_xs_usagePerl_croak_xs_usage(cv, "x"); |
3557 | PERL_UNUSED_VAR(ax)((void)sizeof(ax)); /* -Wall */ |
3558 | SPsp -= items; |
3559 | { |
3560 | NV x = (NV)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
3561 | ; |
3562 | #line 2843 "POSIX.xs" |
3563 | NV intvar; |
3564 | /* (We already know stack is long enough.) */ |
3565 | PUSHs(sv_2mortal(newSVnv(Perl_modf(x,&intvar))))(*++sp = (Perl_sv_2mortal( Perl_newSVnv( modf(x,&intvar)) ))); /* C89 math */ |
3566 | PUSHs(sv_2mortal(newSVnv(intvar)))(*++sp = (Perl_sv_2mortal( Perl_newSVnv( intvar)))); |
3567 | #line 3568 "POSIX.c" |
3568 | PUTBACKPL_stack_sp = sp; |
3569 | return; |
3570 | } |
3571 | } |
3572 | |
3573 | |
3574 | XS_EUPXS(XS_POSIX_remquo)static void XS_POSIX_remquo( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
3575 | XS_EUPXS(XS_POSIX_remquo)static void XS_POSIX_remquo( CV* cv __attribute__((unused))) |
3576 | { |
3577 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
3578 | if (items != 2) |
3579 | croak_xs_usagePerl_croak_xs_usage(cv, "x, y"); |
3580 | PERL_UNUSED_VAR(ax)((void)sizeof(ax)); /* -Wall */ |
3581 | SPsp -= items; |
3582 | { |
3583 | NV x = (NV)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
3584 | ; |
3585 | NV y = (NV)SvNV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (1)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (1 )],2)) |
3586 | ; |
3587 | #line 2853 "POSIX.xs" |
3588 | #ifdef c99_remquoremquo |
3589 | int intvar; |
3590 | PUSHs(sv_2mortal(newSVnv(c99_remquo(x,y,&intvar))))(*++sp = (Perl_sv_2mortal( Perl_newSVnv( remquo(x,y,&intvar ))))); |
3591 | PUSHs(sv_2mortal(newSVnv(intvar)))(*++sp = (Perl_sv_2mortal( Perl_newSVnv( intvar)))); |
3592 | #else |
3593 | PERL_UNUSED_VAR(x)((void)sizeof(x)); |
3594 | PERL_UNUSED_VAR(y)((void)sizeof(y)); |
3595 | not_here("remquo"); |
3596 | #endif |
3597 | #line 3598 "POSIX.c" |
3598 | PUTBACKPL_stack_sp = sp; |
3599 | return; |
3600 | } |
3601 | } |
3602 | |
3603 | |
3604 | XS_EUPXS(XS_POSIX_scalbn)static void XS_POSIX_scalbn( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
3605 | XS_EUPXS(XS_POSIX_scalbn)static void XS_POSIX_scalbn( CV* cv __attribute__((unused))) |
3606 | { |
3607 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
3608 | if (items != 2) |
3609 | croak_xs_usagePerl_croak_xs_usage(cv, "x, y"); |
3610 | { |
3611 | NV x = (NV)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
3612 | ; |
3613 | IV y = (IV)SvIV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (1)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 1)],2)) |
3614 | ; |
3615 | NV RETVAL; |
3616 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
3617 | #line 2868 "POSIX.xs" |
3618 | #ifdef c99_scalbnscalbn |
3619 | RETVAL = c99_scalbnscalbn(x, y); |
3620 | #else |
3621 | PERL_UNUSED_VAR(x)((void)sizeof(x)); |
3622 | PERL_UNUSED_VAR(y)((void)sizeof(y)); |
3623 | RETVAL = NV_NANPL_nan.nv; |
3624 | not_here("scalbn"); |
3625 | #endif |
3626 | #line 3627 "POSIX.c" |
3627 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHn((NV)RETVAL)do { do { NV TARGn_nv = (NV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000))) == SVt_NV) & (1 ? ! (((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool)0),(0)) ) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0),(1))) { ((void)0); (targ)->sv_flags |= (0x00000200|0x00002000); do { ((void)0); ((void)0); (((XPVNV*)(targ)->sv_any)->xnv_u .xnv_nv = (TARGn_nv)); } while (0); } else Perl_sv_setnv_mg( targ ,TARGn_nv); } while (0); (*++sp = (targ)); } while (0); |
3628 | } |
3629 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
3630 | } |
3631 | |
3632 | |
3633 | XS_EUPXS(XS_POSIX_fma)static void XS_POSIX_fma( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
3634 | XS_EUPXS(XS_POSIX_fma)static void XS_POSIX_fma( CV* cv __attribute__((unused))) |
3635 | { |
3636 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
3637 | if (items != 3) |
3638 | croak_xs_usagePerl_croak_xs_usage(cv, "x, y, z"); |
3639 | { |
3640 | NV x = (NV)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
3641 | ; |
3642 | NV y = (NV)SvNV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (1)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (1 )],2)) |
3643 | ; |
3644 | NV z = (NV)SvNV(ST(2))((((PL_stack_base[ax + (2)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (2)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (2 )],2)) |
3645 | ; |
3646 | NV RETVAL; |
3647 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
3648 | #line 2885 "POSIX.xs" |
3649 | #ifdef c99_fmafma |
3650 | RETVAL = c99_fmafma(x, y, z); |
3651 | #else |
3652 | PERL_UNUSED_VAR(x)((void)sizeof(x)); |
3653 | PERL_UNUSED_VAR(y)((void)sizeof(y)); |
3654 | PERL_UNUSED_VAR(z)((void)sizeof(z)); |
3655 | not_here("fma"); |
3656 | #endif |
3657 | #line 3658 "POSIX.c" |
3658 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHn((NV)RETVAL)do { do { NV TARGn_nv = (NV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000))) == SVt_NV) & (1 ? ! (((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool)0),(0)) ) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0),(1))) { ((void)0); (targ)->sv_flags |= (0x00000200|0x00002000); do { ((void)0); ((void)0); (((XPVNV*)(targ)->sv_any)->xnv_u .xnv_nv = (TARGn_nv)); } while (0); } else Perl_sv_setnv_mg( targ ,TARGn_nv); } while (0); (*++sp = (targ)); } while (0); |
3659 | } |
3660 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
3661 | } |
3662 | |
3663 | |
3664 | XS_EUPXS(XS_POSIX_nan)static void XS_POSIX_nan( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
3665 | XS_EUPXS(XS_POSIX_nan)static void XS_POSIX_nan( CV* cv __attribute__((unused))) |
3666 | { |
3667 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
3668 | if (items < 0 || items > 1) |
3669 | croak_xs_usagePerl_croak_xs_usage(cv, "payload = 0"); |
3670 | { |
3671 | NV payload; |
3672 | NV RETVAL; |
3673 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
3674 | |
3675 | if (items < 1) |
3676 | payload = 0; |
3677 | else { |
3678 | payload = (NV)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
3679 | ; |
3680 | } |
3681 | #line 2900 "POSIX.xs" |
3682 | #ifdef NV_NANPL_nan.nv |
3683 | /* If no payload given, just return the default NaN. |
3684 | * This makes a difference in platforms where the default |
3685 | * NaN is not all zeros. */ |
3686 | if (items == 0) { |
3687 | RETVAL = NV_NANPL_nan.nv; |
3688 | } else { |
3689 | S_setpayload(&RETVAL, payload, FALSE(0)); |
3690 | } |
3691 | #elif defined(c99_nannan) |
3692 | { |
3693 | STRLEN elen = my_snprintf(PL_efloatbuf, PL_efloatsize, "%g", payload)({ int len = snprintf(PL_efloatbuf, PL_efloatsize, "%g", payload ); do { if ((PL_efloatsize) > 0 && (size_t)len > (PL_efloatsize)) Perl_croak("panic: %s buffer overflow", "snprintf" ); } while (0); len; }); |
3694 | if ((IV)elen == -1) { |
3695 | #ifdef NV_NANPL_nan.nv |
3696 | RETVAL = NV_NANPL_nan.nv; |
3697 | #else |
3698 | RETVAL = 0.0; |
3699 | not_here("nan"); |
3700 | #endif |
3701 | } else { |
3702 | RETVAL = c99_nannan(PL_efloatbuf); |
3703 | } |
3704 | } |
3705 | #else |
3706 | not_here("nan"); |
3707 | #endif |
3708 | #line 3709 "POSIX.c" |
3709 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHn((NV)RETVAL)do { do { NV TARGn_nv = (NV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000))) == SVt_NV) & (1 ? ! (((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool)0),(0)) ) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0),(1))) { ((void)0); (targ)->sv_flags |= (0x00000200|0x00002000); do { ((void)0); ((void)0); (((XPVNV*)(targ)->sv_any)->xnv_u .xnv_nv = (TARGn_nv)); } while (0); } else Perl_sv_setnv_mg( targ ,TARGn_nv); } while (0); (*++sp = (targ)); } while (0); |
3710 | } |
3711 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
3712 | } |
3713 | |
3714 | |
3715 | XS_EUPXS(XS_POSIX_jn)static void XS_POSIX_jn( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
3716 | XS_EUPXS(XS_POSIX_jn)static void XS_POSIX_jn( CV* cv __attribute__((unused))) |
3717 | { |
3718 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
3719 | dXSI32I32 ix = ((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))-> xcv_start_u.xcv_xsubany.any_i32; |
3720 | if (items != 2) |
3721 | croak_xs_usagePerl_croak_xs_usage(cv, "x, y"); |
3722 | { |
3723 | IV x = (IV)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2)) |
3724 | ; |
3725 | NV y = (NV)SvNV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (1)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (1 )],2)) |
3726 | ; |
3727 | NV RETVAL; |
3728 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
3729 | #line 2936 "POSIX.xs" |
3730 | #ifdef NV_NANPL_nan.nv |
3731 | RETVAL = NV_NANPL_nan.nv; |
3732 | #else |
3733 | RETVAL = 0; |
3734 | #endif |
3735 | switch (ix) { |
3736 | case 0: |
3737 | #ifdef bessel_jnjn |
3738 | RETVAL = bessel_jnjn(x, y); |
3739 | #else |
3740 | PERL_UNUSED_VAR(x)((void)sizeof(x)); |
3741 | PERL_UNUSED_VAR(y)((void)sizeof(y)); |
3742 | not_here("jn"); |
3743 | #endif |
3744 | break; |
3745 | case 1: |
3746 | default: |
3747 | #ifdef bessel_ynyn |
3748 | RETVAL = bessel_ynyn(x, y); |
3749 | #else |
3750 | PERL_UNUSED_VAR(x)((void)sizeof(x)); |
3751 | PERL_UNUSED_VAR(y)((void)sizeof(y)); |
3752 | not_here("yn"); |
3753 | #endif |
3754 | break; |
3755 | } |
3756 | #line 3757 "POSIX.c" |
3757 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHn((NV)RETVAL)do { do { NV TARGn_nv = (NV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000))) == SVt_NV) & (1 ? ! (((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool)0),(0)) ) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0),(1))) { ((void)0); (targ)->sv_flags |= (0x00000200|0x00002000); do { ((void)0); ((void)0); (((XPVNV*)(targ)->sv_any)->xnv_u .xnv_nv = (TARGn_nv)); } while (0); } else Perl_sv_setnv_mg( targ ,TARGn_nv); } while (0); (*++sp = (targ)); } while (0); |
3758 | } |
3759 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
3760 | } |
3761 | |
3762 | |
3763 | XS_EUPXS(XS_POSIX_sigaction)static void XS_POSIX_sigaction( CV* cv __attribute__((unused) )); /* prototype to pass -Wmissing-prototypes */ |
3764 | XS_EUPXS(XS_POSIX_sigaction)static void XS_POSIX_sigaction( CV* cv __attribute__((unused) )) |
3765 | { |
3766 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
3767 | if (items < 2 || items > 3) |
3768 | croak_xs_usagePerl_croak_xs_usage(cv, "sig, optaction, oldaction = 0"); |
3769 | { |
3770 | int sig = (int)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2)) |
3771 | ; |
3772 | SV * optaction = ST(1)PL_stack_base[ax + (1)] |
3773 | ; |
3774 | POSIX__SigAction oldaction; |
3775 | SysRet RETVAL; |
3776 | |
3777 | if (items < 3) |
3778 | oldaction = 0; |
3779 | else { |
3780 | STMT_STARTdo { |
3781 | SV* const xsub_tmp_sv = ST(2)PL_stack_base[ax + (2)]; |
3782 | SvGETMAGIC(xsub_tmp_sv)((void)(__builtin_expect(((((xsub_tmp_sv)->sv_flags & 0x00200000 )) ? (_Bool)1 : (_Bool)0),(0)) && Perl_mg_get( xsub_tmp_sv ))); |
3783 | if (SvROK(xsub_tmp_sv)((xsub_tmp_sv)->sv_flags & 0x00000800) && SvTYPE(SvRV(xsub_tmp_sv))((svtype)((((xsub_tmp_sv)->sv_u.svu_rv))->sv_flags & 0xff)) == SVt_PVHV){ |
3784 | oldaction = (HV*)SvRV(xsub_tmp_sv)((xsub_tmp_sv)->sv_u.svu_rv); |
3785 | } |
3786 | else{ |
3787 | Perl_croak_nocontextPerl_croak("%s: %s is not a HASH reference", |
3788 | "POSIX::sigaction", |
3789 | "oldaction"); |
3790 | } |
3791 | } STMT_ENDwhile (0) |
3792 | ; |
3793 | } |
3794 | #line 2971 "POSIX.xs" |
3795 | #if defined(WIN32) || defined(NETWARE) || (defined(__amigaos4__) && defined(__NEWLIB__)) |
3796 | RETVAL = not_here("sigaction"); |
3797 | #else |
3798 | |
3799 | { |
3800 | dVARstruct Perl___notused_struct; |
3801 | POSIX__SigAction action; |
3802 | GV *siggv = gv_fetchpvs("SIG", GV_ADD, SVt_PVHV)Perl_gv_fetchpvn_flags( ("" "SIG" ""), (sizeof("SIG")-1), 0x01 , SVt_PVHV); |
3803 | struct sigaction act; |
3804 | struct sigaction oact; |
3805 | sigset_t sset; |
3806 | SV *osset_sv; |
3807 | sigset_t osset; |
3808 | POSIX__SigSet sigset; |
3809 | SV** svp; |
3810 | SV** sigsvp; |
3811 | |
3812 | if (sig < 0) { |
3813 | croakPerl_croak("Negative signals are not allowed"); |
3814 | } |
3815 | |
3816 | if (sig == 0 && SvPOK(ST(0))((PL_stack_base[ax + (0)])->sv_flags & 0x00000400)) { |
3817 | const char *s = SvPVX_const(ST(0))((const char*)(0 + (PL_stack_base[ax + (0)])->sv_u.svu_pv) ); |
3818 | int i = whichsig(s)Perl_whichsig_pv( s); |
3819 | |
3820 | if (i < 0 && memBEGINs(s, SvCUR(ST(0)), "SIG")( (ptrdiff_t) (((XPV*) (PL_stack_base[ax + (0)])->sv_any)-> xpv_cur) >= (ptrdiff_t) sizeof("SIG") - 1 && (memcmp (((const void *) (s)), ((const void *) ("" "SIG" "")), sizeof ("SIG")-1) == 0))) |
3821 | i = whichsig(s + 3)Perl_whichsig_pv( s + 3); |
3822 | if (i < 0) { |
3823 | if (ckWARN(WARN_SIGNAL)Perl_ckwarn( (26 ))) |
3824 | Perl_warner(aTHX_ packWARN(WARN_SIGNAL)(26 ), |
3825 | "No such signal: SIG%s", s); |
3826 | XSRETURN_UNDEFdo { (PL_stack_base[ax + (0)] = &(PL_sv_immortals[1])); do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
3827 | } |
3828 | else |
3829 | sig = i; |
3830 | } |
3831 | #ifdef NSIG33 |
3832 | if (sig > NSIG33) { /* NSIG - 1 is still okay. */ |
3833 | Perl_warner(aTHX_ packWARN(WARN_SIGNAL)(26 ), |
3834 | "No such signal: %d", sig); |
3835 | XSRETURN_UNDEFdo { (PL_stack_base[ax + (0)] = &(PL_sv_immortals[1])); do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
3836 | } |
3837 | #endif |
3838 | sigsvp = hv_fetch(GvHVn(siggv),((SV**) Perl_hv_common_key_len( (((0+(siggv)->sv_u.svu_gp) ->gp_hv ? (0+(siggv)->sv_u.svu_gp)->gp_hv : (0+(Perl_gv_add_by_type ( (siggv),SVt_PVHV))->sv_u.svu_gp)->gp_hv)),(PL_sig_name [sig]),(strlen(PL_sig_name[sig])),((1)) ? (0x20 | 0x10) : 0x20 ,((void*)0),0)) |
3839 | PL_sig_name[sig],((SV**) Perl_hv_common_key_len( (((0+(siggv)->sv_u.svu_gp) ->gp_hv ? (0+(siggv)->sv_u.svu_gp)->gp_hv : (0+(Perl_gv_add_by_type ( (siggv),SVt_PVHV))->sv_u.svu_gp)->gp_hv)),(PL_sig_name [sig]),(strlen(PL_sig_name[sig])),((1)) ? (0x20 | 0x10) : 0x20 ,((void*)0),0)) |
3840 | strlen(PL_sig_name[sig]),((SV**) Perl_hv_common_key_len( (((0+(siggv)->sv_u.svu_gp) ->gp_hv ? (0+(siggv)->sv_u.svu_gp)->gp_hv : (0+(Perl_gv_add_by_type ( (siggv),SVt_PVHV))->sv_u.svu_gp)->gp_hv)),(PL_sig_name [sig]),(strlen(PL_sig_name[sig])),((1)) ? (0x20 | 0x10) : 0x20 ,((void*)0),0)) |
3841 | TRUE)((SV**) Perl_hv_common_key_len( (((0+(siggv)->sv_u.svu_gp) ->gp_hv ? (0+(siggv)->sv_u.svu_gp)->gp_hv : (0+(Perl_gv_add_by_type ( (siggv),SVt_PVHV))->sv_u.svu_gp)->gp_hv)),(PL_sig_name [sig]),(strlen(PL_sig_name[sig])),((1)) ? (0x20 | 0x10) : 0x20 ,((void*)0),0)); |
3842 | |
3843 | /* Check optaction and set action */ |
3844 | if(SvTRUE(optaction)Perl_SvTRUE( optaction)) { |
3845 | if(sv_isa(optaction, "POSIX::SigAction")Perl_sv_isa( optaction,"POSIX::SigAction")) |
3846 | action = (HV*)SvRV(optaction)((optaction)->sv_u.svu_rv); |
3847 | else |
3848 | croakPerl_croak("action is not of type POSIX::SigAction"); |
3849 | } |
3850 | else { |
3851 | action=0; |
3852 | } |
3853 | |
3854 | /* sigaction() is supposed to look atomic. In particular, any |
3855 | * signal handler invoked during a sigaction() call should |
3856 | * see either the old or the new disposition, and not something |
3857 | * in between. We use sigprocmask() to make it so. |
3858 | */ |
3859 | sigfillset(&sset); |
3860 | RETVAL=sigprocmask(SIG_BLOCK1, &sset, &osset); |
3861 | if(RETVAL == -1) |
3862 | XSRETURN_UNDEFdo { (PL_stack_base[ax + (0)] = &(PL_sv_immortals[1])); do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
3863 | ENTERPerl_push_scope(); |
3864 | /* Restore signal mask no matter how we exit this block. */ |
3865 | osset_sv = newSVpvn((char *)(&osset), sizeof(sigset_t))Perl_newSVpvn( (char *)(&osset),sizeof(sigset_t)); |
3866 | SAVEFREESV( osset_sv )Perl_save_pushptr( (void *)(((SV *)({ void *_p = (osset_sv); _p ; }))),11); |
3867 | SAVEDESTRUCTOR_X(restore_sigmask, osset_sv)Perl_save_destructor_x( (DESTRUCTORFUNC_t)(restore_sigmask),( void*)(osset_sv)); |
3868 | |
3869 | RETVAL=-1; /* In case both oldaction and action are 0. */ |
3870 | |
3871 | /* Remember old disposition if desired. */ |
3872 | if (oldaction) { |
3873 | int safe; |
3874 | |
3875 | svp = hv_fetchs(oldaction, "HANDLER", TRUE)((SV**) Perl_hv_common_key_len( ((oldaction)),(("" "HANDLER" "" )),((sizeof("HANDLER")-1)),(((1))) ? (0x20 | 0x10) : 0x20,((void *)0),0)); |
3876 | if(!svp) |
3877 | croakPerl_croak("Can't supply an oldaction without a HANDLER"); |
3878 | if(SvTRUE(*sigsvp)Perl_SvTRUE( *sigsvp)) { /* TBD: what if "0"? */ |
3879 | sv_setsv(*svp, *sigsvp)Perl_sv_setsv_flags( *svp,*sigsvp,2|0); |
3880 | } |
3881 | else { |
3882 | sv_setpvs(*svp, "DEFAULT")Perl_sv_setpvn( *svp, ("" "DEFAULT" ""), (sizeof("DEFAULT")-1 )); |
3883 | } |
3884 | RETVAL = sigaction(sig, (struct sigaction *)0, & oact); |
3885 | if(RETVAL == -1) { |
3886 | LEAVEPerl_pop_scope(); |
3887 | XSRETURN_UNDEFdo { (PL_stack_base[ax + (0)] = &(PL_sv_immortals[1])); do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
3888 | } |
3889 | /* Get back the mask. */ |
3890 | svp = hv_fetchs(oldaction, "MASK", TRUE)((SV**) Perl_hv_common_key_len( ((oldaction)),(("" "MASK" "") ),((sizeof("MASK")-1)),(((1))) ? (0x20 | 0x10) : 0x20,((void* )0),0)); |
3891 | if (sv_isa(*svp, "POSIX::SigSet")Perl_sv_isa( *svp,"POSIX::SigSet")) { |
3892 | sigset = (sigset_t *) SvPV_nolen(SvRV(*svp))((((((*svp)->sv_u.svu_rv))->sv_flags & (0x00000400| 0x00200000)) == 0x00000400) ? ((((*svp)->sv_u.svu_rv))-> sv_u.svu_pv) : Perl_sv_2pv_flags( ((*svp)->sv_u.svu_rv),0, 2)); |
3893 | } |
3894 | else { |
3895 | sigset = (sigset_t *) allocate_struct(aTHX_ *svp, |
3896 | sizeof(sigset_t), |
3897 | "POSIX::SigSet"); |
3898 | } |
3899 | *sigset = oact.sa_mask; |
3900 | |
3901 | /* Get back the flags. */ |
3902 | svp = hv_fetchs(oldaction, "FLAGS", TRUE)((SV**) Perl_hv_common_key_len( ((oldaction)),(("" "FLAGS" "" )),((sizeof("FLAGS")-1)),(((1))) ? (0x20 | 0x10) : 0x20,((void *)0),0)); |
3903 | sv_setiv(*svp, oact.sa_flags)Perl_sv_setiv( *svp,oact.sa_flags); |
3904 | |
3905 | /* Get back whether the old handler used safe signals; |
3906 | * i.e. it used Perl_csighandler[13] rather than |
3907 | * Perl_sighandler[13] |
3908 | */ |
3909 | safe = |
3910 | #ifdef SA_SIGINFO0x0040 |
3911 | (oact.sa_flags & SA_SIGINFO0x0040) |
3912 | ? ( oact.sa_sigaction__sigaction_u.__sa_sigaction == PL_csighandler3p |
3913 | #ifdef PERL_USE_3ARG_SIGHANDLER |
3914 | || oact.sa_sigaction__sigaction_u.__sa_sigaction == PL_csighandlerp |
3915 | #endif |
3916 | ) |
3917 | : |
3918 | #endif |
3919 | ( oact.sa_handler__sigaction_u.__sa_handler == PL_csighandler1p |
3920 | #ifndef PERL_USE_3ARG_SIGHANDLER |
3921 | || oact.sa_handler__sigaction_u.__sa_handler == PL_csighandlerp |
3922 | #endif |
3923 | ); |
3924 | |
3925 | svp = hv_fetchs(oldaction, "SAFE", TRUE)((SV**) Perl_hv_common_key_len( ((oldaction)),(("" "SAFE" "") ),((sizeof("SAFE")-1)),(((1))) ? (0x20 | 0x10) : 0x20,((void* )0),0)); |
3926 | sv_setiv(*svp, safe)Perl_sv_setiv( *svp,safe); |
3927 | } |
3928 | |
3929 | if (action) { |
3930 | int safe; |
3931 | |
3932 | /* Set up any desired flags. */ |
3933 | svp = hv_fetchs(action, "FLAGS", FALSE)((SV**) Perl_hv_common_key_len( ((action)),(("" "FLAGS" "")), ((sizeof("FLAGS")-1)),(((0))) ? (0x20 | 0x10) : 0x20,((void*) 0),0)); |
3934 | act.sa_flags = svp ? SvIV(*svp)((((*svp)->sv_flags & (0x00000100|0x00200000)) == 0x00000100 ) ? ((XPVIV*) (*svp)->sv_any)->xiv_u.xivu_iv : Perl_sv_2iv_flags ( *svp,2)) : 0; |
3935 | |
3936 | /* Safe signals use "csighandler", which vectors through the |
3937 | PL_sighandlerp pointer when it's safe to do so. |
3938 | (BTW, "csighandler" is very different from "sighandler".) */ |
3939 | svp = hv_fetchs(action, "SAFE", FALSE)((SV**) Perl_hv_common_key_len( ((action)),(("" "SAFE" "")),( (sizeof("SAFE")-1)),(((0))) ? (0x20 | 0x10) : 0x20,((void*)0) ,0)); |
3940 | safe = *svp && SvTRUE(*svp)Perl_SvTRUE( *svp); |
3941 | #ifdef SA_SIGINFO0x0040 |
3942 | if (act.sa_flags & SA_SIGINFO0x0040) { |
3943 | /* 3-arg handler */ |
3944 | act.sa_sigaction__sigaction_u.__sa_sigaction = |
3945 | safe ? PL_csighandler3p : PL_sighandler3p; |
3946 | } |
3947 | else |
3948 | #endif |
3949 | { |
3950 | /* 1-arg handler */ |
3951 | act.sa_handler__sigaction_u.__sa_handler = |
3952 | safe ? PL_csighandler1p : PL_sighandler1p; |
3953 | } |
3954 | |
3955 | /* Vector new Perl handler through %SIG. |
3956 | (The core signal handlers read %SIG to dispatch.) */ |
3957 | svp = hv_fetchs(action, "HANDLER", FALSE)((SV**) Perl_hv_common_key_len( ((action)),(("" "HANDLER" "") ),((sizeof("HANDLER")-1)),(((0))) ? (0x20 | 0x10) : 0x20,((void *)0),0)); |
3958 | if (!svp) |
3959 | croakPerl_croak("Can't supply an action without a HANDLER"); |
3960 | sv_setsv(*sigsvp, *svp)Perl_sv_setsv_flags( *sigsvp,*svp,2|0); |
3961 | |
3962 | /* This call actually calls sigaction() with almost the |
3963 | right settings, including appropriate interpretation |
3964 | of DEFAULT and IGNORE. However, why are we doing |
3965 | this when we're about to do it again just below? XXX */ |
3966 | SvSETMAGIC(*sigsvp)do { if (__builtin_expect(((((*sigsvp)->sv_flags & 0x00400000 )) ? (_Bool)1 : (_Bool)0),(0))) Perl_mg_set( *sigsvp); } while (0); |
3967 | |
3968 | /* And here again we duplicate -- DEFAULT/IGNORE checking. */ |
3969 | if(SvPOK(*svp)((*svp)->sv_flags & 0x00000400)) { |
3970 | const char *s=SvPVX_const(*svp)((const char*)(0 + (*svp)->sv_u.svu_pv)); |
3971 | if(strEQ(s,"IGNORE")(strcmp(s,"IGNORE") == 0)) { |
3972 | act.sa_handler__sigaction_u.__sa_handler = SIG_IGN(void (*)(int))1; |
3973 | } |
3974 | else if(strEQ(s,"DEFAULT")(strcmp(s,"DEFAULT") == 0)) { |
3975 | act.sa_handler__sigaction_u.__sa_handler = SIG_DFL(void (*)(int))0; |
3976 | } |
3977 | } |
3978 | |
3979 | /* Set up any desired mask. */ |
3980 | svp = hv_fetchs(action, "MASK", FALSE)((SV**) Perl_hv_common_key_len( ((action)),(("" "MASK" "")),( (sizeof("MASK")-1)),(((0))) ? (0x20 | 0x10) : 0x20,((void*)0) ,0)); |
3981 | if (svp && sv_isa(*svp, "POSIX::SigSet")Perl_sv_isa( *svp,"POSIX::SigSet")) { |
3982 | sigset = (sigset_t *) SvPV_nolen(SvRV(*svp))((((((*svp)->sv_u.svu_rv))->sv_flags & (0x00000400| 0x00200000)) == 0x00000400) ? ((((*svp)->sv_u.svu_rv))-> sv_u.svu_pv) : Perl_sv_2pv_flags( ((*svp)->sv_u.svu_rv),0, 2)); |
3983 | act.sa_mask = *sigset; |
3984 | } |
3985 | else |
3986 | sigemptyset(& act.sa_mask); |
3987 | |
3988 | /* Don't worry about cleaning up *sigsvp if this fails, |
3989 | * because that means we tried to disposition a |
3990 | * nonblockable signal, in which case *sigsvp is |
3991 | * essentially meaningless anyway. |
3992 | */ |
3993 | RETVAL = sigaction(sig, & act, (struct sigaction *)0); |
3994 | if(RETVAL == -1) { |
3995 | LEAVEPerl_pop_scope(); |
3996 | XSRETURN_UNDEFdo { (PL_stack_base[ax + (0)] = &(PL_sv_immortals[1])); do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
3997 | } |
3998 | } |
3999 | |
4000 | LEAVEPerl_pop_scope(); |
4001 | } |
4002 | #endif |
4003 | #line 4004 "POSIX.c" |
4004 | { |
4005 | SV * RETVALSV; |
4006 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
4007 | if (RETVAL != -1) { |
4008 | if (RETVAL == 0) |
4009 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
4010 | else |
4011 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
4012 | } |
4013 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
4014 | } |
4015 | } |
4016 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
4017 | } |
4018 | |
4019 | |
4020 | XS_EUPXS(XS_POSIX_sigpending)static void XS_POSIX_sigpending( CV* cv __attribute__((unused ))); /* prototype to pass -Wmissing-prototypes */ |
4021 | XS_EUPXS(XS_POSIX_sigpending)static void XS_POSIX_sigpending( CV* cv __attribute__((unused ))) |
4022 | { |
4023 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4024 | dXSI32I32 ix = ((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))-> xcv_start_u.xcv_xsubany.any_i32; |
4025 | if (items != 1) |
4026 | croak_xs_usagePerl_croak_xs_usage(cv, "sigset"); |
4027 | { |
4028 | POSIX__SigSet sigset; |
4029 | SysRet RETVAL; |
4030 | |
4031 | { |
4032 | SV * sv = ST(0)PL_stack_base[ax + (0)]; |
4033 | if (SvROK(sv)((sv)->sv_flags & 0x00000800) && sv_derived_from(sv, "POSIX::SigSet")Perl_sv_derived_from( sv,"POSIX::SigSet")) |
4034 | sigset = (POSIX__SigSet)SvPV_nolen(SvRV(sv))((((((sv)->sv_u.svu_rv))->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((((sv)->sv_u.svu_rv))->sv_u.svu_pv ) : Perl_sv_2pv_flags( ((sv)->sv_u.svu_rv),0,2)); |
4035 | else |
4036 | croakPerl_croak("%s: %s is not of type %s", |
4037 | GvNAME(CvGV(cv))((((XPVGV*)(Perl_CvGV( (CV *)(cv)))->sv_any)->xiv_u.xivu_namehek ))->hek_key, |
4038 | "sigset", "POSIX::SigSet"); |
4039 | } |
4040 | ; |
4041 | #line 3190 "POSIX.xs" |
4042 | #ifdef __amigaos4__ |
4043 | RETVAL = not_here("sigpending"); |
4044 | #else |
4045 | RETVAL = ix ? sigsuspend(sigset) : sigpending(sigset); |
4046 | #endif |
4047 | #line 4048 "POSIX.c" |
4048 | { |
4049 | SV * RETVALSV; |
4050 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
4051 | if (RETVAL != -1) { |
4052 | if (RETVAL == 0) |
4053 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
4054 | else |
4055 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
4056 | } |
4057 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
4058 | } |
4059 | #line 3198 "POSIX.xs" |
4060 | PERL_ASYNC_CHECK()if (__builtin_expect(((PL_sig_pending) ? (_Bool)1 : (_Bool)0) ,(0))) PL_signalhook(); |
4061 | #line 4062 "POSIX.c" |
4062 | } |
4063 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
4064 | } |
4065 | |
4066 | |
4067 | XS_EUPXS(XS_POSIX_sigprocmask)static void XS_POSIX_sigprocmask( CV* cv __attribute__((unused ))); /* prototype to pass -Wmissing-prototypes */ |
4068 | XS_EUPXS(XS_POSIX_sigprocmask)static void XS_POSIX_sigprocmask( CV* cv __attribute__((unused ))) |
4069 | { |
4070 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4071 | if (items < 2 || items > 3) |
4072 | croak_xs_usagePerl_croak_xs_usage(cv, "how, sigset, oldsigset = 0"); |
4073 | { |
4074 | int how = (int)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2)) |
4075 | ; |
4076 | POSIX__SigSet sigset; |
4077 | POSIX__SigSet oldsigset; |
4078 | SysRet RETVAL; |
4079 | #line 3206 "POSIX.xs" |
4080 | if (! SvOK(ST(1))((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00000200 |0x00000400|0x00000800| 0x00001000|0x00002000|0x00004000|0x00008000 ))) { |
4081 | sigset = NULL((void*)0); |
4082 | } else if (sv_isa(ST(1), "POSIX::SigSet")Perl_sv_isa( PL_stack_base[ax + (1)],"POSIX::SigSet")) { |
4083 | sigset = (sigset_t *) SvPV_nolen(SvRV(ST(1)))((((((PL_stack_base[ax + (1)])->sv_u.svu_rv))->sv_flags & (0x00000400|0x00200000)) == 0x00000400) ? ((((PL_stack_base [ax + (1)])->sv_u.svu_rv))->sv_u.svu_pv) : Perl_sv_2pv_flags ( ((PL_stack_base[ax + (1)])->sv_u.svu_rv),0,2)); |
4084 | } else { |
4085 | croakPerl_croak("sigset is not of type POSIX::SigSet"); |
4086 | } |
4087 | |
4088 | if (items < 3 || ! SvOK(ST(2))((PL_stack_base[ax + (2)])->sv_flags & (0x00000100|0x00000200 |0x00000400|0x00000800| 0x00001000|0x00002000|0x00004000|0x00008000 ))) { |
4089 | oldsigset = NULL((void*)0); |
4090 | } else if (sv_isa(ST(2), "POSIX::SigSet")Perl_sv_isa( PL_stack_base[ax + (2)],"POSIX::SigSet")) { |
4091 | oldsigset = (sigset_t *) SvPV_nolen(SvRV(ST(2)))((((((PL_stack_base[ax + (2)])->sv_u.svu_rv))->sv_flags & (0x00000400|0x00200000)) == 0x00000400) ? ((((PL_stack_base [ax + (2)])->sv_u.svu_rv))->sv_u.svu_pv) : Perl_sv_2pv_flags ( ((PL_stack_base[ax + (2)])->sv_u.svu_rv),0,2)); |
4092 | } else { |
4093 | croakPerl_croak("oldsigset is not of type POSIX::SigSet"); |
4094 | } |
4095 | #line 4096 "POSIX.c" |
4096 | |
4097 | RETVAL = sigprocmask(how, sigset, oldsigset); |
4098 | { |
4099 | SV * RETVALSV; |
4100 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
4101 | if (RETVAL != -1) { |
4102 | if (RETVAL == 0) |
4103 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
4104 | else |
4105 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
4106 | } |
4107 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
4108 | } |
4109 | } |
4110 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
4111 | } |
4112 | |
4113 | |
4114 | XS_EUPXS(XS_POSIX__exit)static void XS_POSIX__exit( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4115 | XS_EUPXS(XS_POSIX__exit)static void XS_POSIX__exit( CV* cv __attribute__((unused))) |
4116 | { |
4117 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4118 | if (items != 1) |
4119 | croak_xs_usagePerl_croak_xs_usage(cv, "status"); |
4120 | { |
4121 | int status = (int)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2)) |
4122 | ; |
4123 | |
4124 | _exit(status); |
4125 | } |
4126 | XSRETURN_EMPTYdo { do { const IV tmpXSoff = (0); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
4127 | } |
4128 | |
4129 | |
4130 | XS_EUPXS(XS_POSIX_dup2)static void XS_POSIX_dup2( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4131 | XS_EUPXS(XS_POSIX_dup2)static void XS_POSIX_dup2( CV* cv __attribute__((unused))) |
4132 | { |
4133 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4134 | if (items != 2) |
4135 | croak_xs_usagePerl_croak_xs_usage(cv, "fd1, fd2"); |
4136 | { |
4137 | int fd1 = (int)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2)) |
4138 | ; |
4139 | int fd2 = (int)SvIV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (1)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 1)],2)) |
4140 | ; |
4141 | SysRet RETVAL; |
4142 | #line 3231 "POSIX.xs" |
4143 | if (fd1 >= 0 && fd2 >= 0) { |
4144 | #ifdef WIN32 |
4145 | /* RT #98912 - More Microsoft muppetry - failing to |
4146 | actually implemented the well known documented POSIX |
4147 | behaviour for a POSIX API. |
4148 | http://msdn.microsoft.com/en-us/library/8syseb29.aspx */ |
4149 | RETVAL = dup2(fd1, fd2) == -1 ? -1 : fd2; |
4150 | #else |
4151 | RETVAL = dup2(fd1, fd2); |
4152 | #endif |
4153 | } else { |
4154 | SETERRNO(EBADF,RMS_IFI)((*__errno()) = (9)); |
4155 | RETVAL = -1; |
4156 | } |
4157 | #line 4158 "POSIX.c" |
4158 | { |
4159 | SV * RETVALSV; |
4160 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
4161 | if (RETVAL != -1) { |
4162 | if (RETVAL == 0) |
4163 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
4164 | else |
4165 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
4166 | } |
4167 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
4168 | } |
4169 | } |
4170 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
4171 | } |
4172 | |
4173 | |
4174 | XS_EUPXS(XS_POSIX_lseek)static void XS_POSIX_lseek( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4175 | XS_EUPXS(XS_POSIX_lseek)static void XS_POSIX_lseek( CV* cv __attribute__((unused))) |
4176 | { |
4177 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4178 | if (items != 3) |
4179 | croak_xs_usagePerl_croak_xs_usage(cv, "fd, offset, whence"); |
4180 | { |
4181 | POSIX__Fd fd; |
4182 | Off_toff_t offset = (Off_toff_t)SvNV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (1)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (1 )],2)) |
4183 | ; |
4184 | int whence = (int)SvIV(ST(2))((((PL_stack_base[ax + (2)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (2)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 2)],2)) |
4185 | ; |
4186 | SV * RETVAL; |
4187 | |
4188 | if ((fd = (int)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2))) < 0) { |
4189 | SETERRNO(EBADF, RMS_IFI)((*__errno()) = (9)); |
4190 | XSRETURN_IV(-1)do { (PL_stack_base[ax + (0)] = Perl_sv_2mortal( Perl_newSViv ( -1)) ); do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
4191 | } |
4192 | ; |
4193 | #line 3254 "POSIX.xs" |
4194 | { |
4195 | Off_toff_t pos = PerlLIO_lseek(fd, offset, whence)lseek((fd), (offset), (whence)); |
4196 | RETVAL = sizeof(Off_toff_t) > sizeof(IV) |
4197 | ? newSVnv((NV)pos)Perl_newSVnv( (NV)pos) : newSViv((IV)pos)Perl_newSViv( (IV)pos); |
4198 | } |
4199 | #line 4200 "POSIX.c" |
4200 | RETVAL = sv_2mortal(RETVAL)Perl_sv_2mortal( RETVAL); |
4201 | ST(0)PL_stack_base[ax + (0)] = RETVAL; |
4202 | } |
4203 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
4204 | } |
4205 | |
4206 | |
4207 | XS_EUPXS(XS_POSIX_nice)static void XS_POSIX_nice( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4208 | XS_EUPXS(XS_POSIX_nice)static void XS_POSIX_nice( CV* cv __attribute__((unused))) |
4209 | { |
4210 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4211 | if (items != 1) |
4212 | croak_xs_usagePerl_croak_xs_usage(cv, "incr"); |
4213 | PERL_UNUSED_VAR(ax)((void)sizeof(ax)); /* -Wall */ |
4214 | SPsp -= items; |
4215 | { |
4216 | int incr = (int)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2)) |
4217 | ; |
4218 | #line 3266 "POSIX.xs" |
4219 | errno(*__errno()) = 0; |
4220 | if ((incr = nice(incr)) != -1 || errno(*__errno()) == 0) { |
4221 | if (incr == 0) |
4222 | XPUSHs(newSVpvs_flags("0 but true", SVs_TEMP))do { do { (void)0; if (__builtin_expect(((((1) < 0 || PL_stack_max - (sp) < (1))) ? (_Bool)1 : (_Bool)0),(0))) { sp = Perl_stack_grow ( sp,sp,(sizeof(1) > sizeof(ssize_t) && ((ssize_t) (1) != (1)) ? -1 : (1))); ((void)sizeof(sp)); } } while (0); * ++sp = (Perl_newSVpvn_flags( ("" "0 but true" ""), (sizeof("0 but true" )-1), 0x00080000)); } while (0); |
4223 | else |
4224 | XPUSHs(sv_2mortal(newSViv(incr)))do { do { (void)0; if (__builtin_expect(((((1) < 0 || PL_stack_max - (sp) < (1))) ? (_Bool)1 : (_Bool)0),(0))) { sp = Perl_stack_grow ( sp,sp,(sizeof(1) > sizeof(ssize_t) && ((ssize_t) (1) != (1)) ? -1 : (1))); ((void)sizeof(sp)); } } while (0); * ++sp = (Perl_sv_2mortal( Perl_newSViv( incr))); } while (0); |
4225 | } |
4226 | #line 4227 "POSIX.c" |
4227 | PUTBACKPL_stack_sp = sp; |
4228 | return; |
4229 | } |
4230 | } |
4231 | |
4232 | |
4233 | XS_EUPXS(XS_POSIX_pipe)static void XS_POSIX_pipe( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4234 | XS_EUPXS(XS_POSIX_pipe)static void XS_POSIX_pipe( CV* cv __attribute__((unused))) |
4235 | { |
4236 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4237 | if (items != 0) |
4238 | croak_xs_usagePerl_croak_xs_usage(cv, ""); |
4239 | PERL_UNUSED_VAR(ax)((void)sizeof(ax)); /* -Wall */ |
4240 | SPsp -= items; |
4241 | { |
4242 | #line 3277 "POSIX.xs" |
4243 | int fds[2]; |
4244 | if (pipe(fds) != -1) { |
4245 | EXTEND(SP,2)do { (void)0; if (__builtin_expect(((((2) < 0 || PL_stack_max - (sp) < (2))) ? (_Bool)1 : (_Bool)0),(0))) { sp = Perl_stack_grow ( sp,sp,(sizeof(2) > sizeof(ssize_t) && ((ssize_t) (2) != (2)) ? -1 : (2))); ((void)sizeof(sp)); } } while (0); |
4246 | PUSHs(sv_2mortal(newSViv(fds[0])))(*++sp = (Perl_sv_2mortal( Perl_newSViv( fds[0])))); |
4247 | PUSHs(sv_2mortal(newSViv(fds[1])))(*++sp = (Perl_sv_2mortal( Perl_newSViv( fds[1])))); |
4248 | } |
4249 | #line 4250 "POSIX.c" |
4250 | PUTBACKPL_stack_sp = sp; |
4251 | return; |
4252 | } |
4253 | } |
4254 | |
4255 | |
4256 | XS_EUPXS(XS_POSIX_read)static void XS_POSIX_read( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4257 | XS_EUPXS(XS_POSIX_read)static void XS_POSIX_read( CV* cv __attribute__((unused))) |
4258 | { |
4259 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4260 | if (items != 3) |
4261 | croak_xs_usagePerl_croak_xs_usage(cv, "fd, buffer, nbytes"); |
4262 | { |
4263 | #line 3287 "POSIX.xs" |
4264 | SV *sv_buffer = SvROK(ST(1))((PL_stack_base[ax + (1)])->sv_flags & 0x00000800) ? SvRV(ST(1))((PL_stack_base[ax + (1)])->sv_u.svu_rv) : ST(1)PL_stack_base[ax + (1)]; |
4265 | #line 4266 "POSIX.c" |
4266 | POSIX__Fd fd; |
4267 | size_t nbytes = (size_t)SvUV(ST(2))((((PL_stack_base[ax + (2)])->sv_flags & (0x00000100|0x80000000 |0x00200000)) == (0x00000100|0x80000000)) ? ((XPVUV*) (PL_stack_base [ax + (2)])->sv_any)->xuv_u.xivu_uv : Perl_sv_2uv_flags ( PL_stack_base[ax + (2)],2)) |
4268 | ; |
4269 | char * buffer = sv_grow( sv_buffer, nbytes+1 )Perl_sv_grow( sv_buffer,nbytes+1); |
4270 | SysRet RETVAL; |
4271 | |
4272 | if ((fd = (int)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2))) < 0) { |
4273 | SETERRNO(EBADF, RMS_IFI)((*__errno()) = (9)); |
4274 | XSRETURN_IV(-1)do { (PL_stack_base[ax + (0)] = Perl_sv_2mortal( Perl_newSViv ( -1)) ); do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
4275 | } |
4276 | ; |
4277 | |
4278 | RETVAL = read(fd, buffer, nbytes); |
4279 | { |
4280 | SV * RETVALSV; |
4281 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
4282 | if (RETVAL != -1) { |
4283 | if (RETVAL == 0) |
4284 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
4285 | else |
4286 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
4287 | } |
4288 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
4289 | } |
4290 | #line 3293 "POSIX.xs" |
4291 | if (RETVAL >= 0) { |
4292 | SvCUR_set(sv_buffer, RETVAL)do { ((void)0); ((void)0); ((void)0); (((XPV*) (sv_buffer)-> sv_any)->xpv_cur = (RETVAL)); } while (0); |
4293 | SvPOK_only(sv_buffer)( (sv_buffer)->sv_flags &= ~((0x00000100|0x00000200|0x00000400 |0x00000800| 0x00001000|0x00002000|0x00004000|0x00008000)| 0x80000000 |0x20000000), (sv_buffer)->sv_flags |= (0x00000400|0x00004000 )); |
4294 | *SvEND(sv_buffer)((sv_buffer)->sv_u.svu_pv + ((XPV*)(sv_buffer)->sv_any) ->xpv_cur) = '\0'; |
4295 | SvTAINTED_on(sv_buffer)do{ if(__builtin_expect((((((__builtin_expect(((PL_tainting) ? (_Bool)1 : (_Bool)0),(0))) ? (_Bool)1 : (_Bool)0))) ? (_Bool )1 : (_Bool)0),(0))){Perl_sv_magic( (sv_buffer),((void*)0),'t' ,((void*)0),0);} }while (0); |
4296 | } |
4297 | #line 4298 "POSIX.c" |
4298 | } |
4299 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
4300 | } |
4301 | |
4302 | |
4303 | XS_EUPXS(XS_POSIX_setpgid)static void XS_POSIX_setpgid( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4304 | XS_EUPXS(XS_POSIX_setpgid)static void XS_POSIX_setpgid( CV* cv __attribute__((unused))) |
4305 | { |
4306 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4307 | if (items != 2) |
4308 | croak_xs_usagePerl_croak_xs_usage(cv, "pid, pgid"); |
4309 | { |
4310 | pid_t pid = (pid_t)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
4311 | ; |
4312 | pid_t pgid = (pid_t)SvNV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (1)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (1 )],2)) |
4313 | ; |
4314 | SysRet RETVAL; |
4315 | |
4316 | RETVAL = setpgid(pid, pgid); |
4317 | { |
4318 | SV * RETVALSV; |
4319 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
4320 | if (RETVAL != -1) { |
4321 | if (RETVAL == 0) |
4322 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
4323 | else |
4324 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
4325 | } |
4326 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
4327 | } |
4328 | } |
4329 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
4330 | } |
4331 | |
4332 | |
4333 | XS_EUPXS(XS_POSIX_setsid)static void XS_POSIX_setsid( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4334 | XS_EUPXS(XS_POSIX_setsid)static void XS_POSIX_setsid( CV* cv __attribute__((unused))) |
4335 | { |
4336 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4337 | if (items != 0) |
4338 | croak_xs_usagePerl_croak_xs_usage(cv, ""); |
4339 | { |
4340 | pid_t RETVAL; |
4341 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
4342 | |
4343 | RETVAL = setsid(); |
4344 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHn((NV)RETVAL)do { do { NV TARGn_nv = (NV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000))) == SVt_NV) & (1 ? ! (((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool)0),(0)) ) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0),(1))) { ((void)0); (targ)->sv_flags |= (0x00000200|0x00002000); do { ((void)0); ((void)0); (((XPVNV*)(targ)->sv_any)->xnv_u .xnv_nv = (TARGn_nv)); } while (0); } else Perl_sv_setnv_mg( targ ,TARGn_nv); } while (0); (*++sp = (targ)); } while (0); |
4345 | } |
4346 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
4347 | } |
4348 | |
4349 | |
4350 | XS_EUPXS(XS_POSIX_tcgetpgrp)static void XS_POSIX_tcgetpgrp( CV* cv __attribute__((unused) )); /* prototype to pass -Wmissing-prototypes */ |
4351 | XS_EUPXS(XS_POSIX_tcgetpgrp)static void XS_POSIX_tcgetpgrp( CV* cv __attribute__((unused) )) |
4352 | { |
4353 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4354 | if (items != 1) |
4355 | croak_xs_usagePerl_croak_xs_usage(cv, "fd"); |
4356 | { |
4357 | POSIX__Fd fd; |
4358 | pid_t RETVAL; |
4359 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
4360 | |
4361 | if ((fd = (int)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2))) < 0) { |
4362 | SETERRNO(EBADF, RMS_IFI)((*__errno()) = (9)); |
4363 | XSRETURN_IV(-1)do { (PL_stack_base[ax + (0)] = Perl_sv_2mortal( Perl_newSViv ( -1)) ); do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
4364 | } |
4365 | ; |
4366 | |
4367 | RETVAL = tcgetpgrp(fd); |
4368 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHn((NV)RETVAL)do { do { NV TARGn_nv = (NV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000))) == SVt_NV) & (1 ? ! (((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool)0),(0)) ) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0),(1))) { ((void)0); (targ)->sv_flags |= (0x00000200|0x00002000); do { ((void)0); ((void)0); (((XPVNV*)(targ)->sv_any)->xnv_u .xnv_nv = (TARGn_nv)); } while (0); } else Perl_sv_setnv_mg( targ ,TARGn_nv); } while (0); (*++sp = (targ)); } while (0); |
4369 | } |
4370 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
4371 | } |
4372 | |
4373 | |
4374 | XS_EUPXS(XS_POSIX_tcsetpgrp)static void XS_POSIX_tcsetpgrp( CV* cv __attribute__((unused) )); /* prototype to pass -Wmissing-prototypes */ |
4375 | XS_EUPXS(XS_POSIX_tcsetpgrp)static void XS_POSIX_tcsetpgrp( CV* cv __attribute__((unused) )) |
4376 | { |
4377 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4378 | if (items != 2) |
4379 | croak_xs_usagePerl_croak_xs_usage(cv, "fd, pgrp_id"); |
4380 | { |
4381 | POSIX__Fd fd; |
4382 | pid_t pgrp_id = (pid_t)SvNV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (1)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (1 )],2)) |
4383 | ; |
4384 | SysRet RETVAL; |
4385 | |
4386 | if ((fd = (int)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2))) < 0) { |
4387 | SETERRNO(EBADF, RMS_IFI)((*__errno()) = (9)); |
4388 | XSRETURN_IV(-1)do { (PL_stack_base[ax + (0)] = Perl_sv_2mortal( Perl_newSViv ( -1)) ); do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
4389 | } |
4390 | ; |
4391 | |
4392 | RETVAL = tcsetpgrp(fd, pgrp_id); |
4393 | { |
4394 | SV * RETVALSV; |
4395 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
4396 | if (RETVAL != -1) { |
4397 | if (RETVAL == 0) |
4398 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
4399 | else |
4400 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
4401 | } |
4402 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
4403 | } |
4404 | } |
4405 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
4406 | } |
4407 | |
4408 | |
4409 | XS_EUPXS(XS_POSIX_uname)static void XS_POSIX_uname( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4410 | XS_EUPXS(XS_POSIX_uname)static void XS_POSIX_uname( CV* cv __attribute__((unused))) |
4411 | { |
4412 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4413 | if (items != 0) |
4414 | croak_xs_usagePerl_croak_xs_usage(cv, ""); |
4415 | PERL_UNUSED_VAR(ax)((void)sizeof(ax)); /* -Wall */ |
4416 | SPsp -= items; |
4417 | { |
4418 | #line 3320 "POSIX.xs" |
4419 | #ifdef HAS_UNAME |
4420 | struct utsname buf; |
4421 | if (uname(&buf) >= 0) { |
4422 | EXTEND(SP, 5)do { (void)0; if (__builtin_expect(((((5) < 0 || PL_stack_max - (sp) < (5))) ? (_Bool)1 : (_Bool)0),(0))) { sp = Perl_stack_grow ( sp,sp,(sizeof(5) > sizeof(ssize_t) && ((ssize_t) (5) != (5)) ? -1 : (5))); ((void)sizeof(sp)); } } while (0); |
4423 | PUSHs(newSVpvn_flags(buf.sysname, strlen(buf.sysname), SVs_TEMP))(*++sp = (Perl_newSVpvn_flags( buf.sysname,strlen(buf.sysname ),0x00080000))); |
4424 | PUSHs(newSVpvn_flags(buf.nodename, strlen(buf.nodename), SVs_TEMP))(*++sp = (Perl_newSVpvn_flags( buf.nodename,strlen(buf.nodename ),0x00080000))); |
4425 | PUSHs(newSVpvn_flags(buf.release, strlen(buf.release), SVs_TEMP))(*++sp = (Perl_newSVpvn_flags( buf.release,strlen(buf.release ),0x00080000))); |
4426 | PUSHs(newSVpvn_flags(buf.version, strlen(buf.version), SVs_TEMP))(*++sp = (Perl_newSVpvn_flags( buf.version,strlen(buf.version ),0x00080000))); |
4427 | PUSHs(newSVpvn_flags(buf.machine, strlen(buf.machine), SVs_TEMP))(*++sp = (Perl_newSVpvn_flags( buf.machine,strlen(buf.machine ),0x00080000))); |
4428 | } |
4429 | #else |
4430 | uname((char *) 0); /* A stub to call not_here(). */ |
4431 | #endif |
4432 | #line 4433 "POSIX.c" |
4433 | PUTBACKPL_stack_sp = sp; |
4434 | return; |
4435 | } |
4436 | } |
4437 | |
4438 | |
4439 | XS_EUPXS(XS_POSIX_write)static void XS_POSIX_write( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4440 | XS_EUPXS(XS_POSIX_write)static void XS_POSIX_write( CV* cv __attribute__((unused))) |
4441 | { |
4442 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4443 | if (items != 3) |
4444 | croak_xs_usagePerl_croak_xs_usage(cv, "fd, buffer, nbytes"); |
4445 | { |
4446 | POSIX__Fd fd; |
4447 | char * buffer = (char *)SvPV_nolen(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((PL_stack_base[ax + (1)])->sv_u.svu_pv ) : Perl_sv_2pv_flags( PL_stack_base[ax + (1)],0,2)) |
4448 | ; |
4449 | size_t nbytes = (size_t)SvUV(ST(2))((((PL_stack_base[ax + (2)])->sv_flags & (0x00000100|0x80000000 |0x00200000)) == (0x00000100|0x80000000)) ? ((XPVUV*) (PL_stack_base [ax + (2)])->sv_any)->xuv_u.xivu_uv : Perl_sv_2uv_flags ( PL_stack_base[ax + (2)],2)) |
4450 | ; |
4451 | SysRet RETVAL; |
4452 | |
4453 | if ((fd = (int)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2))) < 0) { |
4454 | SETERRNO(EBADF, RMS_IFI)((*__errno()) = (9)); |
4455 | XSRETURN_IV(-1)do { (PL_stack_base[ax + (0)] = Perl_sv_2mortal( Perl_newSViv ( -1)) ); do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
4456 | } |
4457 | ; |
4458 | |
4459 | RETVAL = write(fd, buffer, nbytes); |
4460 | { |
4461 | SV * RETVALSV; |
4462 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
4463 | if (RETVAL != -1) { |
4464 | if (RETVAL == 0) |
4465 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
4466 | else |
4467 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
4468 | } |
4469 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
4470 | } |
4471 | } |
4472 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
4473 | } |
4474 | |
4475 | |
4476 | XS_EUPXS(XS_POSIX_abort)static void XS_POSIX_abort( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4477 | XS_EUPXS(XS_POSIX_abort)static void XS_POSIX_abort( CV* cv __attribute__((unused))) |
4478 | { |
4479 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4480 | if (items != 0) |
4481 | croak_xs_usagePerl_croak_xs_usage(cv, ""); |
4482 | { |
4483 | |
4484 | abort(); |
4485 | } |
4486 | XSRETURN_EMPTYdo { do { const IV tmpXSoff = (0); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
4487 | } |
4488 | |
4489 | #if defined(HAS_MBRLEN) && (defined(USE_ITHREADS) || ! defined(HAS_MBLEN)) |
4490 | # define USE_MBRLEN |
4491 | #else |
4492 | # undef USE_MBRLEN |
4493 | #endif |
4494 | |
4495 | XS_EUPXS(XS_POSIX_mblen)static void XS_POSIX_mblen( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4496 | XS_EUPXS(XS_POSIX_mblen)static void XS_POSIX_mblen( CV* cv __attribute__((unused))) |
4497 | { |
4498 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4499 | if (items < 1 || items > 2) |
4500 | croak_xs_usagePerl_croak_xs_usage(cv, "s, n = ~0"); |
4501 | { |
4502 | SV * s = ST(0)PL_stack_base[ax + (0)] |
4503 | ; |
4504 | size_t n; |
4505 | int RETVAL; |
4506 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
4507 | |
4508 | if (items < 2) |
4509 | n = ~0; |
4510 | else { |
4511 | n = (size_t)SvUV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x80000000 |0x00200000)) == (0x00000100|0x80000000)) ? ((XPVUV*) (PL_stack_base [ax + (1)])->sv_any)->xuv_u.xivu_uv : Perl_sv_2uv_flags ( PL_stack_base[ax + (1)],2)) |
4512 | ; |
4513 | } |
4514 | #line 3354 "POSIX.xs" |
4515 | errno(*__errno()) = 0; |
4516 | |
4517 | SvGETMAGIC(s)((void)(__builtin_expect(((((s)->sv_flags & 0x00200000 )) ? (_Bool)1 : (_Bool)0),(0)) && Perl_mg_get( s))); |
4518 | if (! SvOK(s)((s)->sv_flags & (0x00000100|0x00000200|0x00000400|0x00000800 | 0x00001000|0x00002000|0x00004000|0x00008000))) { |
4519 | #ifdef USE_MBRLEN |
4520 | /* Initialize the shift state in PL_mbrlen_ps. The Standard says |
4521 | * that should be all zeros. */ |
4522 | memzero(&PL_mbrlen_ps, sizeof(PL_mbrlen_ps))memset(&PL_mbrlen_ps,0,sizeof(PL_mbrlen_ps)); |
4523 | RETVAL = 0; |
4524 | #else |
4525 | LOCALE_LOCK; |
4526 | RETVAL = mblen(NULL((void*)0), 0); |
4527 | LOCALE_UNLOCK; |
4528 | #endif |
4529 | } |
4530 | else { /* Not resetting state */ |
4531 | SV * byte_s = sv_2mortal(newSVsv_nomg(s))Perl_sv_2mortal( Perl_newSVsv_flags( (s),16)); |
4532 | if (! sv_utf8_downgrade_nomg(byte_s, TRUE)Perl_sv_utf8_downgrade_flags( byte_s,(1),0)) { |
4533 | SETERRNO(EINVAL, LIB_INVARG)((*__errno()) = (22)); |
4534 | RETVAL = -1; |
4535 | } |
4536 | else { |
4537 | size_t len; |
4538 | char * string = SvPV(byte_s, len)((((byte_s)->sv_flags & (0x00000400|0x00200000)) == 0x00000400 ) ? ((len = ((XPV*) (byte_s)->sv_any)->xpv_cur), ((byte_s )->sv_u.svu_pv)) : Perl_sv_2pv_flags( byte_s,&len,2)); |
4539 | if (n < len) len = n; |
4540 | #ifdef USE_MBRLEN |
4541 | RETVAL = (SSize_tssize_t) mbrlen(string, len, &PL_mbrlen_ps); |
4542 | if (RETVAL < 0) RETVAL = -1; /* Use mblen() ret code for |
4543 | transparency */ |
4544 | #else |
4545 | /* Locking prevents races, but locales can be switched out |
4546 | * without locking, so this isn't a cure all */ |
4547 | LOCALE_LOCK; |
4548 | RETVAL = mblen(string, len); |
4549 | LOCALE_UNLOCK; |
4550 | #endif |
4551 | } |
4552 | } |
4553 | #line 4554 "POSIX.c" |
4554 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHi((IV)RETVAL)do { do { IV TARGi_iv = (IV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000)|0x80000000)) == SVt_IV) & (1 ? !(((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool) 0),(0))) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0) ,(1))) { ((void)0); (targ)->sv_flags |= (0x00000100|0x00001000 ); targ->sv_u.svu_iv = TARGi_iv; } else Perl_sv_setiv_mg( targ ,TARGi_iv); } while (0); (*++sp = (targ)); } while (0); |
4555 | } |
4556 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
4557 | } |
4558 | |
4559 | #if defined(HAS_MBRTOWC) && (defined(USE_ITHREADS) || ! defined(HAS_MBTOWC)) |
4560 | # define USE_MBRTOWC |
4561 | #else |
4562 | # undef USE_MBRTOWC |
4563 | #endif |
4564 | |
4565 | XS_EUPXS(XS_POSIX_mbtowc)static void XS_POSIX_mbtowc( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4566 | XS_EUPXS(XS_POSIX_mbtowc)static void XS_POSIX_mbtowc( CV* cv __attribute__((unused))) |
4567 | { |
4568 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4569 | if (items < 2 || items > 3) |
4570 | croak_xs_usagePerl_croak_xs_usage(cv, "pwc, s, n = ~0"); |
4571 | { |
4572 | SV * pwc = ST(0)PL_stack_base[ax + (0)] |
4573 | ; |
4574 | SV * s = ST(1)PL_stack_base[ax + (1)] |
4575 | ; |
4576 | size_t n; |
4577 | int RETVAL; |
4578 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
4579 | |
4580 | if (items < 3) |
4581 | n = ~0; |
4582 | else { |
4583 | n = (size_t)SvUV(ST(2))((((PL_stack_base[ax + (2)])->sv_flags & (0x00000100|0x80000000 |0x00200000)) == (0x00000100|0x80000000)) ? ((XPVUV*) (PL_stack_base [ax + (2)])->sv_any)->xuv_u.xivu_uv : Perl_sv_2uv_flags ( PL_stack_base[ax + (2)],2)) |
4584 | ; |
4585 | } |
4586 | #line 3407 "POSIX.xs" |
4587 | errno(*__errno()) = 0; |
4588 | SvGETMAGIC(s)((void)(__builtin_expect(((((s)->sv_flags & 0x00200000 )) ? (_Bool)1 : (_Bool)0),(0)) && Perl_mg_get( s))); |
4589 | if (! SvOK(s)((s)->sv_flags & (0x00000100|0x00000200|0x00000400|0x00000800 | 0x00001000|0x00002000|0x00004000|0x00008000))) { /* Initialize state */ |
4590 | #ifdef USE_MBRTOWC |
4591 | /* Initialize the shift state to all zeros in PL_mbrtowc_ps. */ |
4592 | memzero(&PL_mbrtowc_ps, sizeof(PL_mbrtowc_ps))memset(&PL_mbrtowc_ps,0,sizeof(PL_mbrtowc_ps)); |
4593 | RETVAL = 0; |
4594 | #else |
4595 | LOCALE_LOCK; |
4596 | RETVAL = mbtowc(NULL((void*)0), NULL((void*)0), 0); |
4597 | LOCALE_UNLOCK; |
4598 | #endif |
4599 | } |
4600 | else { /* Not resetting state */ |
4601 | wchar_t wc; |
4602 | SV * byte_s = sv_2mortal(newSVsv_nomg(s))Perl_sv_2mortal( Perl_newSVsv_flags( (s),16)); |
4603 | if (! sv_utf8_downgrade_nomg(byte_s, TRUE)Perl_sv_utf8_downgrade_flags( byte_s,(1),0)) { |
4604 | SETERRNO(EINVAL, LIB_INVARG)((*__errno()) = (22)); |
4605 | RETVAL = -1; |
4606 | } |
4607 | else { |
4608 | size_t len; |
4609 | char * string = SvPV(byte_s, len)((((byte_s)->sv_flags & (0x00000400|0x00200000)) == 0x00000400 ) ? ((len = ((XPV*) (byte_s)->sv_any)->xpv_cur), ((byte_s )->sv_u.svu_pv)) : Perl_sv_2pv_flags( byte_s,&len,2)); |
4610 | if (n < len) len = n; |
4611 | #ifdef USE_MBRTOWC |
4612 | RETVAL = (SSize_tssize_t) mbrtowc(&wc, string, len, &PL_mbrtowc_ps); |
4613 | #else |
4614 | /* Locking prevents races, but locales can be switched out |
4615 | * without locking, so this isn't a cure all */ |
4616 | LOCALE_LOCK; |
4617 | RETVAL = mbtowc(&wc, string, len); |
4618 | LOCALE_UNLOCK; |
4619 | #endif |
4620 | if (RETVAL >= 0) { |
4621 | sv_setiv_mg(pwc, wc)Perl_sv_setiv_mg( pwc,wc); |
4622 | } |
4623 | else { /* Use mbtowc() ret code for transparency */ |
4624 | RETVAL = -1; |
4625 | } |
4626 | } |
4627 | } |
4628 | #line 4629 "POSIX.c" |
4629 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHi((IV)RETVAL)do { do { IV TARGi_iv = (IV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000)|0x80000000)) == SVt_IV) & (1 ? !(((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool) 0),(0))) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0) ,(1))) { ((void)0); (targ)->sv_flags |= (0x00000100|0x00001000 ); targ->sv_u.svu_iv = TARGi_iv; } else Perl_sv_setiv_mg( targ ,TARGi_iv); } while (0); (*++sp = (targ)); } while (0); |
4630 | } |
4631 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
4632 | } |
4633 | |
4634 | #if defined(HAS_WCRTOMB) && (defined(USE_ITHREADS) || ! defined(HAS_WCTOMB)) |
4635 | # define USE_WCRTOMB |
4636 | #else |
4637 | # undef USE_WCRTOMB |
4638 | #endif |
4639 | |
4640 | XS_EUPXS(XS_POSIX_wctomb)static void XS_POSIX_wctomb( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4641 | XS_EUPXS(XS_POSIX_wctomb)static void XS_POSIX_wctomb( CV* cv __attribute__((unused))) |
4642 | { |
4643 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4644 | if (items != 2) |
4645 | croak_xs_usagePerl_croak_xs_usage(cv, "s, wchar"); |
4646 | { |
4647 | SV * s = ST(0)PL_stack_base[ax + (0)] |
4648 | ; |
4649 | wchar_t wchar = (wchar_t)SvIV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (1)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 1)],2)) |
4650 | ; |
4651 | int RETVAL; |
4652 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
4653 | #line 3462 "POSIX.xs" |
4654 | errno(*__errno()) = 0; |
4655 | SvGETMAGIC(s)((void)(__builtin_expect(((((s)->sv_flags & 0x00200000 )) ? (_Bool)1 : (_Bool)0),(0)) && Perl_mg_get( s))); |
4656 | if (s == &PL_sv_undef(PL_sv_immortals[1])) { |
4657 | #ifdef USE_WCRTOMB |
4658 | /* The man pages khw looked at are in agreement that this works. |
4659 | * But probably memzero would too */ |
4660 | RETVAL = wcrtomb(NULL((void*)0), L'\0', &PL_wcrtomb_ps); |
4661 | #else |
4662 | LOCALE_LOCK; |
4663 | RETVAL = wctomb(NULL((void*)0), L'\0'); |
4664 | LOCALE_UNLOCK; |
4665 | #endif |
4666 | } |
4667 | else { /* Not resetting state */ |
4668 | char buffer[MB_LEN_MAX4]; |
4669 | #ifdef USE_WCRTOMB |
4670 | RETVAL = wcrtomb(buffer, wchar, &PL_wcrtomb_ps); |
4671 | #else |
4672 | /* Locking prevents races, but locales can be switched out without |
4673 | * locking, so this isn't a cure all */ |
4674 | LOCALE_LOCK; |
4675 | RETVAL = wctomb(buffer, wchar); |
4676 | LOCALE_UNLOCK; |
4677 | #endif |
4678 | if (RETVAL >= 0) { |
4679 | sv_setpvn_mg(s, buffer, RETVAL)Perl_sv_setpvn_mg( s,buffer,RETVAL); |
4680 | } |
4681 | } |
4682 | #line 4683 "POSIX.c" |
4683 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHi((IV)RETVAL)do { do { IV TARGi_iv = (IV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000)|0x80000000)) == SVt_IV) & (1 ? !(((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool) 0),(0))) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0) ,(1))) { ((void)0); (targ)->sv_flags |= (0x00000100|0x00001000 ); targ->sv_u.svu_iv = TARGi_iv; } else Perl_sv_setiv_mg( targ ,TARGi_iv); } while (0); (*++sp = (targ)); } while (0); |
4684 | } |
4685 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
4686 | } |
4687 | |
4688 | |
4689 | XS_EUPXS(XS_POSIX_strcoll)static void XS_POSIX_strcoll( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4690 | XS_EUPXS(XS_POSIX_strcoll)static void XS_POSIX_strcoll( CV* cv __attribute__((unused))) |
4691 | { |
4692 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4693 | if (items != 2) |
4694 | croak_xs_usagePerl_croak_xs_usage(cv, "s1, s2"); |
4695 | { |
4696 | char * s1 = (char *)SvPV_nolen(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((PL_stack_base[ax + (0)])->sv_u.svu_pv ) : Perl_sv_2pv_flags( PL_stack_base[ax + (0)],0,2)) |
4697 | ; |
4698 | char * s2 = (char *)SvPV_nolen(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((PL_stack_base[ax + (1)])->sv_u.svu_pv ) : Perl_sv_2pv_flags( PL_stack_base[ax + (1)],0,2)) |
4699 | ; |
4700 | int RETVAL; |
4701 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
4702 | |
4703 | RETVAL = strcoll(s1, s2); |
4704 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHi((IV)RETVAL)do { do { IV TARGi_iv = (IV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000)|0x80000000)) == SVt_IV) & (1 ? !(((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool) 0),(0))) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0) ,(1))) { ((void)0); (targ)->sv_flags |= (0x00000100|0x00001000 ); targ->sv_u.svu_iv = TARGi_iv; } else Perl_sv_setiv_mg( targ ,TARGi_iv); } while (0); (*++sp = (targ)); } while (0); |
4705 | } |
4706 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
4707 | } |
4708 | |
4709 | |
4710 | XS_EUPXS(XS_POSIX_strtod)static void XS_POSIX_strtod( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4711 | XS_EUPXS(XS_POSIX_strtod)static void XS_POSIX_strtod( CV* cv __attribute__((unused))) |
4712 | { |
4713 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4714 | if (items != 1) |
4715 | croak_xs_usagePerl_croak_xs_usage(cv, "str"); |
4716 | PERL_UNUSED_VAR(ax)((void)sizeof(ax)); /* -Wall */ |
4717 | SPsp -= items; |
4718 | { |
4719 | char * str = (char *)SvPV_nolen(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((PL_stack_base[ax + (0)])->sv_u.svu_pv ) : Perl_sv_2pv_flags( PL_stack_base[ax + (0)],0,2)) |
4720 | ; |
4721 | #line 3502 "POSIX.xs" |
4722 | double num; |
4723 | char *unparsed; |
4724 | #line 4725 "POSIX.c" |
4725 | #line 3505 "POSIX.xs" |
4726 | DECLARATION_FOR_LC_NUMERIC_MANIPULATIONstruct Perl___notused_struct; |
4727 | STORE_LC_NUMERIC_FORCE_TO_UNDERLYING(); |
4728 | num = strtod(str, &unparsed); |
4729 | RESTORE_LC_NUMERIC(); |
4730 | PUSHs(sv_2mortal(newSVnv(num)))(*++sp = (Perl_sv_2mortal( Perl_newSVnv( num)))); |
4731 | if (GIMME_VPerl_gimme_V() == G_ARRAY3) { |
4732 | EXTEND(SP, 1)do { (void)0; if (__builtin_expect(((((1) < 0 || PL_stack_max - (sp) < (1))) ? (_Bool)1 : (_Bool)0),(0))) { sp = Perl_stack_grow ( sp,sp,(sizeof(1) > sizeof(ssize_t) && ((ssize_t) (1) != (1)) ? -1 : (1))); ((void)sizeof(sp)); } } while (0); |
4733 | if (unparsed) |
4734 | PUSHs(sv_2mortal(newSViv(strlen(unparsed))))(*++sp = (Perl_sv_2mortal( Perl_newSViv( strlen(unparsed))))); |
4735 | else |
4736 | PUSHs(&PL_sv_undef)(*++sp = (&(PL_sv_immortals[1]))); |
4737 | } |
4738 | #line 4739 "POSIX.c" |
4739 | PUTBACKPL_stack_sp = sp; |
4740 | return; |
4741 | } |
4742 | } |
4743 | |
4744 | #ifdef HAS_STRTOLD |
4745 | #define XSubPPtmpAAAA1 1 |
4746 | |
4747 | |
4748 | XS_EUPXS(XS_POSIX_strtold)static void XS_POSIX_strtold( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4749 | XS_EUPXS(XS_POSIX_strtold)static void XS_POSIX_strtold( CV* cv __attribute__((unused))) |
4750 | { |
4751 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4752 | if (items != 1) |
4753 | croak_xs_usagePerl_croak_xs_usage(cv, "str"); |
4754 | PERL_UNUSED_VAR(ax)((void)sizeof(ax)); /* -Wall */ |
4755 | SPsp -= items; |
4756 | { |
4757 | char * str = (char *)SvPV_nolen(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((PL_stack_base[ax + (0)])->sv_u.svu_pv ) : Perl_sv_2pv_flags( PL_stack_base[ax + (0)],0,2)) |
4758 | ; |
4759 | #line 3524 "POSIX.xs" |
4760 | long double num; |
4761 | char *unparsed; |
4762 | #line 4763 "POSIX.c" |
4763 | #line 3527 "POSIX.xs" |
4764 | DECLARATION_FOR_LC_NUMERIC_MANIPULATIONstruct Perl___notused_struct; |
4765 | STORE_LC_NUMERIC_FORCE_TO_UNDERLYING(); |
4766 | num = strtold(str, &unparsed); |
4767 | RESTORE_LC_NUMERIC(); |
4768 | PUSHs(sv_2mortal(newSVnv(num)))(*++sp = (Perl_sv_2mortal( Perl_newSVnv( num)))); |
4769 | if (GIMME_VPerl_gimme_V() == G_ARRAY3) { |
4770 | EXTEND(SP, 1)do { (void)0; if (__builtin_expect(((((1) < 0 || PL_stack_max - (sp) < (1))) ? (_Bool)1 : (_Bool)0),(0))) { sp = Perl_stack_grow ( sp,sp,(sizeof(1) > sizeof(ssize_t) && ((ssize_t) (1) != (1)) ? -1 : (1))); ((void)sizeof(sp)); } } while (0); |
4771 | if (unparsed) |
4772 | PUSHs(sv_2mortal(newSViv(strlen(unparsed))))(*++sp = (Perl_sv_2mortal( Perl_newSViv( strlen(unparsed))))); |
4773 | else |
4774 | PUSHs(&PL_sv_undef)(*++sp = (&(PL_sv_immortals[1]))); |
4775 | } |
4776 | #line 4777 "POSIX.c" |
4777 | PUTBACKPL_stack_sp = sp; |
4778 | return; |
4779 | } |
4780 | } |
4781 | |
4782 | #endif |
4783 | |
4784 | XS_EUPXS(XS_POSIX_strtol)static void XS_POSIX_strtol( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4785 | XS_EUPXS(XS_POSIX_strtol)static void XS_POSIX_strtol( CV* cv __attribute__((unused))) |
4786 | { |
4787 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4788 | if (items < 1 || items > 2) |
4789 | croak_xs_usagePerl_croak_xs_usage(cv, "str, base = 0"); |
4790 | PERL_UNUSED_VAR(ax)((void)sizeof(ax)); /* -Wall */ |
4791 | SPsp -= items; |
4792 | { |
4793 | char * str = (char *)SvPV_nolen(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((PL_stack_base[ax + (0)])->sv_u.svu_pv ) : Perl_sv_2pv_flags( PL_stack_base[ax + (0)],0,2)) |
4794 | ; |
4795 | int base; |
4796 | #line 3547 "POSIX.xs" |
4797 | long num; |
4798 | char *unparsed; |
4799 | #line 4800 "POSIX.c" |
4800 | |
4801 | if (items < 2) |
4802 | base = 0; |
4803 | else { |
4804 | base = (int)SvIV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (1)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 1)],2)) |
4805 | ; |
4806 | } |
4807 | #line 3550 "POSIX.xs" |
4808 | if (base == 0 || inRANGE(base, 2, 36)( ( (sizeof(base) == sizeof(U8)) ? ( (((U64) (((((U8) (base)) )) - (((2)) | 0))) <= (((U64) ((((36) - (2))) | 0))))) : ( sizeof(base) == sizeof(U32)) ? ( (((U64) (((((U32) (base)))) - (((2)) | 0))) <= (((U64) ((((36) - (2))) | 0))))) : ( ( ( ((U64) (((((U64) (base)))) - (((2)) | 0))) <= (((U64) (((( 36) - (2))) | 0))))))))) { |
4809 | num = strtol(str, &unparsed, base); |
4810 | #if IVSIZE8 < LONGSIZE8 |
4811 | if (num < IV_MIN(-((IV) ((~(UV)0) >> 1)) - ((3 & -1) == 3)) || num > IV_MAX((IV) ((~(UV)0) >> 1))) |
4812 | PUSHs(sv_2mortal(newSVnv((double)num)))(*++sp = (Perl_sv_2mortal( Perl_newSVnv( (double)num)))); |
4813 | else |
4814 | #endif |
4815 | PUSHs(sv_2mortal(newSViv((IV)num)))(*++sp = (Perl_sv_2mortal( Perl_newSViv( (IV)num)))); |
4816 | if (GIMME_VPerl_gimme_V() == G_ARRAY3) { |
4817 | EXTEND(SP, 1)do { (void)0; if (__builtin_expect(((((1) < 0 || PL_stack_max - (sp) < (1))) ? (_Bool)1 : (_Bool)0),(0))) { sp = Perl_stack_grow ( sp,sp,(sizeof(1) > sizeof(ssize_t) && ((ssize_t) (1) != (1)) ? -1 : (1))); ((void)sizeof(sp)); } } while (0); |
4818 | if (unparsed) |
4819 | PUSHs(sv_2mortal(newSViv(strlen(unparsed))))(*++sp = (Perl_sv_2mortal( Perl_newSViv( strlen(unparsed))))); |
4820 | else |
4821 | PUSHs(&PL_sv_undef)(*++sp = (&(PL_sv_immortals[1]))); |
4822 | } |
4823 | } else { |
4824 | SETERRNO(EINVAL, LIB_INVARG)((*__errno()) = (22)); |
4825 | PUSHs(&PL_sv_undef)(*++sp = (&(PL_sv_immortals[1]))); |
4826 | if (GIMME_VPerl_gimme_V() == G_ARRAY3) { |
4827 | EXTEND(SP, 1)do { (void)0; if (__builtin_expect(((((1) < 0 || PL_stack_max - (sp) < (1))) ? (_Bool)1 : (_Bool)0),(0))) { sp = Perl_stack_grow ( sp,sp,(sizeof(1) > sizeof(ssize_t) && ((ssize_t) (1) != (1)) ? -1 : (1))); ((void)sizeof(sp)); } } while (0); |
4828 | PUSHs(&PL_sv_undef)(*++sp = (&(PL_sv_immortals[1]))); |
4829 | } |
4830 | } |
4831 | #line 4832 "POSIX.c" |
4832 | PUTBACKPL_stack_sp = sp; |
4833 | return; |
4834 | } |
4835 | } |
4836 | |
4837 | |
4838 | XS_EUPXS(XS_POSIX_strtoul)static void XS_POSIX_strtoul( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4839 | XS_EUPXS(XS_POSIX_strtoul)static void XS_POSIX_strtoul( CV* cv __attribute__((unused))) |
4840 | { |
4841 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4842 | if (items < 1 || items > 2) |
4843 | croak_xs_usagePerl_croak_xs_usage(cv, "str, base = 0"); |
4844 | PERL_UNUSED_VAR(ax)((void)sizeof(ax)); /* -Wall */ |
4845 | SPsp -= items; |
4846 | { |
4847 | const char * str = (const char *)SvPV_nolen(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((PL_stack_base[ax + (0)])->sv_u.svu_pv ) : Perl_sv_2pv_flags( PL_stack_base[ax + (0)],0,2)) |
4848 | ; |
4849 | int base; |
4850 | #line 3579 "POSIX.xs" |
4851 | unsigned long num; |
4852 | char *unparsed = NULL((void*)0); |
4853 | #line 4854 "POSIX.c" |
4854 | |
4855 | if (items < 2) |
4856 | base = 0; |
4857 | else { |
4858 | base = (int)SvIV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (1)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 1)],2)) |
4859 | ; |
4860 | } |
4861 | #line 3582 "POSIX.xs" |
4862 | PERL_UNUSED_VAR(str)((void)sizeof(str)); |
4863 | PERL_UNUSED_VAR(base)((void)sizeof(base)); |
4864 | if (base == 0 || inRANGE(base, 2, 36)( ( (sizeof(base) == sizeof(U8)) ? ( (((U64) (((((U8) (base)) )) - (((2)) | 0))) <= (((U64) ((((36) - (2))) | 0))))) : ( sizeof(base) == sizeof(U32)) ? ( (((U64) (((((U32) (base)))) - (((2)) | 0))) <= (((U64) ((((36) - (2))) | 0))))) : ( ( ( ((U64) (((((U64) (base)))) - (((2)) | 0))) <= (((U64) (((( 36) - (2))) | 0))))))))) { |
4865 | num = strtoul(str, &unparsed, base); |
4866 | #if IVSIZE8 <= LONGSIZE8 |
4867 | if (num > IV_MAX((IV) ((~(UV)0) >> 1))) |
4868 | PUSHs(sv_2mortal(newSVnv((double)num)))(*++sp = (Perl_sv_2mortal( Perl_newSVnv( (double)num)))); |
4869 | else |
4870 | #endif |
4871 | PUSHs(sv_2mortal(newSViv((IV)num)))(*++sp = (Perl_sv_2mortal( Perl_newSViv( (IV)num)))); |
4872 | if (GIMME_VPerl_gimme_V() == G_ARRAY3) { |
4873 | EXTEND(SP, 1)do { (void)0; if (__builtin_expect(((((1) < 0 || PL_stack_max - (sp) < (1))) ? (_Bool)1 : (_Bool)0),(0))) { sp = Perl_stack_grow ( sp,sp,(sizeof(1) > sizeof(ssize_t) && ((ssize_t) (1) != (1)) ? -1 : (1))); ((void)sizeof(sp)); } } while (0); |
4874 | if (unparsed) |
4875 | PUSHs(sv_2mortal(newSViv(strlen(unparsed))))(*++sp = (Perl_sv_2mortal( Perl_newSViv( strlen(unparsed))))); |
4876 | else |
4877 | PUSHs(&PL_sv_undef)(*++sp = (&(PL_sv_immortals[1]))); |
4878 | } |
4879 | } else { |
4880 | SETERRNO(EINVAL, LIB_INVARG)((*__errno()) = (22)); |
4881 | PUSHs(&PL_sv_undef)(*++sp = (&(PL_sv_immortals[1]))); |
4882 | if (GIMME_VPerl_gimme_V() == G_ARRAY3) { |
4883 | EXTEND(SP, 1)do { (void)0; if (__builtin_expect(((((1) < 0 || PL_stack_max - (sp) < (1))) ? (_Bool)1 : (_Bool)0),(0))) { sp = Perl_stack_grow ( sp,sp,(sizeof(1) > sizeof(ssize_t) && ((ssize_t) (1) != (1)) ? -1 : (1))); ((void)sizeof(sp)); } } while (0); |
4884 | PUSHs(&PL_sv_undef)(*++sp = (&(PL_sv_immortals[1]))); |
4885 | } |
4886 | } |
4887 | #line 4888 "POSIX.c" |
4888 | PUTBACKPL_stack_sp = sp; |
4889 | return; |
4890 | } |
4891 | } |
4892 | |
4893 | |
4894 | XS_EUPXS(XS_POSIX_strxfrm)static void XS_POSIX_strxfrm( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4895 | XS_EUPXS(XS_POSIX_strxfrm)static void XS_POSIX_strxfrm( CV* cv __attribute__((unused))) |
4896 | { |
4897 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4898 | if (items != 1) |
4899 | croak_xs_usagePerl_croak_xs_usage(cv, "src"); |
4900 | { |
4901 | SV * src = ST(0)PL_stack_base[ax + (0)] |
4902 | ; |
4903 | #line 3612 "POSIX.xs" |
4904 | { |
4905 | STRLEN srclen; |
4906 | STRLEN dstlen; |
4907 | STRLEN buflen; |
4908 | char *p = SvPV(src,srclen)((((src)->sv_flags & (0x00000400|0x00200000)) == 0x00000400 ) ? ((srclen = ((XPV*) (src)->sv_any)->xpv_cur), ((src) ->sv_u.svu_pv)) : Perl_sv_2pv_flags( src,&srclen,2)); |
4909 | srclen++; |
4910 | buflen = srclen * 4 + 1; |
4911 | ST(0)PL_stack_base[ax + (0)] = sv_2mortal(newSV(buflen))Perl_sv_2mortal( Perl_newSV( buflen)); |
4912 | dstlen = strxfrm(SvPVX(ST(0))((PL_stack_base[ax + (0)])->sv_u.svu_pv), p, (size_t)buflen); |
4913 | if (dstlen >= buflen) { |
4914 | dstlen++; |
4915 | SvGROW(ST(0), dstlen)(((PL_stack_base[ax + (0)])->sv_flags & 0x10000000) || ((XPV*) (PL_stack_base[ax + (0)])->sv_any)->xpv_len_u. xpvlenu_len < (dstlen) ? Perl_sv_grow( PL_stack_base[ax + ( 0)],dstlen) : ((PL_stack_base[ax + (0)])->sv_u.svu_pv)); |
4916 | strxfrm(SvPVX(ST(0))((PL_stack_base[ax + (0)])->sv_u.svu_pv), p, (size_t)dstlen); |
4917 | dstlen--; |
4918 | } |
4919 | SvCUR_set(ST(0), dstlen)do { ((void)0); ((void)0); ((void)0); (((XPV*) (PL_stack_base [ax + (0)])->sv_any)->xpv_cur = (dstlen)); } while (0); |
4920 | SvPOK_only(ST(0))( (PL_stack_base[ax + (0)])->sv_flags &= ~((0x00000100 |0x00000200|0x00000400|0x00000800| 0x00001000|0x00002000|0x00004000 |0x00008000)| 0x80000000|0x20000000), (PL_stack_base[ax + (0) ])->sv_flags |= (0x00000400|0x00004000)); |
4921 | } |
4922 | #line 4923 "POSIX.c" |
4923 | } |
4924 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
4925 | } |
4926 | |
4927 | |
4928 | XS_EUPXS(XS_POSIX_mkfifo)static void XS_POSIX_mkfifo( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4929 | XS_EUPXS(XS_POSIX_mkfifo)static void XS_POSIX_mkfifo( CV* cv __attribute__((unused))) |
4930 | { |
4931 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4932 | dXSI32I32 ix = ((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))-> xcv_start_u.xcv_xsubany.any_i32; |
4933 | if (items != 2) |
4934 | croak_xs_usagePerl_croak_xs_usage(cv, "filename, mode"); |
4935 | { |
4936 | char * filename = (char *)SvPV_nolen(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((PL_stack_base[ax + (0)])->sv_u.svu_pv ) : Perl_sv_2pv_flags( PL_stack_base[ax + (0)],0,2)) |
4937 | ; |
4938 | Mode_tmode_t mode = (Mode_tmode_t)SvNV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (1)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (1 )],2)) |
4939 | ; |
4940 | SysRet RETVAL; |
4941 | #line 3638 "POSIX.xs" |
4942 | if(ix) { |
4943 | RETVAL = access(filename, mode); |
4944 | } else { |
4945 | TAINT_PROPER("mkfifo")if (__builtin_expect(((PL_tainting) ? (_Bool)1 : (_Bool)0),(0 ))) { Perl_taint_proper( ((void*)0),"mkfifo"); }; |
4946 | RETVAL = mkfifo(filename, mode); |
4947 | } |
4948 | #line 4949 "POSIX.c" |
4949 | { |
4950 | SV * RETVALSV; |
4951 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
4952 | if (RETVAL != -1) { |
4953 | if (RETVAL == 0) |
4954 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
4955 | else |
4956 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
4957 | } |
4958 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
4959 | } |
4960 | } |
4961 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
4962 | } |
4963 | |
4964 | |
4965 | XS_EUPXS(XS_POSIX_tcdrain)static void XS_POSIX_tcdrain( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
4966 | XS_EUPXS(XS_POSIX_tcdrain)static void XS_POSIX_tcdrain( CV* cv __attribute__((unused))) |
4967 | { |
4968 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
4969 | dXSI32I32 ix = ((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))-> xcv_start_u.xcv_xsubany.any_i32; |
4970 | if (items != 1) |
4971 | croak_xs_usagePerl_croak_xs_usage(cv, "fd"); |
4972 | { |
4973 | POSIX__Fd fd; |
4974 | SysRet RETVAL; |
4975 | |
4976 | if ((fd = (int)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2))) < 0) { |
4977 | SETERRNO(EBADF, RMS_IFI)((*__errno()) = (9)); |
4978 | XSRETURN_IV(-1)do { (PL_stack_base[ax + (0)] = Perl_sv_2mortal( Perl_newSViv ( -1)) ); do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
4979 | } |
4980 | ; |
4981 | #line 3654 "POSIX.xs" |
4982 | if (fd >= 0) { |
4983 | RETVAL = ix == 1 ? close(fd) |
4984 | : (ix < 1 ? tcdrain(fd) : dup(fd)); |
4985 | } else { |
4986 | SETERRNO(EBADF,RMS_IFI)((*__errno()) = (9)); |
4987 | RETVAL = -1; |
4988 | } |
4989 | #line 4990 "POSIX.c" |
4990 | { |
4991 | SV * RETVALSV; |
4992 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
4993 | if (RETVAL != -1) { |
4994 | if (RETVAL == 0) |
4995 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
4996 | else |
4997 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
4998 | } |
4999 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
5000 | } |
5001 | } |
5002 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
5003 | } |
5004 | |
5005 | |
5006 | XS_EUPXS(XS_POSIX_tcflow)static void XS_POSIX_tcflow( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
5007 | XS_EUPXS(XS_POSIX_tcflow)static void XS_POSIX_tcflow( CV* cv __attribute__((unused))) |
5008 | { |
5009 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5010 | dXSI32I32 ix = ((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))-> xcv_start_u.xcv_xsubany.any_i32; |
5011 | if (items != 2) |
5012 | croak_xs_usagePerl_croak_xs_usage(cv, "fd, action"); |
5013 | { |
5014 | POSIX__Fd fd; |
5015 | int action = (int)SvIV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (1)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 1)],2)) |
5016 | ; |
5017 | SysRet RETVAL; |
5018 | |
5019 | if ((fd = (int)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2))) < 0) { |
5020 | SETERRNO(EBADF, RMS_IFI)((*__errno()) = (9)); |
5021 | XSRETURN_IV(-1)do { (PL_stack_base[ax + (0)] = Perl_sv_2mortal( Perl_newSViv ( -1)) ); do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
5022 | } |
5023 | ; |
5024 | #line 3673 "POSIX.xs" |
5025 | if (action >= 0) { |
5026 | RETVAL = ix == 1 ? tcflush(fd, action) |
5027 | : (ix < 1 ? tcflow(fd, action) : tcsendbreak(fd, action)); |
5028 | } else { |
5029 | SETERRNO(EINVAL,LIB_INVARG)((*__errno()) = (22)); |
5030 | RETVAL = -1; |
5031 | } |
5032 | #line 5033 "POSIX.c" |
5033 | { |
5034 | SV * RETVALSV; |
5035 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
5036 | if (RETVAL != -1) { |
5037 | if (RETVAL == 0) |
5038 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
5039 | else |
5040 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
5041 | } |
5042 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
5043 | } |
5044 | } |
5045 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
5046 | } |
5047 | |
5048 | |
5049 | XS_EUPXS(XS_POSIX_asctime)static void XS_POSIX_asctime( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
5050 | XS_EUPXS(XS_POSIX_asctime)static void XS_POSIX_asctime( CV* cv __attribute__((unused))) |
5051 | { |
5052 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5053 | dXSI32I32 ix = ((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))-> xcv_start_u.xcv_xsubany.any_i32; |
5054 | if (items < 6 || items > 9) |
5055 | croak_xs_usagePerl_croak_xs_usage(cv, "sec, min, hour, mday, mon, year, wday = 0, yday = 0, isdst = -1"); |
5056 | PERL_UNUSED_VAR(ax)((void)sizeof(ax)); /* -Wall */ |
5057 | SPsp -= items; |
5058 | { |
5059 | int sec = (int)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2)) |
5060 | ; |
5061 | int min = (int)SvIV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (1)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 1)],2)) |
5062 | ; |
5063 | int hour = (int)SvIV(ST(2))((((PL_stack_base[ax + (2)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (2)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 2)],2)) |
5064 | ; |
5065 | int mday = (int)SvIV(ST(3))((((PL_stack_base[ax + (3)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (3)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 3)],2)) |
5066 | ; |
5067 | int mon = (int)SvIV(ST(4))((((PL_stack_base[ax + (4)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (4)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 4)],2)) |
5068 | ; |
5069 | int year = (int)SvIV(ST(5))((((PL_stack_base[ax + (5)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (5)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 5)],2)) |
5070 | ; |
5071 | int wday; |
5072 | int yday; |
5073 | int isdst; |
5074 | |
5075 | if (items < 7) |
5076 | wday = 0; |
5077 | else { |
5078 | wday = (int)SvIV(ST(6))((((PL_stack_base[ax + (6)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (6)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 6)],2)) |
5079 | ; |
5080 | } |
5081 | |
5082 | if (items < 8) |
5083 | yday = 0; |
5084 | else { |
5085 | yday = (int)SvIV(ST(7))((((PL_stack_base[ax + (7)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (7)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 7)],2)) |
5086 | ; |
5087 | } |
5088 | |
5089 | if (items < 9) |
5090 | isdst = -1; |
5091 | else { |
5092 | isdst = (int)SvIV(ST(8))((((PL_stack_base[ax + (8)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (8)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 8)],2)) |
5093 | ; |
5094 | } |
5095 | #line 3697 "POSIX.xs" |
5096 | { |
5097 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
5098 | struct tm mytm; |
5099 | init_tm(&mytm)Perl_init_tm( &mytm); /* XXX workaround - see init_tm() in core util.c */ |
5100 | mytm.tm_sec = sec; |
5101 | mytm.tm_min = min; |
5102 | mytm.tm_hour = hour; |
5103 | mytm.tm_mday = mday; |
5104 | mytm.tm_mon = mon; |
5105 | mytm.tm_year = year; |
5106 | mytm.tm_wday = wday; |
5107 | mytm.tm_yday = yday; |
5108 | mytm.tm_isdst = isdst; |
5109 | if (ix) { |
5110 | const time_t result = mktime(&mytm); |
5111 | if (result == (time_t)-1) |
5112 | SvOK_off(TARG)( (targ)->sv_flags &= ~((0x00000100|0x00000200|0x00000400 |0x00000800| 0x00001000|0x00002000|0x00004000|0x00008000)| 0x80000000 |0x20000000), ((void)(((targ)->sv_flags & 0x02000000) && (Perl_sv_backoff(targ),0)))); |
5113 | else if (result == 0) |
5114 | sv_setpvs(TARG, "0 but true")Perl_sv_setpvn( targ, ("" "0 but true" ""), (sizeof("0 but true" )-1)); |
5115 | else |
5116 | sv_setiv(TARG, (IV)result)Perl_sv_setiv( targ,(IV)result); |
5117 | } else { |
5118 | sv_setpv(TARG, asctime(&mytm))Perl_sv_setpv( targ,asctime(&mytm)); |
5119 | } |
5120 | ST(0)PL_stack_base[ax + (0)] = TARGtarg; |
5121 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
5122 | } |
5123 | #line 5124 "POSIX.c" |
5124 | PUTBACKPL_stack_sp = sp; |
5125 | return; |
5126 | } |
5127 | } |
5128 | |
5129 | |
5130 | XS_EUPXS(XS_POSIX_clock)static void XS_POSIX_clock( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
5131 | XS_EUPXS(XS_POSIX_clock)static void XS_POSIX_clock( CV* cv __attribute__((unused))) |
5132 | { |
5133 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5134 | if (items != 0) |
5135 | croak_xs_usagePerl_croak_xs_usage(cv, ""); |
5136 | { |
5137 | long RETVAL; |
5138 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
5139 | |
5140 | RETVAL = clock(); |
5141 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHi((IV)RETVAL)do { do { IV TARGi_iv = (IV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000)|0x80000000)) == SVt_IV) & (1 ? !(((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool) 0),(0))) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0) ,(1))) { ((void)0); (targ)->sv_flags |= (0x00000100|0x00001000 ); targ->sv_u.svu_iv = TARGi_iv; } else Perl_sv_setiv_mg( targ ,TARGi_iv); } while (0); (*++sp = (targ)); } while (0); |
5142 | } |
5143 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
5144 | } |
5145 | |
5146 | |
5147 | XS_EUPXS(XS_POSIX_ctime)static void XS_POSIX_ctime( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
5148 | XS_EUPXS(XS_POSIX_ctime)static void XS_POSIX_ctime( CV* cv __attribute__((unused))) |
5149 | { |
5150 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5151 | if (items != 1) |
5152 | croak_xs_usagePerl_croak_xs_usage(cv, "time"); |
5153 | { |
5154 | Time_ttime_t time = (Time_ttime_t)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
5155 | ; |
5156 | char * RETVAL; |
5157 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
5158 | |
5159 | RETVAL = ctime(&time); |
5160 | sv_setpv(TARG, RETVAL)Perl_sv_setpv( targ,RETVAL); XSprePUSH(sp = PL_stack_base + ax - 1); PUSHTARGdo { do { if (__builtin_expect(((((targ)->sv_flags & 0x00400000 )) ? (_Bool)1 : (_Bool)0),(0))) Perl_mg_set( targ); } while ( 0); (*++sp = (targ)); } while (0); |
5161 | } |
5162 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
5163 | } |
5164 | |
5165 | |
5166 | XS_EUPXS(XS_POSIX_times)static void XS_POSIX_times( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
5167 | XS_EUPXS(XS_POSIX_times)static void XS_POSIX_times( CV* cv __attribute__((unused))) |
5168 | { |
5169 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5170 | if (items != 0) |
5171 | croak_xs_usagePerl_croak_xs_usage(cv, ""); |
5172 | PERL_UNUSED_VAR(ax)((void)sizeof(ax)); /* -Wall */ |
5173 | SPsp -= items; |
5174 | { |
5175 | #line 3735 "POSIX.xs" |
5176 | struct tms tms; |
5177 | clock_t realtime; |
5178 | realtime = times( &tms ); |
5179 | EXTEND(SP,5)do { (void)0; if (__builtin_expect(((((5) < 0 || PL_stack_max - (sp) < (5))) ? (_Bool)1 : (_Bool)0),(0))) { sp = Perl_stack_grow ( sp,sp,(sizeof(5) > sizeof(ssize_t) && ((ssize_t) (5) != (5)) ? -1 : (5))); ((void)sizeof(sp)); } } while (0); |
5180 | PUSHs( sv_2mortal( newSViv( (IV) realtime ) ) )(*++sp = (Perl_sv_2mortal( Perl_newSViv( (IV) realtime)))); |
5181 | PUSHs( sv_2mortal( newSViv( (IV) tms.tms_utime ) ) )(*++sp = (Perl_sv_2mortal( Perl_newSViv( (IV) tms.tms_utime)) )); |
5182 | PUSHs( sv_2mortal( newSViv( (IV) tms.tms_stime ) ) )(*++sp = (Perl_sv_2mortal( Perl_newSViv( (IV) tms.tms_stime)) )); |
5183 | PUSHs( sv_2mortal( newSViv( (IV) tms.tms_cutime ) ) )(*++sp = (Perl_sv_2mortal( Perl_newSViv( (IV) tms.tms_cutime) ))); |
5184 | PUSHs( sv_2mortal( newSViv( (IV) tms.tms_cstime ) ) )(*++sp = (Perl_sv_2mortal( Perl_newSViv( (IV) tms.tms_cstime) ))); |
5185 | #line 5186 "POSIX.c" |
5186 | PUTBACKPL_stack_sp = sp; |
5187 | return; |
5188 | } |
5189 | } |
5190 | |
5191 | |
5192 | XS_EUPXS(XS_POSIX_difftime)static void XS_POSIX_difftime( CV* cv __attribute__((unused)) ); /* prototype to pass -Wmissing-prototypes */ |
5193 | XS_EUPXS(XS_POSIX_difftime)static void XS_POSIX_difftime( CV* cv __attribute__((unused)) ) |
5194 | { |
5195 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5196 | if (items != 2) |
5197 | croak_xs_usagePerl_croak_xs_usage(cv, "time1, time2"); |
5198 | { |
5199 | Time_ttime_t time1 = (Time_ttime_t)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
5200 | ; |
5201 | Time_ttime_t time2 = (Time_ttime_t)SvNV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (1)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (1 )],2)) |
5202 | ; |
5203 | double RETVAL; |
5204 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
5205 | |
5206 | RETVAL = difftime(time1, time2); |
5207 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHn((double)RETVAL)do { do { NV TARGn_nv = (double)RETVAL; if (__builtin_expect( (((((targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000))) == SVt_NV) & (1 ? ! (((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool)0),(0)) ) ? (_Bool)1 : (_Bool)0)) : 1)) ? (_Bool)1 : (_Bool)0),(1))) { ((void)0); (targ)->sv_flags |= (0x00000200|0x00002000); do { ((void)0); ((void)0); (((XPVNV*)(targ)->sv_any)->xnv_u .xnv_nv = (TARGn_nv)); } while (0); } else Perl_sv_setnv_mg( targ ,TARGn_nv); } while (0); (*++sp = (targ)); } while (0); |
5208 | } |
5209 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
5210 | } |
5211 | |
5212 | |
5213 | XS_EUPXS(XS_POSIX_strftime)static void XS_POSIX_strftime( CV* cv __attribute__((unused)) ); /* prototype to pass -Wmissing-prototypes */ |
5214 | XS_EUPXS(XS_POSIX_strftime)static void XS_POSIX_strftime( CV* cv __attribute__((unused)) ) |
5215 | { |
5216 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5217 | if (items < 7 || items > 10) |
5218 | croak_xs_usagePerl_croak_xs_usage(cv, "fmt, sec, min, hour, mday, mon, year, wday = -1, yday = -1, isdst = -1"); |
5219 | { |
5220 | SV * fmt = ST(0)PL_stack_base[ax + (0)] |
5221 | ; |
5222 | int sec = (int)SvIV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (1)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 1)],2)) |
5223 | ; |
5224 | int min = (int)SvIV(ST(2))((((PL_stack_base[ax + (2)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (2)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 2)],2)) |
5225 | ; |
5226 | int hour = (int)SvIV(ST(3))((((PL_stack_base[ax + (3)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (3)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 3)],2)) |
5227 | ; |
5228 | int mday = (int)SvIV(ST(4))((((PL_stack_base[ax + (4)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (4)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 4)],2)) |
5229 | ; |
5230 | int mon = (int)SvIV(ST(5))((((PL_stack_base[ax + (5)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (5)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 5)],2)) |
5231 | ; |
5232 | int year = (int)SvIV(ST(6))((((PL_stack_base[ax + (6)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (6)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 6)],2)) |
5233 | ; |
5234 | int wday; |
5235 | int yday; |
5236 | int isdst; |
5237 | |
5238 | if (items < 8) |
5239 | wday = -1; |
5240 | else { |
5241 | wday = (int)SvIV(ST(7))((((PL_stack_base[ax + (7)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (7)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 7)],2)) |
5242 | ; |
5243 | } |
5244 | |
5245 | if (items < 9) |
5246 | yday = -1; |
5247 | else { |
5248 | yday = (int)SvIV(ST(8))((((PL_stack_base[ax + (8)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (8)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 8)],2)) |
5249 | ; |
5250 | } |
5251 | |
5252 | if (items < 10) |
5253 | isdst = -1; |
5254 | else { |
5255 | isdst = (int)SvIV(ST(9))((((PL_stack_base[ax + (9)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (9)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 9)],2)) |
5256 | ; |
5257 | } |
5258 | #line 3766 "POSIX.xs" |
5259 | { |
5260 | char *buf; |
5261 | SV *sv; |
5262 | |
5263 | /* allowing user-supplied (rather than literal) formats |
5264 | * is normally frowned upon as a potential security risk; |
5265 | * but this is part of the API so we have to allow it */ |
5266 | GCC_DIAG_IGNORE_STMT(-Wformat-nonliteral)GCC diagnostic push
GCC diagnostic ignored "-Wformat-nonliteral" (void)0; |
5267 | buf = my_strftime(SvPV_nolen(fmt), sec, min, hour, mday, mon, year, wday, yday, isdst)Perl_my_strftime( ((((fmt)->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((fmt)->sv_u.svu_pv) : Perl_sv_2pv_flags ( fmt,0,2)),sec,min,hour,mday,mon,year,wday,yday,isdst); |
5268 | GCC_DIAG_RESTORE_STMTGCC diagnostic pop (void)0; |
5269 | sv = sv_newmortal()Perl_sv_newmortal(); |
5270 | if (buf) { |
5271 | STRLEN len = strlen(buf); |
5272 | sv_usepvn_flags(sv, buf, len, SV_HAS_TRAILING_NUL)Perl_sv_usepvn_flags( sv,buf,len,256); |
5273 | if ( SvUTF8(fmt)((fmt)->sv_flags & 0x20000000) |
5274 | || ( is_utf8_non_invariant_stringPerl_is_utf8_non_invariant_string((U8*) buf, len) |
5275 | #ifdef USE_LOCALE_TIME |
5276 | && _is_cur_LC_category_utf8(LC_TIME)Perl__is_cur_LC_category_utf8( 5) |
5277 | #else /* If can't check directly, at least can see if script is consistent, |
5278 | under UTF-8, which gives us an extra measure of confidence. */ |
5279 | |
5280 | && isSCRIPT_RUN((const U8 *) buf,Perl_isSCRIPT_RUN( (const U8 *) buf,(const U8 *) buf + len,(1 )) |
5281 | (const U8 *) buf + len,Perl_isSCRIPT_RUN( (const U8 *) buf,(const U8 *) buf + len,(1 )) |
5282 | TRUE)Perl_isSCRIPT_RUN( (const U8 *) buf,(const U8 *) buf + len,(1 )) /* Means assume UTF-8 */ |
5283 | #endif |
5284 | )) { |
5285 | SvUTF8_on(sv)((sv)->sv_flags |= (0x20000000)); |
5286 | } |
5287 | } |
5288 | else { /* We can't distinguish between errors and just an empty |
5289 | * return; in all cases just return an empty string */ |
5290 | SvUPGRADE(sv, SVt_PV)((void)(((svtype)((sv)->sv_flags & 0xff)) >= (SVt_PV ) || (Perl_sv_upgrade( sv,SVt_PV),1))); |
5291 | SvPV_set(sv, (char *) "")do { ((void)0); ((void)0); ((void)0); ((sv)->sv_u.svu_pv = ((char *) "")); } while (0); |
5292 | SvPOK_on(sv)( (sv)->sv_flags |= (0x00000400|0x00004000)); |
5293 | SvCUR_set(sv, 0)do { ((void)0); ((void)0); ((void)0); (((XPV*) (sv)->sv_any )->xpv_cur = (0)); } while (0); |
5294 | SvLEN_set(sv, 0)do { ((void)0); ((void)0); ((void)0); (((XPV*) (sv)->sv_any )->xpv_len_u.xpvlenu_len = (0)); } while (0); /* Won't attempt to free the string when sv |
5295 | gets destroyed */ |
5296 | } |
5297 | ST(0)PL_stack_base[ax + (0)] = sv; |
5298 | } |
5299 | #line 5300 "POSIX.c" |
5300 | } |
5301 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
5302 | } |
5303 | |
5304 | |
5305 | XS_EUPXS(XS_POSIX_tzset)static void XS_POSIX_tzset( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
5306 | XS_EUPXS(XS_POSIX_tzset)static void XS_POSIX_tzset( CV* cv __attribute__((unused))) |
5307 | { |
5308 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5309 | if (items != 0) |
5310 | croak_xs_usagePerl_croak_xs_usage(cv, ""); |
5311 | PERL_UNUSED_VAR(ax)((void)sizeof(ax)); /* -Wall */ |
5312 | SPsp -= items; |
5313 | { |
5314 | #line 3810 "POSIX.xs" |
5315 | my_tzset(aTHX); |
5316 | #line 5317 "POSIX.c" |
5317 | PUTBACKPL_stack_sp = sp; |
5318 | return; |
5319 | } |
5320 | } |
5321 | |
5322 | |
5323 | XS_EUPXS(XS_POSIX_tzname)static void XS_POSIX_tzname( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
5324 | XS_EUPXS(XS_POSIX_tzname)static void XS_POSIX_tzname( CV* cv __attribute__((unused))) |
5325 | { |
5326 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5327 | if (items != 0) |
5328 | croak_xs_usagePerl_croak_xs_usage(cv, ""); |
5329 | PERL_UNUSED_VAR(ax)((void)sizeof(ax)); /* -Wall */ |
5330 | SPsp -= items; |
5331 | { |
5332 | #line 3815 "POSIX.xs" |
5333 | EXTEND(SP,2)do { (void)0; if (__builtin_expect(((((2) < 0 || PL_stack_max - (sp) < (2))) ? (_Bool)1 : (_Bool)0),(0))) { sp = Perl_stack_grow ( sp,sp,(sizeof(2) > sizeof(ssize_t) && ((ssize_t) (2) != (2)) ? -1 : (2))); ((void)sizeof(sp)); } } while (0); |
5334 | PUSHs(newSVpvn_flags(tzname[0], strlen(tzname[0]), SVs_TEMP))(*++sp = (Perl_newSVpvn_flags( tzname[0],strlen(tzname[0]),0x00080000 ))); |
5335 | PUSHs(newSVpvn_flags(tzname[1], strlen(tzname[1]), SVs_TEMP))(*++sp = (Perl_newSVpvn_flags( tzname[1],strlen(tzname[1]),0x00080000 ))); |
5336 | #line 5337 "POSIX.c" |
5337 | PUTBACKPL_stack_sp = sp; |
5338 | return; |
5339 | } |
5340 | } |
5341 | |
5342 | |
5343 | XS_EUPXS(XS_POSIX_ctermid)static void XS_POSIX_ctermid( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
5344 | XS_EUPXS(XS_POSIX_ctermid)static void XS_POSIX_ctermid( CV* cv __attribute__((unused))) |
5345 | { |
5346 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5347 | if (items < 0 || items > 1) |
5348 | croak_xs_usagePerl_croak_xs_usage(cv, "s = 0"); |
5349 | { |
5350 | char * s = 0; |
5351 | char * RETVAL; |
5352 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
5353 | #line 3823 "POSIX.xs" |
5354 | #ifdef I_TERMIOS |
5355 | /* On some systems L_ctermid is a #define; but not all; this code works |
5356 | * for all cases (so far...) */ |
5357 | s = (char *) safemallocPerl_safesysmalloc((size_t) L_ctermid1024); |
5358 | #endif |
5359 | RETVAL = ctermid(s); |
5360 | #line 5361 "POSIX.c" |
5361 | sv_setpv(TARG, RETVAL)Perl_sv_setpv( targ,RETVAL); XSprePUSH(sp = PL_stack_base + ax - 1); PUSHTARGdo { do { if (__builtin_expect(((((targ)->sv_flags & 0x00400000 )) ? (_Bool)1 : (_Bool)0),(0))) Perl_mg_set( targ); } while ( 0); (*++sp = (targ)); } while (0); |
5362 | #line 3832 "POSIX.xs" |
5363 | #ifdef I_TERMIOS |
5364 | Safefree(s)Perl_safesysfree(((void *)(s))); |
5365 | #endif |
5366 | #line 5367 "POSIX.c" |
5367 | } |
5368 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
5369 | } |
5370 | |
5371 | |
5372 | XS_EUPXS(XS_POSIX_cuserid)static void XS_POSIX_cuserid( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
5373 | XS_EUPXS(XS_POSIX_cuserid)static void XS_POSIX_cuserid( CV* cv __attribute__((unused))) |
5374 | { |
5375 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5376 | if (items < 0 || items > 1) |
5377 | croak_xs_usagePerl_croak_xs_usage(cv, "s = 0"); |
5378 | { |
5379 | char * s = 0; |
5380 | char * RETVAL; |
5381 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
5382 | #line 3840 "POSIX.xs" |
5383 | #ifdef HAS_CUSERID |
5384 | RETVAL = cuserid(s); |
5385 | #else |
5386 | PERL_UNUSED_VAR(s)((void)sizeof(s)); |
5387 | RETVAL = 0; |
5388 | not_here("cuserid"); |
5389 | #endif |
5390 | #line 5391 "POSIX.c" |
5391 | sv_setpv(TARG, RETVAL)Perl_sv_setpv( targ,RETVAL); XSprePUSH(sp = PL_stack_base + ax - 1); PUSHTARGdo { do { if (__builtin_expect(((((targ)->sv_flags & 0x00400000 )) ? (_Bool)1 : (_Bool)0),(0))) Perl_mg_set( targ); } while ( 0); (*++sp = (targ)); } while (0); |
5392 | } |
5393 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
5394 | } |
5395 | |
5396 | |
5397 | XS_EUPXS(XS_POSIX_fpathconf)static void XS_POSIX_fpathconf( CV* cv __attribute__((unused) )); /* prototype to pass -Wmissing-prototypes */ |
5398 | XS_EUPXS(XS_POSIX_fpathconf)static void XS_POSIX_fpathconf( CV* cv __attribute__((unused) )) |
5399 | { |
5400 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5401 | if (items != 2) |
5402 | croak_xs_usagePerl_croak_xs_usage(cv, "fd, name"); |
5403 | { |
5404 | POSIX__Fd fd; |
5405 | int name = (int)SvIV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (1)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 1)],2)) |
5406 | ; |
5407 | SysRetLong RETVAL; |
5408 | |
5409 | if ((fd = (int)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2))) < 0) { |
5410 | SETERRNO(EBADF, RMS_IFI)((*__errno()) = (9)); |
5411 | XSRETURN_IV(-1)do { (PL_stack_base[ax + (0)] = Perl_sv_2mortal( Perl_newSViv ( -1)) ); do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
5412 | } |
5413 | ; |
5414 | |
5415 | RETVAL = fpathconf(fd, name); |
5416 | { |
5417 | SV * RETVALSV; |
5418 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
5419 | if (RETVAL != -1) { |
5420 | if (RETVAL == 0) |
5421 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
5422 | else |
5423 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
5424 | } |
5425 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
5426 | } |
5427 | } |
5428 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
5429 | } |
5430 | |
5431 | |
5432 | XS_EUPXS(XS_POSIX_pathconf)static void XS_POSIX_pathconf( CV* cv __attribute__((unused)) ); /* prototype to pass -Wmissing-prototypes */ |
5433 | XS_EUPXS(XS_POSIX_pathconf)static void XS_POSIX_pathconf( CV* cv __attribute__((unused)) ) |
5434 | { |
5435 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5436 | if (items != 2) |
5437 | croak_xs_usagePerl_croak_xs_usage(cv, "filename, name"); |
5438 | { |
5439 | char * filename = (char *)SvPV_nolen(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((PL_stack_base[ax + (0)])->sv_u.svu_pv ) : Perl_sv_2pv_flags( PL_stack_base[ax + (0)],0,2)) |
5440 | ; |
5441 | int name = (int)SvIV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (1)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 1)],2)) |
5442 | ; |
5443 | SysRetLong RETVAL; |
5444 | |
5445 | RETVAL = pathconf(filename, name); |
5446 | { |
5447 | SV * RETVALSV; |
5448 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
5449 | if (RETVAL != -1) { |
5450 | if (RETVAL == 0) |
5451 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
5452 | else |
5453 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
5454 | } |
5455 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
5456 | } |
5457 | } |
5458 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
5459 | } |
5460 | |
5461 | |
5462 | XS_EUPXS(XS_POSIX_pause)static void XS_POSIX_pause( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
5463 | XS_EUPXS(XS_POSIX_pause)static void XS_POSIX_pause( CV* cv __attribute__((unused))) |
5464 | { |
5465 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5466 | if (items != 0) |
5467 | croak_xs_usagePerl_croak_xs_usage(cv, ""); |
5468 | { |
5469 | SysRet RETVAL; |
5470 | |
5471 | RETVAL = pause(); |
5472 | { |
5473 | SV * RETVALSV; |
5474 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
5475 | if (RETVAL != -1) { |
5476 | if (RETVAL == 0) |
5477 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
5478 | else |
5479 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
5480 | } |
5481 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
5482 | } |
5483 | #line 3863 "POSIX.xs" |
5484 | PERL_ASYNC_CHECK()if (__builtin_expect(((PL_sig_pending) ? (_Bool)1 : (_Bool)0) ,(0))) PL_signalhook(); |
5485 | #line 5486 "POSIX.c" |
5486 | } |
5487 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
5488 | } |
5489 | |
5490 | |
5491 | XS_EUPXS(XS_POSIX_sleep)static void XS_POSIX_sleep( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
5492 | XS_EUPXS(XS_POSIX_sleep)static void XS_POSIX_sleep( CV* cv __attribute__((unused))) |
5493 | { |
5494 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5495 | if (items != 1) |
5496 | croak_xs_usagePerl_croak_xs_usage(cv, "seconds"); |
5497 | { |
5498 | unsigned int seconds = (unsigned int)SvUV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x80000000 |0x00200000)) == (0x00000100|0x80000000)) ? ((XPVUV*) (PL_stack_base [ax + (0)])->sv_any)->xuv_u.xivu_uv : Perl_sv_2uv_flags ( PL_stack_base[ax + (0)],2)) |
5499 | ; |
5500 | unsigned int RETVAL; |
5501 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
5502 | #line 3869 "POSIX.xs" |
5503 | RETVAL = PerlProc_sleep(seconds)sleep((seconds)); |
5504 | #line 5505 "POSIX.c" |
5505 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHu((UV)RETVAL)do { do { UV TARGu_uv = (UV)RETVAL; if (__builtin_expect((((( (targ)->sv_flags & (0xff|(0x08000000|0x00010000|0x00000800 |0x01000000 |0x00800000|0x10000000)|0x80000000)) == SVt_IV) & (1 ? !(((__builtin_expect(((PL_tainted) ? (_Bool)1 : (_Bool) 0),(0))) ? (_Bool)1 : (_Bool)0)) : 1) & (TARGu_uv <= ( UV)((IV) ((~(UV)0) >> 1)))) ? (_Bool)1 : (_Bool)0),(1)) ) { ((void)0); (targ)->sv_flags |= (0x00000100|0x00001000) ; targ->sv_u.svu_iv = TARGu_uv; } else Perl_sv_setuv_mg( targ ,TARGu_uv); } while (0); (*++sp = (targ)); } while (0); |
5506 | } |
5507 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
5508 | } |
5509 | |
5510 | |
5511 | XS_EUPXS(XS_POSIX_setgid)static void XS_POSIX_setgid( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
5512 | XS_EUPXS(XS_POSIX_setgid)static void XS_POSIX_setgid( CV* cv __attribute__((unused))) |
5513 | { |
5514 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5515 | if (items != 1) |
5516 | croak_xs_usagePerl_croak_xs_usage(cv, "gid"); |
5517 | { |
5518 | Gid_tgid_t gid = (Gid_tgid_t)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
5519 | ; |
5520 | SysRet RETVAL; |
5521 | |
5522 | RETVAL = setgid(gid); |
5523 | { |
5524 | SV * RETVALSV; |
5525 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
5526 | if (RETVAL != -1) { |
5527 | if (RETVAL == 0) |
5528 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
5529 | else |
5530 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
5531 | } |
5532 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
5533 | } |
5534 | } |
5535 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
5536 | } |
5537 | |
5538 | |
5539 | XS_EUPXS(XS_POSIX_setuid)static void XS_POSIX_setuid( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
5540 | XS_EUPXS(XS_POSIX_setuid)static void XS_POSIX_setuid( CV* cv __attribute__((unused))) |
5541 | { |
5542 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5543 | if (items != 1) |
5544 | croak_xs_usagePerl_croak_xs_usage(cv, "uid"); |
5545 | { |
5546 | Uid_tuid_t uid = (Uid_tuid_t)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
5547 | ; |
5548 | SysRet RETVAL; |
5549 | |
5550 | RETVAL = setuid(uid); |
5551 | { |
5552 | SV * RETVALSV; |
5553 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
5554 | if (RETVAL != -1) { |
5555 | if (RETVAL == 0) |
5556 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
5557 | else |
5558 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
5559 | } |
5560 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
5561 | } |
5562 | } |
5563 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
5564 | } |
5565 | |
5566 | |
5567 | XS_EUPXS(XS_POSIX_sysconf)static void XS_POSIX_sysconf( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
5568 | XS_EUPXS(XS_POSIX_sysconf)static void XS_POSIX_sysconf( CV* cv __attribute__((unused))) |
5569 | { |
5570 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5571 | if (items != 1) |
5572 | croak_xs_usagePerl_croak_xs_usage(cv, "name"); |
5573 | { |
5574 | int name = (int)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2)) |
5575 | ; |
5576 | SysRetLong RETVAL; |
5577 | |
5578 | RETVAL = sysconf(name); |
5579 | { |
5580 | SV * RETVALSV; |
5581 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
5582 | if (RETVAL != -1) { |
5583 | if (RETVAL == 0) |
5584 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
5585 | else |
5586 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
5587 | } |
5588 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
5589 | } |
5590 | } |
5591 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
5592 | } |
5593 | |
5594 | |
5595 | XS_EUPXS(XS_POSIX_ttyname)static void XS_POSIX_ttyname( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
5596 | XS_EUPXS(XS_POSIX_ttyname)static void XS_POSIX_ttyname( CV* cv __attribute__((unused))) |
5597 | { |
5598 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5599 | if (items != 1) |
5600 | croak_xs_usagePerl_croak_xs_usage(cv, "fd"); |
5601 | { |
5602 | POSIX__Fd fd; |
5603 | char * RETVAL; |
5604 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
5605 | |
5606 | if ((fd = (int)SvIV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000100|0x00200000 )) == 0x00000100) ? ((XPVIV*) (PL_stack_base[ax + (0)])->sv_any )->xiv_u.xivu_iv : Perl_sv_2iv_flags( PL_stack_base[ax + ( 0)],2))) < 0) { |
5607 | SETERRNO(EBADF, RMS_IFI)((*__errno()) = (9)); |
5608 | XSRETURN_IV(-1)do { (PL_stack_base[ax + (0)] = Perl_sv_2mortal( Perl_newSViv ( -1)) ); do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
5609 | } |
5610 | ; |
5611 | |
5612 | RETVAL = ttyname(fd); |
5613 | sv_setpv(TARG, RETVAL)Perl_sv_setpv( targ,RETVAL); XSprePUSH(sp = PL_stack_base + ax - 1); PUSHTARGdo { do { if (__builtin_expect(((((targ)->sv_flags & 0x00400000 )) ? (_Bool)1 : (_Bool)0),(0))) Perl_mg_set( targ); } while ( 0); (*++sp = (targ)); } while (0); |
5614 | } |
5615 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
5616 | } |
5617 | |
5618 | |
5619 | XS_EUPXS(XS_POSIX_getcwd)static void XS_POSIX_getcwd( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
5620 | XS_EUPXS(XS_POSIX_getcwd)static void XS_POSIX_getcwd( CV* cv __attribute__((unused))) |
5621 | { |
5622 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5623 | if (items != 0) |
5624 | croak_xs_usagePerl_croak_xs_usage(cv, ""); |
5625 | PERL_UNUSED_VAR(ax)((void)sizeof(ax)); /* -Wall */ |
5626 | SPsp -= items; |
5627 | { |
5628 | #line 3892 "POSIX.xs" |
5629 | { |
5630 | dXSTARGSV * const targ = ((PL_op->op_private & 0x04) ? (PL_curpad [PL_op->op_targ]) : Perl_sv_newmortal()); |
5631 | getcwd_sv(TARG)Perl_getcwd_sv( targ); |
5632 | XSprePUSH(sp = PL_stack_base + ax - 1); PUSHTARGdo { do { if (__builtin_expect(((((targ)->sv_flags & 0x00400000 )) ? (_Bool)1 : (_Bool)0),(0))) Perl_mg_set( targ); } while ( 0); (*++sp = (targ)); } while (0); |
5633 | } |
5634 | #line 5635 "POSIX.c" |
5635 | PUTBACKPL_stack_sp = sp; |
5636 | return; |
5637 | } |
5638 | } |
5639 | |
5640 | |
5641 | XS_EUPXS(XS_POSIX_lchown)static void XS_POSIX_lchown( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
5642 | XS_EUPXS(XS_POSIX_lchown)static void XS_POSIX_lchown( CV* cv __attribute__((unused))) |
5643 | { |
5644 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5645 | if (items != 3) |
5646 | croak_xs_usagePerl_croak_xs_usage(cv, "uid, gid, path"); |
5647 | { |
5648 | Uid_tuid_t uid = (Uid_tuid_t)SvNV(ST(0))((((PL_stack_base[ax + (0)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (0)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (0 )],2)) |
5649 | ; |
5650 | Gid_tgid_t gid = (Gid_tgid_t)SvNV(ST(1))((((PL_stack_base[ax + (1)])->sv_flags & (0x00000200|0x00200000 )) == 0x00000200) ? ((XPVNV*) (PL_stack_base[ax + (1)])->sv_any )->xnv_u.xnv_nv : Perl_sv_2nv_flags( PL_stack_base[ax + (1 )],2)) |
5651 | ; |
5652 | char * path = (char *)SvPV_nolen(ST(2))((((PL_stack_base[ax + (2)])->sv_flags & (0x00000400|0x00200000 )) == 0x00000400) ? ((PL_stack_base[ax + (2)])->sv_u.svu_pv ) : Perl_sv_2pv_flags( PL_stack_base[ax + (2)],0,2)) |
5653 | ; |
5654 | SysRet RETVAL; |
5655 | #line 3904 "POSIX.xs" |
5656 | #ifdef HAS_LCHOWN |
5657 | /* yes, the order of arguments is different, |
5658 | * but consistent with CORE::chown() */ |
5659 | RETVAL = lchown(path, uid, gid); |
5660 | #else |
5661 | PERL_UNUSED_VAR(uid)((void)sizeof(uid)); |
5662 | PERL_UNUSED_VAR(gid)((void)sizeof(gid)); |
5663 | PERL_UNUSED_VAR(path)((void)sizeof(path)); |
5664 | RETVAL = not_here("lchown"); |
5665 | #endif |
5666 | #line 5667 "POSIX.c" |
5667 | { |
5668 | SV * RETVALSV; |
5669 | RETVALSV = sv_newmortal()Perl_sv_newmortal(); |
5670 | if (RETVAL != -1) { |
5671 | if (RETVAL == 0) |
5672 | sv_setpvn(RETVALSV, "0 but true", 10)Perl_sv_setpvn( RETVALSV,"0 but true",10); |
5673 | else |
5674 | sv_setiv(RETVALSV, (IV)RETVAL)Perl_sv_setiv( RETVALSV,(IV)RETVAL); |
5675 | } |
5676 | ST(0)PL_stack_base[ax + (0)] = RETVALSV; |
5677 | } |
5678 | } |
5679 | XSRETURN(1)do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); |
5680 | } |
5681 | |
5682 | #ifdef __cplusplus |
5683 | extern "C" |
5684 | #endif |
5685 | XS_EXTERNAL(boot_POSIX)void boot_POSIX( CV* cv __attribute__((unused))); /* prototype to pass -Wmissing-prototypes */ |
5686 | XS_EXTERNAL(boot_POSIX)void boot_POSIX( CV* cv __attribute__((unused))) |
5687 | { |
5688 | #if PERL_VERSION_LE(5, 21, 5)((5*1000000 + 32*1000 + 1) <= (5*1000000 + 21*1000 + 5)) |
5689 | dVARstruct Perl___notused_struct; dXSARGSSV **sp = PL_stack_sp; I32 ax = Perl_POPMARK(); SV **mark = PL_stack_base + ax++; I32 items = (I32)(sp - mark); |
5690 | #else |
5691 | dVARstruct Perl___notused_struct; dXSBOOTARGSXSAPIVERCHKI32 ax = Perl_xs_handshake((((sizeof(struct PerlHandShakeInterpreter )) << 16) | ((sizeof("" "1.94" "")-1) > 0xFF ? (Perl_croak ("panic: handshake overflow"), 0xFF) : (sizeof("" "1.94" "")- 1) << 8) | ((((1)) ? (_Bool)1 : (_Bool)0) ? 0x00000020 : 0) | ((((0)) ? (_Bool)1 : (_Bool)0) ? 0x00000080 : 0) | (((( 1)) ? (_Bool)1 : (_Bool)0) ? 0x00000040 : 0) | ((sizeof("" "v" "5" "." "32" "." "0" "")-1) > 0x0000001F ? (Perl_croak("panic: handshake overflow" ), 0x0000001F) : (sizeof("" "v" "5" "." "32" "." "0" "")-1))) , cv, "POSIX.c", "v" "5" "." "32" "." "0", "1.94"); SV **mark = PL_stack_base + ax; SV **sp = PL_stack_sp; I32 items = (I32 )(sp - mark); |
5692 | #endif |
5693 | #if (PERL_REVISION5 == 5 && PERL_VERSION32 < 9) |
5694 | char* file = __FILE__"POSIX.c"; |
5695 | #else |
5696 | const char* file = __FILE__"POSIX.c"; |
5697 | #endif |
5698 | |
5699 | PERL_UNUSED_VAR(file)((void)sizeof(file)); |
5700 | |
5701 | PERL_UNUSED_VAR(cv)((void)sizeof(cv)); /* -W */ |
5702 | PERL_UNUSED_VAR(items)((void)sizeof(items)); /* -W */ |
5703 | #if PERL_VERSION_LE(5, 21, 5)((5*1000000 + 32*1000 + 1) <= (5*1000000 + 21*1000 + 5)) |
5704 | XS_VERSION_BOOTCHECKPerl_xs_handshake((((sizeof(struct PerlHandShakeInterpreter)) << 16) | ((sizeof("" "1.94" "")-1) > 0xFF ? (Perl_croak ("panic: handshake overflow"), 0xFF) : (sizeof("" "1.94" "")- 1) << 8) | ((((0)) ? (_Bool)1 : (_Bool)0) ? 0x00000020 : 0) | ((((0)) ? (_Bool)1 : (_Bool)0) ? 0x00000080 : 0) | (((( 0)) ? (_Bool)1 : (_Bool)0) ? 0x00000040 : 0) | ((sizeof("" "" "")-1) > 0x0000001F ? (Perl_croak("panic: handshake overflow" ), 0x0000001F) : (sizeof("" "" "")-1))), cv, "POSIX.c", items , ax, "1.94"); |
5705 | # ifdef XS_APIVERSION_BOOTCHECKPerl_xs_handshake((((sizeof(struct PerlHandShakeInterpreter)) << 16) | ((sizeof("" "" "")-1) > 0xFF ? (Perl_croak ("panic: handshake overflow"), 0xFF) : (sizeof("" "" "")-1) << 8) | ((((0)) ? (_Bool)1 : (_Bool)0) ? 0x00000020 : 0) | (((( 0)) ? (_Bool)1 : (_Bool)0) ? 0x00000080 : 0) | ((((0)) ? (_Bool )1 : (_Bool)0) ? 0x00000040 : 0) | ((sizeof("" "v" "5" "." "32" "." "0" "")-1) > 0x0000001F ? (Perl_croak("panic: handshake overflow" ), 0x0000001F) : (sizeof("" "v" "5" "." "32" "." "0" "")-1))) , cv, "POSIX.c", items, ax, "v" "5" "." "32" "." "0") |
5706 | XS_APIVERSION_BOOTCHECKPerl_xs_handshake((((sizeof(struct PerlHandShakeInterpreter)) << 16) | ((sizeof("" "" "")-1) > 0xFF ? (Perl_croak ("panic: handshake overflow"), 0xFF) : (sizeof("" "" "")-1) << 8) | ((((0)) ? (_Bool)1 : (_Bool)0) ? 0x00000020 : 0) | (((( 0)) ? (_Bool)1 : (_Bool)0) ? 0x00000080 : 0) | ((((0)) ? (_Bool )1 : (_Bool)0) ? 0x00000040 : 0) | ((sizeof("" "v" "5" "." "32" "." "0" "")-1) > 0x0000001F ? (Perl_croak("panic: handshake overflow" ), 0x0000001F) : (sizeof("" "v" "5" "." "32" "." "0" "")-1))) , cv, "POSIX.c", items, ax, "v" "5" "." "32" "." "0"); |
5707 | # endif |
5708 | #endif |
5709 | |
5710 | newXS_deffile("POSIX::SigSet::new", XS_POSIX__SigSet_new)Perl_newXS_deffile( "POSIX::SigSet::new",XS_POSIX__SigSet_new ); |
5711 | cv = newXS_deffile("POSIX::SigSet::addset", XS_POSIX__SigSet_addset)Perl_newXS_deffile( "POSIX::SigSet::addset",XS_POSIX__SigSet_addset ); |
5712 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 0; |
5713 | cv = newXS_deffile("POSIX::SigSet::delset", XS_POSIX__SigSet_addset)Perl_newXS_deffile( "POSIX::SigSet::delset",XS_POSIX__SigSet_addset ); |
5714 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 1; |
5715 | cv = newXS_deffile("POSIX::SigSet::emptyset", XS_POSIX__SigSet_emptyset)Perl_newXS_deffile( "POSIX::SigSet::emptyset",XS_POSIX__SigSet_emptyset ); |
5716 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 0; |
5717 | cv = newXS_deffile("POSIX::SigSet::fillset", XS_POSIX__SigSet_emptyset)Perl_newXS_deffile( "POSIX::SigSet::fillset",XS_POSIX__SigSet_emptyset ); |
5718 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 1; |
5719 | newXS_deffile("POSIX::SigSet::ismember", XS_POSIX__SigSet_ismember)Perl_newXS_deffile( "POSIX::SigSet::ismember",XS_POSIX__SigSet_ismember ); |
5720 | newXS_deffile("POSIX::Termios::new", XS_POSIX__Termios_new)Perl_newXS_deffile( "POSIX::Termios::new",XS_POSIX__Termios_new ); |
5721 | newXS_deffile("POSIX::Termios::getattr", XS_POSIX__Termios_getattr)Perl_newXS_deffile( "POSIX::Termios::getattr",XS_POSIX__Termios_getattr ); |
5722 | newXS_deffile("POSIX::Termios::setattr", XS_POSIX__Termios_setattr)Perl_newXS_deffile( "POSIX::Termios::setattr",XS_POSIX__Termios_setattr ); |
5723 | cv = newXS_deffile("POSIX::Termios::getispeed", XS_POSIX__Termios_getispeed)Perl_newXS_deffile( "POSIX::Termios::getispeed",XS_POSIX__Termios_getispeed ); |
5724 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 0; |
5725 | cv = newXS_deffile("POSIX::Termios::getospeed", XS_POSIX__Termios_getispeed)Perl_newXS_deffile( "POSIX::Termios::getospeed",XS_POSIX__Termios_getispeed ); |
5726 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 1; |
5727 | cv = newXS_deffile("POSIX::Termios::getcflag", XS_POSIX__Termios_getiflag)Perl_newXS_deffile( "POSIX::Termios::getcflag",XS_POSIX__Termios_getiflag ); |
5728 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 2; |
5729 | cv = newXS_deffile("POSIX::Termios::getiflag", XS_POSIX__Termios_getiflag)Perl_newXS_deffile( "POSIX::Termios::getiflag",XS_POSIX__Termios_getiflag ); |
5730 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 0; |
5731 | cv = newXS_deffile("POSIX::Termios::getlflag", XS_POSIX__Termios_getiflag)Perl_newXS_deffile( "POSIX::Termios::getlflag",XS_POSIX__Termios_getiflag ); |
5732 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 3; |
5733 | cv = newXS_deffile("POSIX::Termios::getoflag", XS_POSIX__Termios_getiflag)Perl_newXS_deffile( "POSIX::Termios::getoflag",XS_POSIX__Termios_getiflag ); |
5734 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 1; |
5735 | newXS_deffile("POSIX::Termios::getcc", XS_POSIX__Termios_getcc)Perl_newXS_deffile( "POSIX::Termios::getcc",XS_POSIX__Termios_getcc ); |
5736 | cv = newXS_deffile("POSIX::Termios::setispeed", XS_POSIX__Termios_setispeed)Perl_newXS_deffile( "POSIX::Termios::setispeed",XS_POSIX__Termios_setispeed ); |
5737 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 0; |
5738 | cv = newXS_deffile("POSIX::Termios::setospeed", XS_POSIX__Termios_setispeed)Perl_newXS_deffile( "POSIX::Termios::setospeed",XS_POSIX__Termios_setispeed ); |
5739 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 1; |
5740 | cv = newXS_deffile("POSIX::Termios::setcflag", XS_POSIX__Termios_setiflag)Perl_newXS_deffile( "POSIX::Termios::setcflag",XS_POSIX__Termios_setiflag ); |
5741 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 2; |
5742 | cv = newXS_deffile("POSIX::Termios::setiflag", XS_POSIX__Termios_setiflag)Perl_newXS_deffile( "POSIX::Termios::setiflag",XS_POSIX__Termios_setiflag ); |
5743 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 0; |
5744 | cv = newXS_deffile("POSIX::Termios::setlflag", XS_POSIX__Termios_setiflag)Perl_newXS_deffile( "POSIX::Termios::setlflag",XS_POSIX__Termios_setiflag ); |
5745 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 3; |
5746 | cv = newXS_deffile("POSIX::Termios::setoflag", XS_POSIX__Termios_setiflag)Perl_newXS_deffile( "POSIX::Termios::setoflag",XS_POSIX__Termios_setiflag ); |
5747 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 1; |
5748 | newXS_deffile("POSIX::Termios::setcc", XS_POSIX__Termios_setcc)Perl_newXS_deffile( "POSIX::Termios::setcc",XS_POSIX__Termios_setcc ); |
5749 | newXS_deffile("POSIX::constant", XS_POSIX_constant)Perl_newXS_deffile( "POSIX::constant",XS_POSIX_constant); |
5750 | cv = newXS_deffile("POSIX::WEXITSTATUS", XS_POSIX_WEXITSTATUS)Perl_newXS_deffile( "POSIX::WEXITSTATUS",XS_POSIX_WEXITSTATUS ); |
5751 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 0; |
5752 | cv = newXS_deffile("POSIX::WIFEXITED", XS_POSIX_WEXITSTATUS)Perl_newXS_deffile( "POSIX::WIFEXITED",XS_POSIX_WEXITSTATUS); |
5753 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 1; |
5754 | cv = newXS_deffile("POSIX::WIFSIGNALED", XS_POSIX_WEXITSTATUS)Perl_newXS_deffile( "POSIX::WIFSIGNALED",XS_POSIX_WEXITSTATUS ); |
5755 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 2; |
5756 | cv = newXS_deffile("POSIX::WIFSTOPPED", XS_POSIX_WEXITSTATUS)Perl_newXS_deffile( "POSIX::WIFSTOPPED",XS_POSIX_WEXITSTATUS); |
5757 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 3; |
5758 | cv = newXS_deffile("POSIX::WSTOPSIG", XS_POSIX_WEXITSTATUS)Perl_newXS_deffile( "POSIX::WSTOPSIG",XS_POSIX_WEXITSTATUS); |
5759 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 4; |
5760 | cv = newXS_deffile("POSIX::WTERMSIG", XS_POSIX_WEXITSTATUS)Perl_newXS_deffile( "POSIX::WTERMSIG",XS_POSIX_WEXITSTATUS); |
5761 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 5; |
5762 | newXS_deffile("POSIX::open", XS_POSIX_open)Perl_newXS_deffile( "POSIX::open",XS_POSIX_open); |
5763 | newXS_deffile("POSIX::localeconv", XS_POSIX_localeconv)Perl_newXS_deffile( "POSIX::localeconv",XS_POSIX_localeconv); |
5764 | newXS_deffile("POSIX::setlocale", XS_POSIX_setlocale)Perl_newXS_deffile( "POSIX::setlocale",XS_POSIX_setlocale); |
5765 | cv = newXS_deffile("POSIX::acos", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::acos",XS_POSIX_acos); |
5766 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 0; |
5767 | cv = newXS_deffile("POSIX::acosh", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::acosh",XS_POSIX_acos); |
5768 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 1; |
5769 | cv = newXS_deffile("POSIX::asin", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::asin",XS_POSIX_acos); |
5770 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 2; |
5771 | cv = newXS_deffile("POSIX::asinh", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::asinh",XS_POSIX_acos); |
5772 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 3; |
5773 | cv = newXS_deffile("POSIX::atan", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::atan",XS_POSIX_acos); |
5774 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 4; |
5775 | cv = newXS_deffile("POSIX::atanh", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::atanh",XS_POSIX_acos); |
5776 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 5; |
5777 | cv = newXS_deffile("POSIX::cbrt", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::cbrt",XS_POSIX_acos); |
5778 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 6; |
5779 | cv = newXS_deffile("POSIX::ceil", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::ceil",XS_POSIX_acos); |
5780 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 7; |
5781 | cv = newXS_deffile("POSIX::cosh", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::cosh",XS_POSIX_acos); |
5782 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 8; |
5783 | cv = newXS_deffile("POSIX::erf", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::erf",XS_POSIX_acos); |
5784 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 9; |
5785 | cv = newXS_deffile("POSIX::erfc", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::erfc",XS_POSIX_acos); |
5786 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 10; |
5787 | cv = newXS_deffile("POSIX::exp2", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::exp2",XS_POSIX_acos); |
5788 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 11; |
5789 | cv = newXS_deffile("POSIX::expm1", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::expm1",XS_POSIX_acos); |
5790 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 12; |
5791 | cv = newXS_deffile("POSIX::floor", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::floor",XS_POSIX_acos); |
5792 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 13; |
5793 | cv = newXS_deffile("POSIX::j0", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::j0",XS_POSIX_acos); |
5794 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 14; |
5795 | cv = newXS_deffile("POSIX::j1", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::j1",XS_POSIX_acos); |
5796 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 15; |
5797 | cv = newXS_deffile("POSIX::lgamma", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::lgamma",XS_POSIX_acos); |
5798 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 16; |
5799 | cv = newXS_deffile("POSIX::log10", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::log10",XS_POSIX_acos); |
5800 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 17; |
5801 | cv = newXS_deffile("POSIX::log1p", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::log1p",XS_POSIX_acos); |
5802 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 18; |
5803 | cv = newXS_deffile("POSIX::log2", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::log2",XS_POSIX_acos); |
5804 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 19; |
5805 | cv = newXS_deffile("POSIX::logb", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::logb",XS_POSIX_acos); |
5806 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 20; |
5807 | cv = newXS_deffile("POSIX::nearbyint", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::nearbyint",XS_POSIX_acos); |
5808 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 21; |
5809 | cv = newXS_deffile("POSIX::rint", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::rint",XS_POSIX_acos); |
5810 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 22; |
5811 | cv = newXS_deffile("POSIX::round", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::round",XS_POSIX_acos); |
5812 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 23; |
5813 | cv = newXS_deffile("POSIX::sinh", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::sinh",XS_POSIX_acos); |
5814 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 24; |
5815 | cv = newXS_deffile("POSIX::tan", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::tan",XS_POSIX_acos); |
5816 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 25; |
5817 | cv = newXS_deffile("POSIX::tanh", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::tanh",XS_POSIX_acos); |
5818 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 26; |
5819 | cv = newXS_deffile("POSIX::tgamma", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::tgamma",XS_POSIX_acos); |
5820 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 27; |
5821 | cv = newXS_deffile("POSIX::trunc", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::trunc",XS_POSIX_acos); |
5822 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 28; |
5823 | cv = newXS_deffile("POSIX::y0", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::y0",XS_POSIX_acos); |
5824 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 29; |
5825 | cv = newXS_deffile("POSIX::y1", XS_POSIX_acos)Perl_newXS_deffile( "POSIX::y1",XS_POSIX_acos); |
5826 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 30; |
5827 | newXS_deffile("POSIX::fegetround", XS_POSIX_fegetround)Perl_newXS_deffile( "POSIX::fegetround",XS_POSIX_fegetround); |
5828 | newXS_deffile("POSIX::fesetround", XS_POSIX_fesetround)Perl_newXS_deffile( "POSIX::fesetround",XS_POSIX_fesetround); |
5829 | cv = newXS_deffile("POSIX::fpclassify", XS_POSIX_fpclassify)Perl_newXS_deffile( "POSIX::fpclassify",XS_POSIX_fpclassify); |
5830 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 0; |
5831 | cv = newXS_deffile("POSIX::ilogb", XS_POSIX_fpclassify)Perl_newXS_deffile( "POSIX::ilogb",XS_POSIX_fpclassify); |
5832 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 1; |
5833 | cv = newXS_deffile("POSIX::isfinite", XS_POSIX_fpclassify)Perl_newXS_deffile( "POSIX::isfinite",XS_POSIX_fpclassify); |
5834 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 2; |
5835 | cv = newXS_deffile("POSIX::isinf", XS_POSIX_fpclassify)Perl_newXS_deffile( "POSIX::isinf",XS_POSIX_fpclassify); |
5836 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 3; |
5837 | cv = newXS_deffile("POSIX::isnan", XS_POSIX_fpclassify)Perl_newXS_deffile( "POSIX::isnan",XS_POSIX_fpclassify); |
5838 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 4; |
5839 | cv = newXS_deffile("POSIX::isnormal", XS_POSIX_fpclassify)Perl_newXS_deffile( "POSIX::isnormal",XS_POSIX_fpclassify); |
5840 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 5; |
5841 | cv = newXS_deffile("POSIX::lrint", XS_POSIX_fpclassify)Perl_newXS_deffile( "POSIX::lrint",XS_POSIX_fpclassify); |
5842 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 6; |
5843 | cv = newXS_deffile("POSIX::lround", XS_POSIX_fpclassify)Perl_newXS_deffile( "POSIX::lround",XS_POSIX_fpclassify); |
5844 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 7; |
5845 | cv = newXS_deffile("POSIX::signbit", XS_POSIX_fpclassify)Perl_newXS_deffile( "POSIX::signbit",XS_POSIX_fpclassify); |
5846 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 8; |
5847 | newXS_deffile("POSIX::getpayload", XS_POSIX_getpayload)Perl_newXS_deffile( "POSIX::getpayload",XS_POSIX_getpayload); |
5848 | newXS_deffile("POSIX::setpayload", XS_POSIX_setpayload)Perl_newXS_deffile( "POSIX::setpayload",XS_POSIX_setpayload); |
5849 | newXS_deffile("POSIX::setpayloadsig", XS_POSIX_setpayloadsig)Perl_newXS_deffile( "POSIX::setpayloadsig",XS_POSIX_setpayloadsig ); |
5850 | newXS_deffile("POSIX::issignaling", XS_POSIX_issignaling)Perl_newXS_deffile( "POSIX::issignaling",XS_POSIX_issignaling ); |
5851 | cv = newXS_deffile("POSIX::copysign", XS_POSIX_copysign)Perl_newXS_deffile( "POSIX::copysign",XS_POSIX_copysign); |
5852 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 0; |
5853 | cv = newXS_deffile("POSIX::fdim", XS_POSIX_copysign)Perl_newXS_deffile( "POSIX::fdim",XS_POSIX_copysign); |
5854 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 1; |
5855 | cv = newXS_deffile("POSIX::fmax", XS_POSIX_copysign)Perl_newXS_deffile( "POSIX::fmax",XS_POSIX_copysign); |
5856 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 2; |
5857 | cv = newXS_deffile("POSIX::fmin", XS_POSIX_copysign)Perl_newXS_deffile( "POSIX::fmin",XS_POSIX_copysign); |
5858 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 3; |
5859 | cv = newXS_deffile("POSIX::fmod", XS_POSIX_copysign)Perl_newXS_deffile( "POSIX::fmod",XS_POSIX_copysign); |
5860 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 4; |
5861 | cv = newXS_deffile("POSIX::hypot", XS_POSIX_copysign)Perl_newXS_deffile( "POSIX::hypot",XS_POSIX_copysign); |
5862 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 5; |
5863 | cv = newXS_deffile("POSIX::isgreater", XS_POSIX_copysign)Perl_newXS_deffile( "POSIX::isgreater",XS_POSIX_copysign); |
5864 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 6; |
5865 | cv = newXS_deffile("POSIX::isgreaterequal", XS_POSIX_copysign)Perl_newXS_deffile( "POSIX::isgreaterequal",XS_POSIX_copysign ); |
5866 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 7; |
5867 | cv = newXS_deffile("POSIX::isless", XS_POSIX_copysign)Perl_newXS_deffile( "POSIX::isless",XS_POSIX_copysign); |
5868 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 8; |
5869 | cv = newXS_deffile("POSIX::islessequal", XS_POSIX_copysign)Perl_newXS_deffile( "POSIX::islessequal",XS_POSIX_copysign); |
5870 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 9; |
5871 | cv = newXS_deffile("POSIX::islessgreater", XS_POSIX_copysign)Perl_newXS_deffile( "POSIX::islessgreater",XS_POSIX_copysign); |
5872 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 10; |
5873 | cv = newXS_deffile("POSIX::isunordered", XS_POSIX_copysign)Perl_newXS_deffile( "POSIX::isunordered",XS_POSIX_copysign); |
5874 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 11; |
5875 | cv = newXS_deffile("POSIX::nextafter", XS_POSIX_copysign)Perl_newXS_deffile( "POSIX::nextafter",XS_POSIX_copysign); |
5876 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 12; |
5877 | cv = newXS_deffile("POSIX::nexttoward", XS_POSIX_copysign)Perl_newXS_deffile( "POSIX::nexttoward",XS_POSIX_copysign); |
5878 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 13; |
5879 | cv = newXS_deffile("POSIX::remainder", XS_POSIX_copysign)Perl_newXS_deffile( "POSIX::remainder",XS_POSIX_copysign); |
5880 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 14; |
5881 | newXS_deffile("POSIX::frexp", XS_POSIX_frexp)Perl_newXS_deffile( "POSIX::frexp",XS_POSIX_frexp); |
5882 | newXS_deffile("POSIX::ldexp", XS_POSIX_ldexp)Perl_newXS_deffile( "POSIX::ldexp",XS_POSIX_ldexp); |
5883 | newXS_deffile("POSIX::modf", XS_POSIX_modf)Perl_newXS_deffile( "POSIX::modf",XS_POSIX_modf); |
5884 | newXS_deffile("POSIX::remquo", XS_POSIX_remquo)Perl_newXS_deffile( "POSIX::remquo",XS_POSIX_remquo); |
5885 | newXS_deffile("POSIX::scalbn", XS_POSIX_scalbn)Perl_newXS_deffile( "POSIX::scalbn",XS_POSIX_scalbn); |
5886 | newXS_deffile("POSIX::fma", XS_POSIX_fma)Perl_newXS_deffile( "POSIX::fma",XS_POSIX_fma); |
5887 | newXS_deffile("POSIX::nan", XS_POSIX_nan)Perl_newXS_deffile( "POSIX::nan",XS_POSIX_nan); |
5888 | cv = newXS_deffile("POSIX::jn", XS_POSIX_jn)Perl_newXS_deffile( "POSIX::jn",XS_POSIX_jn); |
5889 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 0; |
5890 | cv = newXS_deffile("POSIX::yn", XS_POSIX_jn)Perl_newXS_deffile( "POSIX::yn",XS_POSIX_jn); |
5891 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 1; |
5892 | newXS_deffile("POSIX::sigaction", XS_POSIX_sigaction)Perl_newXS_deffile( "POSIX::sigaction",XS_POSIX_sigaction); |
5893 | cv = newXS_deffile("POSIX::sigpending", XS_POSIX_sigpending)Perl_newXS_deffile( "POSIX::sigpending",XS_POSIX_sigpending); |
5894 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 0; |
5895 | cv = newXS_deffile("POSIX::sigsuspend", XS_POSIX_sigpending)Perl_newXS_deffile( "POSIX::sigsuspend",XS_POSIX_sigpending); |
5896 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 1; |
5897 | newXS_deffile("POSIX::sigprocmask", XS_POSIX_sigprocmask)Perl_newXS_deffile( "POSIX::sigprocmask",XS_POSIX_sigprocmask ); |
5898 | newXS_deffile("POSIX::_exit", XS_POSIX__exit)Perl_newXS_deffile( "POSIX::_exit",XS_POSIX__exit); |
5899 | newXS_deffile("POSIX::dup2", XS_POSIX_dup2)Perl_newXS_deffile( "POSIX::dup2",XS_POSIX_dup2); |
5900 | newXS_deffile("POSIX::lseek", XS_POSIX_lseek)Perl_newXS_deffile( "POSIX::lseek",XS_POSIX_lseek); |
5901 | newXS_deffile("POSIX::nice", XS_POSIX_nice)Perl_newXS_deffile( "POSIX::nice",XS_POSIX_nice); |
5902 | newXS_deffile("POSIX::pipe", XS_POSIX_pipe)Perl_newXS_deffile( "POSIX::pipe",XS_POSIX_pipe); |
5903 | newXS_deffile("POSIX::read", XS_POSIX_read)Perl_newXS_deffile( "POSIX::read",XS_POSIX_read); |
5904 | newXS_deffile("POSIX::setpgid", XS_POSIX_setpgid)Perl_newXS_deffile( "POSIX::setpgid",XS_POSIX_setpgid); |
5905 | newXS_deffile("POSIX::setsid", XS_POSIX_setsid)Perl_newXS_deffile( "POSIX::setsid",XS_POSIX_setsid); |
5906 | newXS_deffile("POSIX::tcgetpgrp", XS_POSIX_tcgetpgrp)Perl_newXS_deffile( "POSIX::tcgetpgrp",XS_POSIX_tcgetpgrp); |
5907 | newXS_deffile("POSIX::tcsetpgrp", XS_POSIX_tcsetpgrp)Perl_newXS_deffile( "POSIX::tcsetpgrp",XS_POSIX_tcsetpgrp); |
5908 | newXS_deffile("POSIX::uname", XS_POSIX_uname)Perl_newXS_deffile( "POSIX::uname",XS_POSIX_uname); |
5909 | newXS_deffile("POSIX::write", XS_POSIX_write)Perl_newXS_deffile( "POSIX::write",XS_POSIX_write); |
5910 | newXS_deffile("POSIX::abort", XS_POSIX_abort)Perl_newXS_deffile( "POSIX::abort",XS_POSIX_abort); |
5911 | newXS_deffile("POSIX::mblen", XS_POSIX_mblen)Perl_newXS_deffile( "POSIX::mblen",XS_POSIX_mblen); |
5912 | newXS_deffile("POSIX::mbtowc", XS_POSIX_mbtowc)Perl_newXS_deffile( "POSIX::mbtowc",XS_POSIX_mbtowc); |
5913 | newXS_deffile("POSIX::wctomb", XS_POSIX_wctomb)Perl_newXS_deffile( "POSIX::wctomb",XS_POSIX_wctomb); |
5914 | newXS_deffile("POSIX::strcoll", XS_POSIX_strcoll)Perl_newXS_deffile( "POSIX::strcoll",XS_POSIX_strcoll); |
5915 | newXS_deffile("POSIX::strtod", XS_POSIX_strtod)Perl_newXS_deffile( "POSIX::strtod",XS_POSIX_strtod); |
5916 | #if XSubPPtmpAAAA1 |
5917 | newXS_deffile("POSIX::strtold", XS_POSIX_strtold)Perl_newXS_deffile( "POSIX::strtold",XS_POSIX_strtold); |
5918 | #endif |
5919 | newXS_deffile("POSIX::strtol", XS_POSIX_strtol)Perl_newXS_deffile( "POSIX::strtol",XS_POSIX_strtol); |
5920 | newXS_deffile("POSIX::strtoul", XS_POSIX_strtoul)Perl_newXS_deffile( "POSIX::strtoul",XS_POSIX_strtoul); |
5921 | newXS_deffile("POSIX::strxfrm", XS_POSIX_strxfrm)Perl_newXS_deffile( "POSIX::strxfrm",XS_POSIX_strxfrm); |
5922 | cv = newXS_deffile("POSIX::access", XS_POSIX_mkfifo)Perl_newXS_deffile( "POSIX::access",XS_POSIX_mkfifo); |
5923 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 1; |
5924 | cv = newXS_deffile("POSIX::mkfifo", XS_POSIX_mkfifo)Perl_newXS_deffile( "POSIX::mkfifo",XS_POSIX_mkfifo); |
5925 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 0; |
5926 | cv = newXS_deffile("POSIX::close", XS_POSIX_tcdrain)Perl_newXS_deffile( "POSIX::close",XS_POSIX_tcdrain); |
5927 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 1; |
5928 | cv = newXS_deffile("POSIX::dup", XS_POSIX_tcdrain)Perl_newXS_deffile( "POSIX::dup",XS_POSIX_tcdrain); |
5929 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 2; |
5930 | cv = newXS_deffile("POSIX::tcdrain", XS_POSIX_tcdrain)Perl_newXS_deffile( "POSIX::tcdrain",XS_POSIX_tcdrain); |
5931 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 0; |
5932 | cv = newXS_deffile("POSIX::tcflow", XS_POSIX_tcflow)Perl_newXS_deffile( "POSIX::tcflow",XS_POSIX_tcflow); |
5933 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 0; |
5934 | cv = newXS_deffile("POSIX::tcflush", XS_POSIX_tcflow)Perl_newXS_deffile( "POSIX::tcflush",XS_POSIX_tcflow); |
5935 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 1; |
5936 | cv = newXS_deffile("POSIX::tcsendbreak", XS_POSIX_tcflow)Perl_newXS_deffile( "POSIX::tcsendbreak",XS_POSIX_tcflow); |
5937 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 2; |
5938 | cv = newXS_deffile("POSIX::asctime", XS_POSIX_asctime)Perl_newXS_deffile( "POSIX::asctime",XS_POSIX_asctime); |
5939 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 0; |
5940 | cv = newXS_deffile("POSIX::mktime", XS_POSIX_asctime)Perl_newXS_deffile( "POSIX::mktime",XS_POSIX_asctime); |
5941 | XSANY((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_i32 = 1; |
5942 | newXS_deffile("POSIX::clock", XS_POSIX_clock)Perl_newXS_deffile( "POSIX::clock",XS_POSIX_clock); |
5943 | newXS_deffile("POSIX::ctime", XS_POSIX_ctime)Perl_newXS_deffile( "POSIX::ctime",XS_POSIX_ctime); |
5944 | newXS_deffile("POSIX::times", XS_POSIX_times)Perl_newXS_deffile( "POSIX::times",XS_POSIX_times); |
5945 | newXS_deffile("POSIX::difftime", XS_POSIX_difftime)Perl_newXS_deffile( "POSIX::difftime",XS_POSIX_difftime); |
5946 | newXS_deffile("POSIX::strftime", XS_POSIX_strftime)Perl_newXS_deffile( "POSIX::strftime",XS_POSIX_strftime); |
5947 | newXS_deffile("POSIX::tzset", XS_POSIX_tzset)Perl_newXS_deffile( "POSIX::tzset",XS_POSIX_tzset); |
5948 | newXS_deffile("POSIX::tzname", XS_POSIX_tzname)Perl_newXS_deffile( "POSIX::tzname",XS_POSIX_tzname); |
5949 | newXS_deffile("POSIX::ctermid", XS_POSIX_ctermid)Perl_newXS_deffile( "POSIX::ctermid",XS_POSIX_ctermid); |
5950 | newXS_deffile("POSIX::cuserid", XS_POSIX_cuserid)Perl_newXS_deffile( "POSIX::cuserid",XS_POSIX_cuserid); |
5951 | newXS_deffile("POSIX::fpathconf", XS_POSIX_fpathconf)Perl_newXS_deffile( "POSIX::fpathconf",XS_POSIX_fpathconf); |
5952 | newXS_deffile("POSIX::pathconf", XS_POSIX_pathconf)Perl_newXS_deffile( "POSIX::pathconf",XS_POSIX_pathconf); |
5953 | newXS_deffile("POSIX::pause", XS_POSIX_pause)Perl_newXS_deffile( "POSIX::pause",XS_POSIX_pause); |
5954 | newXS_deffile("POSIX::sleep", XS_POSIX_sleep)Perl_newXS_deffile( "POSIX::sleep",XS_POSIX_sleep); |
5955 | newXS_deffile("POSIX::setgid", XS_POSIX_setgid)Perl_newXS_deffile( "POSIX::setgid",XS_POSIX_setgid); |
5956 | newXS_deffile("POSIX::setuid", XS_POSIX_setuid)Perl_newXS_deffile( "POSIX::setuid",XS_POSIX_setuid); |
5957 | newXS_deffile("POSIX::sysconf", XS_POSIX_sysconf)Perl_newXS_deffile( "POSIX::sysconf",XS_POSIX_sysconf); |
5958 | newXS_deffile("POSIX::ttyname", XS_POSIX_ttyname)Perl_newXS_deffile( "POSIX::ttyname",XS_POSIX_ttyname); |
5959 | newXS_deffile("POSIX::getcwd", XS_POSIX_getcwd)Perl_newXS_deffile( "POSIX::getcwd",XS_POSIX_getcwd); |
5960 | newXS_deffile("POSIX::lchown", XS_POSIX_lchown)Perl_newXS_deffile( "POSIX::lchown",XS_POSIX_lchown); |
5961 | |
5962 | /* Initialisation Section */ |
5963 | |
5964 | #line 2 "./const-xs.inc" |
5965 | { |
5966 | #if defined(dTHXstruct Perl___notused_struct) && !defined(PERL_NO_GET_CONTEXT) |
5967 | dTHXstruct Perl___notused_struct; |
5968 | #endif |
5969 | HV *symbol_table = get_hv("POSIX::", GV_ADD)Perl_get_hv( "POSIX::",0x01); |
5970 | |
5971 | static const struct iv_s values_for_iv[] = |
5972 | { |
5973 | #ifdef ARG_MAX(512 * 1024) |
5974 | { "ARG_MAX", 7, ARG_MAX(512 * 1024) }, |
5975 | #endif |
5976 | #ifdef B00 |
5977 | { "B0", 2, B00 }, |
5978 | #endif |
5979 | #ifdef B110110 |
5980 | { "B110", 4, B110110 }, |
5981 | #endif |
5982 | #ifdef B12001200 |
5983 | { "B1200", 5, B12001200 }, |
5984 | #endif |
5985 | #ifdef B134134 |
5986 | { "B134", 4, B134134 }, |
5987 | #endif |
5988 | #ifdef B150150 |
5989 | { "B150", 4, B150150 }, |
5990 | #endif |
5991 | #ifdef B18001800 |
5992 | { "B1800", 5, B18001800 }, |
5993 | #endif |
5994 | #ifdef B1920019200 |
5995 | { "B19200", 6, B1920019200 }, |
5996 | #endif |
5997 | #ifdef B200200 |
5998 | { "B200", 4, B200200 }, |
5999 | #endif |
6000 | #ifdef B24002400 |
6001 | { "B2400", 5, B24002400 }, |
6002 | #endif |
6003 | #ifdef B300300 |
6004 | { "B300", 4, B300300 }, |
6005 | #endif |
6006 | #ifdef B3840038400 |
6007 | { "B38400", 6, B3840038400 }, |
6008 | #endif |
6009 | #ifdef B48004800 |
6010 | { "B4800", 5, B48004800 }, |
6011 | #endif |
6012 | #ifdef B5050 |
6013 | { "B50", 3, B5050 }, |
6014 | #endif |
6015 | #ifdef B600600 |
6016 | { "B600", 4, B600600 }, |
6017 | #endif |
6018 | #ifdef B7575 |
6019 | { "B75", 3, B7575 }, |
6020 | #endif |
6021 | #ifdef B96009600 |
6022 | { "B9600", 5, B96009600 }, |
6023 | #endif |
6024 | #ifdef BRKINT0x00000002 |
6025 | { "BRKINT", 6, BRKINT0x00000002 }, |
6026 | #endif |
6027 | #ifdef BUFSIZ1024 |
6028 | { "BUFSIZ", 6, BUFSIZ1024 }, |
6029 | #endif |
6030 | #ifdef CHAR_BIT8 |
6031 | { "CHAR_BIT", 8, CHAR_BIT8 }, |
6032 | #endif |
6033 | #ifdef CHAR_MAX127 |
6034 | { "CHAR_MAX", 8, CHAR_MAX127 }, |
6035 | #endif |
6036 | #ifdef CHAR_MIN(-127 -1) |
6037 | { "CHAR_MIN", 8, CHAR_MIN(-127 -1) }, |
6038 | #endif |
6039 | #ifdef CHILD_MAX80 |
6040 | { "CHILD_MAX", 9, CHILD_MAX80 }, |
6041 | #endif |
6042 | #ifdef CLOCAL0x00008000 |
6043 | { "CLOCAL", 6, CLOCAL0x00008000 }, |
6044 | #endif |
6045 | #ifdef CLOCKS_PER_SEC100 |
6046 | { "CLOCKS_PER_SEC", 14, CLOCKS_PER_SEC100 }, |
6047 | #endif |
6048 | #ifdef CREAD0x00000800 |
6049 | { "CREAD", 5, CREAD0x00000800 }, |
6050 | #endif |
6051 | #ifdef CS50x00000000 |
6052 | { "CS5", 3, CS50x00000000 }, |
6053 | #endif |
6054 | #ifdef CS60x00000100 |
6055 | { "CS6", 3, CS60x00000100 }, |
6056 | #endif |
6057 | #ifdef CS70x00000200 |
6058 | { "CS7", 3, CS70x00000200 }, |
6059 | #endif |
6060 | #ifdef CS80x00000300 |
6061 | { "CS8", 3, CS80x00000300 }, |
6062 | #endif |
6063 | #ifdef CSIZE0x00000300 |
6064 | { "CSIZE", 5, CSIZE0x00000300 }, |
6065 | #endif |
6066 | #ifdef CSTOPB0x00000400 |
6067 | { "CSTOPB", 6, CSTOPB0x00000400 }, |
6068 | #endif |
6069 | #ifdef E2BIG7 |
6070 | { "E2BIG", 5, E2BIG7 }, |
6071 | #endif |
6072 | #ifdef EACCES13 |
6073 | { "EACCES", 6, EACCES13 }, |
6074 | #endif |
6075 | #ifdef EADDRINUSE48 |
6076 | { "EADDRINUSE", 10, EADDRINUSE48 }, |
6077 | #endif |
6078 | #ifdef EADDRNOTAVAIL49 |
6079 | { "EADDRNOTAVAIL", 13, EADDRNOTAVAIL49 }, |
6080 | #endif |
6081 | #ifdef EAFNOSUPPORT47 |
6082 | { "EAFNOSUPPORT", 12, EAFNOSUPPORT47 }, |
6083 | #endif |
6084 | #ifdef EAGAIN35 |
6085 | { "EAGAIN", 6, EAGAIN35 }, |
6086 | #endif |
6087 | #ifdef EALREADY37 |
6088 | { "EALREADY", 8, EALREADY37 }, |
6089 | #endif |
6090 | #ifdef EBADF9 |
6091 | { "EBADF", 5, EBADF9 }, |
6092 | #endif |
6093 | #ifdef EBADMSG92 |
6094 | { "EBADMSG", 7, EBADMSG92 }, |
6095 | #endif |
6096 | #ifdef EBUSY16 |
6097 | { "EBUSY", 5, EBUSY16 }, |
6098 | #endif |
6099 | #ifdef ECANCELED88 |
6100 | { "ECANCELED", 9, ECANCELED88 }, |
6101 | #endif |
6102 | #ifdef ECHILD10 |
6103 | { "ECHILD", 6, ECHILD10 }, |
6104 | #endif |
6105 | #ifdef ECHO0x00000008 |
6106 | { "ECHO", 4, ECHO0x00000008 }, |
6107 | #endif |
6108 | #ifdef ECHOE0x00000002 |
6109 | { "ECHOE", 5, ECHOE0x00000002 }, |
6110 | #endif |
6111 | #ifdef ECHOK0x00000004 |
6112 | { "ECHOK", 5, ECHOK0x00000004 }, |
6113 | #endif |
6114 | #ifdef ECHONL0x00000010 |
6115 | { "ECHONL", 6, ECHONL0x00000010 }, |
6116 | #endif |
6117 | #ifdef ECONNABORTED53 |
6118 | { "ECONNABORTED", 12, ECONNABORTED53 }, |
6119 | #endif |
6120 | #ifdef ECONNREFUSED61 |
6121 | { "ECONNREFUSED", 12, ECONNREFUSED61 }, |
6122 | #endif |
6123 | #ifdef ECONNRESET54 |
6124 | { "ECONNRESET", 10, ECONNRESET54 }, |
6125 | #endif |
6126 | #ifdef EDEADLK11 |
6127 | { "EDEADLK", 7, EDEADLK11 }, |
6128 | #endif |
6129 | #ifdef EDESTADDRREQ39 |
6130 | { "EDESTADDRREQ", 12, EDESTADDRREQ39 }, |
6131 | #endif |
6132 | #ifdef EDOM33 |
6133 | { "EDOM", 4, EDOM33 }, |
6134 | #endif |
6135 | #ifdef EDQUOT69 |
6136 | { "EDQUOT", 6, EDQUOT69 }, |
6137 | #endif |
6138 | #ifdef EEXIST17 |
6139 | { "EEXIST", 6, EEXIST17 }, |
6140 | #endif |
6141 | #ifdef EFAULT14 |
6142 | { "EFAULT", 6, EFAULT14 }, |
6143 | #endif |
6144 | #ifdef EFBIG27 |
6145 | { "EFBIG", 5, EFBIG27 }, |
6146 | #endif |
6147 | #ifdef EHOSTDOWN64 |
6148 | { "EHOSTDOWN", 9, EHOSTDOWN64 }, |
6149 | #endif |
6150 | #ifdef EHOSTUNREACH65 |
6151 | { "EHOSTUNREACH", 12, EHOSTUNREACH65 }, |
6152 | #endif |
6153 | #ifdef EIDRM89 |
6154 | { "EIDRM", 5, EIDRM89 }, |
6155 | #endif |
6156 | #ifdef EILSEQ84 |
6157 | { "EILSEQ", 6, EILSEQ84 }, |
6158 | #endif |
6159 | #ifdef EINPROGRESS36 |
6160 | { "EINPROGRESS", 11, EINPROGRESS36 }, |
6161 | #endif |
6162 | #ifdef EINTR4 |
6163 | { "EINTR", 5, EINTR4 }, |
6164 | #endif |
6165 | #ifdef EINVAL22 |
6166 | { "EINVAL", 6, EINVAL22 }, |
6167 | #endif |
6168 | #ifdef EIO5 |
6169 | { "EIO", 3, EIO5 }, |
6170 | #endif |
6171 | #ifdef EISCONN56 |
6172 | { "EISCONN", 7, EISCONN56 }, |
6173 | #endif |
6174 | #ifdef EISDIR21 |
6175 | { "EISDIR", 6, EISDIR21 }, |
6176 | #endif |
6177 | #ifdef ELOOP62 |
6178 | { "ELOOP", 5, ELOOP62 }, |
6179 | #endif |
6180 | #ifdef EMFILE24 |
6181 | { "EMFILE", 6, EMFILE24 }, |
6182 | #endif |
6183 | #ifdef EMLINK31 |
6184 | { "EMLINK", 6, EMLINK31 }, |
6185 | #endif |
6186 | #ifdef EMSGSIZE40 |
6187 | { "EMSGSIZE", 8, EMSGSIZE40 }, |
6188 | #endif |
6189 | #ifdef ENAMETOOLONG63 |
6190 | { "ENAMETOOLONG", 12, ENAMETOOLONG63 }, |
6191 | #endif |
6192 | #ifdef ENETDOWN50 |
6193 | { "ENETDOWN", 8, ENETDOWN50 }, |
6194 | #endif |
6195 | #ifdef ENETRESET52 |
6196 | { "ENETRESET", 9, ENETRESET52 }, |
6197 | #endif |
6198 | #ifdef ENETUNREACH51 |
6199 | { "ENETUNREACH", 11, ENETUNREACH51 }, |
6200 | #endif |
6201 | #ifdef ENFILE23 |
6202 | { "ENFILE", 6, ENFILE23 }, |
6203 | #endif |
6204 | #ifdef ENOBUFS55 |
6205 | { "ENOBUFS", 7, ENOBUFS55 }, |
6206 | #endif |
6207 | #ifdef ENODATA |
6208 | { "ENODATA", 7, ENODATA }, |
6209 | #endif |
6210 | #ifdef ENODEV19 |
6211 | { "ENODEV", 6, ENODEV19 }, |
6212 | #endif |
6213 | #ifdef ENOENT2 |
6214 | { "ENOENT", 6, ENOENT2 }, |
6215 | #endif |
6216 | #ifdef ENOEXEC8 |
6217 | { "ENOEXEC", 7, ENOEXEC8 }, |
6218 | #endif |
6219 | #ifdef ENOLCK77 |
6220 | { "ENOLCK", 6, ENOLCK77 }, |
6221 | #endif |
6222 | #ifdef ENOLINK |
6223 | { "ENOLINK", 7, ENOLINK }, |
6224 | #endif |
6225 | #ifdef ENOMEM12 |
6226 | { "ENOMEM", 6, ENOMEM12 }, |
6227 | #endif |
6228 | #ifdef ENOMSG90 |
6229 | { "ENOMSG", 6, ENOMSG90 }, |
6230 | #endif |
6231 | #ifdef ENOPROTOOPT42 |
6232 | { "ENOPROTOOPT", 11, ENOPROTOOPT42 }, |
6233 | #endif |
6234 | #ifdef ENOSPC28 |
6235 | { "ENOSPC", 6, ENOSPC28 }, |
6236 | #endif |
6237 | #ifdef ENOSR |
6238 | { "ENOSR", 5, ENOSR }, |
6239 | #endif |
6240 | #ifdef ENOSTR |
6241 | { "ENOSTR", 6, ENOSTR }, |
6242 | #endif |
6243 | #ifdef ENOSYS78 |
6244 | { "ENOSYS", 6, ENOSYS78 }, |
6245 | #endif |
6246 | #ifdef ENOTBLK15 |
6247 | { "ENOTBLK", 7, ENOTBLK15 }, |
6248 | #endif |
6249 | #ifdef ENOTCONN57 |
6250 | { "ENOTCONN", 8, ENOTCONN57 }, |
6251 | #endif |
6252 | #ifdef ENOTDIR20 |
6253 | { "ENOTDIR", 7, ENOTDIR20 }, |
6254 | #endif |
6255 | #ifdef ENOTEMPTY66 |
6256 | { "ENOTEMPTY", 9, ENOTEMPTY66 }, |
6257 | #endif |
6258 | #ifdef ENOTRECOVERABLE93 |
6259 | { "ENOTRECOVERABLE", 15, ENOTRECOVERABLE93 }, |
6260 | #endif |
6261 | #ifdef ENOTSOCK38 |
6262 | { "ENOTSOCK", 8, ENOTSOCK38 }, |
6263 | #endif |
6264 | #ifdef ENOTSUP91 |
6265 | { "ENOTSUP", 7, ENOTSUP91 }, |
6266 | #endif |
6267 | #ifdef ENOTTY25 |
6268 | { "ENOTTY", 6, ENOTTY25 }, |
6269 | #endif |
6270 | #ifdef ENXIO6 |
6271 | { "ENXIO", 5, ENXIO6 }, |
6272 | #endif |
6273 | #ifdef EOF(-1) |
6274 | { "EOF", 3, EOF(-1) }, |
6275 | #endif |
6276 | #ifdef EOPNOTSUPP45 |
6277 | { "EOPNOTSUPP", 10, EOPNOTSUPP45 }, |
6278 | #endif |
6279 | #ifdef EOTHER |
6280 | { "EOTHER", 6, EOTHER }, |
6281 | #endif |
6282 | #ifdef EOVERFLOW87 |
6283 | { "EOVERFLOW", 9, EOVERFLOW87 }, |
6284 | #endif |
6285 | #ifdef EOWNERDEAD94 |
6286 | { "EOWNERDEAD", 10, EOWNERDEAD94 }, |
6287 | #endif |
6288 | #ifdef EPERM1 |
6289 | { "EPERM", 5, EPERM1 }, |
6290 | #endif |
6291 | #ifdef EPFNOSUPPORT46 |
6292 | { "EPFNOSUPPORT", 12, EPFNOSUPPORT46 }, |
6293 | #endif |
6294 | #ifdef EPIPE32 |
6295 | { "EPIPE", 5, EPIPE32 }, |
6296 | #endif |
6297 | #ifdef EPROCLIM67 |
6298 | { "EPROCLIM", 8, EPROCLIM67 }, |
6299 | #endif |
6300 | #ifdef EPROTO95 |
6301 | { "EPROTO", 6, EPROTO95 }, |
6302 | #endif |
6303 | #ifdef EPROTONOSUPPORT43 |
6304 | { "EPROTONOSUPPORT", 15, EPROTONOSUPPORT43 }, |
6305 | #endif |
6306 | #ifdef EPROTOTYPE41 |
6307 | { "EPROTOTYPE", 10, EPROTOTYPE41 }, |
6308 | #endif |
6309 | #ifdef ERANGE34 |
6310 | { "ERANGE", 6, ERANGE34 }, |
6311 | #endif |
6312 | #ifdef EREMOTE71 |
6313 | { "EREMOTE", 7, EREMOTE71 }, |
6314 | #endif |
6315 | #ifdef ERESTART |
6316 | { "ERESTART", 8, ERESTART }, |
6317 | #endif |
6318 | #ifdef EROFS30 |
6319 | { "EROFS", 5, EROFS30 }, |
6320 | #endif |
6321 | #ifdef ESHUTDOWN58 |
6322 | { "ESHUTDOWN", 9, ESHUTDOWN58 }, |
6323 | #endif |
6324 | #ifdef ESOCKTNOSUPPORT44 |
6325 | { "ESOCKTNOSUPPORT", 15, ESOCKTNOSUPPORT44 }, |
6326 | #endif |
6327 | #ifdef ESPIPE29 |
6328 | { "ESPIPE", 6, ESPIPE29 }, |
6329 | #endif |
6330 | #ifdef ESRCH3 |
6331 | { "ESRCH", 5, ESRCH3 }, |
6332 | #endif |
6333 | #ifdef ESTALE70 |
6334 | { "ESTALE", 6, ESTALE70 }, |
6335 | #endif |
6336 | #ifdef ETIME |
6337 | { "ETIME", 5, ETIME }, |
6338 | #endif |
6339 | #ifdef ETIMEDOUT60 |
6340 | { "ETIMEDOUT", 9, ETIMEDOUT60 }, |
6341 | #endif |
6342 | #ifdef ETOOMANYREFS59 |
6343 | { "ETOOMANYREFS", 12, ETOOMANYREFS59 }, |
6344 | #endif |
6345 | #ifdef ETXTBSY26 |
6346 | { "ETXTBSY", 7, ETXTBSY26 }, |
6347 | #endif |
6348 | #ifdef EUSERS68 |
6349 | { "EUSERS", 6, EUSERS68 }, |
6350 | #endif |
6351 | #ifdef EWOULDBLOCK35 |
6352 | { "EWOULDBLOCK", 11, EWOULDBLOCK35 }, |
6353 | #endif |
6354 | #ifdef EXDEV18 |
6355 | { "EXDEV", 5, EXDEV18 }, |
6356 | #endif |
6357 | #ifdef FILENAME_MAX1024 |
6358 | { "FILENAME_MAX", 12, FILENAME_MAX1024 }, |
6359 | #endif |
6360 | #ifdef F_OK0 |
6361 | { "F_OK", 4, F_OK0 }, |
6362 | #endif |
6363 | #ifdef HUPCL0x00004000 |
6364 | { "HUPCL", 5, HUPCL0x00004000 }, |
6365 | #endif |
6366 | #ifdef ICANON0x00000100 |
6367 | { "ICANON", 6, ICANON0x00000100 }, |
6368 | #endif |
6369 | #ifdef ICRNL0x00000100 |
6370 | { "ICRNL", 5, ICRNL0x00000100 }, |
6371 | #endif |
6372 | #ifdef IEXTEN0x00000400 |
6373 | { "IEXTEN", 6, IEXTEN0x00000400 }, |
6374 | #endif |
6375 | #ifdef IGNBRK0x00000001 |
6376 | { "IGNBRK", 6, IGNBRK0x00000001 }, |
6377 | #endif |
6378 | #ifdef IGNCR0x00000080 |
6379 | { "IGNCR", 5, IGNCR0x00000080 }, |
6380 | #endif |
6381 | #ifdef IGNPAR0x00000004 |
6382 | { "IGNPAR", 6, IGNPAR0x00000004 }, |
6383 | #endif |
6384 | #ifdef INLCR0x00000040 |
6385 | { "INLCR", 5, INLCR0x00000040 }, |
6386 | #endif |
6387 | #ifdef INPCK0x00000010 |
6388 | { "INPCK", 5, INPCK0x00000010 }, |
6389 | #endif |
6390 | #ifdef INT_MAX2147483647 |
6391 | { "INT_MAX", 7, INT_MAX2147483647 }, |
6392 | #endif |
6393 | #ifdef INT_MIN(-2147483647 -1) |
6394 | { "INT_MIN", 7, INT_MIN(-2147483647 -1) }, |
6395 | #endif |
6396 | #ifdef ISIG0x00000080 |
6397 | { "ISIG", 4, ISIG0x00000080 }, |
6398 | #endif |
6399 | #ifdef ISTRIP0x00000020 |
6400 | { "ISTRIP", 6, ISTRIP0x00000020 }, |
6401 | #endif |
6402 | #ifdef IXOFF0x00000400 |
6403 | { "IXOFF", 5, IXOFF0x00000400 }, |
6404 | #endif |
6405 | #ifdef IXON0x00000200 |
6406 | { "IXON", 4, IXON0x00000200 }, |
6407 | #endif |
6408 | #ifdef LC_ADDRESS |
6409 | { "LC_ADDRESS", 10, LC_ADDRESS }, |
6410 | #endif |
6411 | #ifdef LC_ALL0 |
6412 | { "LC_ALL", 6, LC_ALL0 }, |
6413 | #endif |
6414 | #ifdef LC_COLLATE1 |
6415 | { "LC_COLLATE", 10, LC_COLLATE1 }, |
6416 | #endif |
6417 | #ifdef LC_CTYPE2 |
6418 | { "LC_CTYPE", 8, LC_CTYPE2 }, |
6419 | #endif |
6420 | #ifdef LC_IDENTIFICATION |
6421 | { "LC_IDENTIFICATION", 17, LC_IDENTIFICATION }, |
6422 | #endif |
6423 | #ifdef LC_MEASUREMENT |
6424 | { "LC_MEASUREMENT", 14, LC_MEASUREMENT }, |
6425 | #endif |
6426 | #ifdef LC_MESSAGES6 |
6427 | { "LC_MESSAGES", 11, LC_MESSAGES6 }, |
6428 | #endif |
6429 | #ifdef LC_MONETARY3 |
6430 | { "LC_MONETARY", 11, LC_MONETARY3 }, |
6431 | #endif |
6432 | #ifdef LC_NUMERIC4 |
6433 | { "LC_NUMERIC", 10, LC_NUMERIC4 }, |
6434 | #endif |
6435 | #ifdef LC_PAPER |
6436 | { "LC_PAPER", 8, LC_PAPER }, |
6437 | #endif |
6438 | #ifdef LC_TELEPHONE |
6439 | { "LC_TELEPHONE", 12, LC_TELEPHONE }, |
6440 | #endif |
6441 | #ifdef LC_TIME5 |
6442 | { "LC_TIME", 7, LC_TIME5 }, |
6443 | #endif |
6444 | #ifdef LINK_MAX32767 |
6445 | { "LINK_MAX", 8, LINK_MAX32767 }, |
6446 | #endif |
6447 | #ifdef LONG_MAX9223372036854775807L |
6448 | { "LONG_MAX", 8, LONG_MAX9223372036854775807L }, |
6449 | #endif |
6450 | #ifdef LONG_MIN(-9223372036854775807L -1L) |
6451 | { "LONG_MIN", 8, LONG_MIN(-9223372036854775807L -1L) }, |
6452 | #endif |
6453 | #ifdef L_ctermid1024 |
6454 | { "L_ctermid", 9, L_ctermid1024 }, |
6455 | #endif |
6456 | #ifdef L_cuserid |
6457 | { "L_cuserid", 9, L_cuserid }, |
6458 | #endif |
6459 | #ifdef MAX_CANON255 |
6460 | { "MAX_CANON", 9, MAX_CANON255 }, |
6461 | #endif |
6462 | #ifdef MAX_INPUT255 |
6463 | { "MAX_INPUT", 9, MAX_INPUT255 }, |
6464 | #endif |
6465 | #ifdef MB_LEN_MAX4 |
6466 | { "MB_LEN_MAX", 10, MB_LEN_MAX4 }, |
6467 | #endif |
6468 | #ifdef MSG_CTRUNC0x20 |
6469 | { "MSG_CTRUNC", 10, MSG_CTRUNC0x20 }, |
6470 | #endif |
6471 | #ifdef MSG_DONTROUTE0x4 |
6472 | { "MSG_DONTROUTE", 13, MSG_DONTROUTE0x4 }, |
6473 | #endif |
6474 | #ifdef MSG_EOR0x8 |
6475 | { "MSG_EOR", 7, MSG_EOR0x8 }, |
6476 | #endif |
6477 | #ifdef MSG_OOB0x1 |
6478 | { "MSG_OOB", 7, MSG_OOB0x1 }, |
6479 | #endif |
6480 | #ifdef MSG_PEEK0x2 |
6481 | { "MSG_PEEK", 8, MSG_PEEK0x2 }, |
6482 | #endif |
6483 | #ifdef MSG_TRUNC0x10 |
6484 | { "MSG_TRUNC", 9, MSG_TRUNC0x10 }, |
6485 | #endif |
6486 | #ifdef MSG_WAITALL0x40 |
6487 | { "MSG_WAITALL", 11, MSG_WAITALL0x40 }, |
6488 | #endif |
6489 | #ifdef NAME_MAX255 |
6490 | { "NAME_MAX", 8, NAME_MAX255 }, |
6491 | #endif |
6492 | #ifdef NCCS20 |
6493 | { "NCCS", 4, NCCS20 }, |
6494 | #endif |
6495 | #ifdef NGROUPS_MAX16 |
6496 | { "NGROUPS_MAX", 11, NGROUPS_MAX16 }, |
6497 | #endif |
6498 | #ifdef NOFLSH0x80000000 |
6499 | { "NOFLSH", 6, NOFLSH0x80000000 }, |
6500 | #endif |
6501 | #ifdef OPEN_MAX64 |
6502 | { "OPEN_MAX", 8, OPEN_MAX64 }, |
6503 | #endif |
6504 | #ifdef OPOST0x00000001 |
6505 | { "OPOST", 5, OPOST0x00000001 }, |
6506 | #endif |
6507 | #ifdef PARENB0x00001000 |
6508 | { "PARENB", 6, PARENB0x00001000 }, |
6509 | #endif |
6510 | #ifdef PARMRK0x00000008 |
6511 | { "PARMRK", 6, PARMRK0x00000008 }, |
6512 | #endif |
6513 | #ifdef PARODD0x00002000 |
6514 | { "PARODD", 6, PARODD0x00002000 }, |
6515 | #endif |
6516 | #ifdef PATH_MAX1024 |
6517 | { "PATH_MAX", 8, PATH_MAX1024 }, |
6518 | #endif |
6519 | #ifdef PIPE_BUF512 |
6520 | { "PIPE_BUF", 8, PIPE_BUF512 }, |
6521 | #endif |
6522 | #ifdef RAND_MAX0x7fffffff |
6523 | { "RAND_MAX", 8, RAND_MAX0x7fffffff }, |
6524 | #endif |
6525 | #ifdef R_OK0x04 |
6526 | { "R_OK", 4, R_OK0x04 }, |
6527 | #endif |
6528 | #ifdef SCHAR_MAX127 |
6529 | { "SCHAR_MAX", 9, SCHAR_MAX127 }, |
6530 | #endif |
6531 | #ifdef SCHAR_MIN(-127 -1) |
6532 | { "SCHAR_MIN", 9, SCHAR_MIN(-127 -1) }, |
6533 | #endif |
6534 | #ifdef SHRT_MAX32767 |
6535 | { "SHRT_MAX", 8, SHRT_MAX32767 }, |
6536 | #endif |
6537 | #ifdef SHRT_MIN(-32767 -1) |
6538 | { "SHRT_MIN", 8, SHRT_MIN(-32767 -1) }, |
6539 | #endif |
6540 | #ifdef SIGABRT6 |
6541 | { "SIGABRT", 7, SIGABRT6 }, |
6542 | #endif |
6543 | #ifdef SIGALRM14 |
6544 | { "SIGALRM", 7, SIGALRM14 }, |
6545 | #endif |
6546 | #ifdef SIGCHLD20 |
6547 | { "SIGCHLD", 7, SIGCHLD20 }, |
6548 | #endif |
6549 | #ifdef SIGCONT19 |
6550 | { "SIGCONT", 7, SIGCONT19 }, |
6551 | #endif |
6552 | #ifdef SIGFPE8 |
6553 | { "SIGFPE", 6, SIGFPE8 }, |
6554 | #endif |
6555 | #ifdef SIGHUP1 |
6556 | { "SIGHUP", 6, SIGHUP1 }, |
6557 | #endif |
6558 | #ifdef SIGILL4 |
6559 | { "SIGILL", 6, SIGILL4 }, |
6560 | #endif |
6561 | #ifdef SIGINT2 |
6562 | { "SIGINT", 6, SIGINT2 }, |
6563 | #endif |
6564 | #ifdef SIGKILL9 |
6565 | { "SIGKILL", 7, SIGKILL9 }, |
6566 | #endif |
6567 | #ifdef SIGPIPE13 |
6568 | { "SIGPIPE", 7, SIGPIPE13 }, |
6569 | #endif |
6570 | #ifdef SIGQUIT3 |
6571 | { "SIGQUIT", 7, SIGQUIT3 }, |
6572 | #endif |
6573 | #ifdef SIGSEGV11 |
6574 | { "SIGSEGV", 7, SIGSEGV11 }, |
6575 | #endif |
6576 | #ifdef SIGSTOP17 |
6577 | { "SIGSTOP", 7, SIGSTOP17 }, |
6578 | #endif |
6579 | #ifdef SIGTERM15 |
6580 | { "SIGTERM", 7, SIGTERM15 }, |
6581 | #endif |
6582 | #ifdef SIGTSTP18 |
6583 | { "SIGTSTP", 7, SIGTSTP18 }, |
6584 | #endif |
6585 | #ifdef SIGTTIN21 |
6586 | { "SIGTTIN", 7, SIGTTIN21 }, |
6587 | #endif |
6588 | #ifdef SIGTTOU22 |
6589 | { "SIGTTOU", 7, SIGTTOU22 }, |
6590 | #endif |
6591 | #ifdef SIGUSR130 |
6592 | { "SIGUSR1", 7, SIGUSR130 }, |
6593 | #endif |
6594 | #ifdef SIGUSR231 |
6595 | { "SIGUSR2", 7, SIGUSR231 }, |
6596 | #endif |
6597 | #ifdef SIG_BLOCK1 |
6598 | { "SIG_BLOCK", 9, SIG_BLOCK1 }, |
6599 | #endif |
6600 | #ifdef SIG_SETMASK3 |
6601 | { "SIG_SETMASK", 11, SIG_SETMASK3 }, |
6602 | #endif |
6603 | #ifdef SIG_UNBLOCK2 |
6604 | { "SIG_UNBLOCK", 11, SIG_UNBLOCK2 }, |
6605 | #endif |
6606 | #ifdef SSIZE_MAX9223372036854775807L |
6607 | { "SSIZE_MAX", 9, SSIZE_MAX9223372036854775807L }, |
6608 | #endif |
6609 | #ifdef SIGBUS10 |
6610 | { "SIGBUS", 6, SIGBUS10 }, |
6611 | #endif |
6612 | #ifdef SIGPOLL |
6613 | { "SIGPOLL", 7, SIGPOLL }, |
6614 | #endif |
6615 | #ifdef SIGPROF27 |
6616 | { "SIGPROF", 7, SIGPROF27 }, |
6617 | #endif |
6618 | #ifdef SIGSYS12 |
6619 | { "SIGSYS", 6, SIGSYS12 }, |
6620 | #endif |
6621 | #ifdef SIGTRAP5 |
6622 | { "SIGTRAP", 7, SIGTRAP5 }, |
6623 | #endif |
6624 | #ifdef SIGURG16 |
6625 | { "SIGURG", 6, SIGURG16 }, |
6626 | #endif |
6627 | #ifdef SIGVTALRM26 |
6628 | { "SIGVTALRM", 9, SIGVTALRM26 }, |
6629 | #endif |
6630 | #ifdef SIGXCPU24 |
6631 | { "SIGXCPU", 7, SIGXCPU24 }, |
6632 | #endif |
6633 | #ifdef SIGXFSZ25 |
6634 | { "SIGXFSZ", 7, SIGXFSZ25 }, |
6635 | #endif |
6636 | #ifdef STDERR_FILENO2 |
6637 | { "STDERR_FILENO", 13, STDERR_FILENO2 }, |
6638 | #endif |
6639 | #ifdef STDIN_FILENO0 |
6640 | { "STDIN_FILENO", 12, STDIN_FILENO0 }, |
6641 | #endif |
6642 | #ifdef STDOUT_FILENO1 |
6643 | { "STDOUT_FILENO", 13, STDOUT_FILENO1 }, |
6644 | #endif |
6645 | #ifdef STREAM_MAX |
6646 | { "STREAM_MAX", 10, STREAM_MAX }, |
6647 | #endif |
6648 | #ifdef TCIFLUSH1 |
6649 | { "TCIFLUSH", 8, TCIFLUSH1 }, |
6650 | #endif |
6651 | #ifdef TCIOFF3 |
6652 | { "TCIOFF", 6, TCIOFF3 }, |
6653 | #endif |
6654 | #ifdef TCIOFLUSH3 |
6655 | { "TCIOFLUSH", 9, TCIOFLUSH3 }, |
6656 | #endif |
6657 | #ifdef TCION4 |
6658 | { "TCION", 5, TCION4 }, |
6659 | #endif |
6660 | #ifdef TCOFLUSH2 |
6661 | { "TCOFLUSH", 8, TCOFLUSH2 }, |
6662 | #endif |
6663 | #ifdef TCOOFF1 |
6664 | { "TCOOFF", 6, TCOOFF1 }, |
6665 | #endif |
6666 | #ifdef TCOON2 |
6667 | { "TCOON", 5, TCOON2 }, |
6668 | #endif |
6669 | #ifdef TCSADRAIN1 |
6670 | { "TCSADRAIN", 9, TCSADRAIN1 }, |
6671 | #endif |
6672 | #ifdef TCSAFLUSH2 |
6673 | { "TCSAFLUSH", 9, TCSAFLUSH2 }, |
6674 | #endif |
6675 | #ifdef TCSANOW0 |
6676 | { "TCSANOW", 7, TCSANOW0 }, |
6677 | #endif |
6678 | #ifdef TMP_MAX0x7fffffff |
6679 | { "TMP_MAX", 7, TMP_MAX0x7fffffff }, |
6680 | #endif |
6681 | #ifdef TOSTOP0x00400000 |
6682 | { "TOSTOP", 6, TOSTOP0x00400000 }, |
6683 | #endif |
6684 | #ifdef TZNAME_MAX |
6685 | { "TZNAME_MAX", 10, TZNAME_MAX }, |
6686 | #endif |
6687 | #ifdef VEOF0 |
6688 | { "VEOF", 4, VEOF0 }, |
6689 | #endif |
6690 | #ifdef VEOL1 |
6691 | { "VEOL", 4, VEOL1 }, |
6692 | #endif |
6693 | #ifdef VERASE3 |
6694 | { "VERASE", 6, VERASE3 }, |
6695 | #endif |
6696 | #ifdef VINTR8 |
6697 | { "VINTR", 5, VINTR8 }, |
6698 | #endif |
6699 | #ifdef VKILL5 |
6700 | { "VKILL", 5, VKILL5 }, |
6701 | #endif |
6702 | #ifdef VMIN16 |
6703 | { "VMIN", 4, VMIN16 }, |
6704 | #endif |
6705 | #ifdef VQUIT9 |
6706 | { "VQUIT", 5, VQUIT9 }, |
6707 | #endif |
6708 | #ifdef VSTART12 |
6709 | { "VSTART", 6, VSTART12 }, |
6710 | #endif |
6711 | #ifdef VSTOP13 |
6712 | { "VSTOP", 5, VSTOP13 }, |
6713 | #endif |
6714 | #ifdef VSUSP10 |
6715 | { "VSUSP", 5, VSUSP10 }, |
6716 | #endif |
6717 | #ifdef VTIME17 |
6718 | { "VTIME", 5, VTIME17 }, |
6719 | #endif |
6720 | #ifdef WNOHANG1 |
6721 | { "WNOHANG", 7, WNOHANG1 }, |
6722 | #endif |
6723 | #ifdef WUNTRACED2 |
6724 | { "WUNTRACED", 9, WUNTRACED2 }, |
6725 | #endif |
6726 | #ifdef W_OK0x02 |
6727 | { "W_OK", 4, W_OK0x02 }, |
6728 | #endif |
6729 | #ifdef X_OK0x01 |
6730 | { "X_OK", 4, X_OK0x01 }, |
6731 | #endif |
6732 | #ifdef _PC_CHOWN_RESTRICTED7 |
6733 | { "_PC_CHOWN_RESTRICTED", 20, _PC_CHOWN_RESTRICTED7 }, |
6734 | #endif |
6735 | #ifdef _PC_LINK_MAX1 |
6736 | { "_PC_LINK_MAX", 12, _PC_LINK_MAX1 }, |
6737 | #endif |
6738 | #ifdef _PC_MAX_CANON2 |
6739 | { "_PC_MAX_CANON", 13, _PC_MAX_CANON2 }, |
6740 | #endif |
6741 | #ifdef _PC_MAX_INPUT3 |
6742 | { "_PC_MAX_INPUT", 13, _PC_MAX_INPUT3 }, |
6743 | #endif |
6744 | #ifdef _PC_NAME_MAX4 |
6745 | { "_PC_NAME_MAX", 12, _PC_NAME_MAX4 }, |
6746 | #endif |
6747 | #ifdef _PC_NO_TRUNC8 |
6748 | { "_PC_NO_TRUNC", 12, _PC_NO_TRUNC8 }, |
6749 | #endif |
6750 | #ifdef _PC_PATH_MAX5 |
6751 | { "_PC_PATH_MAX", 12, _PC_PATH_MAX5 }, |
6752 | #endif |
6753 | #ifdef _PC_PIPE_BUF6 |
6754 | { "_PC_PIPE_BUF", 12, _PC_PIPE_BUF6 }, |
6755 | #endif |
6756 | #ifdef _PC_VDISABLE9 |
6757 | { "_PC_VDISABLE", 12, _PC_VDISABLE9 }, |
6758 | #endif |
6759 | #ifdef _SC_ARG_MAX1 |
6760 | { "_SC_ARG_MAX", 11, _SC_ARG_MAX1 }, |
6761 | #endif |
6762 | #ifdef _SC_CHILD_MAX2 |
6763 | { "_SC_CHILD_MAX", 13, _SC_CHILD_MAX2 }, |
6764 | #endif |
6765 | #ifdef _SC_CLK_TCK3 |
6766 | { "_SC_CLK_TCK", 11, _SC_CLK_TCK3 }, |
6767 | #endif |
6768 | #ifdef _SC_JOB_CONTROL6 |
6769 | { "_SC_JOB_CONTROL", 15, _SC_JOB_CONTROL6 }, |
6770 | #endif |
6771 | #ifdef _SC_NGROUPS_MAX4 |
6772 | { "_SC_NGROUPS_MAX", 15, _SC_NGROUPS_MAX4 }, |
6773 | #endif |
6774 | #ifdef _SC_OPEN_MAX5 |
6775 | { "_SC_OPEN_MAX", 12, _SC_OPEN_MAX5 }, |
6776 | #endif |
6777 | #ifdef _SC_PAGESIZE28 |
6778 | { "_SC_PAGESIZE", 12, _SC_PAGESIZE28 }, |
6779 | #endif |
6780 | #ifdef _SC_SAVED_IDS7 |
6781 | { "_SC_SAVED_IDS", 13, _SC_SAVED_IDS7 }, |
6782 | #endif |
6783 | #ifdef _SC_STREAM_MAX26 |
6784 | { "_SC_STREAM_MAX", 14, _SC_STREAM_MAX26 }, |
6785 | #endif |
6786 | #ifdef _SC_TZNAME_MAX27 |
6787 | { "_SC_TZNAME_MAX", 14, _SC_TZNAME_MAX27 }, |
6788 | #endif |
6789 | #ifdef _SC_VERSION8 |
6790 | { "_SC_VERSION", 11, _SC_VERSION8 }, |
6791 | #endif |
6792 | #ifdef EAI_AGAIN-3 |
6793 | { "EAI_AGAIN", 9, EAI_AGAIN-3 }, |
6794 | #endif |
6795 | #ifdef EAI_BADFLAGS-1 |
6796 | { "EAI_BADFLAGS", 12, EAI_BADFLAGS-1 }, |
6797 | #endif |
6798 | #ifdef EAI_FAIL-4 |
6799 | { "EAI_FAIL", 8, EAI_FAIL-4 }, |
6800 | #endif |
6801 | #ifdef EAI_FAMILY-6 |
6802 | { "EAI_FAMILY", 10, EAI_FAMILY-6 }, |
6803 | #endif |
6804 | #ifdef EAI_MEMORY-10 |
6805 | { "EAI_MEMORY", 10, EAI_MEMORY-10 }, |
6806 | #endif |
6807 | #ifdef EAI_NONAME-2 |
6808 | { "EAI_NONAME", 10, EAI_NONAME-2 }, |
6809 | #endif |
6810 | #ifdef EAI_SERVICE-8 |
6811 | { "EAI_SERVICE", 11, EAI_SERVICE-8 }, |
6812 | #endif |
6813 | #ifdef EAI_SOCKTYPE-7 |
6814 | { "EAI_SOCKTYPE", 12, EAI_SOCKTYPE-7 }, |
6815 | #endif |
6816 | #ifdef EAI_SYSTEM-11 |
6817 | { "EAI_SYSTEM", 10, EAI_SYSTEM-11 }, |
6818 | #endif |
6819 | #ifdef EAI_OVERFLOW-14 |
6820 | { "EAI_OVERFLOW", 12, EAI_OVERFLOW-14 }, |
6821 | #endif |
6822 | #ifdef PRIO_PROCESS0 |
6823 | { "PRIO_PROCESS", 12, PRIO_PROCESS0 }, |
6824 | #endif |
6825 | #ifdef PRIO_PGRP1 |
6826 | { "PRIO_PGRP", 9, PRIO_PGRP1 }, |
6827 | #endif |
6828 | #ifdef PRIO_USER2 |
6829 | { "PRIO_USER", 9, PRIO_USER2 }, |
6830 | #endif |
6831 | #ifdef EXIT_FAILURE1 |
6832 | { "EXIT_FAILURE", 12, EXIT_FAILURE1 }, |
6833 | #endif |
6834 | #ifdef EXIT_SUCCESS0 |
6835 | { "EXIT_SUCCESS", 12, EXIT_SUCCESS0 }, |
6836 | #endif |
6837 | #ifdef NULL((void*)0) |
6838 | { "NULL", 4, 0 }, |
6839 | #endif |
6840 | #ifdef FE_DOWNWARD0x400 |
6841 | { "FE_DOWNWARD", 11, FE_DOWNWARD0x400 }, |
6842 | #endif |
6843 | #ifdef FE_TONEAREST0x000 |
6844 | { "FE_TONEAREST", 12, FE_TONEAREST0x000 }, |
6845 | #endif |
6846 | #ifdef FE_TOWARDZERO0xc00 |
6847 | { "FE_TOWARDZERO", 13, FE_TOWARDZERO0xc00 }, |
6848 | #endif |
6849 | #ifdef FE_UPWARD0x800 |
6850 | { "FE_UPWARD", 9, FE_UPWARD0x800 }, |
6851 | #endif |
6852 | #ifdef _POSIX_ARG_MAX4096 |
6853 | { "_POSIX_ARG_MAX", 14, _POSIX_ARG_MAX4096 }, |
6854 | #endif |
6855 | #ifdef _POSIX_CHILD_MAX25 |
6856 | { "_POSIX_CHILD_MAX", 16, _POSIX_CHILD_MAX25 }, |
6857 | #endif |
6858 | #ifdef _POSIX_CHOWN_RESTRICTED1 |
6859 | { "_POSIX_CHOWN_RESTRICTED", 23, _POSIX_CHOWN_RESTRICTED1 }, |
6860 | #endif |
6861 | #ifdef _POSIX_LINK_MAX8 |
6862 | { "_POSIX_LINK_MAX", 15, _POSIX_LINK_MAX8 }, |
6863 | #endif |
6864 | #ifdef _POSIX_MAX_CANON255 |
6865 | { "_POSIX_MAX_CANON", 16, _POSIX_MAX_CANON255 }, |
6866 | #endif |
6867 | #ifdef _POSIX_MAX_INPUT255 |
6868 | { "_POSIX_MAX_INPUT", 16, _POSIX_MAX_INPUT255 }, |
6869 | #endif |
6870 | #ifdef _POSIX_NAME_MAX14 |
6871 | { "_POSIX_NAME_MAX", 15, _POSIX_NAME_MAX14 }, |
6872 | #endif |
6873 | #ifdef _POSIX_NGROUPS_MAX8 |
6874 | { "_POSIX_NGROUPS_MAX", 18, _POSIX_NGROUPS_MAX8 }, |
6875 | #endif |
6876 | #ifdef _POSIX_NO_TRUNC1 |
6877 | { "_POSIX_NO_TRUNC", 15, _POSIX_NO_TRUNC1 }, |
6878 | #endif |
6879 | #ifdef _POSIX_OPEN_MAX20 |
6880 | { "_POSIX_OPEN_MAX", 15, _POSIX_OPEN_MAX20 }, |
6881 | #endif |
6882 | #ifdef _POSIX_PATH_MAX256 |
6883 | { "_POSIX_PATH_MAX", 15, _POSIX_PATH_MAX256 }, |
6884 | #endif |
6885 | #ifdef _POSIX_PIPE_BUF512 |
6886 | { "_POSIX_PIPE_BUF", 15, _POSIX_PIPE_BUF512 }, |
6887 | #endif |
6888 | #ifdef _POSIX_SSIZE_MAX32767 |
6889 | { "_POSIX_SSIZE_MAX", 16, _POSIX_SSIZE_MAX32767 }, |
6890 | #endif |
6891 | #ifdef _POSIX_STREAM_MAX8 |
6892 | { "_POSIX_STREAM_MAX", 17, _POSIX_STREAM_MAX8 }, |
6893 | #endif |
6894 | #ifdef _POSIX_TZNAME_MAX6 |
6895 | { "_POSIX_TZNAME_MAX", 17, _POSIX_TZNAME_MAX6 }, |
6896 | #endif |
6897 | #ifdef _POSIX_VDISABLE(0377) |
6898 | { "_POSIX_VDISABLE", 15, _POSIX_VDISABLE(0377) }, |
6899 | #endif |
6900 | #ifdef _POSIX_VERSION200809L |
6901 | { "_POSIX_VERSION", 14, _POSIX_VERSION200809L }, |
6902 | #endif |
6903 | #ifdef ILL_ILLOPC1 |
6904 | { "ILL_ILLOPC", 10, ILL_ILLOPC1 }, |
6905 | #endif |
6906 | #ifdef ILL_ILLOPN2 |
6907 | { "ILL_ILLOPN", 10, ILL_ILLOPN2 }, |
6908 | #endif |
6909 | #ifdef ILL_ILLADR3 |
6910 | { "ILL_ILLADR", 10, ILL_ILLADR3 }, |
6911 | #endif |
6912 | #ifdef ILL_ILLTRP4 |
6913 | { "ILL_ILLTRP", 10, ILL_ILLTRP4 }, |
6914 | #endif |
6915 | #ifdef ILL_PRVOPC5 |
6916 | { "ILL_PRVOPC", 10, ILL_PRVOPC5 }, |
6917 | #endif |
6918 | #ifdef ILL_PRVREG6 |
6919 | { "ILL_PRVREG", 10, ILL_PRVREG6 }, |
6920 | #endif |
6921 | #ifdef ILL_COPROC7 |
6922 | { "ILL_COPROC", 10, ILL_COPROC7 }, |
6923 | #endif |
6924 | #ifdef ILL_BADSTK8 |
6925 | { "ILL_BADSTK", 10, ILL_BADSTK8 }, |
6926 | #endif |
6927 | #ifdef FPE_INTDIV1 |
6928 | { "FPE_INTDIV", 10, FPE_INTDIV1 }, |
6929 | #endif |
6930 | #ifdef FPE_INTOVF2 |
6931 | { "FPE_INTOVF", 10, FPE_INTOVF2 }, |
6932 | #endif |
6933 | #ifdef FPE_FLTDIV3 |
6934 | { "FPE_FLTDIV", 10, FPE_FLTDIV3 }, |
6935 | #endif |
6936 | #ifdef FPE_FLTOVF4 |
6937 | { "FPE_FLTOVF", 10, FPE_FLTOVF4 }, |
6938 | #endif |
6939 | #ifdef FPE_FLTUND5 |
6940 | { "FPE_FLTUND", 10, FPE_FLTUND5 }, |
6941 | #endif |
6942 | #ifdef FPE_FLTRES6 |
6943 | { "FPE_FLTRES", 10, FPE_FLTRES6 }, |
6944 | #endif |
6945 | #ifdef FPE_FLTINV7 |
6946 | { "FPE_FLTINV", 10, FPE_FLTINV7 }, |
6947 | #endif |
6948 | #ifdef FPE_FLTSUB8 |
6949 | { "FPE_FLTSUB", 10, FPE_FLTSUB8 }, |
6950 | #endif |
6951 | #ifdef SEGV_MAPERR1 |
6952 | { "SEGV_MAPERR", 11, SEGV_MAPERR1 }, |
6953 | #endif |
6954 | #ifdef SEGV_ACCERR2 |
6955 | { "SEGV_ACCERR", 11, SEGV_ACCERR2 }, |
6956 | #endif |
6957 | #ifdef BUS_ADRALN1 |
6958 | { "BUS_ADRALN", 10, BUS_ADRALN1 }, |
6959 | #endif |
6960 | #ifdef BUS_ADRERR2 |
6961 | { "BUS_ADRERR", 10, BUS_ADRERR2 }, |
6962 | #endif |
6963 | #ifdef BUS_OBJERR3 |
6964 | { "BUS_OBJERR", 10, BUS_OBJERR3 }, |
6965 | #endif |
6966 | #ifdef TRAP_BRKPT1 |
6967 | { "TRAP_BRKPT", 10, TRAP_BRKPT1 }, |
6968 | #endif |
6969 | #ifdef TRAP_TRACE2 |
6970 | { "TRAP_TRACE", 10, TRAP_TRACE2 }, |
6971 | #endif |
6972 | #ifdef CLD_EXITED1 |
6973 | { "CLD_EXITED", 10, CLD_EXITED1 }, |
6974 | #endif |
6975 | #ifdef CLD_KILLED2 |
6976 | { "CLD_KILLED", 10, CLD_KILLED2 }, |
6977 | #endif |
6978 | #ifdef CLD_DUMPED3 |
6979 | { "CLD_DUMPED", 10, CLD_DUMPED3 }, |
6980 | #endif |
6981 | #ifdef CLD_TRAPPED4 |
6982 | { "CLD_TRAPPED", 11, CLD_TRAPPED4 }, |
6983 | #endif |
6984 | #ifdef CLD_STOPPED5 |
6985 | { "CLD_STOPPED", 11, CLD_STOPPED5 }, |
6986 | #endif |
6987 | #ifdef CLD_CONTINUED6 |
6988 | { "CLD_CONTINUED", 13, CLD_CONTINUED6 }, |
6989 | #endif |
6990 | #ifdef POLL_IN |
6991 | { "POLL_IN", 7, POLL_IN }, |
6992 | #endif |
6993 | #ifdef POLL_OUT |
6994 | { "POLL_OUT", 8, POLL_OUT }, |
6995 | #endif |
6996 | #ifdef POLL_MSG |
6997 | { "POLL_MSG", 8, POLL_MSG }, |
6998 | #endif |
6999 | #ifdef POLL_ERR |
7000 | { "POLL_ERR", 8, POLL_ERR }, |
7001 | #endif |
7002 | #ifdef POLL_PRI |
7003 | { "POLL_PRI", 8, POLL_PRI }, |
7004 | #endif |
7005 | #ifdef POLL_HUP |
7006 | { "POLL_HUP", 8, POLL_HUP }, |
7007 | #endif |
7008 | #ifdef SI_USER0 |
7009 | { "SI_USER", 7, SI_USER0 }, |
7010 | #endif |
7011 | #ifdef SI_QUEUE(-2) |
7012 | { "SI_QUEUE", 8, SI_QUEUE(-2) }, |
7013 | #endif |
7014 | #ifdef SI_TIMER(-3) |
7015 | { "SI_TIMER", 8, SI_TIMER(-3) }, |
7016 | #endif |
7017 | #ifdef SI_ASYNCIO |
7018 | { "SI_ASYNCIO", 10, SI_ASYNCIO }, |
7019 | #endif |
7020 | #ifdef SI_MESGQ |
7021 | { "SI_MESGQ", 8, SI_MESGQ }, |
7022 | #endif |
7023 | #if 0 |
7024 | { "SIGRTMAX", 8, SIGRTMAX }, |
7025 | #endif |
7026 | #if 0 |
7027 | { "SIGRTMIN", 8, SIGRTMIN }, |
7028 | #endif |
7029 | #ifndef EXIT_FAILURE1 |
7030 | /* This is the default value: */ |
7031 | { "EXIT_FAILURE", 12, 1 }, |
7032 | #endif |
7033 | #ifndef EXIT_SUCCESS0 |
7034 | /* This is the default value: */ |
7035 | { "EXIT_SUCCESS", 12, 0 }, |
7036 | #endif |
7037 | #ifndef _POSIX_JOB_CONTROL1 |
7038 | /* This is the default value: */ |
7039 | { "_POSIX_JOB_CONTROL", 18, 0 }, |
7040 | #endif |
7041 | #ifndef _POSIX_SAVED_IDS1 |
7042 | /* This is the default value: */ |
7043 | { "_POSIX_SAVED_IDS", 16, 0 }, |
7044 | #endif |
7045 | #ifndef _POSIX_ARG_MAX4096 |
7046 | /* This is the default value: */ |
7047 | { "_POSIX_ARG_MAX", 14, 0 }, |
7048 | #endif |
7049 | #ifndef _POSIX_CHILD_MAX25 |
7050 | /* This is the default value: */ |
7051 | { "_POSIX_CHILD_MAX", 16, 0 }, |
7052 | #endif |
7053 | #ifndef _POSIX_CHOWN_RESTRICTED1 |
7054 | /* This is the default value: */ |
7055 | { "_POSIX_CHOWN_RESTRICTED", 23, 0 }, |
7056 | #endif |
7057 | #ifndef _POSIX_LINK_MAX8 |
7058 | /* This is the default value: */ |
7059 | { "_POSIX_LINK_MAX", 15, 0 }, |
7060 | #endif |
7061 | #ifndef _POSIX_MAX_CANON255 |
7062 | /* This is the default value: */ |
7063 | { "_POSIX_MAX_CANON", 16, 0 }, |
7064 | #endif |
7065 | #ifndef _POSIX_MAX_INPUT255 |
7066 | /* This is the default value: */ |
7067 | { "_POSIX_MAX_INPUT", 16, 0 }, |
7068 | #endif |
7069 | #ifndef _POSIX_NAME_MAX14 |
7070 | /* This is the default value: */ |
7071 | { "_POSIX_NAME_MAX", 15, 0 }, |
7072 | #endif |
7073 | #ifndef _POSIX_NGROUPS_MAX8 |
7074 | /* This is the default value: */ |
7075 | { "_POSIX_NGROUPS_MAX", 18, 0 }, |
7076 | #endif |
7077 | #ifndef _POSIX_NO_TRUNC1 |
7078 | /* This is the default value: */ |
7079 | { "_POSIX_NO_TRUNC", 15, 0 }, |
7080 | #endif |
7081 | #ifndef _POSIX_OPEN_MAX20 |
7082 | /* This is the default value: */ |
7083 | { "_POSIX_OPEN_MAX", 15, 0 }, |
7084 | #endif |
7085 | #ifndef _POSIX_PATH_MAX256 |
7086 | /* This is the default value: */ |
7087 | { "_POSIX_PATH_MAX", 15, 0 }, |
7088 | #endif |
7089 | #ifndef _POSIX_PIPE_BUF512 |
7090 | /* This is the default value: */ |
7091 | { "_POSIX_PIPE_BUF", 15, 0 }, |
7092 | #endif |
7093 | #ifndef _POSIX_SSIZE_MAX32767 |
7094 | /* This is the default value: */ |
7095 | { "_POSIX_SSIZE_MAX", 16, 0 }, |
7096 | #endif |
7097 | #ifndef _POSIX_STREAM_MAX8 |
7098 | /* This is the default value: */ |
7099 | { "_POSIX_STREAM_MAX", 17, 0 }, |
7100 | #endif |
7101 | #ifndef _POSIX_TZNAME_MAX6 |
7102 | /* This is the default value: */ |
7103 | { "_POSIX_TZNAME_MAX", 17, 0 }, |
7104 | #endif |
7105 | #ifndef _POSIX_VDISABLE(0377) |
7106 | /* This is the default value: */ |
7107 | { "_POSIX_VDISABLE", 15, 0 }, |
7108 | #endif |
7109 | #ifndef _POSIX_VERSION200809L |
7110 | /* This is the default value: */ |
7111 | { "_POSIX_VERSION", 14, 0 }, |
7112 | #endif |
7113 | { NULL((void*)0), 0, 0 } }; |
7114 | const struct iv_s *value_for_iv = values_for_iv; |
7115 | |
7116 | static const struct nv_s values_for_nv[] = |
7117 | { |
7118 | #ifdef DBL_DIG15 |
7119 | { "DBL_DIG", 7, DBL_DIG15 }, |
7120 | #endif |
7121 | #ifdef DBL_MANT_DIG53 |
7122 | { "DBL_MANT_DIG", 12, DBL_MANT_DIG53 }, |
7123 | #endif |
7124 | #ifdef DBL_MAX_10_EXP308 |
7125 | { "DBL_MAX_10_EXP", 14, DBL_MAX_10_EXP308 }, |
7126 | #endif |
7127 | #ifdef DBL_MAX_EXP1024 |
7128 | { "DBL_MAX_EXP", 11, DBL_MAX_EXP1024 }, |
7129 | #endif |
7130 | #ifdef DBL_MIN_10_EXP(-307) |
7131 | { "DBL_MIN_10_EXP", 14, DBL_MIN_10_EXP(-307) }, |
7132 | #endif |
7133 | #ifdef DBL_MIN_EXP(-1021) |
7134 | { "DBL_MIN_EXP", 11, DBL_MIN_EXP(-1021) }, |
7135 | #endif |
7136 | #ifdef FLT_DIG6 |
7137 | { "FLT_DIG", 7, FLT_DIG6 }, |
7138 | #endif |
7139 | #ifdef FLT_MANT_DIG24 |
7140 | { "FLT_MANT_DIG", 12, FLT_MANT_DIG24 }, |
7141 | #endif |
7142 | #ifdef FLT_MAX_10_EXP38 |
7143 | { "FLT_MAX_10_EXP", 14, FLT_MAX_10_EXP38 }, |
7144 | #endif |
7145 | #ifdef FLT_MAX_EXP128 |
7146 | { "FLT_MAX_EXP", 11, FLT_MAX_EXP128 }, |
7147 | #endif |
7148 | #ifdef FLT_MIN_10_EXP(-37) |
7149 | { "FLT_MIN_10_EXP", 14, FLT_MIN_10_EXP(-37) }, |
7150 | #endif |
7151 | #ifdef FLT_MIN_EXP(-125) |
7152 | { "FLT_MIN_EXP", 11, FLT_MIN_EXP(-125) }, |
7153 | #endif |
7154 | #ifdef FLT_RADIX2 |
7155 | { "FLT_RADIX", 9, FLT_RADIX2 }, |
7156 | #endif |
7157 | #ifdef LDBL_DIG18 |
7158 | { "LDBL_DIG", 8, LDBL_DIG18 }, |
7159 | #endif |
7160 | #ifdef LDBL_MANT_DIG64 |
7161 | { "LDBL_MANT_DIG", 13, LDBL_MANT_DIG64 }, |
7162 | #endif |
7163 | #ifdef LDBL_MAX_10_EXP4932 |
7164 | { "LDBL_MAX_10_EXP", 15, LDBL_MAX_10_EXP4932 }, |
7165 | #endif |
7166 | #ifdef LDBL_MAX_EXP16384 |
7167 | { "LDBL_MAX_EXP", 12, LDBL_MAX_EXP16384 }, |
7168 | #endif |
7169 | #ifdef LDBL_MIN_10_EXP(-4931) |
7170 | { "LDBL_MIN_10_EXP", 15, LDBL_MIN_10_EXP(-4931) }, |
7171 | #endif |
7172 | #ifdef LDBL_MIN_EXP(-16381) |
7173 | { "LDBL_MIN_EXP", 12, LDBL_MIN_EXP(-16381) }, |
7174 | #endif |
7175 | #ifdef FP_ILOGB0(-2147483647) |
7176 | { "FP_ILOGB0", 9, FP_ILOGB0(-2147483647) }, |
7177 | #endif |
7178 | #ifdef FP_ILOGBNAN2147483647 |
7179 | { "FP_ILOGBNAN", 11, FP_ILOGBNAN2147483647 }, |
7180 | #endif |
7181 | #ifdef FP_INFINITE0x01 |
7182 | { "FP_INFINITE", 11, FP_INFINITE0x01 }, |
7183 | #endif |
7184 | #ifdef FP_NAN0x02 |
7185 | { "FP_NAN", 6, FP_NAN0x02 }, |
7186 | #endif |
7187 | #ifdef FP_NORMAL0x04 |
7188 | { "FP_NORMAL", 9, FP_NORMAL0x04 }, |
7189 | #endif |
7190 | #ifdef FP_SUBNORMAL0x08 |
7191 | { "FP_SUBNORMAL", 12, FP_SUBNORMAL0x08 }, |
7192 | #endif |
7193 | #ifdef FP_ZERO0x10 |
7194 | { "FP_ZERO", 7, FP_ZERO0x10 }, |
7195 | #endif |
7196 | #ifdef M_1_PI((double)0.31830988618379067154) |
7197 | { "M_1_PI", 6, M_1_PI((double)0.31830988618379067154) }, |
7198 | #endif |
7199 | #ifdef M_2_PI((double)0.63661977236758134308) |
7200 | { "M_2_PI", 6, M_2_PI((double)0.63661977236758134308) }, |
7201 | #endif |
7202 | #ifdef M_2_SQRTPI((double)1.12837916709551257390) |
7203 | { "M_2_SQRTPI", 10, M_2_SQRTPI((double)1.12837916709551257390) }, |
7204 | #endif |
7205 | #ifdef M_E((double)2.7182818284590452354) |
7206 | { "M_E", 3, M_E((double)2.7182818284590452354) }, |
7207 | #endif |
7208 | #ifdef M_LN10((double)2.30258509299404568402) |
7209 | { "M_LN10", 6, M_LN10((double)2.30258509299404568402) }, |
7210 | #endif |
7211 | #ifdef M_LN2((double)0.69314718055994530942) |
7212 | { "M_LN2", 5, M_LN2((double)0.69314718055994530942) }, |
7213 | #endif |
7214 | #ifdef M_LOG10E((double)0.43429448190325182765) |
7215 | { "M_LOG10E", 8, M_LOG10E((double)0.43429448190325182765) }, |
7216 | #endif |
7217 | #ifdef M_LOG2E((double)1.4426950408889634074) |
7218 | { "M_LOG2E", 7, M_LOG2E((double)1.4426950408889634074) }, |
7219 | #endif |
7220 | #ifdef M_PI((double)3.14159265358979323846) |
7221 | { "M_PI", 4, M_PI((double)3.14159265358979323846) }, |
7222 | #endif |
7223 | #ifdef M_PI_2((double)1.57079632679489661923) |
7224 | { "M_PI_2", 6, M_PI_2((double)1.57079632679489661923) }, |
7225 | #endif |
7226 | #ifdef M_PI_4((double)0.78539816339744830962) |
7227 | { "M_PI_4", 6, M_PI_4((double)0.78539816339744830962) }, |
7228 | #endif |
7229 | #ifdef M_SQRT1_2((double)0.70710678118654752440) |
7230 | { "M_SQRT1_2", 9, M_SQRT1_2((double)0.70710678118654752440) }, |
7231 | #endif |
7232 | #ifdef M_SQRT2((double)1.41421356237309504880) |
7233 | { "M_SQRT2", 7, M_SQRT2((double)1.41421356237309504880) }, |
7234 | #endif |
7235 | { NULL((void*)0), 0, 0 } }; |
7236 | const struct nv_s *value_for_nv = values_for_nv; |
7237 | |
7238 | static const struct uv_s values_for_uv[] = |
7239 | { |
7240 | #ifdef SA_NOCLDSTOP0x0008 |
7241 | { "SA_NOCLDSTOP", 12, SA_NOCLDSTOP0x0008 }, |
7242 | #endif |
7243 | #ifdef SA_NOCLDWAIT0x0020 |
7244 | { "SA_NOCLDWAIT", 12, SA_NOCLDWAIT0x0020 }, |
7245 | #endif |
7246 | #ifdef SA_NODEFER0x0010 |
7247 | { "SA_NODEFER", 10, SA_NODEFER0x0010 }, |
7248 | #endif |
7249 | #ifdef SA_ONSTACK0x0001 |
7250 | { "SA_ONSTACK", 10, SA_ONSTACK0x0001 }, |
7251 | #endif |
7252 | #ifdef SA_RESETHAND0x0004 |
7253 | { "SA_RESETHAND", 12, SA_RESETHAND0x0004 }, |
7254 | #endif |
7255 | #ifdef SA_RESTART0x0002 |
7256 | { "SA_RESTART", 10, SA_RESTART0x0002 }, |
7257 | #endif |
7258 | #ifdef SA_SIGINFO0x0040 |
7259 | { "SA_SIGINFO", 10, SA_SIGINFO0x0040 }, |
7260 | #endif |
7261 | #ifdef UCHAR_MAX(127*2 +1) |
7262 | { "UCHAR_MAX", 9, UCHAR_MAX(127*2 +1) }, |
7263 | #endif |
7264 | #ifdef UINT_MAX(2147483647 *2U +1U) |
7265 | { "UINT_MAX", 8, UINT_MAX(2147483647 *2U +1U) }, |
7266 | #endif |
7267 | #ifdef ULONG_MAX(9223372036854775807L *2UL+1UL) |
7268 | { "ULONG_MAX", 9, ULONG_MAX(9223372036854775807L *2UL+1UL) }, |
7269 | #endif |
7270 | #ifdef USHRT_MAX(32767 *2 +1) |
7271 | { "USHRT_MAX", 9, USHRT_MAX(32767 *2 +1) }, |
7272 | #endif |
7273 | { NULL((void*)0), 0, 0 } }; |
7274 | const struct uv_s *value_for_uv = values_for_uv; |
7275 | |
7276 | static const struct yes_s values_for_yes[] = |
7277 | { |
7278 | #ifdef _POSIX_JOB_CONTROL1 |
7279 | { "_POSIX_JOB_CONTROL", 18 }, |
7280 | #endif |
7281 | #ifdef _POSIX_SAVED_IDS1 |
7282 | { "_POSIX_SAVED_IDS", 16 }, |
7283 | #endif |
7284 | { NULL((void*)0), 0 } }; |
7285 | const struct yes_s *value_for_yes = values_for_yes; |
7286 | while (value_for_iv->name) { |
7287 | constant_add_symbol(aTHX_ symbol_table, value_for_iv->name, |
7288 | value_for_iv->namelen, newSViv(value_for_iv->value)Perl_newSViv( value_for_iv->value)); |
7289 | ++value_for_iv; |
7290 | } |
7291 | while (value_for_nv->name) { |
7292 | constant_add_symbol(aTHX_ symbol_table, value_for_nv->name, |
7293 | value_for_nv->namelen, newSVnv(value_for_nv->value)Perl_newSVnv( value_for_nv->value)); |
7294 | ++value_for_nv; |
7295 | } |
7296 | while (value_for_uv->name) { |
7297 | constant_add_symbol(aTHX_ symbol_table, value_for_uv->name, |
7298 | value_for_uv->namelen, newSVuv(value_for_uv->value)Perl_newSVuv( value_for_uv->value)); |
7299 | ++value_for_uv; |
7300 | } |
7301 | while (value_for_yes->name) { |
7302 | constant_add_symbol(aTHX_ symbol_table, value_for_yes->name, |
7303 | value_for_yes->namelen, &PL_sv_yes(PL_sv_immortals[0])); |
7304 | ++value_for_yes; |
7305 | } |
7306 | if (C_ARRAY_LENGTH(values_for_notfound)(sizeof(values_for_notfound)/sizeof((values_for_notfound)[0]) ) > 1) { |
7307 | #ifndef SYMBIAN |
7308 | HV *const constant_missing = get_missing_hash(aTHX); |
7309 | #endif |
7310 | const struct notfound_s *value_for_notfound = values_for_notfound; |
7311 | do { |
7312 | |
7313 | /* Need to add prototypes, else parsing will vary by platform. */ |
7314 | HE *he = (HE*) hv_common_key_len(symbol_table,Perl_hv_common_key_len( symbol_table,value_for_notfound->name ,value_for_notfound->namelen,0x10,((void*)0),0) |
7315 | value_for_notfound->name,Perl_hv_common_key_len( symbol_table,value_for_notfound->name ,value_for_notfound->namelen,0x10,((void*)0),0) |
7316 | value_for_notfound->namelen,Perl_hv_common_key_len( symbol_table,value_for_notfound->name ,value_for_notfound->namelen,0x10,((void*)0),0) |
7317 | HV_FETCH_LVALUE, NULL, 0)Perl_hv_common_key_len( symbol_table,value_for_notfound->name ,value_for_notfound->namelen,0x10,((void*)0),0); |
7318 | SV *sv; |
7319 | #ifndef SYMBIAN |
7320 | HEK *hek; |
7321 | #endif |
7322 | if (!he) { |
7323 | croakPerl_croak("Couldn't add key '%s' to %%POSIX::", |
7324 | value_for_notfound->name); |
7325 | } |
7326 | sv = HeVAL(he)(he)->he_valu.hent_val; |
7327 | if (!SvOK(sv)((sv)->sv_flags & (0x00000100|0x00000200|0x00000400|0x00000800 | 0x00001000|0x00002000|0x00004000|0x00008000)) && SvTYPE(sv)((svtype)((sv)->sv_flags & 0xff)) != SVt_PVGV) { |
7328 | /* Nothing was here before, so mark a prototype of "" */ |
7329 | sv_setpvn(sv, "", 0)Perl_sv_setpvn( sv,"",0); |
7330 | } else if (SvPOK(sv)((sv)->sv_flags & 0x00000400) && SvCUR(sv)((XPV*) (sv)->sv_any)->xpv_cur == 0) { |
7331 | /* There is already a prototype of "" - do nothing */ |
7332 | } else { |
7333 | /* Someone has been here before us - have to make a real |
7334 | typeglob. */ |
7335 | /* It turns out to be incredibly hard to deal with all the |
7336 | corner cases of sub foo (); and reporting errors correctly, |
7337 | so lets cheat a bit. Start with a constant subroutine */ |
7338 | CV *cv = newCONSTSUB(symbol_table,Perl_newCONSTSUB( symbol_table,value_for_notfound->name,& (PL_sv_immortals[0])) |
7339 | value_for_notfound->name,Perl_newCONSTSUB( symbol_table,value_for_notfound->name,& (PL_sv_immortals[0])) |
7340 | &PL_sv_yes)Perl_newCONSTSUB( symbol_table,value_for_notfound->name,& (PL_sv_immortals[0])); |
7341 | /* and then turn it into a non constant declaration only. */ |
7342 | SvREFCNT_dec(CvXSUBANY(cv).any_ptr)Perl_SvREFCNT_dec( ((SV *)({ void *_p = (((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u.xcv_xsubany.any_ptr ); _p; }))); |
7343 | CvCONST_off(cv)(((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_flags &= ~0x0004); |
7344 | CvXSUB(cv)((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_root_u .xcv_xsub = NULL((void*)0); |
7345 | CvXSUBANY(cv)((XPVCV*)({ void *_p = ((cv)->sv_any); _p; }))->xcv_start_u .xcv_xsubany.any_ptr = NULL((void*)0); |
7346 | } |
7347 | #ifndef SYMBIAN |
7348 | hek = HeKEY_hek(he)(he)->hent_hek; |
7349 | if (!hv_common(constant_missing, NULL, HEK_KEY(hek),Perl_hv_common( constant_missing,((void*)0),(hek)->hek_key ,(hek)->hek_len,(*((unsigned char *)((hek)->hek_key)+(hek )->hek_len+1)),0x04,&(PL_sv_immortals[0]),(hek)->hek_hash ) |
7350 | HEK_LEN(hek), HEK_FLAGS(hek), HV_FETCH_ISSTORE,Perl_hv_common( constant_missing,((void*)0),(hek)->hek_key ,(hek)->hek_len,(*((unsigned char *)((hek)->hek_key)+(hek )->hek_len+1)),0x04,&(PL_sv_immortals[0]),(hek)->hek_hash ) |
7351 | &PL_sv_yes, HEK_HASH(hek))Perl_hv_common( constant_missing,((void*)0),(hek)->hek_key ,(hek)->hek_len,(*((unsigned char *)((hek)->hek_key)+(hek )->hek_len+1)),0x04,&(PL_sv_immortals[0]),(hek)->hek_hash )) |
7352 | croakPerl_croak("Couldn't add key '%s' to missing_hash", |
7353 | value_for_notfound->name); |
7354 | #endif |
7355 | } while ((++value_for_notfound)->name); |
7356 | } |
7357 | #ifdef CLK_TCK100 |
7358 | { |
7359 | IV temp0; |
7360 | temp0 = CLK_TCK100; |
7361 | constant_add_symbol(aTHX_ symbol_table, "CLK_TCK", |
7362 | 7, newSViv(temp0)Perl_newSViv( temp0)); |
7363 | } |
7364 | #endif |
7365 | #ifdef MB_CUR_MAX__mb_cur_max() |
7366 | { |
7367 | IV temp0; |
7368 | temp0 = MB_CUR_MAX__mb_cur_max(); |
7369 | constant_add_symbol(aTHX_ symbol_table, "MB_CUR_MAX", |
7370 | 10, newSViv(temp0)Perl_newSViv( temp0)); |
7371 | } |
7372 | #endif |
7373 | #ifdef SIG_DFL(void (*)(int))0 |
7374 | { |
7375 | IV temp0; |
7376 | temp0 = PTR2IV(SIG_DFL)(IV)((void (*)(int))0); |
7377 | constant_add_symbol(aTHX_ symbol_table, "SIG_DFL", |
7378 | 7, newSViv(temp0)Perl_newSViv( temp0)); |
7379 | } |
7380 | #endif |
7381 | #ifdef SIG_ERR(void (*)(int))-1 |
7382 | { |
7383 | IV temp0; |
7384 | temp0 = PTR2IV(SIG_ERR)(IV)((void (*)(int))-1); |
7385 | constant_add_symbol(aTHX_ symbol_table, "SIG_ERR", |
7386 | 7, newSViv(temp0)Perl_newSViv( temp0)); |
7387 | } |
7388 | #endif |
7389 | #ifdef SIG_IGN(void (*)(int))1 |
7390 | { |
7391 | IV temp0; |
7392 | temp0 = PTR2IV(SIG_IGN)(IV)((void (*)(int))1); |
7393 | constant_add_symbol(aTHX_ symbol_table, "SIG_IGN", |
7394 | 7, newSViv(temp0)Perl_newSViv( temp0)); |
7395 | } |
7396 | #endif |
7397 | #ifdef FLT_ROUNDS(__builtin_flt_rounds()) |
7398 | { |
7399 | NV temp0; |
7400 | temp0 = FLT_ROUNDS(__builtin_flt_rounds()); |
7401 | constant_add_symbol(aTHX_ symbol_table, "FLT_ROUNDS", |
7402 | 10, newSVnv(temp0)Perl_newSVnv( temp0)); |
7403 | } |
7404 | #endif |
7405 | #if (defined(USE_LONG_DOUBLE) && defined(HUGE_VALL__builtin_huge_vall())) || defined(HUGE_VAL__builtin_huge_val()) |
7406 | /* HUGE_VALL is admittedly non-POSIX but if we are using long doubles |
7407 | * we might as well use long doubles. --jhi */ |
7408 | { |
7409 | NV temp0; |
7410 | temp0 = |
7411 | #if defined(USE_LONG_DOUBLE) && defined(HUGE_VALL__builtin_huge_vall()) |
7412 | HUGE_VALL__builtin_huge_vall() |
7413 | #else |
7414 | HUGE_VAL__builtin_huge_val() |
7415 | #endif |
7416 | ; |
7417 | constant_add_symbol(aTHX_ symbol_table, "HUGE_VAL", |
7418 | 8, newSVnv(temp0)Perl_newSVnv( temp0)); |
7419 | } |
7420 | #endif |
7421 | #ifdef INFINITY__builtin_inff() |
7422 | { |
7423 | NV temp0; |
7424 | temp0 = NV_INFPL_inf.nv; |
7425 | constant_add_symbol(aTHX_ symbol_table, "INFINITY", |
7426 | 8, newSVnv(temp0)Perl_newSVnv( temp0)); |
7427 | } |
7428 | #endif |
7429 | #ifdef InfPL_inf.nv |
7430 | { |
7431 | NV temp0; |
7432 | temp0 = NV_INFPL_inf.nv; |
7433 | constant_add_symbol(aTHX_ symbol_table, "Inf", |
7434 | 3, newSVnv(temp0)Perl_newSVnv( temp0)); |
7435 | } |
7436 | #endif |
7437 | #ifdef NAN__builtin_nanf("") |
7438 | { |
7439 | NV temp0; |
7440 | temp0 = NV_NANPL_nan.nv; |
7441 | constant_add_symbol(aTHX_ symbol_table, "NAN", |
7442 | 3, newSVnv(temp0)Perl_newSVnv( temp0)); |
7443 | } |
7444 | #endif |
7445 | #ifdef NaNPL_nan.nv |
7446 | { |
7447 | NV temp0; |
7448 | temp0 = NV_NANPL_nan.nv; |
7449 | constant_add_symbol(aTHX_ symbol_table, "NaN", |
7450 | 3, newSVnv(temp0)Perl_newSVnv( temp0)); |
7451 | } |
7452 | #endif |
7453 | #ifdef DBL_MAX1.7976931348623157e+308 |
7454 | { |
7455 | NV temp0; |
7456 | temp0 = DBL_MAX1.7976931348623157e+308; |
7457 | constant_add_symbol(aTHX_ symbol_table, "DBL_MAX", |
7458 | 7, newSVnv(temp0)Perl_newSVnv( temp0)); |
7459 | } |
7460 | #endif |
7461 | #ifdef FLT_MAX3.40282347e+38F |
7462 | { |
7463 | NV temp0; |
7464 | temp0 = FLT_MAX3.40282347e+38F; |
7465 | constant_add_symbol(aTHX_ symbol_table, "FLT_MAX", |
7466 | 7, newSVnv(temp0)Perl_newSVnv( temp0)); |
7467 | } |
7468 | #endif |
7469 | #ifdef LDBL_MAX |
7470 | { |
7471 | NV temp0; |
7472 | temp0 = LDBL_MAX; |
7473 | constant_add_symbol(aTHX_ symbol_table, "LDBL_MAX", |
7474 | 8, newSVnv(temp0)Perl_newSVnv( temp0)); |
7475 | } |
7476 | #endif |
7477 | #ifdef LDBL_MIN |
7478 | { |
7479 | NV temp0; |
7480 | temp0 = LDBL_MIN; |
7481 | constant_add_symbol(aTHX_ symbol_table, "LDBL_MIN", |
7482 | 8, newSVnv(temp0)Perl_newSVnv( temp0)); |
7483 | } |
7484 | #endif |
7485 | #ifdef LDBL_EPSILON |
7486 | { |
7487 | NV temp0; |
7488 | temp0 = LDBL_EPSILON; |
7489 | constant_add_symbol(aTHX_ symbol_table, "LDBL_EPSILON", |
7490 | 12, newSVnv(temp0)Perl_newSVnv( temp0)); |
7491 | } |
7492 | #endif |
7493 | #ifdef DBL_EPSILON2.2204460492503131e-16 |
7494 | { |
7495 | NV temp0; |
7496 | temp0 = DBL_EPSILON2.2204460492503131e-16; |
7497 | constant_add_symbol(aTHX_ symbol_table, "DBL_EPSILON", |
7498 | 11, newSVnv(temp0)Perl_newSVnv( temp0)); |
7499 | } |
7500 | #endif |
7501 | #ifdef DBL_MIN2.2250738585072014e-308 |
7502 | { |
7503 | NV temp0; |
7504 | temp0 = DBL_MIN2.2250738585072014e-308; |
7505 | constant_add_symbol(aTHX_ symbol_table, "DBL_MIN", |
7506 | 7, newSVnv(temp0)Perl_newSVnv( temp0)); |
7507 | } |
7508 | #endif |
7509 | #ifdef FLT_EPSILON1.19209290e-7F |
7510 | { |
7511 | NV temp0; |
7512 | temp0 = FLT_EPSILON1.19209290e-7F; |
7513 | constant_add_symbol(aTHX_ symbol_table, "FLT_EPSILON", |
7514 | 11, newSVnv(temp0)Perl_newSVnv( temp0)); |
7515 | } |
7516 | #endif |
7517 | #ifdef FLT_MIN1.17549435e-38F |
7518 | { |
7519 | NV temp0; |
7520 | temp0 = FLT_MIN1.17549435e-38F; |
7521 | constant_add_symbol(aTHX_ symbol_table, "FLT_MIN", |
7522 | 7, newSVnv(temp0)Perl_newSVnv( temp0)); |
7523 | } |
7524 | #endif |
7525 | /* As we've been creating subroutines, we better invalidate any cached |
7526 | methods */ |
7527 | mro_method_changed_in(symbol_table)Perl_mro_method_changed_in( symbol_table); |
7528 | } |
7529 | |
7530 | #if XSubPPtmpAAAA1 |
7531 | #endif |
7532 | #line 7533 "POSIX.c" |
7533 | |
7534 | /* End of Initialisation Section */ |
7535 | |
7536 | #if PERL_VERSION_LE(5, 21, 5)((5*1000000 + 32*1000 + 1) <= (5*1000000 + 21*1000 + 5)) |
7537 | # if PERL_VERSION_GE(5, 9, 0)((5*1000000 + 32*1000 + 1) >= (5*1000000 + 9*1000 + 0)) |
7538 | if (PL_unitcheckav) |
7539 | call_list(PL_scopestack_ix, PL_unitcheckav)Perl_call_list( PL_scopestack_ix,PL_unitcheckav); |
7540 | # endif |
7541 | XSRETURN_YESdo { (PL_stack_base[ax + (0)] = &(PL_sv_immortals[0]) ); do { const IV tmpXSoff = (1); ((void)0); PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); return; } while (0); } while (0); |
7542 | #else |
7543 | Perl_xs_boot_epilog(aTHX_ ax); |
7544 | #endif |
7545 | } |
7546 |