File Coverage

const-c.inc
Criterion Covered Total %
statement 20 24 83.3
branch 9 18 50.0
condition n/a
subroutine n/a
pod n/a
total 29 42 69.0


line stmt bran cond sub pod time code
1             #define PERL_constant_NOTFOUND 1
2             #define PERL_constant_NOTDEF 2
3             #define PERL_constant_ISIV 3
4             #define PERL_constant_ISNO 4
5             #define PERL_constant_ISNV 5
6             #define PERL_constant_ISPV 6
7             #define PERL_constant_ISPVN 7
8             #define PERL_constant_ISSV 8
9             #define PERL_constant_ISUNDEF 9
10             #define PERL_constant_ISUV 10
11             #define PERL_constant_ISYES 11
12              
13             #ifndef NVTYPE
14             typedef double NV; /* 5.6 and later define NVTYPE, and typedef NV to it. */
15             #endif
16             #ifndef aTHX_
17             #define aTHX_ /* 5.6 or later define this for threading support. */
18             #endif
19             #ifndef pTHX_
20             #define pTHX_ /* 5.6 or later define this for threading support. */
21             #endif
22              
23             /* This allows slightly more efficient code on !USE_ITHREADS: */
24             #ifdef USE_ITHREADS
25             # define COP_FILE(c) CopFILE(c)
26             # define COP_FILE_F "s"
27             #else
28             # define COP_FILE(c) CopFILESV(c)
29             # define COP_FILE_F SVf
30             #endif
31              
32             static void
33 650           constant_add_symbol(pTHX_ HV *hash, const char *name, I32 namelen, SV *value) {
34 650           HE *he = (HE*) hv_common_key_len(hash, name, namelen, HV_FETCH_LVALUE, NULL,
35             0);
36             SV *sv;
37              
38 650 50         if (!he) {
39 0           Perl_croak(aTHX_ "Couldn't add key '%s' to %%POSIX::2008::",
40             name);
41             }
42 650           sv = HeVAL(he);
43 650 50         if (SvOK(sv) || SvTYPE(sv) == SVt_PVGV) {
    50          
    50          
    50          
44             /* Someone has been here before us - have to make a real sub. */
45 0           newCONSTSUB(hash, name, value);
46             } else {
47 650 50         SvUPGRADE(sv, SVt_RV);
48 650           SvRV_set(sv, value);
49 650           SvROK_on(sv);
50 650           SvREADONLY_on(value);
51             }
52 650           }
53              
54              
55              
56             #ifndef SYMBIAN
57              
58             /* Store a hash of all symbols missing from the package. To avoid trampling on
59             the package namespace (uninvited) put each package's hash in our namespace.
60             To avoid creating lots of typeblogs and symbol tables for sub-packages, put
61             each package's hash into one hash in our namespace. */
62              
63             static HV *
64 5           get_missing_hash(pTHX) {
65 5           HV *const parent
66             = get_hv("ExtUtils::Constant::ProxySubs::Missing", GVf_MULTI);
67             /* We could make a hash of hashes directly, but this would confuse anything
68             at Perl space that looks at us, and as we're visible in Perl space,
69             best to play nice. */
70 5           SV *const *const ref
71             = hv_fetch(parent, "POSIX::2008", 11, TRUE);
72             HV *new_hv;
73              
74 5 50         if (!ref)
75 0           return NULL;
76              
77 5 50         if (SvROK(*ref))
78 0           return (HV*) SvRV(*ref);
79              
80 5           new_hv = newHV();
81 5 50         SvUPGRADE(*ref, SVt_RV);
82 5           SvRV_set(*ref, (SV *)new_hv);
83 5           SvROK_on(*ref);
84 5           return new_hv;
85             }
86              
87             #endif
88              
89             struct notfound_s {const char *name; I32 namelen;} ;
90              
91             static const struct notfound_s values_for_notfound[] =
92             {
93             #ifndef AT_EACCESS
94             { "AT_EACCESS", 10 },
95             #endif
96             #ifndef AT_EMPTY_PATH
97             { "AT_EMPTY_PATH", 13 },
98             #endif
99             #ifndef AT_FDCWD
100             { "AT_FDCWD", 8 },
101             #endif
102             #ifndef AT_NO_AUTOMOUNT
103             { "AT_NO_AUTOMOUNT", 15 },
104             #endif
105             #ifndef AT_REMOVEDIR
106             { "AT_REMOVEDIR", 12 },
107             #endif
108             #ifndef AT_SYMLINK_FOLLOW
109             { "AT_SYMLINK_FOLLOW", 17 },
110             #endif
111             #ifndef AT_SYMLINK_NOFOLLOW
112             { "AT_SYMLINK_NOFOLLOW", 19 },
113             #endif
114             #ifndef BOOT_TIME
115             { "BOOT_TIME", 9 },
116             #endif
117             #ifndef CLOCK_BOOTTIME
118             { "CLOCK_BOOTTIME", 14 },
119             #endif
120             #ifndef CLOCK_HIGHRES
121             { "CLOCK_HIGHRES", 13 },
122             #endif
123             #ifndef CLOCK_MONOTONIC
124             { "CLOCK_MONOTONIC", 15 },
125             #endif
126             #ifndef CLOCK_MONOTONIC_COARSE
127             { "CLOCK_MONOTONIC_COARSE", 22 },
128             #endif
129             #ifndef CLOCK_MONOTONIC_FAST
130             { "CLOCK_MONOTONIC_FAST", 20 },
131             #endif
132             #ifndef CLOCK_MONOTONIC_PRECISE
133             { "CLOCK_MONOTONIC_PRECISE", 23 },
134             #endif
135             #ifndef CLOCK_MONOTONIC_RAW
136             { "CLOCK_MONOTONIC_RAW", 19 },
137             #endif
138             #ifndef CLOCK_PROCESS_CPUTIME_ID
139             { "CLOCK_PROCESS_CPUTIME_ID", 24 },
140             #endif
141             #ifndef CLOCK_REALTIME
142             { "CLOCK_REALTIME", 14 },
143             #endif
144             #ifndef CLOCK_REALTIME_COARSE
145             { "CLOCK_REALTIME_COARSE", 21 },
146             #endif
147             #ifndef CLOCK_REALTIME_FAST
148             { "CLOCK_REALTIME_FAST", 19 },
149             #endif
150             #ifndef CLOCK_REALTIME_PRECISE
151             { "CLOCK_REALTIME_PRECISE", 22 },
152             #endif
153             #ifndef CLOCK_SOFTTIME
154             { "CLOCK_SOFTTIME", 14 },
155             #endif
156             #ifndef CLOCK_THREAD_CPUTIME_ID
157             { "CLOCK_THREAD_CPUTIME_ID", 23 },
158             #endif
159             #ifndef CLOCK_UPTIME
160             { "CLOCK_UPTIME", 12 },
161             #endif
162             #ifndef CLOCK_UPTIME_FAST
163             { "CLOCK_UPTIME_FAST", 17 },
164             #endif
165             #ifndef CLOCK_UPTIME_PRECISE
166             { "CLOCK_UPTIME_PRECISE", 20 },
167             #endif
168             #ifndef _CS_GNU_LIBC_VERSION
169             { "_CS_GNU_LIBC_VERSION", 20 },
170             #endif
171             #ifndef _CS_GNU_LIBPTHREAD_VERSION
172             { "_CS_GNU_LIBPTHREAD_VERSION", 26 },
173             #endif
174             #ifndef _CS_PATH
175             { "_CS_PATH", 8 },
176             #endif
177             #ifndef DEAD_PROCESS
178             { "DEAD_PROCESS", 12 },
179             #endif
180             #ifndef F_DUPFD
181             { "F_DUPFD", 7 },
182             #endif
183             #ifndef F_DUPFD_CLOEXEC
184             { "F_DUPFD_CLOEXEC", 15 },
185             #endif
186             #ifndef F_GETFD
187             { "F_GETFD", 7 },
188             #endif
189             #ifndef F_SETFD
190             { "F_SETFD", 7 },
191             #endif
192             #ifndef F_GETFL
193             { "F_GETFL", 7 },
194             #endif
195             #ifndef F_SETFL
196             { "F_SETFL", 7 },
197             #endif
198             #ifndef F_GETLK
199             { "F_GETLK", 7 },
200             #endif
201             #ifndef F_SETLK
202             { "F_SETLK", 7 },
203             #endif
204             #ifndef F_SETLKW
205             { "F_SETLKW", 8 },
206             #endif
207             #ifndef F_GETOWN
208             { "F_GETOWN", 8 },
209             #endif
210             #ifndef F_SETOWN
211             { "F_SETOWN", 8 },
212             #endif
213             #ifndef F_RDLCK
214             { "F_RDLCK", 7 },
215             #endif
216             #ifndef F_UNLCK
217             { "F_UNLCK", 7 },
218             #endif
219             #ifndef F_WRLCK
220             { "F_WRLCK", 7 },
221             #endif
222             #ifndef FD_CLOEXEC
223             { "FD_CLOEXEC", 10 },
224             #endif
225             #ifndef FE_TONEAREST
226             { "FE_TONEAREST", 12 },
227             #endif
228             #ifndef FE_TOWARDZERO
229             { "FE_TOWARDZERO", 13 },
230             #endif
231             #ifndef FE_UPWARD
232             { "FE_UPWARD", 9 },
233             #endif
234             #ifndef FE_DOWNWARD
235             { "FE_DOWNWARD", 11 },
236             #endif
237             #ifndef FE_DIVBYZERO
238             { "FE_DIVBYZERO", 12 },
239             #endif
240             #ifndef FE_INEXACT
241             { "FE_INEXACT", 10 },
242             #endif
243             #ifndef FE_INVALID
244             { "FE_INVALID", 10 },
245             #endif
246             #ifndef FE_OVERFLOW
247             { "FE_OVERFLOW", 11 },
248             #endif
249             #ifndef FE_UNDERFLOW
250             { "FE_UNDERFLOW", 12 },
251             #endif
252             #ifndef FE_ALL_EXCEPT
253             { "FE_ALL_EXCEPT", 13 },
254             #endif
255             #ifndef FNM_CASEFOLD
256             { "FNM_CASEFOLD", 12 },
257             #endif
258             #ifndef FNM_FILE_NAME
259             { "FNM_FILE_NAME", 13 },
260             #endif
261             #ifndef FNM_LEADING_DIR
262             { "FNM_LEADING_DIR", 15 },
263             #endif
264             #ifndef FNM_NOESCAPE
265             { "FNM_NOESCAPE", 12 },
266             #endif
267             #ifndef FNM_NOMATCH
268             { "FNM_NOMATCH", 11 },
269             #endif
270             #ifndef FNM_PATHNAME
271             { "FNM_PATHNAME", 12 },
272             #endif
273             #ifndef FNM_PERIOD
274             { "FNM_PERIOD", 10 },
275             #endif
276             #ifndef FP_INFINITE
277             { "FP_INFINITE", 11 },
278             #endif
279             #ifndef FP_NAN
280             { "FP_NAN", 6 },
281             #endif
282             #ifndef FP_NORMAL
283             { "FP_NORMAL", 9 },
284             #endif
285             #ifndef FP_SUBNORMAL
286             { "FP_SUBNORMAL", 12 },
287             #endif
288             #ifndef FP_ZERO
289             { "FP_ZERO", 7 },
290             #endif
291             #ifndef INIT_PROCESS
292             { "INIT_PROCESS", 12 },
293             #endif
294             #ifndef ITIMER_PROF
295             { "ITIMER_PROF", 11 },
296             #endif
297             #ifndef ITIMER_REAL
298             { "ITIMER_REAL", 11 },
299             #endif
300             #ifndef ITIMER_VIRTUAL
301             { "ITIMER_VIRTUAL", 14 },
302             #endif
303             #ifndef LOGIN_PROCESS
304             { "LOGIN_PROCESS", 13 },
305             #endif
306             #ifndef NEW_TIME
307             { "NEW_TIME", 8 },
308             #endif
309             #ifndef O_ACCMODE
310             { "O_ACCMODE", 9 },
311             #endif
312             #ifndef O_APPEND
313             { "O_APPEND", 8 },
314             #endif
315             #ifndef O_CLOEXEC
316             { "O_CLOEXEC", 9 },
317             #endif
318             #ifndef O_CREAT
319             { "O_CREAT", 7 },
320             #endif
321             #ifndef O_DIRECTORY
322             { "O_DIRECTORY", 11 },
323             #endif
324             #ifndef O_DSYNC
325             { "O_DSYNC", 7 },
326             #endif
327             #ifndef O_EXEC
328             { "O_EXEC", 6 },
329             #endif
330             #ifndef O_NOCTTY
331             { "O_NOCTTY", 8 },
332             #endif
333             #ifndef O_NOFOLLOW
334             { "O_NOFOLLOW", 10 },
335             #endif
336             #ifndef O_NONBLOCK
337             { "O_NONBLOCK", 10 },
338             #endif
339             #ifndef O_RDONLY
340             { "O_RDONLY", 8 },
341             #endif
342             #ifndef O_RDWR
343             { "O_RDWR", 6 },
344             #endif
345             #ifndef O_RSYNC
346             { "O_RSYNC", 7 },
347             #endif
348             #ifndef O_SEARCH
349             { "O_SEARCH", 8 },
350             #endif
351             #ifndef O_SYNC
352             { "O_SYNC", 6 },
353             #endif
354             #ifndef O_TMPFILE
355             { "O_TMPFILE", 9 },
356             #endif
357             #ifndef O_TRUNC
358             { "O_TRUNC", 7 },
359             #endif
360             #ifndef O_TTY_INIT
361             { "O_TTY_INIT", 10 },
362             #endif
363             #ifndef O_WRONLY
364             { "O_WRONLY", 8 },
365             #endif
366             #ifndef OLD_TIME
367             { "OLD_TIME", 8 },
368             #endif
369             #ifndef POSIX_FADV_NORMAL
370             { "POSIX_FADV_NORMAL", 17 },
371             #endif
372             #ifndef POSIX_FADV_SEQUENTIAL
373             { "POSIX_FADV_SEQUENTIAL", 21 },
374             #endif
375             #ifndef POSIX_FADV_RANDOM
376             { "POSIX_FADV_RANDOM", 17 },
377             #endif
378             #ifndef POSIX_FADV_NOREUSE
379             { "POSIX_FADV_NOREUSE", 18 },
380             #endif
381             #ifndef POSIX_FADV_WILLNEED
382             { "POSIX_FADV_WILLNEED", 19 },
383             #endif
384             #ifndef POSIX_FADV_DONTNEED
385             { "POSIX_FADV_DONTNEED", 19 },
386             #endif
387             #ifndef PRIO_PROCESS
388             { "PRIO_PROCESS", 12 },
389             #endif
390             #ifndef PRIO_PGRP
391             { "PRIO_PGRP", 9 },
392             #endif
393             #ifndef PRIO_USER
394             { "PRIO_USER", 9 },
395             #endif
396             #ifndef RESOLVE_BENEATH
397             { "RESOLVE_BENEATH", 15 },
398             #endif
399             #ifndef RESOLVE_IN_ROOT
400             { "RESOLVE_IN_ROOT", 15 },
401             #endif
402             #ifndef RESOLVE_NO_MAGICLINKS
403             { "RESOLVE_NO_MAGICLINKS", 21 },
404             #endif
405             #ifndef RESOLVE_NO_SYMLINKS
406             { "RESOLVE_NO_SYMLINKS", 19 },
407             #endif
408             #ifndef RESOLVE_NO_XDEV
409             { "RESOLVE_NO_XDEV", 15 },
410             #endif
411             #ifndef RESOLVE_CACHED
412             { "RESOLVE_CACHED", 14 },
413             #endif
414             #ifndef RTLD_GLOBAL
415             { "RTLD_GLOBAL", 11 },
416             #endif
417             #ifndef RTLD_LAZY
418             { "RTLD_LAZY", 9 },
419             #endif
420             #ifndef RTLD_LOCAL
421             { "RTLD_LOCAL", 10 },
422             #endif
423             #ifndef RTLD_NOW
424             { "RTLD_NOW", 8 },
425             #endif
426             #ifndef RUN_LVL
427             { "RUN_LVL", 7 },
428             #endif
429             #ifndef RWF_DSYNC
430             { "RWF_DSYNC", 9 },
431             #endif
432             #ifndef RWF_HIPRI
433             { "RWF_HIPRI", 9 },
434             #endif
435             #ifndef RWF_SYNC
436             { "RWF_SYNC", 8 },
437             #endif
438             #ifndef RWF_NOWAIT
439             { "RWF_NOWAIT", 10 },
440             #endif
441             #ifndef RWF_APPEND
442             { "RWF_APPEND", 10 },
443             #endif
444             #ifndef S_IFMT
445             { "S_IFMT", 6 },
446             #endif
447             #ifndef S_IFBLK
448             { "S_IFBLK", 7 },
449             #endif
450             #ifndef S_IFCHR
451             { "S_IFCHR", 7 },
452             #endif
453             #ifndef S_IFIFO
454             { "S_IFIFO", 7 },
455             #endif
456             #ifndef S_IFREG
457             { "S_IFREG", 7 },
458             #endif
459             #ifndef S_IFDIR
460             { "S_IFDIR", 7 },
461             #endif
462             #ifndef S_IFLNK
463             { "S_IFLNK", 7 },
464             #endif
465             #ifndef S_IFSOCK
466             { "S_IFSOCK", 8 },
467             #endif
468             #ifndef S_ISUID
469             { "S_ISUID", 7 },
470             #endif
471             #ifndef S_ISGID
472             { "S_ISGID", 7 },
473             #endif
474             #ifndef S_IRWXU
475             { "S_IRWXU", 7 },
476             #endif
477             #ifndef S_IRUSR
478             { "S_IRUSR", 7 },
479             #endif
480             #ifndef S_IWUSR
481             { "S_IWUSR", 7 },
482             #endif
483             #ifndef S_IXUSR
484             { "S_IXUSR", 7 },
485             #endif
486             #ifndef S_IRWXG
487             { "S_IRWXG", 7 },
488             #endif
489             #ifndef S_IRGRP
490             { "S_IRGRP", 7 },
491             #endif
492             #ifndef S_IWGRP
493             { "S_IWGRP", 7 },
494             #endif
495             #ifndef S_IXGRP
496             { "S_IXGRP", 7 },
497             #endif
498             #ifndef S_IRWXO
499             { "S_IRWXO", 7 },
500             #endif
501             #ifndef S_IROTH
502             { "S_IROTH", 7 },
503             #endif
504             #ifndef S_IWOTH
505             { "S_IWOTH", 7 },
506             #endif
507             #ifndef S_IXOTH
508             { "S_IXOTH", 7 },
509             #endif
510             #ifndef S_ISVTX
511             { "S_ISVTX", 7 },
512             #endif
513             #ifndef SEEK_SET
514             { "SEEK_SET", 8 },
515             #endif
516             #ifndef SEEK_CUR
517             { "SEEK_CUR", 8 },
518             #endif
519             #ifndef SEEK_END
520             { "SEEK_END", 8 },
521             #endif
522             #ifndef SEEK_DATA
523             { "SEEK_DATA", 9 },
524             #endif
525             #ifndef SEEK_HOLE
526             { "SEEK_HOLE", 9 },
527             #endif
528             #ifndef TIMER_ABSTIME
529             { "TIMER_ABSTIME", 13 },
530             #endif
531             #ifndef USER_PROCESS
532             { "USER_PROCESS", 12 },
533             #endif
534             #ifndef UTIME_NOW
535             { "UTIME_NOW", 9 },
536             #endif
537             #ifndef UTIME_OMIT
538             { "UTIME_OMIT", 10 },
539             #endif
540             #ifndef F_OK
541             { "F_OK", 4 },
542             #endif
543             #ifndef R_OK
544             { "R_OK", 4 },
545             #endif
546             #ifndef W_OK
547             { "W_OK", 4 },
548             #endif
549             #ifndef X_OK
550             { "X_OK", 4 },
551             #endif
552             { NULL, 0 } };
553             struct iv_s {const char *name; I32 namelen; IV value;};