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