#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

constant _POSIX_VERSION
#if defined POSIX || defined XPG4 || defined XPG42 || defined UNIX98
constant _POSIX2_C_VERSION
#endif
#ifndef POSIX
optional-constant _XOPEN_VERSION
optional-constant _XOPEN_XCU_VERSION
#endif

#ifndef POSIX
optional-constant _POSIX2_C_BIND
#endif
optional-constant _POSIX2_CHAR_TERM
optional-constant _POSIX2_LOCALEDEF
optional-constant _POSIX2_UPE
#ifndef POSIX
optional-constant _POSIX2_VERSION
#endif

#ifndef POSIX
optional-constant _XOPEN_XPG2
optional-constant _XOPEN_XPG3
optional-constant _XOPEN_XPG4
optional-constant _XOPEN_UNIX
#endif

#ifndef POSIX
optional-constant _POSIX_ADVISORY_INFO
#endif
optional-constant _POSIX_ASYNCHRONOUS_IO
#ifndef POSIX
optional-constant _POSIX_BARRIERS
#endif
optional-constant _POSIX_CHOWN_RESTRICTED
#ifndef POSIX
optional-constant _POSIX_CLOCK_SELECTION
optional-constant _POSIX_CPUTIME
#endif
optional-constant _POSIX_NO_TRUNC
optional-constant _POSIX_VDISABLE
optional-constant _POSIX_SAVED_IDS
optional-constant _POSIX_JOB_CONTROL
#ifndef POSIX
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
#endif

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
#ifndef POSIX
optional-constant _POSIX_THREAD_SPORADIC_SERVER
#endif

# 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
# ifndef POSIX
allow _XBS5_ILP32_OFF32
allow _XBS5_ILP32_OFBIG
allow _XBS5_LP64_OFF64
allow _XBS5_LPBIG_OFFBIG
#endif
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
#ifndef POSIX
optional-constant _POSIX_TIMEOUTS
#endif

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

#ifndef POSIX
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
#endif

#ifndef POSIX
optional-constant _POSIX_TIMESTAMP_RESOLUTION
#endif

constant NULL

constant R_OK
constant W_OK
constant X_OK
constant F_OK

constant _CS_PATH
#ifndef POSIX
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
#endif

constant SEEK_SET
constant SEEK_CUR
constant SEEK_END

#ifndef POSIX
constant _SC_2_C_BIND
#endif
constant _SC_2_C_DEV
#ifndef POSIX
constant _SC_2_C_VERSION
#endif
constant _SC_2_CHAR_TERM
constant _SC_2_FORT_DEV
constant _SC_2_FORT_RUN
constant _SC_2_LOCALEDEF
#ifndef POSIX
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
#endif
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
#ifndef POSIX
constant _SC_ATEXIT_MAX
constant _SC_BARRIERS
constant _SC_BASE
#endif
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
#ifndef POSIX
constant _SC_CLOCK_SELECTION
#endif
constant _SC_COLL_WEIGHTS_MAX
constant _SC_DELAYTIMER_MAX
#ifndef POSIX
constant _SC_DEVICE_IO
constant _SC_DEVICE_SPECIFIC
constant _SC_DEVICE_SPECIFIC_R
#endif
constant _SC_EXPR_NEST_MAX
#ifndef POSIX
constant _SC_FD_MGMT
constant _SC_FIFO
constant _SC_FILE_ATTRIBUTES
constant _SC_FILE_LOCKING
constant _SC_FILE_SYSTEM
#endif
constant _SC_FSYNC
constant _SC_GETGR_R_SIZE_MAX
constant _SC_GETPW_R_SIZE_MAX
#ifndef POSIX
constant _SC_IOV_MAX
#endif
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
#ifndef POSIX
constant _SC_MONOTONIC_CLOCK
#endif
constant _SC_MQ_OPEN_MAX
constant _SC_MQ_PRIO_MAX
#ifndef POSIX
constant _SC_NETWORKING
#endif
constant _SC_NGROUPS_MAX
constant _SC_OPEN_MAX
constant _SC_PAGESIZE
#ifndef POSIX
constant _SC_PAGE_SIZE
constant _SC_PASS_MAX
constant _SC_PIPE
#endif
constant _SC_PRIORITIZED_IO
constant _SC_PRIORITY_SCHEDULING
constant _SC_RE_DUP_MAX
#ifndef POSIX
constant _SC_READER_WRITER_LOCKS
#endif
constant _SC_REALTIME_SIGNALS
#ifndef POSIX
constant _SC_REGEXP
#endif
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
#ifndef POSIX
constant _SC_SHELL
constant _SC_SIGNALS
#endif
constant _SC_SIGQUEUE_MAX
#ifndef POSIX
constant _SC_SINGLE_PROCESS
constant _SC_SPIN_LOCKS
#endif
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
#ifndef POSIX
constant _SC_TYPED_MEMORY_OBJECTS
#endif
constant _SC_TZNAME_MAX
#ifndef POSIX
constant _SC_USER_GROUPS
constant _SC_USER_GROUPS_R
#endif
# 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
# ifndef POSIX
constant _SC_STREAMS
constant _SC_XBS5_ILP32_OFF32
constant _SC_XBS5_ILP32_OFFBIG
constant _SC_XBS5_LP64_OFF64
constant _SC_XBS5_LPBIG_OFFBIG
# endif
# 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
# ifndef POSIX
constant _SC_THREAD_ROBUST_PRIO_INHERIT
constant _SC_THREAD_ROBUST_PRIO_PROTECT
#endif

#if !defined XPG4 && !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
#ifndef POSIX
constant _PC_FILESIZEBITS
#endif
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
#ifndef POSIX
constant _PC_REC_INCR_XFER_SIZE
constant _PC_REC_MAX_XFER_SIZE
constant _PC_REC_MIN_XFER_SIZE
constant _PC_REC_XFER_ALIGN
#endif
constant _PC_SYNC_IO
constant _PC_VDISABLE

constant STDIN_FILENO
constant STDOUT_FILENO
constant STDERR_FILENO

type size_t
type ssize_t
#ifndef POSIX
type uid_t
type gid_t
type off_t
type pid_t
#endif

#if !defined POSIX && !defined XPG4
type useconds_t

# ifndef XPG42
type intptr_t
# endif
#endif

function int access (const char*, int)
function {unsigned int} alarm (unsigned int)
#if !defined XOPEN2K && !defined XOPEN2K8 && !defined XPG4 && !defined POSIX && !defined POSIX2008
function int brk (void*)
#endif
function int chdir (const char*)
#if defined XPG4 || defined XPG42 || 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 XPG4 || defined XPG42 || defined UNIX98
function {char*} ctermid (char*)
function {char*} cuserid (char*)
#endif
#ifdef POSIX
allow cuserid
#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 XPG4 && !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
#if !defined XPG4 && !defined POSIX
function int fchdir (int)
#endif
#if !defined XPG4 && !defined XPG42
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)
#ifndef XPG4
function int ftruncate (int, off_t)
#endif
function {char*} getcwd (char*, size_t)
#if !defined XOPEN2K && !defined XOPEN2K8 && !defined XPG4 && !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 XPG4 && !defined POSIX && !defined POSIX2008
function long gethostid (void)
#endif
#if !defined POSIX && !defined XPG4
function int gethostname (char*, size_t)
#endif
function {char*} getlogin (void)
#if !defined XPG4 && !defined XPG42
function int getlogin_r (char*, size_t)
#endif
function int getopt (int, char*const[], const char*)
#if defined XPG42 || defined UNIX98
function int getpagesize (void)
#endif
#if defined XPG4 || defined XPG42 || defined UNIX98
function {char*} getpass (const char*)
#endif
#if !defined XPG4 && !defined POSIX
function pid_t getpgid (pid_t)
#endif
function pid_t getpgrp (void)
function pid_t getpid (void)
function pid_t getppid (void)
#if !defined XPG4 && !defined POSIX
function pid_t getsid (pid_t)
#endif
function uid_t getuid (void)
#if defined XPG42 || defined UNIX98 || defined XOPEN2K
function {char*} getwd (char*)
#endif
function int isatty (int)
#if !defined XPG4 && !defined 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 XPG4 && !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 XPG4 && !defined XPG42
function ssize_t pread (int, void*, size_t, off_t)
#endif
#if !defined POSIX && !defined XOPEN2K && !defined XOPEN2K8 && !defined POSIX2008 && !defined XPG4 && !defined XPG42
function int pthread_atfork (void(*)(void), void(*)(void), void(*)(void))
#endif
#if !defined POSIX && !defined XPG4 && !defined XPG42
function ssize_t pwrite (int, const void*, size_t, off_t)
#endif
function ssize_t read (int, void*, size_t)
#if !defined XPG4 && !defined 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 XPG4 && !defined POSIX && !defined POSIX2008
function {void*} sbrk (intptr_t)
#endif
#if !defined POSIX && !defined XPG4 && !defined XPG42 && !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 XPG4 && !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
#if !defined XPG4 && !defined 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 XPG4 && !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)
#if !defined XPG4 && !defined POSIX
function int truncate (const char*, off_t)
#endif
function {char*} ttyname (int)
function int ttyname_r (int, char*, size_t)
#if defined XPG42 || 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 XPG42 || 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
