#if !defined ISO && !defined ISO99 && !defined ISO11
#ifdef POSIX
# define uid_t __uid_t
# define gid_t __gid_t
# define off_t __off_t
# define pid_t __pid_t
#endif

optional-constant _POSIX_VERSION
optional-constant _POSIX2_C_VERSION
optional-constant _XOPEN_VERSION
optional-constant _XOPEN_XCU_VERSION

optional-constant _POSIX2_C_BIND
optional-constant _POSIX2_CHAR_TERM
optional-constant _POSIX2_LOCALEDEF
optional-constant _POSIX2_UPE
optional-constant _POSIX2_VERSION

optional-constant _XOPEN_XPG2
optional-constant _XOPEN_XPG3
optional-constant _XOPEN_XPG4
optional-constant _XOPEN_UNIX

optional-constant _POSIX_ADVISORY_INFO
optional-constant _POSIX_ASYNCHRONOUS_IO
optional-constant _POSIX_BARRIERS
optional-constant _POSIX_CHOWN_RESTRICTED
optional-constant _POSIX_CLOCK_SELECTION
optional-constant _POSIX_CPUTIME
optional-constant _POSIX_NO_TRUNC
optional-constant _POSIX_VDISABLE
optional-constant _POSIX_SAVED_IDS
optional-constant _POSIX_JOB_CONTROL
optional-constant _POSIX_MONOTONIC_CLOCK
optional-constant _POSIX_READER_WRITER_LOCKS
optional-constant _POSIX_SHELL
optional-constant _POSIX_SPAWN
optional-constant _POSIX_SPIN_LOCKS
optional-constant _POSIX_SPORADIC_SERVER
optional-constant _POSIX_THREAD_CPUTIME
optional-constant _POSIX_TYPED_MEMORY_OBJECTS

optional-constant _POSIX_THREADS
optional-constant _POSIX_THREAD_ATTR_STACKADDR
optional-constant _POSIX_THREAD_ATTR_STACKSIZE
optional-constant _POSIX_THREAD_PROCESS_SHARED
optional-constant _POSIX_THREAD_SAFE_FUNCTIONS
optional-constant _POSIX_THREAD_SPORADIC_SERVER

# ifdef XOPEN2K
optional-constant _POSIX_V6_ILP32_OFF32
optional-constant _POSIX_V6_ILP32_OFFBIG
optional-constant _POSIX_V6_LP64_OFF64
optional-constant _POSIX_V6_LPBIG_OFFBIG
# endif
# if defined XOPEN2K8 || defined POSIX2008
optional-constant _POSIX_V7_ILP32_OFF32
optional-constant _POSIX_V7_ILP32_OFFBIG
optional-constant _POSIX_V7_LP64_OFF64
optional-constant _POSIX_V7_LPBIG_OFFBIG
# endif

optional-constant _POSIX2_C_DEV
optional-constant _POSIX2_FORT_DEV
optional-constant _POSIX2_FORT_RUN
optional-constant _POSIX2_SW_DEV
# if !defined POSIX && !defined POSIX2008
optional-constant _XOPEN_CRYPT
optional-constant _XOPEN_ENH_I18N
optional-constant _XOPEN_LEGACY
optional-constant _XOPEN_REALTIME
optional-constant _XOPEN_REALTIME_THREADS
optional-constant _XOPEN_SHM
optional-constant _XOPEN_STREAMS
# endif
allow _XBS5_ILP32_OFF32
allow _XBS5_ILP32_OFBIG
allow _XBS5_LP64_OFF64
allow _XBS5_LPBIG_OFFBIG
optional-constant _POSIX_ASYNCHRONOUS_IO
optional-constant _POSIX_MEMLOCK
optional-constant _POSIX_MEMLOCK_RANGE
optional-constant _POSIX_MESSAGE_PASSING
optional-constant _POSIX_PRIORITY_SCHEDULING
optional-constant _POSIX_REALTIME_SIGNALS
optional-constant _POSIX_SEMAPHORES
optional-constant _POSIX_SHARED_MEMORY_OBJECTS
optional-constant _POSIX_SYNCHRONIZED_IO
optional-constant _POSIX_TIMERS
optional-constant _POSIX_TIMEOUTS

optional-constant _POSIX_FSYNC
optional-constant _POSIX_MAPPED_FILES
optional-constant _POSIX_MEMORY_PROTECTION

optional-constant _POSIX_PRIORITIZED_IO

optional-constant _POSIX_THREAD_PRIORITY_SCHEDULING
optional-constant _POSIX_THREAD_PRIO_INHERIT
optional-constant _POSIX_THREAD_PRIO_PROTECT

optional-constant _POSIX_ASYNC_IO
optional-constant _POSIX_PRIO_IO
optional-constant _POSIX_SYNC_IO

optional-constant _POSIX2_PBS
optional-constant _POSIX2_PBS_ACCOUNTING
optional-constant _POSIX2_PBS_CHECKPOINT
optional-constant _POSIX2_PBS_LOCATE
optional-constant _POSIX2_PBS_MESSAGE
optional-constant _POSIX2_PBS_TRACK

optional-constant _POSIX_TIMESTAMP_RESOLUTION

constant NULL

constant R_OK
constant W_OK
constant X_OK
constant F_OK

constant _CS_PATH
constant _CS_XBS5_ILP32_OFF32_CFLAGS
constant _CS_XBS5_ILP32_OFF32_LDFLAGS
constant _CS_XBS5_ILP32_OFF32_LIBS
constant _CS_XBS5_ILP32_OFF32_LINTFLAGS
constant _CS_XBS5_ILP32_OFFBIG_CFLAGS
constant _CS_XBS5_ILP32_OFFBIG_LDFLAGS
constant _CS_XBS5_ILP32_OFFBIG_LIBS
constant _CS_XBS5_ILP32_OFFBIG_LINTFLAGS
constant _CS_XBS5_LP64_OFF64_CFLAGS
constant _CS_XBS5_LP64_OFF64_LDFLAGS
constant _CS_XBS5_LP64_OFF64_LIBS
constant _CS_XBS5_LP64_OFF64_LINTFLAGS
constant _CS_XBS5_LPBIG_OFFBIG_CFLAGS
constant _CS_XBS5_LPBIG_OFFBIG_LDFLAGS
constant _CS_XBS5_LPBIG_OFFBIG_LIBS
constant _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS

constant SEEK_SET
constant SEEK_CUR
constant SEEK_END

constant _SC_2_C_BIND
constant _SC_2_C_DEV
constant _SC_2_C_VERSION
constant _SC_2_FORT_DEV
constant _SC_2_FORT_RUN
constant _SC_2_LOCALEDEF
constant _SC_2_PBS
constant _SC_2_PBS_ACCOUNTING
constant _SC_2_PBS_CHECKPOINT
constant _SC_2_PBS_LOCATE
constant _SC_2_PBS_MESSAGE
constant _SC_2_PBS_TRACK
constant _SC_2_SW_DEV
constant _SC_2_UPE
constant _SC_2_VERSION
constant _SC_ARG_MAX
constant _SC_AIO_LISTIO_MAX
constant _SC_AIO_MAX
constant _SC_AIO_PRIO_DELTA_MAX
constant _SC_ASYNCHRONOUS_IO
constant _SC_ATEXIT_MAX
constant _SC_BARRIERS
constant _SC_BASE
constant _SC_BC_BASE_MAX
constant _SC_BC_DIM_MAX
constant _SC_BC_SCALE_MAX
constant _SC_BC_STRING_MAX
constant _SC_CHILD_MAX
constant _SC_CLK_TCK
constant _SC_CLOCK_SELECTION
constant _SC_COLL_WEIGHTS_MAX
constant _SC_DELAYTIMER_MAX
constant _SC_DEVICE_IO
constant _SC_DEVICE_SPECIFIC
constant _SC_DEVICE_SPECIFIC_R
constant _SC_EXPR_NEST_MAX
constant _SC_FD_MGMT
constant _SC_FIFO
constant _SC_FILE_ATTRIBUTES
constant _SC_FILE_LOCKING
constant _SC_FILE_SYSTEM
constant _SC_FSYNC
constant _SC_GETGR_R_SIZE_MAX
constant _SC_GETPW_R_SIZE_MAX
constant _SC_IOV_MAX
constant _SC_JOB_CONTROL
constant _SC_LINE_MAX
constant _SC_LOGIN_NAME_MAX
constant _SC_MAPPED_FILES
constant _SC_MEMLOCK
constant _SC_MEMLOCK_RANGE
constant _SC_MEMORY_PROTECTION
constant _SC_MESSAGE_PASSING
constant _SC_MONOTONIC_CLOCK
constant _SC_MQ_OPEN_MAX
constant _SC_MQ_PRIO_MAX
constant _SC_NETWORKING
constant _SC_NGROUPS_MAX
constant _SC_OPEN_MAX
constant _SC_PAGESIZE
constant _SC_PAGE_SIZE
constant _SC_PASS_MAX
constant _SC_PIPE
constant _SC_PRIORITIZED_IO
constant _SC_PRIORITY_SCHEDULING
constant _SC_RE_DUP_MAX
constant _SC_READER_WRITER_LOCKS
constant _SC_REALTIME_SIGNALS
constant _SC_REGEXP
constant _SC_RTSIG_MAX
constant _SC_SAVED_IDS
constant _SC_SEMAPHORES
constant _SC_SEM_NSEMS_MAX
constant _SC_SEM_VALUE_MAX
constant _SC_SHARED_MEMORY_OBJECTS
constant _SC_SHELL
constant _SC_SIGNALS
constant _SC_SIGQUEUE_MAX
constant _SC_SINGLE_PROCESS
constant _SC_SPIN_LOCKS
constant _SC_STREAM_MAX
constant _SC_SYNCHRONIZED_IO
constant _SC_THREADS
constant _SC_THREAD_ATTR_STACKADDR
constant _SC_THREAD_ATTR_STACKSIZE
constant _SC_THREAD_DESTRUCTOR_ITERATIONS
constant _SC_THREAD_KEYS_MAX
constant _SC_THREAD_PRIORITY_SCHEDULING
constant _SC_THREAD_PRIO_INHERIT
constant _SC_THREAD_PRIO_PROTECT
constant _SC_THREAD_PROCESS_SHARED
constant _SC_THREAD_SAFE_FUNCTIONS
constant _SC_THREAD_STACK_MIN
constant _SC_THREAD_THREADS_MAX
constant _SC_TIMERS
constant _SC_TIMER_MAX
constant _SC_TTY_NAME_MAX
constant _SC_TYPED_MEMORY_OBJECTS
constant _SC_TZNAME_MAX
constant _SC_USER_GROUPS
constant _SC_USER_GROUPS_R
# ifdef XOPEN2K
constant _SC_V6_ILP32_OFF32
constant _SC_V6_ILP32_OFFBIG
constant _SC_V6_LP64_OFF64
constant _SC_V6_LPBIG_OFFBIG
# endif
# if defined XOPEN2K8 || defined POSIX2008
constant _SC_V7_ILP32_OFF32
constant _SC_V7_ILP32_OFFBIG
constant _SC_V7_LP64_OFF64
constant _SC_V7_LPBIG_OFFBIG
# endif
constant _SC_VERSION
# if !defined POSIX && !defined POSIX2008
constant _SC_XOPEN_VERSION
constant _SC_XOPEN_CRYPT
constant _SC_XOPEN_ENH_I18N
constant _SC_XOPEN_SHM
constant _SC_XOPEN_UNIX
constant _SC_XOPEN_XCU_VERSION
constant _SC_XOPEN_LEGACY
constant _SC_XOPEN_REALTIME
constant _SC_XOPEN_REALTIME_THREADS
# endif
constant _SC_STREAMS
constant _SC_XBS5_ILP32_OFF32
constant _SC_XBS5_ILP32_OFFBIG
constant _SC_XBS5_LP64_OFF64
constant _SC_XBS5_LPBIG_OFFBIG
# ifdef XOPEN2K
constant _CS_POSIX_V6_ILP32_OFF32_CFLAGS
constant _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
constant _CS_POSIX_V6_ILP32_OFF32_LIBS
constant _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
constant _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
constant _CS_POSIX_V6_ILP32_OFFBIG_LIBS
constant _CS_POSIX_V6_LP64_OFF64_CFLAGS
constant _CS_POSIX_V6_LP64_OFF64_LDFLAGS
constant _CS_POSIX_V6_LP64_OFF64_LIBS
constant _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
constant _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
constant _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
constant _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS
constant _CS_V6_ENV
# endif
# if defined XOPEN2K8 || defined POSIX2008
constant _CS_POSIX_V7_ILP32_OFF32_CFLAGS
constant _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
constant _CS_POSIX_V7_ILP32_OFF32_LIBS
constant _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
constant _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
constant _CS_POSIX_V7_ILP32_OFFBIG_LIBS
constant _CS_POSIX_V7_LP64_OFF64_CFLAGS
constant _CS_POSIX_V7_LP64_OFF64_LDFLAGS
constant _CS_POSIX_V7_LP64_OFF64_LIBS
constant _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
constant _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
constant _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
constant _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS
constant _CS_V7_ENV
# endif
constant _SC_THREAD_ROBUST_PRIO_INHERIT
constant _SC_THREAD_ROBUST_PRIO_PROTECT

#if !defined POSIX && !defined POSIX2008
constant F_LOCK
constant F_ULOCK
constant F_TEST
constant F_TLOCK
#endif

constant _PC_ASYNC_IO
constant _PC_CHOWN_RESTRICTED
constant _PC_FILESIZEBITS
constant _PC_LINK_MAX
constant _PC_MAX_CANON
constant _PC_MAX_INPUT
constant _PC_NAME_MAX
constant _PC_NO_TRUNC
constant _PC_PATH_MAX
constant _PC_PIPE_BUF
constant _PC_PRIO_IO
constant _PC_REC_INCR_XFER_SIZE
constant _PC_REC_MAX_XFER_SIZE
constant _PC_REC_MIN_XFER_SIZE
constant _PC_REC_XFER_ALIGN
constant _PC_SYNC_IO
constant _PC_VDISABLE

constant STDIN_FILENO
constant STDOUT_FILENO
constant STDERR_FILENO

type size_t
type ssize_t
type uid_t
type gid_t
type off_t
type pid_t

#if !defined POSIX
type useconds_t

type intptr_t
#endif

function int access (const char*, int)
function {unsigned int} alarm (unsigned int)
#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX && !defined POSIX2008
function int brk (void*)
#endif
function int chdir (const char*)
#if defined XPG3 || defined XPG4 || defined UNIX98
function int chroot (const char*)
#endif
function int chown (const char*, uid_t, gid_t)
function int close (int)
function size_t confstr (int, char*, size_t)
#if !defined POSIX && !defined POSIX2008
function {char*} crypt (const char*, const char*)
#endif
#if defined XPG3 || defined XPG4 || defined UNIX98
function {char*} ctermid (char*)
function {char*} cuserid (char*)
#endif
function int dup (int)
function int dup2 (int, int)
#if !defined POSIX && !defined POSIX2008
function void encrypt (char[64], int)
#endif
function int execl (const char*, const char*, ...)
function int execle (const char*, const char*, ...)
function int execlp (const char*, const char*, ...)
function int execv (const char*, char *const[])
function int execve (const char*, char *const[], char *const[])
function int execvp (const char*, char *const[])
function void _exit (int)
# if defined XOPEN2K8 || defined POSIX2008
function int faccessat (int, const char*, int, int)
# endif
#if !defined POSIX
function int fchown (int, uid_t, gid_t)
#endif
# if defined XOPEN2K8 || defined POSIX2008
function int fchownat (int, const char*, uid_t, gid_t, int)
# endif
#ifndef POSIX
function int fchdir (int)
#endif
#if !defined XPG3 && !defined XPG4
function int fdatasync (int)
#endif
# if defined XOPEN2K8 || defined POSIX2008
function int fexecve (int, char *const[], char *const[])
# endif
function pid_t fork (void)
function {long int} fpathconf (int, int)
function int fsync (int)
function int ftruncate (int, off_t)
function {char*} getcwd (char*, size_t)
#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX && !defined POSIX2008
function int getdtablesize (void)
#endif
function gid_t getegid (void)
function uid_t geteuid (void)
function gid_t getgid (void)
function int getgroups (int, gid_t[])
#if !defined POSIX && !defined POSIX2008
function long gethostid (void)
#endif
#if !defined POSIX
function int gethostname (char*, size_t)
#endif
function {char*} getlogin (void)
#if !defined XPG3 && !defined XPG4
function int getlogin_r (char*, size_t)
#endif
function int getopt (int, char*const[], const char*)
#if defined XPG3 || defined XPG4 || defined UNIX98
function int getpagesize (void)
function {char*} getpass (const char*)
#endif
#ifndef POSIX
function pid_t getpgid (pid_t)
#endif
function pid_t getpgrp (void)
function pid_t getpid (void)
function pid_t getppid (void)
#ifndef POSIX
function pid_t getsid (pid_t)
#endif
function uid_t getuid (void)
#if defined XPG3 || defined XPG4 || defined UNIX98 || defined XOPEN2K
function {char*} getwd (char*)
#endif
function int isatty (int)
#ifndef POSIX
function int lchown (const char*, uid_t, gid_t)
#endif
function int link (const char*, const char*)
# if defined XOPEN2K8 || defined POSIX2008
function int linkat (int, const char*, int, const char*, int)
# endif
# if !defined POSIX && !defined POSIX2008
function int lockf (int, int, off_t)
# endif
function off_t lseek (int, off_t, int)
# if !defined POSIX && !defined POSIX2008
function int nice (int)
# endif
function {long int} pathconf (const char*, int)
function int pause (void)
function int pipe (int[2])
#if !defined POSIX && !defined XPG3 && !defined XPG4
function ssize_t pread (int, void*, size_t, off_t)
#endif
#if !defined POSIX && !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008 && !defined XPG3 && !defined XPG4
function int pthread_atfork (void(*)(void), void(*)(void), void(*)(void))
#endif
#if !defined POSIX && !defined XPG3 && !defined XPG4
function ssize_t pwrite (int, const void*, size_t, off_t)
#endif
function ssize_t read (int, void*, size_t)
#ifndef POSIX
function ssize_t readlink (const char*, char*, size_t)
#endif
# if defined XOPEN2K8 || defined POSIX2008
function ssize_t readlinkat (int, const char*, char*, size_t)
# endif
function int rmdir (const char*)
#if !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX && !defined POSIX2008
function {void*} sbrk (intptr_t)
#endif
#if !defined POSIX && !defined XPG3 && !defined XPG4 && !defined UNIX98
function int setegid (gid_t)
function int seteuid (uid_t)
#endif
function int setgid (gid_t)
function int setpgid (pid_t, pid_t)
# if !defined POSIX && !defined POSIX2008
function pid_t setpgrp (void)
function int setregid (gid_t, gid_t)
function int setreuid (uid_t, uid_t)
# endif
function pid_t setsid (void)
function int setuid (uid_t)
function {unsigned int} sleep (unsigned int)
# if !defined POSIX && !defined POSIX2008
function void swab (const void*, void*, ssize_t)
# endif
#ifndef POSIX
function int symlink (const char*, const char*)
# endif
# if defined XOPEN2K8 || defined POSIX2008
function int symlinkat (const char*, int, const char*)
# endif
# if !defined POSIX && !defined POSIX2008
function void sync (void)
# endif
function {long int} sysconf (int)
function pid_t tcgetpgrp (int)
function int tcsetpgrp (int, pid_t)
#ifndef POSIX
function int truncate (const char*, off_t)
#endif
function {char*} ttyname (int)
function int ttyname_r (int, char*, size_t)
#if defined XPG3 || defined XPG4 || defined UNIX98 || defined XOPEN2K
function useconds_t ualarm (useconds_t, useconds_t)
#endif
function int unlink (const char*)
# if defined XOPEN2K8 || defined POSIX2008
function int unlinkat (int, const char*, int)
# endif
#if defined XPG3 || defined XPG4 || defined UNIX98 || defined XOPEN2K
function int usleep (useconds_t)
function pid_t vfork (void)
#endif
function ssize_t write (int, const void*, size_t)

variable {char*} optarg
variable int optind
variable int opterr
variable int optopt

allow *_t
#endif
