xref: /netbsd-src/external/gpl3/gcc/dist/libphobos/libdruntime/core/sys/posix/unistd.d (revision 0a3071956a3a9fdebdbf7f338cf2d439b45fc728)
1 /**
2  * D header file for POSIX.
3  *
4  * Copyright: Copyright Sean Kelly 2005 - 2009.
5  * License:   $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
6  * Authors:   Sean Kelly
7  * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
8  */
9 
10 /*          Copyright Sean Kelly 2005 - 2009.
11  * Distributed under the Boost Software License, Version 1.0.
12  *    (See accompanying file LICENSE or copy at
13  *          http://www.boost.org/LICENSE_1_0.txt)
14  */
15 module core.sys.posix.unistd;
16 
17 import core.sys.posix.config;
18 import core.stdc.stddef;
19 public import core.sys.posix.inttypes;  // for intptr_t
20 public import core.sys.posix.sys.types; // for ssize_t, uid_t, gid_t, off_t, pid_t, useconds_t
21 
22 version (OSX)
23     version = Darwin;
24 else version (iOS)
25     version = Darwin;
26 else version (TVOS)
27     version = Darwin;
28 else version (WatchOS)
29     version = Darwin;
30 
31 version (Posix):
32 extern (C):
33 nothrow:
34 @nogc:
35 @system:
36 
37 enum STDIN_FILENO  = 0;
38 enum STDOUT_FILENO = 1;
39 enum STDERR_FILENO = 2;
40 
41 extern __gshared char*   optarg;
42 extern __gshared int     optind;
43 extern __gshared int     opterr;
44 extern __gshared int     optopt;
45 
46 int     access(const scope char*, int);
47 uint    alarm(uint) @trusted;
48 int     chdir(const scope char*);
49 int     chown(const scope char*, uid_t, gid_t);
50 int     close(int) @trusted;
51 size_t  confstr(int, char*, size_t);
52 int     dup(int) @trusted;
53 int     dup2(int, int) @trusted;
54 int     execl(const scope char*, const scope char*, ...);
55 int     execle(const scope char*, const scope char*, ...);
56 int     execlp(const scope char*, const scope char*, ...);
57 int     execv(const scope char*, const scope char**);
58 int     execve(const scope char*, const scope char**, const scope char**);
59 int     execvp(const scope char*, const scope char**);
60 void    _exit(int) @trusted;
61 int     fchown(int, uid_t, gid_t) @trusted;
62 pid_t   fork() @trusted;
63 c_long  fpathconf(int, int) @trusted;
64 //int     ftruncate(int, off_t);
65 char*   getcwd(char*, size_t);
66 gid_t   getegid() @trusted;
67 uid_t   geteuid() @trusted;
68 gid_t   getgid() @trusted;
69 int     getgroups(int, gid_t *);
70 int     gethostname(char*, size_t);
71 char*   getlogin() @trusted;
72 int     getlogin_r(char*, size_t);
73 int     getopt(int, const scope char**, const scope char*);
74 pid_t   getpgrp() @trusted;
75 pid_t   getpid() @trusted;
76 pid_t   getppid() @trusted;
77 uid_t   getuid() @trusted;
78 int     isatty(int) @trusted;
79 int     link(const scope char*, const scope char*);
80 //off_t   lseek(int, off_t, int);
81 c_long  pathconf(const scope char*, int);
82 int     pause() @trusted;
83 int     pipe(ref int[2]) @trusted;
84 ssize_t read(int, void*, size_t);
85 ssize_t readlink(const scope char*, char*, size_t);
86 int     rmdir(const scope char*);
87 int     setegid(gid_t) @trusted;
88 int     seteuid(uid_t) @trusted;
89 int     setgid(gid_t) @trusted;
90 int     setgroups(size_t, const scope gid_t*) @trusted;
91 int     setpgid(pid_t, pid_t) @trusted;
92 pid_t   setsid() @trusted;
93 int     setuid(uid_t) @trusted;
94 uint    sleep(uint) @trusted;
95 int     symlink(const scope char*, const scope char*);
96 c_long  sysconf(int) @trusted;
97 pid_t   tcgetpgrp(int) @trusted;
98 int     tcsetpgrp(int, pid_t) @trusted;
99 char*   ttyname(int) @trusted;
100 int     ttyname_r(int, char*, size_t);
101 int     unlink(const scope char*);
102 ssize_t write(int, const scope void*, size_t);
103 
version(CRuntime_Glibc)104 version (CRuntime_Glibc)
105 {
106   static if ( __USE_FILE_OFFSET64 )
107   {
108     off_t lseek64(int, off_t, int) @trusted;
109     alias lseek64 lseek;
110   }
111   else
112   {
113     off_t lseek(int, off_t, int) @trusted;
114   }
115   static if ( __USE_LARGEFILE64 )
116   {
117     int   ftruncate64(int, off_t) @trusted;
118     alias ftruncate64 ftruncate;
119   }
120   else
121   {
122     int   ftruncate(int, off_t) @trusted;
123   }
124 }
version(FreeBSD)125 else version (FreeBSD)
126 {
127     off_t lseek(int, off_t, int) @trusted;
128     int   ftruncate(int, off_t) @trusted;
129 }
version(NetBSD)130 else version (NetBSD)
131 {
132     off_t lseek(int, off_t, int) @trusted;
133     int   ftruncate(int, off_t) @trusted;
134 }
version(OpenBSD)135 else version (OpenBSD)
136 {
137     off_t lseek(int, off_t, int) @trusted;
138     int   ftruncate(int, off_t) @trusted;
139 }
version(DragonFlyBSD)140 else version (DragonFlyBSD)
141 {
142     off_t lseek(int, off_t, int) @trusted;
143     int   ftruncate(int, off_t) @trusted;
144 }
version(Solaris)145 else version (Solaris)
146 {
147     version (D_LP64)
148     {
149         off_t   lseek(int, off_t, int) @trusted;
150         alias   lseek lseek64;
151 
152         int     ftruncate(int, off_t) @trusted;
153         alias   ftruncate ftruncate64;
154     }
155     else
156     {
157         static if ( __USE_LARGEFILE64 )
158         {
159             off64_t lseek64(int, off64_t, int) @trusted;
160             alias   lseek64 lseek;
161 
162             int     ftruncate64(int, off64_t) @trusted;
163             alias   ftruncate64 ftruncate;
164         }
165         else
166         {
167             off_t   lseek(int, off_t, int) @trusted;
168             int     ftruncate(int, off_t) @trusted;
169         }
170     }
171 }
version(Darwin)172 else version (Darwin)
173 {
174     off_t lseek(int, off_t, int) @trusted;
175     int   ftruncate(int, off_t) @trusted;
176 }
version(CRuntime_Bionic)177 else version (CRuntime_Bionic)
178 {
179     off_t lseek(int, off_t, int) @trusted;
180     int   ftruncate(int, off_t) @trusted;
181 }
version(CRuntime_Musl)182 else version (CRuntime_Musl)
183 {
184     int ftruncate(int, off_t) @trusted;
185     off_t lseek(int, off_t, int) @trusted;
186     alias ftruncate ftruncate64;
187     alias lseek lseek64;
188 }
version(CRuntime_UClibc)189 else version (CRuntime_UClibc)
190 {
191   static if ( __USE_FILE_OFFSET64 )
192   {
193     off_t lseek64(int, off_t, int) @trusted;
194     alias lseek64 lseek;
195   }
196   else
197   {
198     off_t lseek(int, off_t, int) @trusted;
199   }
200   static if ( __USE_LARGEFILE64 )
201   {
202     int   ftruncate64(int, off_t) @trusted;
203     alias ftruncate64 ftruncate;
204   }
205   else
206   {
207     int   ftruncate(int, off_t) @trusted;
208   }
209 }
210 
version(CRuntime_Glibc)211 version (CRuntime_Glibc)
212 {
213     enum F_OK       = 0;
214     enum R_OK       = 4;
215     enum W_OK       = 2;
216     enum X_OK       = 1;
217 
218     enum F_ULOCK    = 0;
219     enum F_LOCK     = 1;
220     enum F_TLOCK    = 2;
221     enum F_TEST     = 3;
222 
223     enum
224     {
225         _CS_PATH,
226 
227         _CS_V6_WIDTH_RESTRICTED_ENVS,
228 
229         _CS_GNU_LIBC_VERSION,
230         _CS_GNU_LIBPTHREAD_VERSION,
231 
232         _CS_LFS_CFLAGS = 1000,
233         _CS_LFS_LDFLAGS,
234         _CS_LFS_LIBS,
235         _CS_LFS_LINTFLAGS,
236         _CS_LFS64_CFLAGS,
237         _CS_LFS64_LDFLAGS,
238         _CS_LFS64_LIBS,
239         _CS_LFS64_LINTFLAGS,
240 
241         _CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
242         _CS_XBS5_ILP32_OFF32_LDFLAGS,
243         _CS_XBS5_ILP32_OFF32_LIBS,
244         _CS_XBS5_ILP32_OFF32_LINTFLAGS,
245         _CS_XBS5_ILP32_OFFBIG_CFLAGS,
246         _CS_XBS5_ILP32_OFFBIG_LDFLAGS,
247         _CS_XBS5_ILP32_OFFBIG_LIBS,
248         _CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
249         _CS_XBS5_LP64_OFF64_CFLAGS,
250         _CS_XBS5_LP64_OFF64_LDFLAGS,
251         _CS_XBS5_LP64_OFF64_LIBS,
252         _CS_XBS5_LP64_OFF64_LINTFLAGS,
253         _CS_XBS5_LPBIG_OFFBIG_CFLAGS,
254         _CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
255         _CS_XBS5_LPBIG_OFFBIG_LIBS,
256         _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
257 
258         _CS_POSIX_V6_ILP32_OFF32_CFLAGS,
259         _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
260         _CS_POSIX_V6_ILP32_OFF32_LIBS,
261         _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
262         _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
263         _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
264         _CS_POSIX_V6_ILP32_OFFBIG_LIBS,
265         _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
266         _CS_POSIX_V6_LP64_OFF64_CFLAGS,
267         _CS_POSIX_V6_LP64_OFF64_LDFLAGS,
268         _CS_POSIX_V6_LP64_OFF64_LIBS,
269         _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
270         _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
271         _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
272         _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
273         _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
274     }
275 
276     enum
277     {
278         _PC_LINK_MAX,
279         _PC_MAX_CANON,
280         _PC_MAX_INPUT,
281         _PC_NAME_MAX,
282         _PC_PATH_MAX,
283         _PC_PIPE_BUF,
284         _PC_CHOWN_RESTRICTED,
285         _PC_NO_TRUNC,
286         _PC_VDISABLE,
287         _PC_SYNC_IO,
288         _PC_ASYNC_IO,
289         _PC_PRIO_IO,
290         _PC_SOCK_MAXBUF,
291         _PC_FILESIZEBITS,
292         _PC_REC_INCR_XFER_SIZE,
293         _PC_REC_MAX_XFER_SIZE,
294         _PC_REC_MIN_XFER_SIZE,
295         _PC_REC_XFER_ALIGN,
296         _PC_ALLOC_SIZE_MIN,
297         _PC_SYMLINK_MAX,
298         _PC_2_SYMLINKS
299     }
300 
301     enum
302     {
303         _SC_ARG_MAX,
304         _SC_CHILD_MAX,
305         _SC_CLK_TCK,
306         _SC_NGROUPS_MAX,
307         _SC_OPEN_MAX,
308         _SC_STREAM_MAX,
309         _SC_TZNAME_MAX,
310         _SC_JOB_CONTROL,
311         _SC_SAVED_IDS,
312         _SC_REALTIME_SIGNALS,
313         _SC_PRIORITY_SCHEDULING,
314         _SC_TIMERS,
315         _SC_ASYNCHRONOUS_IO,
316         _SC_PRIORITIZED_IO,
317         _SC_SYNCHRONIZED_IO,
318         _SC_FSYNC,
319         _SC_MAPPED_FILES,
320         _SC_MEMLOCK,
321         _SC_MEMLOCK_RANGE,
322         _SC_MEMORY_PROTECTION,
323         _SC_MESSAGE_PASSING,
324         _SC_SEMAPHORES,
325         _SC_SHARED_MEMORY_OBJECTS,
326         _SC_AIO_LISTIO_MAX,
327         _SC_AIO_MAX,
328         _SC_AIO_PRIO_DELTA_MAX,
329         _SC_DELAYTIMER_MAX,
330         _SC_MQ_OPEN_MAX,
331         _SC_MQ_PRIO_MAX,
332         _SC_VERSION,
333         _SC_PAGESIZE,
334         _SC_PAGE_SIZE = _SC_PAGESIZE,
335         _SC_RTSIG_MAX,
336         _SC_SEM_NSEMS_MAX,
337         _SC_SEM_VALUE_MAX,
338         _SC_SIGQUEUE_MAX,
339         _SC_TIMER_MAX,
340 
341         _SC_BC_BASE_MAX,
342         _SC_BC_DIM_MAX,
343         _SC_BC_SCALE_MAX,
344         _SC_BC_STRING_MAX,
345         _SC_COLL_WEIGHTS_MAX,
346         _SC_EQUIV_CLASS_MAX,
347         _SC_EXPR_NEST_MAX,
348         _SC_LINE_MAX,
349         _SC_RE_DUP_MAX,
350         _SC_CHARCLASS_NAME_MAX,
351 
352         _SC_2_VERSION,
353         _SC_2_C_BIND,
354         _SC_2_C_DEV,
355         _SC_2_FORT_DEV,
356         _SC_2_FORT_RUN,
357         _SC_2_SW_DEV,
358         _SC_2_LOCALEDEF,
359 
360         _SC_PII,
361         _SC_PII_XTI,
362         _SC_PII_SOCKET,
363         _SC_PII_INTERNET,
364         _SC_PII_OSI,
365         _SC_POLL,
366         _SC_SELECT,
367         _SC_UIO_MAXIOV,
368         _SC_IOV_MAX = _SC_UIO_MAXIOV,
369         _SC_PII_INTERNET_STREAM,
370         _SC_PII_INTERNET_DGRAM,
371         _SC_PII_OSI_COTS,
372         _SC_PII_OSI_CLTS,
373         _SC_PII_OSI_M,
374         _SC_T_IOV_MAX,
375 
376         _SC_THREADS,
377         _SC_THREAD_SAFE_FUNCTIONS,
378         _SC_GETGR_R_SIZE_MAX,
379         _SC_GETPW_R_SIZE_MAX,
380         _SC_LOGIN_NAME_MAX,
381         _SC_TTY_NAME_MAX,
382         _SC_THREAD_DESTRUCTOR_ITERATIONS,
383         _SC_THREAD_KEYS_MAX,
384         _SC_THREAD_STACK_MIN,
385         _SC_THREAD_THREADS_MAX,
386         _SC_THREAD_ATTR_STACKADDR,
387         _SC_THREAD_ATTR_STACKSIZE,
388         _SC_THREAD_PRIORITY_SCHEDULING,
389         _SC_THREAD_PRIO_INHERIT,
390         _SC_THREAD_PRIO_PROTECT,
391         _SC_THREAD_PROCESS_SHARED,
392 
393         _SC_NPROCESSORS_CONF,
394         _SC_NPROCESSORS_ONLN,
395         _SC_PHYS_PAGES,
396         _SC_AVPHYS_PAGES,
397         _SC_ATEXIT_MAX,
398         _SC_PASS_MAX,
399 
400         _SC_XOPEN_VERSION,
401         _SC_XOPEN_XCU_VERSION,
402         _SC_XOPEN_UNIX,
403         _SC_XOPEN_CRYPT,
404         _SC_XOPEN_ENH_I18N,
405         _SC_XOPEN_SHM,
406 
407         _SC_2_CHAR_TERM,
408         _SC_2_C_VERSION,
409         _SC_2_UPE,
410 
411         _SC_XOPEN_XPG2,
412         _SC_XOPEN_XPG3,
413         _SC_XOPEN_XPG4,
414 
415         _SC_CHAR_BIT,
416         _SC_CHAR_MAX,
417         _SC_CHAR_MIN,
418         _SC_INT_MAX,
419         _SC_INT_MIN,
420         _SC_LONG_BIT,
421         _SC_WORD_BIT,
422         _SC_MB_LEN_MAX,
423         _SC_NZERO,
424         _SC_SSIZE_MAX,
425         _SC_SCHAR_MAX,
426         _SC_SCHAR_MIN,
427         _SC_SHRT_MAX,
428         _SC_SHRT_MIN,
429         _SC_UCHAR_MAX,
430         _SC_UINT_MAX,
431         _SC_ULONG_MAX,
432         _SC_USHRT_MAX,
433 
434         _SC_NL_ARGMAX,
435         _SC_NL_LANGMAX,
436         _SC_NL_MSGMAX,
437         _SC_NL_NMAX,
438         _SC_NL_SETMAX,
439         _SC_NL_TEXTMAX,
440 
441         _SC_XBS5_ILP32_OFF32,
442         _SC_XBS5_ILP32_OFFBIG,
443         _SC_XBS5_LP64_OFF64,
444         _SC_XBS5_LPBIG_OFFBIG,
445 
446         _SC_XOPEN_LEGACY,
447         _SC_XOPEN_REALTIME,
448         _SC_XOPEN_REALTIME_THREADS,
449 
450         _SC_ADVISORY_INFO,
451         _SC_BARRIERS,
452         _SC_BASE,
453         _SC_C_LANG_SUPPORT,
454         _SC_C_LANG_SUPPORT_R,
455         _SC_CLOCK_SELECTION,
456         _SC_CPUTIME,
457         _SC_THREAD_CPUTIME,
458         _SC_DEVICE_IO,
459         _SC_DEVICE_SPECIFIC,
460         _SC_DEVICE_SPECIFIC_R,
461         _SC_FD_MGMT,
462         _SC_FIFO,
463         _SC_PIPE,
464         _SC_FILE_ATTRIBUTES,
465         _SC_FILE_LOCKING,
466         _SC_FILE_SYSTEM,
467         _SC_MONOTONIC_CLOCK,
468         _SC_MULTI_PROCESS,
469         _SC_SINGLE_PROCESS,
470         _SC_NETWORKING,
471         _SC_READER_WRITER_LOCKS,
472         _SC_SPIN_LOCKS,
473         _SC_REGEXP,
474         _SC_REGEX_VERSION,
475         _SC_SHELL,
476         _SC_SIGNALS,
477         _SC_SPAWN,
478         _SC_SPORADIC_SERVER,
479         _SC_THREAD_SPORADIC_SERVER,
480         _SC_SYSTEM_DATABASE,
481         _SC_SYSTEM_DATABASE_R,
482         _SC_TIMEOUTS,
483         _SC_TYPED_MEMORY_OBJECTS,
484         _SC_USER_GROUPS,
485         _SC_USER_GROUPS_R,
486         _SC_2_PBS,
487         _SC_2_PBS_ACCOUNTING,
488         _SC_2_PBS_LOCATE,
489         _SC_2_PBS_MESSAGE,
490         _SC_2_PBS_TRACK,
491         _SC_SYMLOOP_MAX,
492         _SC_STREAMS,
493         _SC_2_PBS_CHECKPOINT,
494 
495         _SC_V6_ILP32_OFF32,
496         _SC_V6_ILP32_OFFBIG,
497         _SC_V6_LP64_OFF64,
498         _SC_V6_LPBIG_OFFBIG,
499 
500         _SC_HOST_NAME_MAX,
501         _SC_TRACE,
502         _SC_TRACE_EVENT_FILTER,
503         _SC_TRACE_INHERIT,
504         _SC_TRACE_LOG,
505 
506         _SC_LEVEL1_ICACHE_SIZE,
507         _SC_LEVEL1_ICACHE_ASSOC,
508         _SC_LEVEL1_ICACHE_LINESIZE,
509         _SC_LEVEL1_DCACHE_SIZE,
510         _SC_LEVEL1_DCACHE_ASSOC,
511         _SC_LEVEL1_DCACHE_LINESIZE,
512         _SC_LEVEL2_CACHE_SIZE,
513         _SC_LEVEL2_CACHE_ASSOC,
514         _SC_LEVEL2_CACHE_LINESIZE,
515         _SC_LEVEL3_CACHE_SIZE,
516         _SC_LEVEL3_CACHE_ASSOC,
517         _SC_LEVEL3_CACHE_LINESIZE,
518         _SC_LEVEL4_CACHE_SIZE,
519         _SC_LEVEL4_CACHE_ASSOC,
520         _SC_LEVEL4_CACHE_LINESIZE,
521 
522         _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
523         _SC_RAW_SOCKETS
524     }
525 }
526 else version (Darwin)
527 {
528     enum F_OK       = 0;
529     enum R_OK       = 4;
530     enum W_OK       = 2;
531     enum X_OK       = 1;
532 
533     enum F_ULOCK    = 0;
534     enum F_LOCK     = 1;
535     enum F_TLOCK    = 2;
536     enum F_TEST     = 3;
537 
538     enum
539     {
540         _SC_ARG_MAX                      =   1,
541         _SC_CHILD_MAX                    =   2,
542         _SC_CLK_TCK                      =   3,
543         _SC_NGROUPS_MAX                  =   4,
544         _SC_OPEN_MAX                     =   5,
545         _SC_JOB_CONTROL                  =   6,
546         _SC_SAVED_IDS                    =   7,
547         _SC_VERSION                      =   8,
548         _SC_BC_BASE_MAX                  =   9,
549         _SC_BC_DIM_MAX                   =  10,
550         _SC_BC_SCALE_MAX                 =  11,
551         _SC_BC_STRING_MAX                =  12,
552         _SC_COLL_WEIGHTS_MAX             =  13,
553         _SC_EXPR_NEST_MAX                =  14,
554         _SC_LINE_MAX                     =  15,
555         _SC_RE_DUP_MAX                   =  16,
556         _SC_2_VERSION                    =  17,
557         _SC_2_C_BIND                     =  18,
558         _SC_2_C_DEV                      =  19,
559         _SC_2_CHAR_TERM                  =  20,
560         _SC_2_FORT_DEV                   =  21,
561         _SC_2_FORT_RUN                   =  22,
562         _SC_2_LOCALEDEF                  =  23,
563         _SC_2_SW_DEV                     =  24,
564         _SC_2_UPE                        =  25,
565         _SC_STREAM_MAX                   =  26,
566         _SC_TZNAME_MAX                   =  27,
567         _SC_ASYNCHRONOUS_IO              =  28,
568         _SC_PAGESIZE                     =  29,
569         _SC_MEMLOCK                      =  30,
570         _SC_MEMLOCK_RANGE                =  31,
571         _SC_MEMORY_PROTECTION            =  32,
572         _SC_MESSAGE_PASSING              =  33,
573         _SC_PRIORITIZED_IO               =  34,
574         _SC_PRIORITY_SCHEDULING          =  35,
575         _SC_REALTIME_SIGNALS             =  36,
576         _SC_SEMAPHORES                   =  37,
577         _SC_FSYNC                        =  38,
578         _SC_SHARED_MEMORY_OBJECTS        =  39,
579         _SC_SYNCHRONIZED_IO              =  40,
580         _SC_TIMERS                       =  41,
581         _SC_AIO_LISTIO_MAX               =  42,
582         _SC_AIO_MAX                      =  43,
583         _SC_AIO_PRIO_DELTA_MAX           =  44,
584         _SC_DELAYTIMER_MAX               =  45,
585         _SC_MQ_OPEN_MAX                  =  46,
586         _SC_MAPPED_FILES                 =  47,
587         _SC_RTSIG_MAX                    =  48,
588         _SC_SEM_NSEMS_MAX                =  49,
589         _SC_SEM_VALUE_MAX                =  50,
590         _SC_SIGQUEUE_MAX                 =  51,
591         _SC_TIMER_MAX                    =  52,
592         _SC_IOV_MAX                      =  56,
593         _SC_NPROCESSORS_CONF             =  57,
594         _SC_NPROCESSORS_ONLN             =  58,
595         _SC_2_PBS                        =  59,
596         _SC_2_PBS_ACCOUNTING             =  60,
597         _SC_2_PBS_CHECKPOINT             =  61,
598         _SC_2_PBS_LOCATE                 =  62,
599         _SC_2_PBS_MESSAGE                =  63,
600         _SC_2_PBS_TRACK                  =  64,
601         _SC_ADVISORY_INFO                =  65,
602         _SC_BARRIERS                     =  66,
603         _SC_CLOCK_SELECTION              =  67,
604         _SC_CPUTIME                      =  68,
605         _SC_FILE_LOCKING                 =  69,
606         _SC_GETGR_R_SIZE_MAX             =  70,
607         _SC_GETPW_R_SIZE_MAX             =  71,
608         _SC_HOST_NAME_MAX                =  72,
609         _SC_LOGIN_NAME_MAX               =  73,
610         _SC_MONOTONIC_CLOCK              =  74,
611         _SC_MQ_PRIO_MAX                  =  75,
612         _SC_READER_WRITER_LOCKS          =  76,
613         _SC_REGEXP                       =  77,
614         _SC_SHELL                        =  78,
615         _SC_SPAWN                        =  79,
616         _SC_SPIN_LOCKS                   =  80,
617         _SC_SPORADIC_SERVER              =  81,
618         _SC_THREAD_ATTR_STACKADDR        =  82,
619         _SC_THREAD_ATTR_STACKSIZE        =  83,
620         _SC_THREAD_CPUTIME               =  84,
621         _SC_THREAD_DESTRUCTOR_ITERATIONS =  85,
622         _SC_THREAD_KEYS_MAX              =  86,
623         _SC_THREAD_PRIO_INHERIT          =  87,
624         _SC_THREAD_PRIO_PROTECT          =  88,
625         _SC_THREAD_PRIORITY_SCHEDULING   =  89,
626         _SC_THREAD_PROCESS_SHARED        =  90,
627         _SC_THREAD_SAFE_FUNCTIONS        =  91,
628         _SC_THREAD_SPORADIC_SERVER       =  92,
629         _SC_THREAD_STACK_MIN             =  93,
630         _SC_THREAD_THREADS_MAX           =  94,
631         _SC_TIMEOUTS                     =  95,
632         _SC_THREADS                      =  96,
633         _SC_TRACE                        =  97,
634         _SC_TRACE_EVENT_FILTER           =  98,
635         _SC_TRACE_INHERIT                =  99,
636         _SC_TRACE_LOG                    = 100,
637         _SC_TTY_NAME_MAX                 = 101,
638         _SC_TYPED_MEMORY_OBJECTS         = 102,
639         _SC_V6_ILP32_OFF32               = 103,
640         _SC_V6_ILP32_OFFBIG              = 104,
641         _SC_V6_LP64_OFF64                = 105,
642         _SC_V6_LPBIG_OFFBIG              = 106,
643         _SC_ATEXIT_MAX                   = 107,
644         _SC_XOPEN_CRYPT                  = 108,
645         _SC_XOPEN_ENH_I18N               = 109,
646         _SC_XOPEN_LEGACY                 = 110,
647         _SC_XOPEN_REALTIME               = 111,
648         _SC_XOPEN_REALTIME_THREADS       = 112,
649         _SC_XOPEN_SHM                    = 113,
650         _SC_XOPEN_STREAMS                = 114,
651         _SC_XOPEN_UNIX                   = 115,
652         _SC_XOPEN_VERSION                = 116,
653         _SC_IPV6                         = 118,
654         _SC_RAW_SOCKETS                  = 119,
655         _SC_SYMLOOP_MAX                  = 120,
656         _SC_XOPEN_XCU_VERSION            = 121,
657         _SC_XBS5_ILP32_OFF32             = 122,
658         _SC_XBS5_ILP32_OFFBIG            = 123,
659         _SC_XBS5_LP64_OFF64              = 124,
660         _SC_XBS5_LPBIG_OFFBIG            = 125,
661         _SC_SS_REPL_MAX                  = 126,
662         _SC_TRACE_EVENT_NAME_MAX         = 127,
663         _SC_TRACE_NAME_MAX               = 128,
664         _SC_TRACE_SYS_MAX                = 129,
665         _SC_TRACE_USER_EVENT_MAX         = 130,
666         _SC_PASS_MAX                     = 131,
667     }
668 
669     enum _SC_PAGE_SIZE = _SC_PAGESIZE;
670 
671     enum
672     {
673         _CS_PATH                                =     1,
674         _CS_POSIX_V6_ILP32_OFF32_CFLAGS         =     2,
675         _CS_POSIX_V6_ILP32_OFF32_LDFLAGS        =     3,
676         _CS_POSIX_V6_ILP32_OFF32_LIBS           =     4,
677         _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS        =     5,
678         _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS       =     6,
679         _CS_POSIX_V6_ILP32_OFFBIG_LIBS          =     7,
680         _CS_POSIX_V6_LP64_OFF64_CFLAGS          =     8,
681         _CS_POSIX_V6_LP64_OFF64_LDFLAGS         =     9,
682         _CS_POSIX_V6_LP64_OFF64_LIBS            =    10,
683         _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS        =    11,
684         _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS       =    12,
685         _CS_POSIX_V6_LPBIG_OFFBIG_LIBS          =    13,
686         _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS      =    14,
687 
688         _CS_XBS5_ILP32_OFF32_CFLAGS             =    20,
689         _CS_XBS5_ILP32_OFF32_LDFLAGS            =    21,
690         _CS_XBS5_ILP32_OFF32_LIBS               =    22,
691         _CS_XBS5_ILP32_OFF32_LINTFLAGS          =    23,
692         _CS_XBS5_ILP32_OFFBIG_CFLAGS            =    24,
693         _CS_XBS5_ILP32_OFFBIG_LDFLAGS           =    25,
694         _CS_XBS5_ILP32_OFFBIG_LIBS              =    26,
695         _CS_XBS5_ILP32_OFFBIG_LINTFLAGS         =    27,
696         _CS_XBS5_LP64_OFF64_CFLAGS              =    28,
697         _CS_XBS5_LP64_OFF64_LDFLAGS             =    29,
698         _CS_XBS5_LP64_OFF64_LIBS                =    30,
699         _CS_XBS5_LP64_OFF64_LINTFLAGS           =    31,
700         _CS_XBS5_LPBIG_OFFBIG_CFLAGS            =    32,
701         _CS_XBS5_LPBIG_OFFBIG_LDFLAGS           =    33,
702         _CS_XBS5_LPBIG_OFFBIG_LIBS              =    34,
703         _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS         =    35,
704 
705         _CS_DARWIN_USER_DIR                     = 65536,
706         _CS_DARWIN_USER_TEMP_DIR                = 65537,
707         _CS_DARWIN_USER_CACHE_DIR               = 65538,
708     }
709 }
710 else version (FreeBSD)
711 {
712     enum F_OK       = 0;
713     enum R_OK       = 0x04;
714     enum W_OK       = 0x02;
715     enum X_OK       = 0x01;
716 
717     enum F_ULOCK    = 0;
718     enum F_LOCK     = 1;
719     enum F_TLOCK    = 2;
720     enum F_TEST     = 3;
721 
722     enum
723     {
724         _SC_ARG_MAX                        =   1,
725         _SC_CHILD_MAX                      =   2,
726         _SC_CLK_TCK                        =   3,
727         _SC_NGROUPS_MAX                    =   4,
728         _SC_OPEN_MAX                       =   5,
729         _SC_JOB_CONTROL                    =   6,
730         _SC_SAVED_IDS                      =   7,
731         _SC_VERSION                        =   8,
732         _SC_BC_BASE_MAX                    =   9,
733         _SC_BC_DIM_MAX                     =  10,
734         _SC_BC_SCALE_MAX                   =  11,
735         _SC_BC_STRING_MAX                  =  12,
736         _SC_COLL_WEIGHTS_MAX               =  13,
737         _SC_EXPR_NEST_MAX                  =  14,
738         _SC_LINE_MAX                       =  15,
739         _SC_RE_DUP_MAX                     =  16,
740         _SC_2_VERSION                      =  17,
741         _SC_2_C_BIND                       =  18,
742         _SC_2_C_DEV                        =  19,
743         _SC_2_CHAR_TERM                    =  20,
744         _SC_2_FORT_DEV                     =  21,
745         _SC_2_FORT_RUN                     =  22,
746         _SC_2_LOCALEDEF                    =  23,
747         _SC_2_SW_DEV                       =  24,
748         _SC_2_UPE                          =  25,
749         _SC_STREAM_MAX                     =  26,
750         _SC_TZNAME_MAX                     =  27,
751         _SC_ASYNCHRONOUS_IO                =  28,
752         _SC_MAPPED_FILES                   =  29,
753         _SC_MEMLOCK                        =  30,
754         _SC_MEMLOCK_RANGE                  =  31,
755         _SC_MEMORY_PROTECTION              =  32,
756         _SC_MESSAGE_PASSING                =  33,
757         _SC_PRIORITIZED_IO                 =  34,
758         _SC_PRIORITY_SCHEDULING            =  35,
759         _SC_REALTIME_SIGNALS               =  36,
760         _SC_SEMAPHORES                     =  37,
761         _SC_FSYNC                          =  38,
762         _SC_SHARED_MEMORY_OBJECTS          =  39,
763         _SC_SYNCHRONIZED_IO                =  40,
764         _SC_TIMERS                         =  41,
765         _SC_AIO_LISTIO_MAX                 =  42,
766         _SC_AIO_MAX                        =  43,
767         _SC_AIO_PRIO_DELTA_MAX             =  44,
768         _SC_DELAYTIMER_MAX                 =  45,
769         _SC_MQ_OPEN_MAX                    =  46,
770         _SC_PAGESIZE                       =  47,
771         _SC_RTSIG_MAX                      =  48,
772         _SC_SEM_NSEMS_MAX                  =  49,
773         _SC_SEM_VALUE_MAX                  =  50,
774         _SC_SIGQUEUE_MAX                   =  51,
775         _SC_TIMER_MAX                      =  52,
776         _SC_IOV_MAX                        =  56,
777         _SC_NPROCESSORS_CONF               =  57,
778         _SC_NPROCESSORS_ONLN               =  58,
779         _SC_2_PBS                          =  59,
780         _SC_2_PBS_ACCOUNTING               =  60,
781         _SC_2_PBS_CHECKPOINT               =  61,
782         _SC_2_PBS_LOCATE                   =  62,
783         _SC_2_PBS_MESSAGE                  =  63,
784         _SC_2_PBS_TRACK                    =  64,
785         _SC_ADVISORY_INFO                  =  65,
786         _SC_BARRIERS                       =  66,
787         _SC_CLOCK_SELECTION                =  67,
788         _SC_CPUTIME                        =  68,
789         _SC_FILE_LOCKING                   =  69,
790         _SC_GETGR_R_SIZE_MAX               =  70,
791         _SC_GETPW_R_SIZE_MAX               =  71,
792         _SC_HOST_NAME_MAX                  =  72,
793         _SC_LOGIN_NAME_MAX                 =  73,
794         _SC_MONOTONIC_CLOCK                =  74,
795         _SC_MQ_PRIO_MAX                    =  75,
796         _SC_READER_WRITER_LOCKS            =  76,
797         _SC_REGEXP                         =  77,
798         _SC_SHELL                          =  78,
799         _SC_SPAWN                          =  79,
800         _SC_SPIN_LOCKS                     =  80,
801         _SC_SPORADIC_SERVER                =  81,
802         _SC_THREAD_ATTR_STACKADDR          =  82,
803         _SC_THREAD_ATTR_STACKSIZE          =  83,
804         _SC_THREAD_CPUTIME                 =  84,
805         _SC_THREAD_DESTRUCTOR_ITERATIONS   =  85,
806         _SC_THREAD_KEYS_MAX                =  86,
807         _SC_THREAD_PRIO_INHERIT            =  87,
808         _SC_THREAD_PRIO_PROTECT            =  88,
809         _SC_THREAD_PRIORITY_SCHEDULING     =  89,
810         _SC_THREAD_PROCESS_SHARED          =  90,
811         _SC_THREAD_SAFE_FUNCTIONS          =  91,
812         _SC_THREAD_SPORADIC_SERVER         =  92,
813         _SC_THREAD_STACK_MIN               =  93,
814         _SC_THREAD_THREADS_MAX             =  94,
815         _SC_TIMEOUTS                       =  95,
816         _SC_THREADS                        =  96,
817         _SC_TRACE                          =  97,
818         _SC_TRACE_EVENT_FILTER             =  98,
819         _SC_TRACE_INHERIT                  =  99,
820         _SC_TRACE_LOG                      = 100,
821         _SC_TTY_NAME_MAX                   = 101,
822         _SC_TYPED_MEMORY_OBJECTS           = 102,
823         _SC_V6_ILP32_OFF32                 = 103,
824         _SC_V6_ILP32_OFFBIG                = 104,
825         _SC_V6_LP64_OFF64                  = 105,
826         _SC_V6_LPBIG_OFFBIG                = 106,
827         _SC_IPV6                           = 118,
828         _SC_RAW_SOCKETS                    = 119,
829         _SC_SYMLOOP_MAX                    = 120,
830         _SC_ATEXIT_MAX                     = 107,
831         _SC_XOPEN_CRYPT                    = 108,
832         _SC_XOPEN_ENH_I18N                 = 109,
833         _SC_XOPEN_LEGACY                   = 110,
834         _SC_XOPEN_REALTIME                 = 111,
835         _SC_XOPEN_REALTIME_THREADS         = 112,
836         _SC_XOPEN_SHM                      = 113,
837         _SC_XOPEN_STREAMS                  = 114,
838         _SC_XOPEN_UNIX                     = 115,
839         _SC_XOPEN_VERSION                  = 116,
840         _SC_XOPEN_XCU_VERSION              = 117,
841         _SC_CPUSET_SIZE                    = 122,
842         _SC_PHYS_PAGES                     = 121,
843     }
844 
845     enum _SC_PAGE_SIZE = _SC_PAGESIZE;
846 
847     enum
848     {
849         _CS_PATH                           =   1,
850         _CS_POSIX_V6_ILP32_OFF32_CFLAGS    =   2,
851         _CS_POSIX_V6_ILP32_OFF32_LDFLAGS   =   3,
852         _CS_POSIX_V6_ILP32_OFF32_LIBS      =   4,
853         _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS   =   5,
854         _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS  =   6,
855         _CS_POSIX_V6_ILP32_OFFBIG_LIBS     =   7,
856         _CS_POSIX_V6_LP64_OFF64_CFLAGS     =   8,
857         _CS_POSIX_V6_LP64_OFF64_LDFLAGS    =   9,
858         _CS_POSIX_V6_LP64_OFF64_LIBS       =  10,
859         _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS   =  11,
860         _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS  =  12,
861         _CS_POSIX_V6_LPBIG_OFFBIG_LIBS     =  13,
862         _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS =  14,
863     }
864 }
865 else version (NetBSD)
866 {
867     enum F_OK       = 0;
868     enum R_OK       = 0x04;
869     enum W_OK       = 0x02;
870     enum X_OK       = 0x01;
871 
872     enum F_ULOCK    = 0;
873     enum F_LOCK     = 1;
874     enum F_TLOCK    = 2;
875     enum F_TEST     = 3;
876 
877     enum
878     {
879         _SC_ARG_MAX                        =   1,
880         _SC_CHILD_MAX                      =   2,
881         _O_SC_CLK_TCK                      =   3,
882         _SC_NGROUPS_MAX                    =   4,
883         _SC_OPEN_MAX                       =   5,
884         _SC_JOB_CONTROL                    =   6,
885         _SC_SAVED_IDS                      =   7,
886         _SC_VERSION                        =   8,
887         _SC_BC_BASE_MAX                    =   9,
888         _SC_BC_DIM_MAX                     =  10,
889         _SC_BC_SCALE_MAX                   =  11,
890         _SC_BC_STRING_MAX                  =  12,
891         _SC_COLL_WEIGHTS_MAX               =  13,
892         _SC_EXPR_NEST_MAX                  =  14,
893         _SC_LINE_MAX                       =  15,
894         _SC_RE_DUP_MAX                     =  16,
895         _SC_2_VERSION                      =  17,
896         _SC_2_C_BIND                       =  18,
897         _SC_2_C_DEV                        =  19,
898         _SC_2_CHAR_TERM                    =  20,
899         _SC_2_FORT_DEV                     =  21,
900         _SC_2_FORT_RUN                     =  22,
901         _SC_2_LOCALEDEF                    =  23,
902         _SC_2_SW_DEV                       =  24,
903         _SC_2_UPE                          =  25,
904         _SC_STREAM_MAX                     =  26,
905         _SC_TZNAME_MAX                     =  27,
906         _SC_PAGESIZE                       =  28,
907         _SC_FSYNC                          =  29,
908         _SC_XOPEN_SHM                      =  30,
909         _SC_SYNCHRONIZED_IO                =  31,
910         _SC_IOV_MAX                        =  32,
911         _SC_MAPPED_FILES                   =  33,
912         _SC_MEMLOCK                        =  34,
913         _SC_MEMLOCK_RANGE                  =  35,
914         _SC_MEMORY_PROTECTION              =  36,
915         _SC_LOGIN_NAME_MAX                 =  37,
916         _SC_MONOTONIC_CLOCK                =  38,
917         _SC_CLK_TCK                        =  39,
918         _SC_ATEXIT_MAX                     =  40,
919         _SC_THREADS                        =  41,
920         _SC_SEMAPHORES                     =  42,
921         _SC_BARRIERS                       =  43,
922         _SC_TIMERS                         =  44,
923         _SC_SPIN_LOCKS                     =  45,
924         _SC_READER_WRITER_LOCKS            =  46,
925         _SC_GETGR_R_SIZE_MAX               =  47,
926         _SC_GETPW_R_SIZE_MAX               =  48,
927         _SC_CLOCK_SELECTION                =  49,
928         _SC_ASYNCHRONOUS_IO                =  50,
929         _SC_AIO_LISTIO_MAX                 =  51,
930         _SC_AIO_MAX                        =  52,
931         _SC_MESSAGE_PASSING     = 53,
932         _SC_MQ_OPEN_MAX         = 54,
933         _SC_MQ_PRIO_MAX         = 55,
934         _SC_PRIORITY_SCHEDULING = 56,
935         _SC_THREAD_DESTRUCTOR_ITERATIONS = 57,
936         _SC_THREAD_KEYS_MAX             = 58,
937         _SC_THREAD_STACK_MIN            = 59,
938         _SC_THREAD_THREADS_MAX          = 60,
939         _SC_THREAD_ATTR_STACKADDR       = 61,
940         _SC_THREAD_ATTR_STACKSIZE       = 62,
941         _SC_THREAD_PRIORITY_SCHEDULING  = 63,
942         _SC_THREAD_PRIO_INHERIT         = 64,
943         _SC_THREAD_PRIO_PROTECT         = 65,
944         _SC_THREAD_PROCESS_SHARED       = 66,
945         _SC_THREAD_SAFE_FUNCTIONS       = 67,
946         _SC_TTY_NAME_MAX                = 68,
947         _SC_HOST_NAME_MAX               = 69,
948         _SC_PASS_MAX                    = 70,
949         _SC_REGEXP                      = 71,
950         _SC_SHELL                       = 72,
951         _SC_SYMLOOP_MAX                 = 73,
952 
953         /* Actually, they are not supported or implemented yet */
954         _SC_V6_ILP32_OFF32              = 74,
955         _SC_V6_ILP32_OFFBIG             = 75,
956         _SC_V6_LP64_OFF64               = 76,
957         _SC_V6_LPBIG_OFFBIG             = 77,
958         _SC_2_PBS                       = 80,
959         _SC_2_PBS_ACCOUNTING            = 81,
960         _SC_2_PBS_CHECKPOINT            = 82,
961         _SC_2_PBS_LOCATE                = 83,
962         _SC_2_PBS_MESSAGE               = 84,
963         _SC_2_PBS_TRACK                 = 85,
964 
965         /* These are implemented */
966         _SC_SPAWN                       = 86,
967         _SC_SHARED_MEMORY_OBJECTS       = 87,
968 
969         /* Extensions found in Solaris and Linux. */
970         _SC_PHYS_PAGES          = 121,
971 
972         /* Commonly provided sysconf() extensions */
973         _SC_NPROCESSORS_CONF    = 1001,
974         _SC_NPROCESSORS_ONLN    = 1002,
975         /* Native variables */
976         _SC_SCHED_RT_TS         = 2001,
977         _SC_SCHED_PRI_MIN       = 2002,
978         _SC_SCHED_PRI_MAX       = 2003
979 
980     }
981 
982     enum _SC_PAGE_SIZE = _SC_PAGESIZE;
983 
984     enum
985     {
986         _CS_PATH                           =   1,
987         _CS_POSIX_V6_ILP32_OFF32_CFLAGS    =   2,
988         _CS_POSIX_V6_ILP32_OFF32_LDFLAGS   =   3,
989         _CS_POSIX_V6_ILP32_OFF32_LIBS      =   4,
990         _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS   =   5,
991         _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS  =   6,
992         _CS_POSIX_V6_ILP32_OFFBIG_LIBS     =   7,
993         _CS_POSIX_V6_LP64_OFF64_CFLAGS     =   8,
994         _CS_POSIX_V6_LP64_OFF64_LDFLAGS    =   9,
995         _CS_POSIX_V6_LP64_OFF64_LIBS       =  10,
996         _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS   =  11,
997         _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS  =  12,
998         _CS_POSIX_V6_LPBIG_OFFBIG_LIBS     =  13,
999         _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS =  14,
1000     }
1001 }
1002 else version (OpenBSD)
1003 {
1004     enum F_OK       = 0;
1005     enum R_OK       = 0x04;
1006     enum W_OK       = 0x02;
1007     enum X_OK       = 0x01;
1008 
1009     enum F_ULOCK    = 0;
1010     enum F_LOCK     = 1;
1011     enum F_TLOCK    = 2;
1012     enum F_TEST     = 3;
1013 
1014     enum
1015     {
1016         _SC_ARG_MAX                      =  1,
1017         _SC_CHILD_MAX                    =  2,
1018         _O_SC_CLK_TCK                    =  3,
1019         _SC_NGROUPS_MAX                  =  4,
1020         _SC_OPEN_MAX                     =  5,
1021         _SC_JOB_CONTROL                  =  6,
1022         _SC_SAVED_IDS                    =  7,
1023         _SC_VERSION                      =  8,
1024         _SC_BC_BASE_MAX                  =  9,
1025         _SC_BC_DIM_MAX                   = 10,
1026         _SC_BC_SCALE_MAX                 = 11,
1027         _SC_BC_STRING_MAX                = 12,
1028         _SC_COLL_WEIGHTS_MAX             = 13,
1029         _SC_EXPR_NEST_MAX                = 14,
1030         _SC_LINE_MAX                     = 15,
1031         _SC_RE_DUP_MAX                   = 16,
1032         _SC_2_VERSION                    = 17,
1033         _SC_2_C_BIND                     = 18,
1034         _SC_2_C_DEV                      = 19,
1035         _SC_2_CHAR_TERM                  = 20,
1036         _SC_2_FORT_DEV                   = 21,
1037         _SC_2_FORT_RUN                   = 22,
1038         _SC_2_LOCALEDEF                  = 23,
1039         _SC_2_SW_DEV                     = 24,
1040         _SC_2_UPE                        = 25,
1041         _SC_STREAM_MAX                   = 26,
1042         _SC_TZNAME_MAX                   = 27,
1043         _SC_PAGESIZE                     = 28,
1044         _SC_FSYNC                        = 29,
1045         _SC_XOPEN_SHM                    = 30,
1046         _SC_SEM_NSEMS_MAX                = 31,
1047         _SC_SEM_VALUE_MAX                = 32,
1048         _SC_HOST_NAME_MAX                = 33,
1049         _SC_MONOTONIC_CLOCK              = 34,
1050         _SC_2_PBS                        = 35,
1051         _SC_2_PBS_ACCOUNTING             = 36,
1052         _SC_2_PBS_CHECKPOINT             = 37,
1053         _SC_2_PBS_LOCATE                 = 38,
1054         _SC_2_PBS_MESSAGE                = 39,
1055         _SC_2_PBS_TRACK                  = 40,
1056         _SC_ADVISORY_INFO                = 41,
1057         _SC_AIO_LISTIO_MAX               = 42,
1058         _SC_AIO_MAX                      = 43,
1059         _SC_AIO_PRIO_DELTA_MAX           = 44,
1060         _SC_ASYNCHRONOUS_IO              = 45,
1061         _SC_ATEXIT_MAX                   = 46,
1062         _SC_BARRIERS                     = 47,
1063         _SC_CLOCK_SELECTION              = 48,
1064         _SC_CPUTIME                      = 49,
1065         _SC_DELAYTIMER_MAX               = 50,
1066         _SC_IOV_MAX                      = 51,
1067         _SC_IPV6                         = 52,
1068         _SC_MAPPED_FILES                 = 53,
1069         _SC_MEMLOCK                      = 54,
1070         _SC_MEMLOCK_RANGE                = 55,
1071         _SC_MEMORY_PROTECTION            = 56,
1072         _SC_MESSAGE_PASSING              = 57,
1073         _SC_MQ_OPEN_MAX                  = 58,
1074         _SC_MQ_PRIO_MAX                  = 59,
1075         _SC_PRIORITIZED_IO               = 60,
1076         _SC_PRIORITY_SCHEDULING          = 61,
1077         _SC_RAW_SOCKETS                  = 62,
1078         _SC_READER_WRITER_LOCKS          = 63,
1079         _SC_REALTIME_SIGNALS             = 64,
1080         _SC_REGEXP                       = 65,
1081         _SC_RTSIG_MAX                    = 66,
1082         _SC_SEMAPHORES                   = 67,
1083         _SC_SHARED_MEMORY_OBJECTS        = 68,
1084         _SC_SHELL                        = 69,
1085         _SC_SIGQUEUE_MAX                 = 70,
1086         _SC_SPAWN                        = 71,
1087         _SC_SPIN_LOCKS                   = 72,
1088         _SC_SPORADIC_SERVER              = 73,
1089         _SC_SS_REPL_MAX                  = 74,
1090         _SC_SYNCHRONIZED_IO              = 75,
1091         _SC_SYMLOOP_MAX                  = 76,
1092         _SC_THREAD_ATTR_STACKADDR        = 77,
1093         _SC_THREAD_ATTR_STACKSIZE        = 78,
1094         _SC_THREAD_CPUTIME               = 79,
1095         _SC_THREAD_DESTRUCTOR_ITERATIONS = 80,
1096         _SC_THREAD_KEYS_MAX              = 81,
1097         _SC_THREAD_PRIO_INHERIT          = 82,
1098         _SC_THREAD_PRIO_PROTECT          = 83,
1099         _SC_THREAD_PRIORITY_SCHEDULING   = 84,
1100         _SC_THREAD_PROCESS_SHARED        = 85,
1101         _SC_THREAD_ROBUST_PRIO_INHERIT   = 86,
1102         _SC_THREAD_ROBUST_PRIO_PROTECT   = 87,
1103         _SC_THREAD_SPORADIC_SERVER       = 88,
1104         _SC_THREAD_STACK_MIN             = 89,
1105         _SC_THREAD_THREADS_MAX           = 90,
1106         _SC_THREADS                      = 91,
1107         _SC_TIMEOUTS                     = 92,
1108         _SC_TIMER_MAX                    = 93,
1109         _SC_TIMERS                       = 94,
1110         _SC_TRACE                        = 95,
1111         _SC_TRACE_EVENT_FILTER           = 96,
1112         _SC_TRACE_EVENT_NAME_MAX         = 97,
1113         _SC_TRACE_INHERIT                = 98,
1114         _SC_TRACE_LOG                    = 99,
1115         _SC_GETGR_R_SIZE_MAX             = 100,
1116         _SC_GETPW_R_SIZE_MAX             = 101,
1117         _SC_LOGIN_NAME_MAX               = 102,
1118         _SC_THREAD_SAFE_FUNCTIONS        = 103,
1119         _SC_TRACE_NAME_MAX               = 104,
1120         _SC_TRACE_SYS_MAX                = 105,
1121         _SC_TRACE_USER_EVENT_MAX         = 106,
1122         _SC_TTY_NAME_MAX                 = 107,
1123         _SC_TYPED_MEMORY_OBJECTS         = 108,
1124         _SC_V6_ILP32_OFF32               = 109,
1125         _SC_V6_ILP32_OFFBIG              = 110,
1126         _SC_V6_LP64_OFF64                = 111,
1127         _SC_V6_LPBIG_OFFBIG              = 112,
1128         _SC_V7_ILP32_OFF32               = 113,
1129         _SC_V7_ILP32_OFFBIG              = 114,
1130         _SC_V7_LP64_OFF64                = 115,
1131         _SC_V7_LPBIG_OFFBIG              = 116,
1132         _SC_XOPEN_CRYPT                  = 117,
1133         _SC_XOPEN_ENH_I18N               = 118,
1134         _SC_XOPEN_LEGACY                 = 119,
1135         _SC_XOPEN_REALTIME               = 120,
1136         _SC_XOPEN_REALTIME_THREADS       = 121,
1137         _SC_XOPEN_STREAMS                = 122,
1138         _SC_XOPEN_UNIX                   = 123,
1139         _SC_XOPEN_UUCP                   = 124,
1140         _SC_XOPEN_VERSION                = 125,
1141         _SC_PHYS_PAGES                   = 500,
1142         _SC_AVPHYS_PAGES                 = 501,
1143         _SC_NPROCESSORS_CONF             = 502,
1144         _SC_NPROCESSORS_ONLN             = 503,
1145     }
1146 
1147     enum _SC_PAGE_SIZE = _SC_PAGESIZE;
1148 
1149     enum
1150     {
1151         _CS_PATH                           = 1,
1152         _CS_POSIX_V6_ILP32_OFF32_CFLAGS    = 2,
1153         _CS_POSIX_V6_ILP32_OFF32_LDFLAGS   = 3,
1154         _CS_POSIX_V6_ILP32_OFF32_LIBS      = 4,
1155         _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS   = 5,
1156         _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS  = 6,
1157         _CS_POSIX_V6_ILP32_OFFBIG_LIBS     = 7,
1158         _CS_POSIX_V6_LP64_OFF64_CFLAGS     = 8,
1159         _CS_POSIX_V6_LP64_OFF64_LDFLAGS    = 9,
1160         _CS_POSIX_V6_LP64_OFF64_LIBS       = 10,
1161         _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS   = 11,
1162         _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS  = 12,
1163         _CS_POSIX_V6_LPBIG_OFFBIG_LIBS     = 13,
1164         _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS = 14,
1165         _CS_V6_ENV                         = 15,
1166         _CS_POSIX_V7_ILP32_OFF32_CFLAGS    = 16,
1167         _CS_POSIX_V7_ILP32_OFF32_LDFLAGS   = 17,
1168         _CS_POSIX_V7_ILP32_OFF32_LIBS      = 18,
1169         _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS   = 19,
1170         _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS  = 20,
1171         _CS_POSIX_V7_ILP32_OFFBIG_LIBS     = 21,
1172         _CS_POSIX_V7_LP64_OFF64_CFLAGS     = 22,
1173         _CS_POSIX_V7_LP64_OFF64_LDFLAGS    = 23,
1174         _CS_POSIX_V7_LP64_OFF64_LIBS       = 24,
1175         _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS   = 25,
1176         _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS  = 26,
1177         _CS_POSIX_V7_LPBIG_OFFBIG_LIBS     = 27,
1178         _CS_POSIX_V7_THREADS_CFLAGS        = 28,
1179         _CS_POSIX_V7_THREADS_LDFLAGS       = 29,
1180         _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS = 30,
1181         _CS_V7_ENV                         = 31,
1182     }
1183 }
1184 else version (DragonFlyBSD)
1185 {
1186     enum F_OK       = 0;
1187     enum R_OK       = 0x04;
1188     enum W_OK       = 0x02;
1189     enum X_OK       = 0x01;
1190 
1191     enum F_ULOCK    = 0;
1192     enum F_LOCK     = 1;
1193     enum F_TLOCK    = 2;
1194     enum F_TEST     = 3;
1195 
1196     enum
1197     {
1198         _SC_ARG_MAX                        =   1,
1199         _SC_CHILD_MAX                      =   2,
1200         _SC_CLK_TCK                        =   3,
1201         _SC_NGROUPS_MAX                    =   4,
1202         _SC_OPEN_MAX                       =   5,
1203         _SC_JOB_CONTROL                    =   6,
1204         _SC_SAVED_IDS                      =   7,
1205         _SC_VERSION                        =   8,
1206         _SC_BC_BASE_MAX                    =   9,
1207         _SC_BC_DIM_MAX                     =  10,
1208         _SC_BC_SCALE_MAX                   =  11,
1209         _SC_BC_STRING_MAX                  =  12,
1210         _SC_COLL_WEIGHTS_MAX               =  13,
1211         _SC_EXPR_NEST_MAX                  =  14,
1212         _SC_LINE_MAX                       =  15,
1213         _SC_RE_DUP_MAX                     =  16,
1214         _SC_2_VERSION                      =  17,
1215         _SC_2_C_BIND                       =  18,
1216         _SC_2_C_DEV                        =  19,
1217         _SC_2_CHAR_TERM                    =  20,
1218         _SC_2_FORT_DEV                     =  21,
1219         _SC_2_FORT_RUN                     =  22,
1220         _SC_2_LOCALEDEF                    =  23,
1221         _SC_2_SW_DEV                       =  24,
1222         _SC_2_UPE                          =  25,
1223         _SC_STREAM_MAX                     =  26,
1224         _SC_TZNAME_MAX                     =  27,
1225         _SC_ASYNCHRONOUS_IO                =  28,
1226         _SC_MAPPED_FILES                   =  29,
1227         _SC_MEMLOCK                        =  30,
1228         _SC_MEMLOCK_RANGE                  =  31,
1229         _SC_MEMORY_PROTECTION              =  32,
1230         _SC_MESSAGE_PASSING                =  33,
1231         _SC_PRIORITIZED_IO                 =  34,
1232         _SC_PRIORITY_SCHEDULING            =  35,
1233         _SC_REALTIME_SIGNALS               =  36,
1234         _SC_SEMAPHORES                     =  37,
1235         _SC_FSYNC                          =  38,
1236         _SC_SHARED_MEMORY_OBJECTS          =  39,
1237         _SC_SYNCHRONIZED_IO                =  40,
1238         _SC_TIMERS                         =  41,
1239         _SC_AIO_LISTIO_MAX                 =  42,
1240         _SC_AIO_MAX                        =  43,
1241         _SC_AIO_PRIO_DELTA_MAX             =  44,
1242         _SC_DELAYTIMER_MAX                 =  45,
1243         _SC_MQ_OPEN_MAX                    =  46,
1244         _SC_PAGESIZE                       =  47,
1245         _SC_RTSIG_MAX                      =  48,
1246         _SC_SEM_NSEMS_MAX                  =  49,
1247         _SC_SEM_VALUE_MAX                  =  50,
1248         _SC_SIGQUEUE_MAX                   =  51,
1249         _SC_TIMER_MAX                      =  52,
1250         _SC_IOV_MAX                        =  56,
1251         _SC_NPROCESSORS_CONF               =  57,
1252         _SC_NPROCESSORS_ONLN               =  58,
1253         _SC_2_PBS                          =  59,
1254         _SC_2_PBS_ACCOUNTING               =  60,
1255         _SC_2_PBS_CHECKPOINT               =  61,
1256         _SC_2_PBS_LOCATE                   =  62,
1257         _SC_2_PBS_MESSAGE                  =  63,
1258         _SC_2_PBS_TRACK                    =  64,
1259         _SC_ADVISORY_INFO                  =  65,
1260         _SC_BARRIERS                       =  66,
1261         _SC_CLOCK_SELECTION                =  67,
1262         _SC_CPUTIME                        =  68,
1263         _SC_FILE_LOCKING                   =  69,
1264         _SC_GETGR_R_SIZE_MAX               =  70,
1265         _SC_GETPW_R_SIZE_MAX               =  71,
1266         _SC_HOST_NAME_MAX                  =  72,
1267         _SC_LOGIN_NAME_MAX                 =  73,
1268         _SC_MONOTONIC_CLOCK                =  74,
1269         _SC_MQ_PRIO_MAX                    =  75,
1270         _SC_READER_WRITER_LOCKS            =  76,
1271         _SC_REGEXP                         =  77,
1272         _SC_SHELL                          =  78,
1273         _SC_SPAWN                          =  79,
1274         _SC_SPIN_LOCKS                     =  80,
1275         _SC_SPORADIC_SERVER                =  81,
1276         _SC_THREAD_ATTR_STACKADDR          =  82,
1277         _SC_THREAD_ATTR_STACKSIZE          =  83,
1278         _SC_THREAD_CPUTIME                 =  84,
1279         _SC_THREAD_DESTRUCTOR_ITERATIONS   =  85,
1280         _SC_THREAD_KEYS_MAX                =  86,
1281         _SC_THREAD_PRIO_INHERIT            =  87,
1282         _SC_THREAD_PRIO_PROTECT            =  88,
1283         _SC_THREAD_PRIORITY_SCHEDULING     =  89,
1284         _SC_THREAD_PROCESS_SHARED          =  90,
1285         _SC_THREAD_SAFE_FUNCTIONS          =  91,
1286         _SC_THREAD_SPORADIC_SERVER         =  92,
1287         _SC_THREAD_STACK_MIN               =  93,
1288         _SC_THREAD_THREADS_MAX             =  94,
1289         _SC_TIMEOUTS                       =  95,
1290         _SC_THREADS                        =  96,
1291         _SC_TRACE                          =  97,
1292         _SC_TRACE_EVENT_FILTER             =  98,
1293         _SC_TRACE_INHERIT                  =  99,
1294         _SC_TRACE_LOG                      = 100,
1295         _SC_TTY_NAME_MAX                   = 101,
1296         _SC_TYPED_MEMORY_OBJECTS           = 102,
1297         _SC_V6_ILP32_OFF32                 = 103,
1298         _SC_V6_ILP32_OFFBIG                = 104,
1299         _SC_V6_LP64_OFF64                  = 105,
1300         _SC_V6_LPBIG_OFFBIG                = 106,
1301         _SC_IPV6                           = 118,
1302         _SC_RAW_SOCKETS                    = 119,
1303         _SC_SYMLOOP_MAX                    = 120,
1304         _SC_ATEXIT_MAX                     = 107,
1305         _SC_XOPEN_CRYPT                    = 108,
1306         _SC_XOPEN_ENH_I18N                 = 109,
1307         _SC_XOPEN_LEGACY                   = 110,
1308         _SC_XOPEN_REALTIME                 = 111,
1309         _SC_XOPEN_REALTIME_THREADS         = 112,
1310         _SC_XOPEN_SHM                      = 113,
1311         _SC_XOPEN_STREAMS                  = 114,
1312         _SC_XOPEN_UNIX                     = 115,
1313         _SC_XOPEN_VERSION                  = 116,
1314         _SC_XOPEN_XCU_VERSION              = 117,
1315         _SC_CPUSET_SIZE                    = 122,
1316         _SC_PHYS_PAGES                     = 121,
1317     }
1318 
1319     enum _SC_PAGE_SIZE = _SC_PAGESIZE;
1320 
1321     enum
1322     {
1323         _CS_PATH                           =   1,
1324         _CS_POSIX_V6_ILP32_OFF32_CFLAGS    =   2,
1325         _CS_POSIX_V6_ILP32_OFF32_LDFLAGS   =   3,
1326         _CS_POSIX_V6_ILP32_OFF32_LIBS      =   4,
1327         _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS   =   5,
1328         _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS  =   6,
1329         _CS_POSIX_V6_ILP32_OFFBIG_LIBS     =   7,
1330         _CS_POSIX_V6_LP64_OFF64_CFLAGS     =   8,
1331         _CS_POSIX_V6_LP64_OFF64_LDFLAGS    =   9,
1332         _CS_POSIX_V6_LP64_OFF64_LIBS       =  10,
1333         _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS   =  11,
1334         _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS  =  12,
1335         _CS_POSIX_V6_LPBIG_OFFBIG_LIBS     =  13,
1336         _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS =  14,
1337     }
1338 }
1339 else version (CRuntime_Bionic)
1340 {
1341     enum F_OK       = 0;
1342     enum R_OK       = 4;
1343     enum W_OK       = 2;
1344     enum X_OK       = 1;
1345 
1346     enum
1347     {
1348         _SC_ARG_MAX             = 0x0000,
1349         _SC_BC_BASE_MAX         = 0x0001,
1350         _SC_BC_DIM_MAX          = 0x0002,
1351         _SC_BC_SCALE_MAX        = 0x0003,
1352         _SC_BC_STRING_MAX       = 0x0004,
1353         _SC_CHILD_MAX           = 0x0005,
1354         _SC_CLK_TCK             = 0x0006,
1355         _SC_COLL_WEIGHTS_MAX    = 0x0007,
1356         _SC_EXPR_NEST_MAX       = 0x0008,
1357         _SC_LINE_MAX            = 0x0009,
1358         _SC_NGROUPS_MAX         = 0x000a,
1359         _SC_OPEN_MAX            = 0x000b,
1360         _SC_PASS_MAX            = 0x000c,
1361         _SC_2_C_BIND            = 0x000d,
1362         _SC_2_C_DEV             = 0x000e,
1363         _SC_2_C_VERSION         = 0x000f,
1364         _SC_2_CHAR_TERM         = 0x0010,
1365         _SC_2_FORT_DEV          = 0x0011,
1366         _SC_2_FORT_RUN          = 0x0012,
1367         _SC_2_LOCALEDEF         = 0x0013,
1368         _SC_2_SW_DEV            = 0x0014,
1369         _SC_2_UPE               = 0x0015,
1370         _SC_2_VERSION           = 0x0016,
1371         _SC_JOB_CONTROL         = 0x0017,
1372         _SC_SAVED_IDS           = 0x0018,
1373         _SC_VERSION             = 0x0019,
1374         _SC_RE_DUP_MAX          = 0x001a,
1375         _SC_STREAM_MAX          = 0x001b,
1376         _SC_TZNAME_MAX          = 0x001c,
1377         _SC_XOPEN_CRYPT         = 0x001d,
1378         _SC_XOPEN_ENH_I18N      = 0x001e,
1379         _SC_XOPEN_SHM           = 0x001f,
1380         _SC_XOPEN_VERSION       = 0x0020,
1381         _SC_XOPEN_XCU_VERSION   = 0x0021,
1382         _SC_XOPEN_REALTIME      = 0x0022,
1383         _SC_XOPEN_REALTIME_THREADS = 0x0023,
1384         _SC_XOPEN_LEGACY        = 0x0024,
1385         _SC_ATEXIT_MAX          = 0x0025,
1386         _SC_IOV_MAX             = 0x0026,
1387         _SC_UIO_MAXIOV          = _SC_IOV_MAX,
1388         _SC_PAGESIZE            = 0x0027,
1389         _SC_PAGE_SIZE           = 0x0028,
1390         _SC_XOPEN_UNIX          = 0x0029,
1391         _SC_XBS5_ILP32_OFF32    = 0x002a,
1392         _SC_XBS5_ILP32_OFFBIG   = 0x002b,
1393         _SC_XBS5_LP64_OFF64     = 0x002c,
1394         _SC_XBS5_LPBIG_OFFBIG   = 0x002d,
1395         _SC_AIO_LISTIO_MAX      = 0x002e,
1396         _SC_AIO_MAX             = 0x002f,
1397         _SC_AIO_PRIO_DELTA_MAX  = 0x0030,
1398         _SC_DELAYTIMER_MAX      = 0x0031,
1399         _SC_MQ_OPEN_MAX         = 0x0032,
1400         _SC_MQ_PRIO_MAX         = 0x0033,
1401         _SC_RTSIG_MAX           = 0x0034,
1402         _SC_SEM_NSEMS_MAX       = 0x0035,
1403         _SC_SEM_VALUE_MAX       = 0x0036,
1404         _SC_SIGQUEUE_MAX        = 0x0037,
1405         _SC_TIMER_MAX           = 0x0038,
1406         _SC_ASYNCHRONOUS_IO     = 0x0039,
1407         _SC_FSYNC               = 0x003a,
1408         _SC_MAPPED_FILES        = 0x003b,
1409         _SC_MEMLOCK             = 0x003c,
1410         _SC_MEMLOCK_RANGE       = 0x003d,
1411         _SC_MEMORY_PROTECTION   = 0x003e,
1412         _SC_MESSAGE_PASSING     = 0x003f,
1413         _SC_PRIORITIZED_IO      = 0x0040,
1414         _SC_PRIORITY_SCHEDULING = 0x0041,
1415         _SC_REALTIME_SIGNALS    = 0x0042,
1416         _SC_SEMAPHORES          = 0x0043,
1417         _SC_SHARED_MEMORY_OBJECTS = 0x0044,
1418         _SC_SYNCHRONIZED_IO     = 0x0045,
1419         _SC_TIMERS              = 0x0046,
1420         _SC_GETGR_R_SIZE_MAX    = 0x0047,
1421         _SC_GETPW_R_SIZE_MAX    = 0x0048,
1422         _SC_LOGIN_NAME_MAX      = 0x0049,
1423         _SC_THREAD_DESTRUCTOR_ITERATIONS = 0x004a,
1424         _SC_THREAD_KEYS_MAX     = 0x004b,
1425         _SC_THREAD_STACK_MIN    = 0x004c,
1426         _SC_THREAD_THREADS_MAX  = 0x004d,
1427         _SC_TTY_NAME_MAX        = 0x004e,
1428 
1429         _SC_THREADS                    = 0x004f,
1430         _SC_THREAD_ATTR_STACKADDR      = 0x0050,
1431         _SC_THREAD_ATTR_STACKSIZE      = 0x0051,
1432         _SC_THREAD_PRIORITY_SCHEDULING = 0x0052,
1433         _SC_THREAD_PRIO_INHERIT        = 0x0053,
1434         _SC_THREAD_PRIO_PROTECT        = 0x0054,
1435         _SC_THREAD_SAFE_FUNCTIONS      = 0x0055,
1436 
1437         _SC_NPROCESSORS_CONF           = 0x0060,
1438         _SC_NPROCESSORS_ONLN           = 0x0061,
1439         _SC_PHYS_PAGES                 = 0x0062,
1440         _SC_AVPHYS_PAGES               = 0x0063,
1441         _SC_MONOTONIC_CLOCK            = 0x0064,
1442 
1443         _SC_2_PBS               = 0x0065,
1444         _SC_2_PBS_ACCOUNTING    = 0x0066,
1445         _SC_2_PBS_CHECKPOINT    = 0x0067,
1446         _SC_2_PBS_LOCATE        = 0x0068,
1447         _SC_2_PBS_MESSAGE       = 0x0069,
1448         _SC_2_PBS_TRACK         = 0x006a,
1449         _SC_ADVISORY_INFO       = 0x006b,
1450         _SC_BARRIERS            = 0x006c,
1451         _SC_CLOCK_SELECTION     = 0x006d,
1452         _SC_CPUTIME             = 0x006e,
1453         _SC_HOST_NAME_MAX       = 0x006f,
1454         _SC_IPV6                = 0x0070,
1455         _SC_RAW_SOCKETS         = 0x0071,
1456         _SC_READER_WRITER_LOCKS = 0x0072,
1457         _SC_REGEXP              = 0x0073,
1458         _SC_SHELL               = 0x0074,
1459         _SC_SPAWN               = 0x0075,
1460         _SC_SPIN_LOCKS          = 0x0076,
1461         _SC_SPORADIC_SERVER     = 0x0077,
1462         _SC_SS_REPL_MAX         = 0x0078,
1463         _SC_SYMLOOP_MAX         = 0x0079,
1464         _SC_THREAD_CPUTIME      = 0x007a,
1465         _SC_THREAD_PROCESS_SHARED      = 0x007b,
1466         _SC_THREAD_ROBUST_PRIO_INHERIT = 0x007c,
1467         _SC_THREAD_ROBUST_PRIO_PROTECT = 0x007d,
1468         _SC_THREAD_SPORADIC_SERVER     = 0x007e,
1469         _SC_TIMEOUTS            = 0x007f,
1470         _SC_TRACE               = 0x0080,
1471         _SC_TRACE_EVENT_FILTER  = 0x0081,
1472         _SC_TRACE_EVENT_NAME_MAX = 0x0082,
1473         _SC_TRACE_INHERIT       = 0x0083,
1474         _SC_TRACE_LOG           = 0x0084,
1475         _SC_TRACE_NAME_MAX      = 0x0085,
1476         _SC_TRACE_SYS_MAX       = 0x0086,
1477         _SC_TRACE_USER_EVENT_MAX = 0x0087,
1478         _SC_TYPED_MEMORY_OBJECTS = 0x0088,
1479         _SC_V7_ILP32_OFF32      = 0x0089,
1480         _SC_V7_ILP32_OFFBIG     = 0x008a,
1481         _SC_V7_LP64_OFF64       = 0x008b,
1482         _SC_V7_LPBIG_OFFBIG     = 0x008c,
1483         _SC_XOPEN_STREAMS       = 0x008d,
1484         _SC_XOPEN_UUCP          = 0x008e,
1485 
1486         _SC_LEVEL1_ICACHE_SIZE     = 0x008f,
1487         _SC_LEVEL1_ICACHE_ASSOC    = 0x0090,
1488         _SC_LEVEL1_ICACHE_LINESIZE = 0x0091,
1489         _SC_LEVEL1_DCACHE_SIZE     = 0x0092,
1490         _SC_LEVEL1_DCACHE_ASSOC    = 0x0093,
1491         _SC_LEVEL1_DCACHE_LINESIZE = 0x0094,
1492         _SC_LEVEL2_CACHE_SIZE      = 0x0095,
1493         _SC_LEVEL2_CACHE_ASSOC     = 0x0096,
1494         _SC_LEVEL2_CACHE_LINESIZE  = 0x0097,
1495         _SC_LEVEL3_CACHE_SIZE      = 0x0098,
1496         _SC_LEVEL3_CACHE_ASSOC     = 0x0099,
1497         _SC_LEVEL3_CACHE_LINESIZE  = 0x009a,
1498         _SC_LEVEL4_CACHE_SIZE      = 0x009b,
1499         _SC_LEVEL4_CACHE_ASSOC     = 0x009c,
1500         _SC_LEVEL4_CACHE_LINESIZE  = 0x009d,
1501     }
1502 }
1503 else version (Solaris)
1504 {
1505     enum F_OK       = 0;
1506     enum R_OK       = 4;
1507     enum W_OK       = 2;
1508     enum X_OK       = 1;
1509 
1510     enum F_ULOCK    = 0;
1511     enum F_LOCK     = 1;
1512     enum F_TLOCK    = 2;
1513     enum F_TEST     = 3;
1514 
1515     enum
1516     {
1517         // large file compilation environment configuration
1518         _CS_LFS_CFLAGS                  = 68,
1519         _CS_LFS_LDFLAGS                 = 69,
1520         _CS_LFS_LIBS                    = 70,
1521         _CS_LFS_LINTFLAGS               = 71,
1522         // transitional large file interface configuration
1523         _CS_LFS64_CFLAGS                = 72,
1524         _CS_LFS64_LDFLAGS               = 73,
1525         _CS_LFS64_LIBS                  = 74,
1526         _CS_LFS64_LINTFLAGS             = 75,
1527 
1528         // UNIX 98
1529         _CS_XBS5_ILP32_OFF32_CFLAGS     = 700,
1530         _CS_XBS5_ILP32_OFF32_LDFLAGS    = 701,
1531         _CS_XBS5_ILP32_OFF32_LIBS       = 702,
1532         _CS_XBS5_ILP32_OFF32_LINTFLAGS  = 703,
1533         _CS_XBS5_ILP32_OFFBIG_CFLAGS    = 705,
1534         _CS_XBS5_ILP32_OFFBIG_LDFLAGS   = 706,
1535         _CS_XBS5_ILP32_OFFBIG_LIBS      = 707,
1536         _CS_XBS5_ILP32_OFFBIG_LINTFLAGS = 708,
1537         _CS_XBS5_LP64_OFF64_CFLAGS      = 709,
1538         _CS_XBS5_LP64_OFF64_LDFLAGS     = 710,
1539         _CS_XBS5_LP64_OFF64_LIBS        = 711,
1540         _CS_XBS5_LP64_OFF64_LINTFLAGS   = 712,
1541         _CS_XBS5_LPBIG_OFFBIG_CFLAGS    = 713,
1542         _CS_XBS5_LPBIG_OFFBIG_LDFLAGS   = 714,
1543         _CS_XBS5_LPBIG_OFFBIG_LIBS      = 715,
1544         _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS = 716,
1545 
1546         // UNIX 03
1547         _CS_POSIX_V6_ILP32_OFF32_CFLAGS         = 800,
1548         _CS_POSIX_V6_ILP32_OFF32_LDFLAGS        = 801,
1549         _CS_POSIX_V6_ILP32_OFF32_LIBS           = 802,
1550         _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS      = 803,
1551         _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS        = 804,
1552         _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS       = 805,
1553         _CS_POSIX_V6_ILP32_OFFBIG_LIBS          = 806,
1554         _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS     = 807,
1555         _CS_POSIX_V6_LP64_OFF64_CFLAGS          = 808,
1556         _CS_POSIX_V6_LP64_OFF64_LDFLAGS         = 809,
1557         _CS_POSIX_V6_LP64_OFF64_LIBS            = 810,
1558         _CS_POSIX_V6_LP64_OFF64_LINTFLAGS       = 811,
1559         _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS        = 812,
1560         _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS       = 813,
1561         _CS_POSIX_V6_LPBIG_OFFBIG_LIBS          = 814,
1562         _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS     = 815,
1563         _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS      = 816
1564     }
1565 
1566     enum {
1567         _SC_ARG_MAX                     = 1,
1568         _SC_CHILD_MAX                   = 2,
1569         _SC_CLK_TCK                     = 3,
1570         _SC_NGROUPS_MAX                 = 4,
1571         _SC_OPEN_MAX                    = 5,
1572         _SC_JOB_CONTROL                 = 6,
1573         _SC_SAVED_IDS                   = 7,
1574         _SC_VERSION                     = 8,
1575 
1576         _SC_PASS_MAX                    = 9,
1577         _SC_LOGNAME_MAX                 = 10,
1578         _SC_PAGESIZE                    = 11,
1579         _SC_XOPEN_VERSION               = 12,
1580         // 13 reserved for SVr4-ES/MP _SC_NACLS_MAX
1581         _SC_NPROCESSORS_CONF            = 14,
1582         _SC_NPROCESSORS_ONLN            = 15,
1583         _SC_STREAM_MAX                  = 16,
1584         _SC_TZNAME_MAX                  = 17,
1585 
1586         _SC_AIO_LISTIO_MAX              = 18,
1587         _SC_AIO_MAX                     = 19,
1588         _SC_AIO_PRIO_DELTA_MAX          = 20,
1589         _SC_ASYNCHRONOUS_IO             = 21,
1590         _SC_DELAYTIMER_MAX              = 22,
1591         _SC_FSYNC                       = 23,
1592         _SC_MAPPED_FILES                = 24,
1593         _SC_MEMLOCK                     = 25,
1594         _SC_MEMLOCK_RANGE               = 26,
1595         _SC_MEMORY_PROTECTION           = 27,
1596         _SC_MESSAGE_PASSING             = 28,
1597         _SC_MQ_OPEN_MAX                 = 29,
1598         _SC_MQ_PRIO_MAX                 = 30,
1599         _SC_PRIORITIZED_IO              = 31,
1600         _SC_PRIORITY_SCHEDULING         = 32,
1601         _SC_REALTIME_SIGNALS            = 33,
1602         _SC_RTSIG_MAX                   = 34,
1603         _SC_SEMAPHORES                  = 35,
1604         _SC_SEM_NSEMS_MAX               = 36,
1605         _SC_SEM_VALUE_MAX               = 37,
1606         _SC_SHARED_MEMORY_OBJECTS       = 38,
1607         _SC_SIGQUEUE_MAX                = 39,
1608         _SC_SIGRT_MIN                   = 40,
1609         _SC_SIGRT_MAX                   = 41,
1610         _SC_SYNCHRONIZED_IO             = 42,
1611         _SC_TIMERS                      = 43,
1612         _SC_TIMER_MAX                   = 44,
1613 
1614         _SC_2_C_BIND                    = 45,
1615         _SC_2_C_DEV                     = 46,
1616         _SC_2_C_VERSION                 = 47,
1617         _SC_2_FORT_DEV                  = 48,
1618         _SC_2_FORT_RUN                  = 49,
1619         _SC_2_LOCALEDEF                 = 50,
1620         _SC_2_SW_DEV                    = 51,
1621         _SC_2_UPE                       = 52,
1622         _SC_2_VERSION                   = 53,
1623         _SC_BC_BASE_MAX                 = 54,
1624         _SC_BC_DIM_MAX                  = 55,
1625         _SC_BC_SCALE_MAX                = 56,
1626         _SC_BC_STRING_MAX               = 57,
1627         _SC_COLL_WEIGHTS_MAX            = 58,
1628         _SC_EXPR_NEST_MAX               = 59,
1629         _SC_LINE_MAX                    = 60,
1630         _SC_RE_DUP_MAX                  = 61,
1631         _SC_XOPEN_CRYPT                 = 62,
1632         _SC_XOPEN_ENH_I18N              = 63,
1633         _SC_XOPEN_SHM                   = 64,
1634         _SC_2_CHAR_TERM                 = 66,
1635         _SC_XOPEN_XCU_VERSION           = 67,
1636 
1637         _SC_ATEXIT_MAX                  = 76,
1638         _SC_IOV_MAX                     = 77,
1639         _SC_XOPEN_UNIX                  = 78,
1640 
1641         _SC_T_IOV_MAX                   = 79,
1642 
1643         _SC_PHYS_PAGES                  = 500,
1644         _SC_AVPHYS_PAGES                = 501,
1645 
1646         _SC_COHER_BLKSZ         = 503,
1647         _SC_SPLIT_CACHE         = 504,
1648         _SC_ICACHE_SZ           = 505,
1649         _SC_DCACHE_SZ           = 506,
1650         _SC_ICACHE_LINESZ       = 507,
1651         _SC_DCACHE_LINESZ       = 508,
1652         _SC_ICACHE_BLKSZ        = 509,
1653         _SC_DCACHE_BLKSZ        = 510,
1654         _SC_DCACHE_TBLKSZ       = 511,
1655         _SC_ICACHE_ASSOC        = 512,
1656         _SC_DCACHE_ASSOC        = 513,
1657 
1658         _SC_MAXPID              = 514,
1659         _SC_STACK_PROT          = 515,
1660         _SC_NPROCESSORS_MAX     = 516,
1661         _SC_CPUID_MAX           = 517,
1662         _SC_EPHID_MAX           = 518,
1663 
1664         _SC_THREAD_DESTRUCTOR_ITERATIONS = 568,
1665         _SC_GETGR_R_SIZE_MAX            = 569,
1666         _SC_GETPW_R_SIZE_MAX            = 570,
1667         _SC_LOGIN_NAME_MAX              = 571,
1668         _SC_THREAD_KEYS_MAX             = 572,
1669         _SC_THREAD_STACK_MIN            = 573,
1670         _SC_THREAD_THREADS_MAX          = 574,
1671         _SC_TTY_NAME_MAX                = 575,
1672         _SC_THREADS                     = 576,
1673         _SC_THREAD_ATTR_STACKADDR       = 577,
1674         _SC_THREAD_ATTR_STACKSIZE       = 578,
1675         _SC_THREAD_PRIORITY_SCHEDULING  = 579,
1676         _SC_THREAD_PRIO_INHERIT         = 580,
1677         _SC_THREAD_PRIO_PROTECT         = 581,
1678         _SC_THREAD_PROCESS_SHARED       = 582,
1679         _SC_THREAD_SAFE_FUNCTIONS       = 583,
1680 
1681         _SC_XOPEN_LEGACY                = 717,
1682         _SC_XOPEN_REALTIME              = 718,
1683         _SC_XOPEN_REALTIME_THREADS      = 719,
1684         _SC_XBS5_ILP32_OFF32            = 720,
1685         _SC_XBS5_ILP32_OFFBIG           = 721,
1686         _SC_XBS5_LP64_OFF64             = 722,
1687         _SC_XBS5_LPBIG_OFFBIG           = 723,
1688 
1689         _SC_2_PBS                       = 724,
1690         _SC_2_PBS_ACCOUNTING            = 725,
1691         _SC_2_PBS_CHECKPOINT            = 726,
1692         _SC_2_PBS_LOCATE                = 728,
1693         _SC_2_PBS_MESSAGE               = 729,
1694         _SC_2_PBS_TRACK                 = 730,
1695         _SC_ADVISORY_INFO               = 731,
1696         _SC_BARRIERS                    = 732,
1697         _SC_CLOCK_SELECTION             = 733,
1698         _SC_CPUTIME                     = 734,
1699         _SC_HOST_NAME_MAX               = 735,
1700         _SC_MONOTONIC_CLOCK             = 736,
1701         _SC_READER_WRITER_LOCKS         = 737,
1702         _SC_REGEXP                      = 738,
1703         _SC_SHELL                       = 739,
1704         _SC_SPAWN                       = 740,
1705         _SC_SPIN_LOCKS                  = 741,
1706         _SC_SPORADIC_SERVER             = 742,
1707         _SC_SS_REPL_MAX                 = 743,
1708         _SC_SYMLOOP_MAX                 = 744,
1709         _SC_THREAD_CPUTIME              = 745,
1710         _SC_THREAD_SPORADIC_SERVER      = 746,
1711         _SC_TIMEOUTS                    = 747,
1712         _SC_TRACE                       = 748,
1713         _SC_TRACE_EVENT_FILTER          = 749,
1714         _SC_TRACE_EVENT_NAME_MAX        = 750,
1715         _SC_TRACE_INHERIT               = 751,
1716         _SC_TRACE_LOG                   = 752,
1717         _SC_TRACE_NAME_MAX              = 753,
1718         _SC_TRACE_SYS_MAX               = 754,
1719         _SC_TRACE_USER_EVENT_MAX        = 755,
1720         _SC_TYPED_MEMORY_OBJECTS        = 756,
1721         _SC_V6_ILP32_OFF32              = 757,
1722         _SC_V6_ILP32_OFFBIG             = 758,
1723         _SC_V6_LP64_OFF64               = 759,
1724         _SC_V6_LPBIG_OFFBIG             = 760,
1725         _SC_XOPEN_STREAMS               = 761,
1726         _SC_IPV6                        = 762,
1727         _SC_RAW_SOCKETS                 = 763,
1728     }
1729     enum _SC_PAGE_SIZE = _SC_PAGESIZE;
1730 
1731     enum {
1732         _PC_LINK_MAX            = 1,
1733         _PC_MAX_CANON           = 2,
1734         _PC_MAX_INPUT           = 3,
1735         _PC_NAME_MAX            = 4,
1736         _PC_PATH_MAX            = 5,
1737         _PC_PIPE_BUF            = 6,
1738         _PC_NO_TRUNC            = 7,
1739         _PC_VDISABLE            = 8,
1740         _PC_CHOWN_RESTRICTED    = 9,
1741 
1742         _PC_ASYNC_IO            = 10,
1743         _PC_PRIO_IO             = 11,
1744         _PC_SYNC_IO             = 12,
1745 
1746         _PC_ALLOC_SIZE_MIN      = 13,
1747         _PC_REC_INCR_XFER_SIZE  = 14,
1748         _PC_REC_MAX_XFER_SIZE   = 15,
1749         _PC_REC_MIN_XFER_SIZE   = 16,
1750         _PC_REC_XFER_ALIGN      = 17,
1751         _PC_SYMLINK_MAX         = 18,
1752         _PC_2_SYMLINKS          = 19,
1753         _PC_ACL_ENABLED         = 20,
1754         _PC_MIN_HOLE_SIZE       = 21,
1755         _PC_CASE_BEHAVIOR       = 22,
1756         _PC_SATTR_ENABLED       = 23,
1757         _PC_SATTR_EXISTS        = 24,
1758         _PC_ACCESS_FILTERING    = 25,
1759 
1760         _PC_TIMESTAMP_RESOLUTION = 26,
1761 
1762         _PC_FILESIZEBITS        = 67,
1763 
1764         _PC_XATTR_ENABLED       = 100,
1765         _PC_XATTR_EXISTS        = 101
1766     }
1767 
1768     enum _PC_LAST = 101;
1769 }
1770 else version (CRuntime_Musl)
1771 {
1772     enum F_OK       = 0;
1773     enum R_OK       = 4;
1774     enum W_OK       = 2;
1775     enum X_OK       = 1;
1776 
1777     enum F_ULOCK    = 0;
1778     enum F_LOCK     = 1;
1779     enum F_TLOCK    = 2;
1780     enum F_TEST     = 3;
1781 
1782     enum
1783     {
1784         _CS_PATH,
1785         _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS,
1786         _CS_GNU_LIBC_VERSION,
1787         _CS_GNU_LIBPTHREAD_VERSION,
1788         _CS_POSIX_V5_WIDTH_RESTRICTED_ENVS,
1789         _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS,
1790 
1791         _CS_POSIX_V6_ILP32_OFF32_CFLAGS = 1116,
1792         _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
1793         _CS_POSIX_V6_ILP32_OFF32_LIBS,
1794         _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
1795         _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
1796         _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
1797         _CS_POSIX_V6_ILP32_OFFBIG_LIBS,
1798         _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
1799         _CS_POSIX_V6_LP64_OFF64_CFLAGS,
1800         _CS_POSIX_V6_LP64_OFF64_LDFLAGS,
1801         _CS_POSIX_V6_LP64_OFF64_LIBS,
1802         _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
1803         _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
1804         _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
1805         _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
1806         _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS,
1807         _CS_POSIX_V7_ILP32_OFF32_CFLAGS,
1808         _CS_POSIX_V7_ILP32_OFF32_LDFLAGS,
1809         _CS_POSIX_V7_ILP32_OFF32_LIBS,
1810         _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS,
1811         _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS,
1812         _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS,
1813         _CS_POSIX_V7_ILP32_OFFBIG_LIBS,
1814         _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS,
1815         _CS_POSIX_V7_LP64_OFF64_CFLAGS,
1816         _CS_POSIX_V7_LP64_OFF64_LDFLAGS,
1817         _CS_POSIX_V7_LP64_OFF64_LIBS,
1818         _CS_POSIX_V7_LP64_OFF64_LINTFLAGS,
1819         _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS,
1820         _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS,
1821         _CS_POSIX_V7_LPBIG_OFFBIG_LIBS,
1822         _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS,
1823         _CS_V6_ENV,
1824         _CS_V7_ENV
1825     }
1826 
1827     enum
1828     {
1829         _PC_LINK_MAX,
1830         _PC_MAX_CANON,
1831         _PC_MAX_INPUT,
1832         _PC_NAME_MAX,
1833         _PC_PATH_MAX,
1834         _PC_PIPE_BUF,
1835         _PC_CHOWN_RESTRICTED,
1836         _PC_NO_TRUNC,
1837         _PC_VDISABLE,
1838         _PC_SYNC_IO,
1839         _PC_ASYNC_IO,
1840         _PC_PRIO_IO,
1841         _PC_SOCK_MAXBUF,
1842         _PC_FILESIZEBITS,
1843         _PC_REC_INCR_XFER_SIZE,
1844         _PC_REC_MAX_XFER_SIZE,
1845         _PC_REC_MIN_XFER_SIZE,
1846         _PC_REC_XFER_ALIGN,
1847         _PC_ALLOC_SIZE_MIN,
1848         _PC_SYMLINK_MAX,
1849         _PC_2_SYMLINKS
1850     }
1851 
1852     enum
1853     {
1854         _SC_ARG_MAX,
1855         _SC_CHILD_MAX,
1856         _SC_CLK_TCK,
1857         _SC_NGROUPS_MAX,
1858         _SC_OPEN_MAX,
1859         _SC_STREAM_MAX,
1860         _SC_TZNAME_MAX,
1861         _SC_JOB_CONTROL,
1862         _SC_SAVED_IDS,
1863         _SC_REALTIME_SIGNALS,
1864         _SC_PRIORITY_SCHEDULING,
1865         _SC_TIMERS,
1866         _SC_ASYNCHRONOUS_IO,
1867         _SC_PRIORITIZED_IO,
1868         _SC_SYNCHRONIZED_IO,
1869         _SC_FSYNC,
1870         _SC_MAPPED_FILES,
1871         _SC_MEMLOCK,
1872         _SC_MEMLOCK_RANGE,
1873         _SC_MEMORY_PROTECTION,
1874         _SC_MESSAGE_PASSING,
1875         _SC_SEMAPHORES,
1876         _SC_SHARED_MEMORY_OBJECTS,
1877         _SC_AIO_LISTIO_MAX,
1878         _SC_AIO_MAX,
1879         _SC_AIO_PRIO_DELTA_MAX,
1880         _SC_DELAYTIMER_MAX,
1881         _SC_MQ_OPEN_MAX,
1882         _SC_MQ_PRIO_MAX,
1883         _SC_VERSION,
1884         _SC_PAGE_SIZE,
1885         _SC_PAGESIZE = _SC_PAGE_SIZE,
1886         _SC_RTSIG_MAX,
1887         _SC_SEM_NSEMS_MAX,
1888         _SC_SEM_VALUE_MAX,
1889         _SC_SIGQUEUE_MAX,
1890         _SC_TIMER_MAX,
1891         _SC_BC_BASE_MAX,
1892         _SC_BC_DIM_MAX,
1893         _SC_BC_SCALE_MAX,
1894         _SC_BC_STRING_MAX,
1895         _SC_COLL_WEIGHTS_MAX,
1896 
1897         _SC_EXPR_NEST_MAX = 42,
1898         _SC_LINE_MAX,
1899         _SC_RE_DUP_MAX,
1900 
1901         _SC_2_VERSION = 46,
1902         _SC_2_C_BIND,
1903         _SC_2_C_DEV,
1904         _SC_2_FORT_DEV,
1905         _SC_2_FORT_RUN,
1906         _SC_2_SW_DEV,
1907         _SC_2_LOCALEDEF,
1908 
1909         _SC_UIO_MAXIOV = 60,
1910         _SC_IOV_MAX = _SC_UIO_MAXIOV,
1911 
1912         _SC_THREADS = 67,
1913         _SC_THREAD_SAFE_FUNCTIONS,
1914         _SC_GETGR_R_SIZE_MAX,
1915         _SC_GETPW_R_SIZE_MAX,
1916         _SC_LOGIN_NAME_MAX,
1917         _SC_TTY_NAME_MAX,
1918         _SC_THREAD_DESTRUCTOR_ITERATIONS,
1919         _SC_THREAD_KEYS_MAX,
1920         _SC_THREAD_STACK_MIN,
1921         _SC_THREAD_THREADS_MAX,
1922         _SC_THREAD_ATTR_STACKADDR,
1923         _SC_THREAD_ATTR_STACKSIZE,
1924         _SC_THREAD_PRIORITY_SCHEDULING,
1925         _SC_THREAD_PRIO_INHERIT,
1926         _SC_THREAD_PRIO_PROTECT,
1927         _SC_THREAD_PROCESS_SHARED,
1928 
1929         _SC_NPROCESSORS_CONF,
1930         _SC_NPROCESSORS_ONLN,
1931         _SC_PHYS_PAGES,
1932         _SC_AVPHYS_PAGES,
1933         _SC_ATEXIT_MAX,
1934         _SC_PASS_MAX,
1935 
1936         _SC_XOPEN_VERSION,
1937         _SC_XOPEN_XCU_VERSION,
1938         _SC_XOPEN_UNIX,
1939         _SC_XOPEN_CRYPT,
1940         _SC_XOPEN_ENH_I18N,
1941         _SC_XOPEN_SHM,
1942 
1943         _SC_2_CHAR_TERM,
1944         _SC_2_UPE = 97,
1945 
1946         _SC_XOPEN_XPG2,
1947         _SC_XOPEN_XPG3,
1948         _SC_XOPEN_XPG4,
1949 
1950         _SC_NZERO = 109,
1951 
1952         _SC_XBS5_ILP32_OFF32 = 125,
1953         _SC_XBS5_ILP32_OFFBIG,
1954         _SC_XBS5_LP64_OFF64,
1955         _SC_XBS5_LPBIG_OFFBIG,
1956 
1957         _SC_XOPEN_LEGACY,
1958         _SC_XOPEN_REALTIME,
1959         _SC_XOPEN_REALTIME_THREADS,
1960 
1961         _SC_ADVISORY_INFO,
1962         _SC_BARRIERS,
1963         _SC_CLOCK_SELECTION = 137,
1964         _SC_CPUTIME,
1965         _SC_THREAD_CPUTIME,
1966         _SC_MONOTONIC_CLOCK = 149,
1967         _SC_READER_WRITER_LOCKS = 153,
1968         _SC_SPIN_LOCKS,
1969         _SC_REGEXP,
1970         _SC_SHELL = 157,
1971         _SC_SPAWN = 159,
1972         _SC_SPORADIC_SERVER,
1973         _SC_THREAD_SPORADIC_SERVER,
1974         _SC_TIMEOUTS = 164,
1975         _SC_TYPED_MEMORY_OBJECTS,
1976         _SC_2_PBS = 168,
1977         _SC_2_PBS_ACCOUNTING,
1978         _SC_2_PBS_LOCATE,
1979         _SC_2_PBS_MESSAGE,
1980         _SC_2_PBS_TRACK,
1981         _SC_SYMLOOP_MAX,
1982         _SC_STREAMS,
1983         _SC_2_PBS_CHECKPOINT,
1984 
1985         _SC_V6_ILP32_OFF32,
1986         _SC_V6_ILP32_OFFBIG,
1987         _SC_V6_LP64_OFF64,
1988         _SC_V6_LPBIG_OFFBIG,
1989 
1990         _SC_HOST_NAME_MAX,
1991         _SC_TRACE,
1992         _SC_TRACE_EVENT_FILTER,
1993         _SC_TRACE_INHERIT,
1994         _SC_TRACE_LOG,
1995 
1996         _SC_IPV6 = 235,
1997         _SC_RAW_SOCKETS,
1998         _SC_V7_ILP32_OFF32,
1999         _SC_V7_ILP32_OFFBIG,
2000         _SC_V7_LP64_OFF64,
2001         _SC_V7_LPBIG_OFFBIG,
2002         _SC_SS_REPL_MAX,
2003         _SC_TRACE_EVENT_NAME_MAX,
2004         _SC_TRACE_NAME_MAX,
2005         _SC_TRACE_SYS_MAX,
2006         _SC_TRACE_USER_EVENT_MAX,
2007         _SC_XOPEN_STREAMS,
2008         _SC_THREAD_ROBUST_PRIO_INHERIT,
2009         _SC_THREAD_ROBUST_PRIO_PROTECT
2010     }
2011 }
2012 else version (CRuntime_UClibc)
2013 {
2014     enum F_OK       = 0;
2015     enum R_OK       = 4;
2016     enum W_OK       = 2;
2017     enum X_OK       = 1;
2018 
2019     enum F_ULOCK    = 0;
2020     enum F_LOCK     = 1;
2021     enum F_TLOCK    = 2;
2022     enum F_TEST     = 3;
2023 
2024     enum
2025     {
2026         _CS_PATH,
2027 
2028         _CS_V6_WIDTH_RESTRICTED_ENVS,
2029 
2030         _CS_GNU_LIBC_VERSION,
2031         _CS_GNU_LIBPTHREAD_VERSION,
2032 
2033         _CS_LFS_CFLAGS = 1000,
2034         _CS_LFS_LDFLAGS,
2035         _CS_LFS_LIBS,
2036         _CS_LFS_LINTFLAGS,
2037         _CS_LFS64_CFLAGS,
2038         _CS_LFS64_LDFLAGS,
2039         _CS_LFS64_LIBS,
2040         _CS_LFS64_LINTFLAGS,
2041 
2042         _CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
2043         _CS_XBS5_ILP32_OFF32_LDFLAGS,
2044         _CS_XBS5_ILP32_OFF32_LIBS,
2045         _CS_XBS5_ILP32_OFF32_LINTFLAGS,
2046         _CS_XBS5_ILP32_OFFBIG_CFLAGS,
2047         _CS_XBS5_ILP32_OFFBIG_LDFLAGS,
2048         _CS_XBS5_ILP32_OFFBIG_LIBS,
2049         _CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
2050         _CS_XBS5_LP64_OFF64_CFLAGS,
2051         _CS_XBS5_LP64_OFF64_LDFLAGS,
2052         _CS_XBS5_LP64_OFF64_LIBS,
2053         _CS_XBS5_LP64_OFF64_LINTFLAGS,
2054         _CS_XBS5_LPBIG_OFFBIG_CFLAGS,
2055         _CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
2056         _CS_XBS5_LPBIG_OFFBIG_LIBS,
2057         _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
2058 
2059         _CS_POSIX_V6_ILP32_OFF32_CFLAGS,
2060         _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
2061         _CS_POSIX_V6_ILP32_OFF32_LIBS,
2062         _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
2063         _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
2064         _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
2065         _CS_POSIX_V6_ILP32_OFFBIG_LIBS,
2066         _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
2067         _CS_POSIX_V6_LP64_OFF64_CFLAGS,
2068         _CS_POSIX_V6_LP64_OFF64_LDFLAGS,
2069         _CS_POSIX_V6_LP64_OFF64_LIBS,
2070         _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
2071         _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
2072         _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
2073         _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
2074         _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
2075     }
2076 
2077     enum
2078     {
2079         _PC_LINK_MAX,
2080         _PC_MAX_CANON,
2081         _PC_MAX_INPUT,
2082         _PC_NAME_MAX,
2083         _PC_PATH_MAX,
2084         _PC_PIPE_BUF,
2085         _PC_CHOWN_RESTRICTED,
2086         _PC_NO_TRUNC,
2087         _PC_VDISABLE,
2088         _PC_SYNC_IO,
2089         _PC_ASYNC_IO,
2090         _PC_PRIO_IO,
2091         _PC_SOCK_MAXBUF,
2092         _PC_FILESIZEBITS,
2093         _PC_REC_INCR_XFER_SIZE,
2094         _PC_REC_MAX_XFER_SIZE,
2095         _PC_REC_MIN_XFER_SIZE,
2096         _PC_REC_XFER_ALIGN,
2097         _PC_ALLOC_SIZE_MIN,
2098         _PC_SYMLINK_MAX,
2099         _PC_2_SYMLINKS
2100     }
2101 
2102     enum
2103     {
2104         _SC_ARG_MAX,
2105         _SC_CHILD_MAX,
2106         _SC_CLK_TCK,
2107         _SC_NGROUPS_MAX,
2108         _SC_OPEN_MAX,
2109         _SC_STREAM_MAX,
2110         _SC_TZNAME_MAX,
2111         _SC_JOB_CONTROL,
2112         _SC_SAVED_IDS,
2113         _SC_REALTIME_SIGNALS,
2114         _SC_PRIORITY_SCHEDULING,
2115         _SC_TIMERS,
2116         _SC_ASYNCHRONOUS_IO,
2117         _SC_PRIORITIZED_IO,
2118         _SC_SYNCHRONIZED_IO,
2119         _SC_FSYNC,
2120         _SC_MAPPED_FILES,
2121         _SC_MEMLOCK,
2122         _SC_MEMLOCK_RANGE,
2123         _SC_MEMORY_PROTECTION,
2124         _SC_MESSAGE_PASSING,
2125         _SC_SEMAPHORES,
2126         _SC_SHARED_MEMORY_OBJECTS,
2127         _SC_AIO_LISTIO_MAX,
2128         _SC_AIO_MAX,
2129         _SC_AIO_PRIO_DELTA_MAX,
2130         _SC_DELAYTIMER_MAX,
2131         _SC_MQ_OPEN_MAX,
2132         _SC_MQ_PRIO_MAX,
2133         _SC_VERSION,
2134         _SC_PAGESIZE,
2135         _SC_PAGE_SIZE = _SC_PAGESIZE,
2136         _SC_RTSIG_MAX,
2137         _SC_SEM_NSEMS_MAX,
2138         _SC_SEM_VALUE_MAX,
2139         _SC_SIGQUEUE_MAX,
2140         _SC_TIMER_MAX,
2141 
2142         _SC_BC_BASE_MAX,
2143         _SC_BC_DIM_MAX,
2144         _SC_BC_SCALE_MAX,
2145         _SC_BC_STRING_MAX,
2146         _SC_COLL_WEIGHTS_MAX,
2147         _SC_EQUIV_CLASS_MAX,
2148         _SC_EXPR_NEST_MAX,
2149         _SC_LINE_MAX,
2150         _SC_RE_DUP_MAX,
2151         _SC_CHARCLASS_NAME_MAX,
2152 
2153         _SC_2_VERSION,
2154         _SC_2_C_BIND,
2155         _SC_2_C_DEV,
2156         _SC_2_FORT_DEV,
2157         _SC_2_FORT_RUN,
2158         _SC_2_SW_DEV,
2159         _SC_2_LOCALEDEF,
2160 
2161         _SC_PII,
2162         _SC_PII_XTI,
2163         _SC_PII_SOCKET,
2164         _SC_PII_INTERNET,
2165         _SC_PII_OSI,
2166         _SC_POLL,
2167         _SC_SELECT,
2168         _SC_UIO_MAXIOV,
2169         _SC_IOV_MAX = _SC_UIO_MAXIOV,
2170         _SC_PII_INTERNET_STREAM,
2171         _SC_PII_INTERNET_DGRAM,
2172         _SC_PII_OSI_COTS,
2173         _SC_PII_OSI_CLTS,
2174         _SC_PII_OSI_M,
2175         _SC_T_IOV_MAX,
2176 
2177         _SC_THREADS,
2178         _SC_THREAD_SAFE_FUNCTIONS,
2179         _SC_GETGR_R_SIZE_MAX,
2180         _SC_GETPW_R_SIZE_MAX,
2181         _SC_LOGIN_NAME_MAX,
2182         _SC_TTY_NAME_MAX,
2183         _SC_THREAD_DESTRUCTOR_ITERATIONS,
2184         _SC_THREAD_KEYS_MAX,
2185         _SC_THREAD_STACK_MIN,
2186         _SC_THREAD_THREADS_MAX,
2187         _SC_THREAD_ATTR_STACKADDR,
2188         _SC_THREAD_ATTR_STACKSIZE,
2189         _SC_THREAD_PRIORITY_SCHEDULING,
2190         _SC_THREAD_PRIO_INHERIT,
2191         _SC_THREAD_PRIO_PROTECT,
2192         _SC_THREAD_PROCESS_SHARED,
2193 
2194         _SC_NPROCESSORS_CONF,
2195         _SC_NPROCESSORS_ONLN,
2196         _SC_PHYS_PAGES,
2197         _SC_AVPHYS_PAGES,
2198         _SC_ATEXIT_MAX,
2199         _SC_PASS_MAX,
2200 
2201         _SC_XOPEN_VERSION,
2202         _SC_XOPEN_XCU_VERSION,
2203         _SC_XOPEN_UNIX,
2204         _SC_XOPEN_CRYPT,
2205         _SC_XOPEN_ENH_I18N,
2206         _SC_XOPEN_SHM,
2207 
2208         _SC_2_CHAR_TERM,
2209         _SC_2_C_VERSION,
2210         _SC_2_UPE,
2211 
2212         _SC_XOPEN_XPG2,
2213         _SC_XOPEN_XPG3,
2214         _SC_XOPEN_XPG4,
2215 
2216         _SC_CHAR_BIT,
2217         _SC_CHAR_MAX,
2218         _SC_CHAR_MIN,
2219         _SC_INT_MAX,
2220         _SC_INT_MIN,
2221         _SC_LONG_BIT,
2222         _SC_WORD_BIT,
2223         _SC_MB_LEN_MAX,
2224         _SC_NZERO,
2225         _SC_SSIZE_MAX,
2226         _SC_SCHAR_MAX,
2227         _SC_SCHAR_MIN,
2228         _SC_SHRT_MAX,
2229         _SC_SHRT_MIN,
2230         _SC_UCHAR_MAX,
2231         _SC_UINT_MAX,
2232         _SC_ULONG_MAX,
2233         _SC_USHRT_MAX,
2234 
2235         _SC_NL_ARGMAX,
2236         _SC_NL_LANGMAX,
2237         _SC_NL_MSGMAX,
2238         _SC_NL_NMAX,
2239         _SC_NL_SETMAX,
2240         _SC_NL_TEXTMAX,
2241 
2242         _SC_XBS5_ILP32_OFF32,
2243         _SC_XBS5_ILP32_OFFBIG,
2244         _SC_XBS5_LP64_OFF64,
2245         _SC_XBS5_LPBIG_OFFBIG,
2246 
2247         _SC_XOPEN_LEGACY,
2248         _SC_XOPEN_REALTIME,
2249         _SC_XOPEN_REALTIME_THREADS,
2250 
2251         _SC_ADVISORY_INFO,
2252         _SC_BARRIERS,
2253         _SC_BASE,
2254         _SC_C_LANG_SUPPORT,
2255         _SC_C_LANG_SUPPORT_R,
2256         _SC_CLOCK_SELECTION,
2257         _SC_CPUTIME,
2258         _SC_THREAD_CPUTIME,
2259         _SC_DEVICE_IO,
2260         _SC_DEVICE_SPECIFIC,
2261         _SC_DEVICE_SPECIFIC_R,
2262         _SC_FD_MGMT,
2263         _SC_FIFO,
2264         _SC_PIPE,
2265         _SC_FILE_ATTRIBUTES,
2266         _SC_FILE_LOCKING,
2267         _SC_FILE_SYSTEM,
2268         _SC_MONOTONIC_CLOCK,
2269         _SC_MULTI_PROCESS,
2270         _SC_SINGLE_PROCESS,
2271         _SC_NETWORKING,
2272         _SC_READER_WRITER_LOCKS,
2273         _SC_SPIN_LOCKS,
2274         _SC_REGEXP,
2275         _SC_REGEX_VERSION,
2276         _SC_SHELL,
2277         _SC_SIGNALS,
2278         _SC_SPAWN,
2279         _SC_SPORADIC_SERVER,
2280         _SC_THREAD_SPORADIC_SERVER,
2281         _SC_SYSTEM_DATABASE,
2282         _SC_SYSTEM_DATABASE_R,
2283         _SC_TIMEOUTS,
2284         _SC_TYPED_MEMORY_OBJECTS,
2285         _SC_USER_GROUPS,
2286         _SC_USER_GROUPS_R,
2287         _SC_2_PBS,
2288         _SC_2_PBS_ACCOUNTING,
2289         _SC_2_PBS_LOCATE,
2290         _SC_2_PBS_MESSAGE,
2291         _SC_2_PBS_TRACK,
2292         _SC_SYMLOOP_MAX,
2293         _SC_STREAMS,
2294         _SC_2_PBS_CHECKPOINT,
2295 
2296         _SC_V6_ILP32_OFF32,
2297         _SC_V6_ILP32_OFFBIG,
2298         _SC_V6_LP64_OFF64,
2299         _SC_V6_LPBIG_OFFBIG,
2300 
2301         _SC_HOST_NAME_MAX,
2302         _SC_TRACE,
2303         _SC_TRACE_EVENT_FILTER,
2304         _SC_TRACE_INHERIT,
2305         _SC_TRACE_LOG,
2306 
2307         _SC_LEVEL1_ICACHE_SIZE,
2308         _SC_LEVEL1_ICACHE_ASSOC,
2309         _SC_LEVEL1_ICACHE_LINESIZE,
2310         _SC_LEVEL1_DCACHE_SIZE,
2311         _SC_LEVEL1_DCACHE_ASSOC,
2312         _SC_LEVEL1_DCACHE_LINESIZE,
2313         _SC_LEVEL2_CACHE_SIZE,
2314         _SC_LEVEL2_CACHE_ASSOC,
2315         _SC_LEVEL2_CACHE_LINESIZE,
2316         _SC_LEVEL3_CACHE_SIZE,
2317         _SC_LEVEL3_CACHE_ASSOC,
2318         _SC_LEVEL3_CACHE_LINESIZE,
2319         _SC_LEVEL4_CACHE_SIZE,
2320         _SC_LEVEL4_CACHE_ASSOC,
2321         _SC_LEVEL4_CACHE_LINESIZE,
2322 
2323         _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
2324         _SC_RAW_SOCKETS
2325     }
2326 }
2327 
2328 //
2329 // File Synchronization (FSC)
2330 //
2331 /*
2332 int fsync(int);
2333 */
2334 
2335 version (CRuntime_Glibc)
2336 {
2337     int fsync(int) @trusted;
2338 }
2339 else version (Darwin)
2340 {
2341     int fsync(int) @trusted;
2342 }
2343 else version (FreeBSD)
2344 {
2345     int fsync(int) @trusted;
2346 }
2347 else version (NetBSD)
2348 {
2349     int fsync(int) @trusted;
2350 }
2351 else version (OpenBSD)
2352 {
2353     int fsync(int) @trusted;
2354 }
2355 else version (DragonFlyBSD)
2356 {
2357     int fsync(int) @trusted;
2358 }
2359 else version (CRuntime_Bionic)
2360 {
2361     int fsync(int) @trusted;
2362 }
2363 else version (CRuntime_Musl)
2364 {
2365     int fsync(int) @trusted;
2366 }
2367 else version (Solaris)
2368 {
2369     int fsync(int) @trusted;
2370 }
2371 else version (CRuntime_UClibc)
2372 {
2373     int fsync(int) @trusted;
2374 }
2375 
2376 //
2377 // Synchronized I/O (SIO)
2378 //
2379 /*
2380 int fdatasync(int);
2381 */
2382 
2383 version (CRuntime_Glibc)
2384 {
2385     int fdatasync(int) @trusted;
2386 }
2387 else version (Solaris)
2388 {
2389     int fdatasync(int) @trusted;
2390 }
2391 else version (CRuntime_Bionic)
2392 {
2393     int fdatasync(int) @trusted;
2394 }
2395 else version (CRuntime_UClibc)
2396 {
2397     int fdatasync(int) @trusted;
2398 }
2399 
2400 //
2401 // XOpen (XSI)
2402 //
2403 /*
2404 char*      crypt(const scope char*, const scope char*);
2405 char*      ctermid(char*);
2406 void       encrypt(ref char[64], int);
2407 int        fchdir(int);
2408 c_long     gethostid();
2409 pid_t      getpgid(pid_t);
2410 pid_t      getsid(pid_t);
2411 char*      getwd(char*); // LEGACY
2412 int        lchown(const scope char*, uid_t, gid_t);
2413 int        lockf(int, int, off_t);
2414 int        nice(int);
2415 ssize_t    pread(int, void*, size_t, off_t);
2416 ssize_t    pwrite(int, const scope void*, size_t, off_t);
2417 pid_t      setpgrp();
2418 int        setregid(gid_t, gid_t);
2419 int        setreuid(uid_t, uid_t);
2420 void       swab(const scope void*, void*, ssize_t);
2421 void       sync();
2422 int        truncate(const scope char*, off_t);
2423 useconds_t ualarm(useconds_t, useconds_t);
2424 int        usleep(useconds_t);
2425 pid_t      vfork();
2426 */
2427 
2428 version (CRuntime_Glibc)
2429 {
2430     char*      crypt(const scope char*, const scope char*);
2431     char*      ctermid(char*);
2432     void       encrypt(ref char[64], int) @trusted;
2433     int        fchdir(int) @trusted;
2434     c_long     gethostid() @trusted;
2435     pid_t      getpgid(pid_t) @trusted;
2436     pid_t      getsid(pid_t) @trusted;
2437     char*      getwd(char*); // LEGACY
2438     int        lchown(const scope char*, uid_t, gid_t);
2439     //int        lockf(int, int, off_t);
2440     int        nice(int) @trusted;
2441     //ssize_t    pread(int, void*, size_t, off_t);
2442     //ssize_t    pwrite(int, const scope void*, size_t, off_t);
2443     pid_t      setpgrp() @trusted;
2444     int        setregid(gid_t, gid_t) @trusted;
2445     int        setreuid(uid_t, uid_t) @trusted;
2446     void       swab(const scope void*, void*, ssize_t);
2447     void       sync() @trusted;
2448     //int        truncate(const scope char*, off_t);
2449     useconds_t ualarm(useconds_t, useconds_t) @trusted;
2450     int        usleep(useconds_t) @trusted;
2451     pid_t      vfork();
2452 
2453   static if ( __USE_FILE_OFFSET64 )
2454   {
2455     int        lockf64(int, int, off_t) @trusted;
2456     alias      lockf64 lockf;
2457 
2458     ssize_t    pread64(int, void*, size_t, off_t);
2459     alias      pread64 pread;
2460 
2461     ssize_t    pwrite64(int, const scope void*, size_t, off_t);
2462     alias      pwrite64 pwrite;
2463 
2464     int        truncate64(const scope char*, off_t);
2465     alias      truncate64 truncate;
2466   }
2467   else
2468   {
2469     int        lockf(int, int, off_t) @trusted;
2470     ssize_t    pread(int, void*, size_t, off_t);
2471     ssize_t    pwrite(int, const scope void*, size_t, off_t);
2472     int        truncate(const scope char*, off_t);
2473   }
2474 }
2475 else version (CRuntime_Musl)
2476 {
2477     int fchdir(int) @trusted;
2478     int lockf(int, int, off_t);
2479     alias lockf lockf64;
2480 }
2481 else version (Darwin)
2482 {
2483     char*      crypt(const scope char*, const scope char*);
2484     char*      ctermid(char*);
2485     void       encrypt(ref char[64], int) @trusted;
2486     int        fchdir(int) @trusted;
2487     c_long     gethostid() @trusted;
2488     pid_t      getpgid(pid_t) @trusted;
2489     pid_t      getsid(pid_t) @trusted;
2490     char*      getwd(char*); // LEGACY
2491     int        lchown(const scope char*, uid_t, gid_t);
2492     int        lockf(int, int, off_t) @trusted;
2493     int        nice(int) @trusted;
2494     ssize_t    pread(int, void*, size_t, off_t);
2495     ssize_t    pwrite(int, const scope void*, size_t, off_t);
2496     pid_t      setpgrp() @trusted;
2497     int        setregid(gid_t, gid_t) @trusted;
2498     int        setreuid(uid_t, uid_t) @trusted;
2499     void       swab(const scope void*, void*, ssize_t);
2500     void       sync() @trusted;
2501     int        truncate(const scope char*, off_t);
2502     useconds_t ualarm(useconds_t, useconds_t) @trusted;
2503     int        usleep(useconds_t) @trusted;
2504     pid_t      vfork();
2505 }
2506 else version (FreeBSD)
2507 {
2508     char*      crypt(const scope char*, const scope char*);
2509     //char*      ctermid(char*);
2510     void       encrypt(ref char[64], int) @trusted;
2511     int        fchdir(int) @trusted;
2512     c_long     gethostid() @trusted;
2513     int        getpgid(pid_t) @trusted;
2514     int        getsid(pid_t) @trusted;
2515     char*      getwd(char*); // LEGACY
2516     int        lchown(const scope char*, uid_t, gid_t);
2517     int        lockf(int, int, off_t) @trusted;
2518     int        nice(int) @trusted;
2519     ssize_t    pread(int, void*, size_t, off_t);
2520     ssize_t    pwrite(int, const scope void*, size_t, off_t);
2521     int        setpgrp(pid_t, pid_t) @trusted;
2522     int        setregid(gid_t, gid_t) @trusted;
2523     int        setreuid(uid_t, uid_t) @trusted;
2524     void       swab(const scope void*, void*, ssize_t);
2525     void       sync() @trusted;
2526     int        truncate(const scope char*, off_t);
2527     useconds_t ualarm(useconds_t, useconds_t) @trusted;
2528     int        usleep(useconds_t) @trusted;
2529     pid_t      vfork();
2530 }
2531 else version (NetBSD)
2532 {
2533     char*      crypt(const scope char*, const scope char*);
2534     //char*      ctermid(char*);
2535     void       encrypt(ref char[64], int) @trusted;
2536     int        fchdir(int) @trusted;
2537     c_long     gethostid() @trusted;
2538     int        getpgid(pid_t) @trusted;
2539     int        getsid(pid_t) @trusted;
2540     char*      getwd(char*); // LEGACY
2541     int        lchown(const scope char*, uid_t, gid_t);
2542     int        lockf(int, int, off_t) @trusted;
2543     int        nice(int) @trusted;
2544     ssize_t    pread(int, void*, size_t, off_t);
2545     ssize_t    pwrite(int, const scope void*, size_t, off_t);
2546     int        setpgrp(pid_t, pid_t) @trusted;
2547     int        setregid(gid_t, gid_t) @trusted;
2548     int        setreuid(uid_t, uid_t) @trusted;
2549     void       swab(const scope void*, void*, ssize_t);
2550     void       sync() @trusted;
2551     int        truncate(const scope char*, off_t);
2552     useconds_t ualarm(useconds_t, useconds_t) @trusted;
2553     int        usleep(useconds_t) @trusted;
2554     pid_t      vfork();
2555 }
2556 else version (OpenBSD)
2557 {
2558     char*      crypt(const scope char*, const scope char*);
2559     //char*      ctermid(char*);
2560     //void       encrypt(ref char[64], int) @trusted;
2561     int        fchdir(int) @trusted;
2562     c_long     gethostid() @trusted;
2563     pid_t      getpgid(pid_t) @trusted;
2564     pid_t      getsid(pid_t) @trusted;
2565     char*      getwd(char*);
2566     int        lchown(const scope char*, uid_t, gid_t);
2567     int        lockf(int, int, off_t) @trusted;
2568     int        nice(int) @trusted;
2569     ssize_t    pread(int, void*, size_t, off_t);
2570     ssize_t    pwrite(int, const scope void*, size_t, off_t);
2571     int        setpgrp(pid_t, pid_t) @trusted;
2572     int        setregid(gid_t, gid_t) @trusted;
2573     int        setreuid(uid_t, uid_t) @trusted;
2574     void       swab(const scope void*, void*, ssize_t);
2575     void       sync() @trusted;
2576     int        truncate(const scope char*, off_t);
2577     useconds_t ualarm(useconds_t, useconds_t) @trusted;
2578     int        usleep(useconds_t) @trusted;
2579     pid_t      vfork();
2580 }
2581 else version (DragonFlyBSD)
2582 {
2583     char*      crypt(const scope char*, const scope char*);
2584     //char*      ctermid(char*);
2585     void       encrypt(ref char[64], int) @trusted;
2586     int        fchdir(int) @trusted;
2587     c_long     gethostid() @trusted;
2588     int        getpgid(pid_t) @trusted;
2589     int        getsid(pid_t) @trusted;
2590     char*      getwd(char*); // LEGACY
2591     int        lchown(const scope char*, uid_t, gid_t);
2592     int        lockf(int, int, off_t) @trusted;
2593     int        nice(int) @trusted;
2594     ssize_t    pread(int, void*, size_t, off_t);
2595     ssize_t    pwrite(int, const scope void*, size_t, off_t);
2596     int        setpgrp(pid_t, pid_t) @trusted;
2597     int        setregid(gid_t, gid_t) @trusted;
2598     int        setreuid(uid_t, uid_t) @trusted;
2599     void       swab(const scope void*, void*, ssize_t);
2600     void       sync() @trusted;
2601     int        truncate(const scope char*, off_t);
2602     useconds_t ualarm(useconds_t, useconds_t) @trusted;
2603     int        usleep(useconds_t) @trusted;
2604     pid_t      vfork();
2605 }
2606 else version (CRuntime_Bionic)
2607 {
2608     int        fchdir(int) @trusted;
2609     pid_t      getpgid(pid_t) @trusted;
2610     int        lchown(const scope char*, uid_t, gid_t);
2611     int        nice(int) @trusted;
2612     ssize_t    pread(int, void*, size_t, off_t);
2613     ssize_t    pwrite(int, const scope void*, size_t, off_t);
2614     int        setpgrp() @trusted;
2615     int        setregid(gid_t, gid_t) @trusted;
2616     int        setreuid(uid_t, uid_t) @trusted;
2617     int        sync() @trusted;
2618     int        truncate(const scope char*, off_t);
2619     int        usleep(c_ulong) @trusted;
2620     pid_t      vfork();
2621 }
2622 else version (Solaris)
2623 {
2624     char*      crypt(const scope char*, const scope char*);
2625     char*      ctermid(char*);
2626     void       encrypt(ref char[64], int);
2627     int        fchdir(int);
2628     c_long     gethostid();
2629     pid_t      getpgid(pid_t);
2630     pid_t      getsid(pid_t);
2631     char*      getwd(char*); // LEGACY
2632     int        lchown(const scope char*, uid_t, gid_t);
2633     int        nice(int);
2634     pid_t      setpgrp();
2635     int        setregid(gid_t, gid_t);
2636     int        setreuid(uid_t, uid_t);
2637     void       swab(const scope void*, void*, ssize_t);
2638     void       sync();
2639     useconds_t ualarm(useconds_t, useconds_t);
2640     int        usleep(useconds_t);
2641     pid_t      vfork();
2642 
2643     version (D_LP64)
2644     {
2645         int         lockf(int, int, off_t);
2646         alias       lockf lockf64;
2647 
2648         ssize_t     pread(int, void*, size_t, off_t);
2649         alias       pread pread64;
2650 
2651         ssize_t     pwrite(int, const scope void*, size_t, off_t);
2652         alias       pwrite pwrite64;
2653 
2654         int         truncate(const scope char*, off_t);
2655         alias       truncate truncate64;
2656     }
2657     else
2658     {
2659         static if ( __USE_FILE_OFFSET64 )
2660         {
2661             int        lockf64(int, int, off64_t);
2662             alias      lockf64 lockf;
2663 
2664             ssize_t    pread64(int, void*, size_t, off64_t);
2665             alias      pread64 pread;
2666 
2667             ssize_t    pwrite64(int, const scope void*, size_t, off_t);
2668             alias      pwrite64 pwrite;
2669 
2670             int        truncate64(const scope char*, off_t);
2671             alias      truncate64 truncate;
2672         }
2673         else
2674         {
2675             int        lockf(int, int, off_t);
2676             ssize_t    pread(int, void*, size_t, off_t);
2677             ssize_t    pwrite(int, const scope void*, size_t, off_t);
2678             int        truncate(const scope char*, off_t);
2679         }
2680     }
2681 }
2682 else version (CRuntime_UClibc)
2683 {
2684     char*      crypt(const scope char*, const scope char*);
2685     char*      ctermid(char*);
2686     void       encrypt(ref char[64], int) @trusted;
2687     int        fchdir(int) @trusted;
2688     c_long     gethostid() @trusted;
2689     pid_t      getpgid(pid_t) @trusted;
2690     pid_t      getsid(pid_t) @trusted;
2691     char*      getwd(char*); // LEGACY
2692     int        lchown(const scope char*, uid_t, gid_t);
2693     int        nice(int) @trusted;
2694     pid_t      setpgrp() @trusted;
2695     int        setregid(gid_t, gid_t) @trusted;
2696     int        setreuid(uid_t, uid_t) @trusted;
2697     void       swab(const scope void*, void*, ssize_t);
2698     void       sync() @trusted;
2699     useconds_t ualarm(useconds_t, useconds_t) @trusted;
2700     int        usleep(useconds_t) @trusted;
2701     pid_t      vfork();
2702 
2703   static if ( __USE_FILE_OFFSET64 )
2704   {
2705     int        lockf64(int, int, off_t) @trusted;
2706     alias      lockf64 lockf;
2707 
2708     ssize_t    pread64(int, void*, size_t, off_t);
2709     alias      pread64 pread;
2710 
2711     ssize_t    pwrite64(int, const scope void*, size_t, off_t);
2712     alias      pwrite64 pwrite;
2713 
2714     int        truncate64(const scope char*, off_t);
2715     alias      truncate64 truncate;
2716   }
2717   else
2718   {
2719     int        lockf(int, int, off_t) @trusted;
2720     ssize_t    pread(int, void*, size_t, off_t);
2721     ssize_t    pwrite(int, const scope void*, size_t, off_t);
2722     int        truncate(const scope char*, off_t);
2723   }
2724 }
2725 
2726 // Non-standard definition to access user process environment
2727 version (CRuntime_Glibc)
2728 {
2729     extern __gshared const char** environ;
2730 }
2731 else version (Darwin)
2732 {
2733     extern (D) @property const(char**) environ()()
2734     {
2735         pragma (inline, true);
2736         import core.sys.darwin.crt_externs : _NSGetEnviron;
2737         return *_NSGetEnviron();
2738     }
2739 }
2740 else version (FreeBSD)
2741 {
2742     extern __gshared const char** environ;
2743 }
2744 else version (NetBSD)
2745 {
2746     extern __gshared const char** environ;
2747 }
2748 else version (OpenBSD)
2749 {
2750     extern __gshared const char** environ;
2751 }
2752 else version (DragonFlyBSD)
2753 {
2754     extern __gshared const char** environ;
2755 }
2756 else version (CRuntime_Bionic)
2757 {
2758     extern __gshared const char** environ;
2759 }
2760 else version (CRuntime_Musl)
2761 {
2762     extern __gshared const char** environ;
2763 }
2764 else version (Solaris)
2765 {
2766     extern __gshared const char** environ;
2767 }
2768 else version (CRuntime_UClibc)
2769 {
2770     extern __gshared const char** __environ;
2771     alias environ = __environ;
2772 }
2773