summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/posix/posix.nim3679
-rw-r--r--lib/pure/macros.nim42
-rw-r--r--lib/pure/os.nim22
-rw-r--r--lib/pure/osproc.nim6
-rw-r--r--lib/pure/regexprs.nim22
-rw-r--r--lib/pure/streams.nim4
-rw-r--r--lib/pure/strutils.nim68
-rw-r--r--lib/system.nim70
-rw-r--r--lib/system/ansi_c.nim7
-rw-r--r--lib/system/arithm.nim6
-rw-r--r--lib/system/debugger.nim6
-rw-r--r--lib/system/sysio.nim20
-rw-r--r--lib/wrappers/mysql.nim4
13 files changed, 2023 insertions, 1933 deletions
diff --git a/lib/posix/posix.nim b/lib/posix/posix.nim
index 42cbbba75..5c8103b9a 100644
--- a/lib/posix/posix.nim
+++ b/lib/posix/posix.nim
@@ -1,408 +1,408 @@
-#

-#

-#            Nimrod's Runtime Library

-#        (c) Copyright 2009 Andreas Rumpf

-#

-#    See the file "copying.txt", included in this

-#    distribution, for details about the copyright.

-#

-

-# Until std_arg!!

-# done: ipc, pwd, stat, semaphore, sys/types, sys/utsname, pthread, unistd,

+#
+#
+#            Nimrod's Runtime Library
+#        (c) Copyright 2009 Andreas Rumpf
+#
+#    See the file "copying.txt", included in this
+#    distribution, for details about the copyright.
+#
+
+# Until std_arg!!
+# done: ipc, pwd, stat, semaphore, sys/types, sys/utsname, pthread, unistd,
 # statvfs, mman, time, wait, signal, nl_types, sched, spawn, select, ucontext,
-# net/if, sys/socket, sys/uio, netinet/in, netinet/tcp, netdb

-

-## This is a raw POSIX interface module. It does not not provide any

-## convenience: cstrings are used instead of proper Nimrod strings and

-## return codes indicate errors. If you want exceptions 

-## and a proper Nimrod-like interface, use the OS module or write a wrapper.

-

-## Coding conventions:

-## ALL types are named the same as in the POSIX standard except that they start

-## with 'T' or 'P' (if they are pointers) and without the '_t' prefix to be

-## consistent with Nimrod conventions. If an identifier is a Nimrod keyword

-## the \`identifier\` notation is used.

-##

-## This library relies on the header files of your C compiler. Thus the

-## resulting C code will just include <XYZ.h> and *not* define the

-## symbols declared here.

+# net/if, sys/socket, sys/uio, netinet/in, netinet/tcp, netdb
+
+## This is a raw POSIX interface module. It does not not provide any
+## convenience: cstrings are used instead of proper Nimrod strings and
+## return codes indicate errors. If you want exceptions 
+## and a proper Nimrod-like interface, use the OS module or write a wrapper.
+
+## Coding conventions:
+## ALL types are named the same as in the POSIX standard except that they start
+## with 'T' or 'P' (if they are pointers) and without the '_t' prefix to be
+## consistent with Nimrod conventions. If an identifier is a Nimrod keyword
+## the \`identifier\` notation is used.
+##
+## This library relies on the header files of your C compiler. Thus the
+## resulting C code will just include <XYZ.h> and *not* define the
+## symbols declared here.
 
 from times import TTime
-

-const

-  hasSpawnH = defined(linux)

-  hasAioH = defined(linux)

-
-when false:

-  const

-    C_IRUSR = 0c000400 ## Read by owner.

-    C_IWUSR = 0c000200 ## Write by owner.

-    C_IXUSR = 0c000100 ## Execute by owner.

-    C_IRGRP = 0c000040 ## Read by group.

-    C_IWGRP = 0c000020 ## Write by group.

-    C_IXGRP = 0c000010 ## Execute by group.

-    C_IROTH = 0c000004 ## Read by others.

-    C_IWOTH = 0c000002 ## Write by others.

-    C_IXOTH = 0c000001 ## Execute by others.

-    C_ISUID = 0c004000 ## Set user ID.

-    C_ISGID = 0c002000 ## Set group ID.

-    C_ISVTX = 0c001000 ## On directories, restricted deletion flag.

-    C_ISDIR = 0c040000 ## Directory.

-    C_ISFIFO = 0c010000 ##FIFO.

-    C_ISREG = 0c100000 ## Regular file.

-    C_ISBLK = 0c060000 ## Block special.

-    C_ISCHR = 0c020000 ## Character special.

-    C_ISCTG = 0c110000 ## Reserved.

-    C_ISLNK = 0c120000 ## Symbolic link.</p>

-    C_ISSOCK = 0c140000 ## Socket.

-
-const

-  MM_NULLLBL* = nil

-  MM_NULLSEV* = 0

-  MM_NULLMC* = 0

-  MM_NULLTXT* = nil

-  MM_NULLACT* = nil

-  MM_NULLTAG* = nil

-  

-  STDERR_FILENO* = 2 ## File number of stderr;

-  STDIN_FILENO* = 0  ## File number of stdin;

-  STDOUT_FILENO* = 1 ## File number of stdout; 

-

-type

-  TDIR* {.importc: "DIR", header: "<dirent.h>", final, pure.} = object

-    ## A type representing a directory stream. 

-

+
+const
+  hasSpawnH = defined(linux)
+  hasAioH = defined(linux)
+
+when false:
+  const
+    C_IRUSR = 0c000400 ## Read by owner.
+    C_IWUSR = 0c000200 ## Write by owner.
+    C_IXUSR = 0c000100 ## Execute by owner.
+    C_IRGRP = 0c000040 ## Read by group.
+    C_IWGRP = 0c000020 ## Write by group.
+    C_IXGRP = 0c000010 ## Execute by group.
+    C_IROTH = 0c000004 ## Read by others.
+    C_IWOTH = 0c000002 ## Write by others.
+    C_IXOTH = 0c000001 ## Execute by others.
+    C_ISUID = 0c004000 ## Set user ID.
+    C_ISGID = 0c002000 ## Set group ID.
+    C_ISVTX = 0c001000 ## On directories, restricted deletion flag.
+    C_ISDIR = 0c040000 ## Directory.
+    C_ISFIFO = 0c010000 ##FIFO.
+    C_ISREG = 0c100000 ## Regular file.
+    C_ISBLK = 0c060000 ## Block special.
+    C_ISCHR = 0c020000 ## Character special.
+    C_ISCTG = 0c110000 ## Reserved.
+    C_ISLNK = 0c120000 ## Symbolic link.</p>
+    C_ISSOCK = 0c140000 ## Socket.
+
+const
+  MM_NULLLBL* = nil
+  MM_NULLSEV* = 0
+  MM_NULLMC* = 0
+  MM_NULLTXT* = nil
+  MM_NULLACT* = nil
+  MM_NULLTAG* = nil
+  
+  STDERR_FILENO* = 2 ## File number of stderr;
+  STDIN_FILENO* = 0  ## File number of stdin;
+  STDOUT_FILENO* = 1 ## File number of stdout; 
+
+type
+  TDIR* {.importc: "DIR", header: "<dirent.h>", final, pure.} = object
+    ## A type representing a directory stream. 
+
   Tdirent* {.importc: "struct dirent", 
-             header: "<dirent.h>", final, pure.} = object ## dirent_t struct

-    d_ino*: TIno  ## File serial number.

-    d_name*: array [0..255, char] ## Name of entry.

-

+             header: "<dirent.h>", final, pure.} = object ## dirent_t struct
+    d_ino*: TIno  ## File serial number.
+    d_name*: array [0..255, char] ## Name of entry.
+
   Tflock* {.importc: "flock", final, pure,
-            header: "<fcntl.h>".} = object ## flock type

-    l_type*: cshort   ## Type of lock; F_RDLCK, F_WRLCK, F_UNLCK. 

-    l_whence*: cshort ## Flag for starting offset. 

-    l_start*: Toff    ## Relative offset in bytes. 

-    l_len*: Toff      ## Size; if 0 then until EOF. 

-    l_pid*: TPid      ## Process ID of the process holding the lock; 

-                      ## returned with F_GETLK. 

-  

-  Tfenv* {.importc: "fenv_t", header: "<fenv.h>", final, pure.} = 

-    object ## Represents the entire floating-point environment. The

-           ## floating-point environment refers collectively to any

-           ## floating-point status flags and control modes supported

-           ## by the implementation.

-  Tfexcept* {.importc: "fexcept_t", header: "<fenv.h>", final, pure.} = 

-    object ## Represents the floating-point status flags collectively, 

-           ## including any status the implementation associates with the 

-           ## flags. A floating-point status flag is a system variable 

-           ## whose value is set (but never cleared) when a floating-point

-           ## exception is raised, which occurs as a side effect of

-           ## exceptional floating-point arithmetic to provide auxiliary

-           ## information. A floating-point control mode is a system variable

-           ## whose value may be set by the user to affect the subsequent 

-           ## behavior of floating-point arithmetic.

-

-  TFTW* {.importc: "struct FTW", header: "<ftw.h>", final, pure.} = object

-    base*: cint

-    level*: cint

-    

+            header: "<fcntl.h>".} = object ## flock type
+    l_type*: cshort   ## Type of lock; F_RDLCK, F_WRLCK, F_UNLCK. 
+    l_whence*: cshort ## Flag for starting offset. 
+    l_start*: Toff    ## Relative offset in bytes. 
+    l_len*: Toff      ## Size; if 0 then until EOF. 
+    l_pid*: TPid      ## Process ID of the process holding the lock; 
+                      ## returned with F_GETLK. 
+  
+  Tfenv* {.importc: "fenv_t", header: "<fenv.h>", final, pure.} = 
+    object ## Represents the entire floating-point environment. The
+           ## floating-point environment refers collectively to any
+           ## floating-point status flags and control modes supported
+           ## by the implementation.
+  Tfexcept* {.importc: "fexcept_t", header: "<fenv.h>", final, pure.} = 
+    object ## Represents the floating-point status flags collectively, 
+           ## including any status the implementation associates with the 
+           ## flags. A floating-point status flag is a system variable 
+           ## whose value is set (but never cleared) when a floating-point
+           ## exception is raised, which occurs as a side effect of
+           ## exceptional floating-point arithmetic to provide auxiliary
+           ## information. A floating-point control mode is a system variable
+           ## whose value may be set by the user to affect the subsequent 
+           ## behavior of floating-point arithmetic.
+
+  TFTW* {.importc: "struct FTW", header: "<ftw.h>", final, pure.} = object
+    base*: cint
+    level*: cint
+    
   TGlob* {.importc: "glob_t", header: "<glob.h>", 
-           final, pure.} = object ## glob_t

-    gl_pathc*: int          ## Count of paths matched by pattern. 

-    gl_pathv*: cstringArray ## Pointer to a list of matched pathnames. 

-    gl_offs*: int           ## Slots to reserve at the beginning of gl_pathv. 

-  

+           final, pure.} = object ## glob_t
+    gl_pathc*: int          ## Count of paths matched by pattern. 
+    gl_pathv*: cstringArray ## Pointer to a list of matched pathnames. 
+    gl_offs*: int           ## Slots to reserve at the beginning of gl_pathv. 
+  
   TGroup* {.importc: "struct group", header: "<grp.h>", 
-            final, pure.} = object ## struct group

-    gr_name*: cstring     ## The name of the group. 

-    gr_gid*: TGid         ## Numerical group ID. 

-    gr_mem*: cstringArray ## Pointer to a null-terminated array of character 

-                          ## pointers to member names. 

-

-  Ticonv* {.importc: "iconv_t", header: "<iconv.h>", final, pure.} = 

-    object ## Identifies the conversion from one codeset to another.

-

-  Tlconv* {.importc: "struct lconv", header: "<locale.h>", final, pure.} = object

-    currency_symbol*: cstring

-    decimal_point*: cstring

-    frac_digits*: char

-    grouping*: cstring

-    int_curr_symbol*: cstring

-    int_frac_digits*: char

-    int_n_cs_precedes*: char

-    int_n_sep_by_space*: char

-    int_n_sign_posn*: char

-    int_p_cs_precedes*: char

-    int_p_sep_by_space*: char

-    int_p_sign_posn*: char

-    mon_decimal_point*: cstring

-    mon_grouping*: cstring

-    mon_thousands_sep*: cstring

-    negative_sign*: cstring

-    n_cs_precedes*: char

-    n_sep_by_space*: char

-    n_sign_posn*: char

-    positive_sign*: cstring

-    p_cs_precedes*: char

-    p_sep_by_space*: char

-    p_sign_posn*: char

-    thousands_sep*: cstring

-

-  TMqd* {.importc: "mqd_t", header: "<mqueue.h>", final, pure.} = object

+            final, pure.} = object ## struct group
+    gr_name*: cstring     ## The name of the group. 
+    gr_gid*: TGid         ## Numerical group ID. 
+    gr_mem*: cstringArray ## Pointer to a null-terminated array of character 
+                          ## pointers to member names. 
+
+  Ticonv* {.importc: "iconv_t", header: "<iconv.h>", final, pure.} = 
+    object ## Identifies the conversion from one codeset to another.
+
+  Tlconv* {.importc: "struct lconv", header: "<locale.h>", final, pure.} = object
+    currency_symbol*: cstring
+    decimal_point*: cstring
+    frac_digits*: char
+    grouping*: cstring
+    int_curr_symbol*: cstring
+    int_frac_digits*: char
+    int_n_cs_precedes*: char
+    int_n_sep_by_space*: char
+    int_n_sign_posn*: char
+    int_p_cs_precedes*: char
+    int_p_sep_by_space*: char
+    int_p_sign_posn*: char
+    mon_decimal_point*: cstring
+    mon_grouping*: cstring
+    mon_thousands_sep*: cstring
+    negative_sign*: cstring
+    n_cs_precedes*: char
+    n_sep_by_space*: char
+    n_sign_posn*: char
+    positive_sign*: cstring
+    p_cs_precedes*: char
+    p_sep_by_space*: char
+    p_sign_posn*: char
+    thousands_sep*: cstring
+
+  TMqd* {.importc: "mqd_t", header: "<mqueue.h>", final, pure.} = object
   TMqAttr* {.importc: "struct mq_attr", 
              header: "<mqueue.h>", 
-             final, pure.} = object ## message queue attribute

-    mq_flags*: int   ## Message queue flags. 

-    mq_maxmsg*: int  ## Maximum number of messages. 

-    mq_msgsize*: int ## Maximum message size. 

-    mq_curmsgs*: int ## Number of messages currently queued. 

-

+             final, pure.} = object ## message queue attribute
+    mq_flags*: int   ## Message queue flags. 
+    mq_maxmsg*: int  ## Maximum number of messages. 
+    mq_msgsize*: int ## Maximum message size. 
+    mq_curmsgs*: int ## Number of messages currently queued. 
+
   TPasswd* {.importc: "struct passwd", header: "<pwd.h>", 
-             final, pure.} = object ## struct passwd

-    pw_name*: cstring   ## User's login name. 

-    pw_uid*: TUid       ## Numerical user ID. 

-    pw_gid*: TGid       ## Numerical group ID. 

-    pw_dir*: cstring    ## Initial working directory. 

-    pw_shell*: cstring  ## Program to use as shell. 

-

-  Tblkcnt* {.importc: "blkcnt_t", header: "<sys/types.h>".} = int

-    ## used for file block counts

-  Tblksize* {.importc: "blksize_t", header: "<sys/types.h>".} = int

-    ## used for block sizes

-  TClock* {.importc: "clock_t", header: "<sys/types.h>".} = int

-  TClockId* {.importc: "clockid_t", header: "<sys/types.h>".} = int

-  TDev* {.importc: "dev_t", header: "<sys/types.h>".} = int

-  Tfsblkcnt* {.importc: "fsblkcnt_t", header: "<sys/types.h>".} = int

-  Tfsfilcnt* {.importc: "fsfilcnt_t", header: "<sys/types.h>".} = int

-  TGid* {.importc: "gid_t", header: "<sys/types.h>".} = int

-  Tid* {.importc: "id_t", header: "<sys/types.h>".} = int

-  Tino* {.importc: "ino_t", header: "<sys/types.h>".} = int

-  TKey* {.importc: "key_t", header: "<sys/types.h>".} = int

-  TMode* {.importc: "mode_t", header: "<sys/types.h>".} = int

-  TNlink* {.importc: "nlink_t", header: "<sys/types.h>".} = int

-  TOff* {.importc: "off_t", header: "<sys/types.h>".} = int64

-  TPid* {.importc: "pid_t", header: "<sys/types.h>".} = int

-  Tpthread_attr* {.importc: "pthread_attr_t", header: "<sys/types.h>".} = int

+             final, pure.} = object ## struct passwd
+    pw_name*: cstring   ## User's login name. 
+    pw_uid*: TUid       ## Numerical user ID. 
+    pw_gid*: TGid       ## Numerical group ID. 
+    pw_dir*: cstring    ## Initial working directory. 
+    pw_shell*: cstring  ## Program to use as shell. 
+
+  Tblkcnt* {.importc: "blkcnt_t", header: "<sys/types.h>".} = int
+    ## used for file block counts
+  Tblksize* {.importc: "blksize_t", header: "<sys/types.h>".} = int
+    ## used for block sizes
+  TClock* {.importc: "clock_t", header: "<sys/types.h>".} = int
+  TClockId* {.importc: "clockid_t", header: "<sys/types.h>".} = int
+  TDev* {.importc: "dev_t", header: "<sys/types.h>".} = int
+  Tfsblkcnt* {.importc: "fsblkcnt_t", header: "<sys/types.h>".} = int
+  Tfsfilcnt* {.importc: "fsfilcnt_t", header: "<sys/types.h>".} = int
+  TGid* {.importc: "gid_t", header: "<sys/types.h>".} = int
+  Tid* {.importc: "id_t", header: "<sys/types.h>".} = int
+  Tino* {.importc: "ino_t", header: "<sys/types.h>".} = int
+  TKey* {.importc: "key_t", header: "<sys/types.h>".} = int
+  TMode* {.importc: "mode_t", header: "<sys/types.h>".} = int
+  TNlink* {.importc: "nlink_t", header: "<sys/types.h>".} = int
+  TOff* {.importc: "off_t", header: "<sys/types.h>".} = int64
+  TPid* {.importc: "pid_t", header: "<sys/types.h>".} = int
+  Tpthread_attr* {.importc: "pthread_attr_t", header: "<sys/types.h>".} = int
   Tpthread_barrier* {.importc: "pthread_barrier_t", 
-                      header: "<sys/types.h>".} = int

+                      header: "<sys/types.h>".} = int
   Tpthread_barrierattr* {.importc: "pthread_barrierattr_t", 
-                          header: "<sys/types.h>".} = int

-  Tpthread_cond* {.importc: "pthread_cond_t", header: "<sys/types.h>".} = int

+                          header: "<sys/types.h>".} = int
+  Tpthread_cond* {.importc: "pthread_cond_t", header: "<sys/types.h>".} = int
   Tpthread_condattr* {.importc: "pthread_condattr_t", 
-                       header: "<sys/types.h>".} = int

-  Tpthread_key* {.importc: "pthread_key_t", header: "<sys/types.h>".} = int

-  Tpthread_mutex* {.importc: "pthread_mutex_t", header: "<sys/types.h>".} = int

+                       header: "<sys/types.h>".} = int
+  Tpthread_key* {.importc: "pthread_key_t", header: "<sys/types.h>".} = int
+  Tpthread_mutex* {.importc: "pthread_mutex_t", header: "<sys/types.h>".} = int
   Tpthread_mutexattr* {.importc: "pthread_mutexattr_t", 
-                        header: "<sys/types.h>".} = int

-  Tpthread_once* {.importc: "pthread_once_t", header: "<sys/types.h>".} = int

-  Tpthread_rwlock* {.importc: "pthread_rwlock_t", header: "<sys/types.h>".} = int

+                        header: "<sys/types.h>".} = int
+  Tpthread_once* {.importc: "pthread_once_t", header: "<sys/types.h>".} = int
+  Tpthread_rwlock* {.importc: "pthread_rwlock_t", header: "<sys/types.h>".} = int
   Tpthread_rwlockattr* {.importc: "pthread_rwlockattr_t", 
-                         header: "<sys/types.h>".} = int

+                         header: "<sys/types.h>".} = int
   Tpthread_spinlock* {.importc: "pthread_spinlock_t", 
-                       header: "<sys/types.h>".} = int

-  Tpthread* {.importc: "pthread_t", header: "<sys/types.h>".} = int

-  Tsuseconds* {.importc: "suseconds_t", header: "<sys/types.h>".} = int

-  #Ttime* {.importc: "time_t", header: "<sys/types.h>".} = int

-  Ttimer* {.importc: "timer_t", header: "<sys/types.h>".} = int

-  Ttrace_attr* {.importc: "trace_attr_t", header: "<sys/types.h>".} = int

+                       header: "<sys/types.h>".} = int
+  Tpthread* {.importc: "pthread_t", header: "<sys/types.h>".} = int
+  Tsuseconds* {.importc: "suseconds_t", header: "<sys/types.h>".} = int
+  #Ttime* {.importc: "time_t", header: "<sys/types.h>".} = int
+  Ttimer* {.importc: "timer_t", header: "<sys/types.h>".} = int
+  Ttrace_attr* {.importc: "trace_attr_t", header: "<sys/types.h>".} = int
   Ttrace_event_id* {.importc: "trace_event_id_t", 
-                     header: "<sys/types.h>".} = int

+                     header: "<sys/types.h>".} = int
   Ttrace_event_set* {.importc: "trace_event_set_t", 
-                      header: "<sys/types.h>".} = int

-  Ttrace_id* {.importc: "trace_id_t", header: "<sys/types.h>".} = int

-  Tuid* {.importc: "uid_t", header: "<sys/types.h>".} = int

-  Tuseconds* {.importc: "useconds_t", header: "<sys/types.h>".} = int

-  

+                      header: "<sys/types.h>".} = int
+  Ttrace_id* {.importc: "trace_id_t", header: "<sys/types.h>".} = int
+  Tuid* {.importc: "uid_t", header: "<sys/types.h>".} = int
+  Tuseconds* {.importc: "useconds_t", header: "<sys/types.h>".} = int
+  
   Tutsname* {.importc: "struct utsname", 
               header: "<sys/utsname.h>", 
-              final, pure.} = object ## struct utsname

-    sysname*,      ## Name of this implementation of the operating system. 

-      nodename*,   ## Name of this node within the communications 

-                   ## network to which this node is attached, if any. 

-      release*,    ## Current release level of this implementation. 

-      version*,    ## Current version level of this release. 

-      machine*: array [0..255, char] ## Name of the hardware type on which the

-                                     ## system is running. 

-

-  TSem* {.importc: "sem_t", header: "<semaphore.h>", final, pure.} = object

+              final, pure.} = object ## struct utsname
+    sysname*,      ## Name of this implementation of the operating system. 
+      nodename*,   ## Name of this node within the communications 
+                   ## network to which this node is attached, if any. 
+      release*,    ## Current release level of this implementation. 
+      version*,    ## Current version level of this release. 
+      machine*: array [0..255, char] ## Name of the hardware type on which the
+                                     ## system is running. 
+
+  TSem* {.importc: "sem_t", header: "<semaphore.h>", final, pure.} = object
   Tipc_perm* {.importc: "struct ipc_perm", 
-               header: "<sys/ipc.h>", final, pure.} = object ## struct ipc_perm

-    uid*: tuid    ## Owner's user ID. 

-    gid*: tgid    ## Owner's group ID. 

-    cuid*: Tuid   ## Creator's user ID. 

-    cgid*: Tgid   ## Creator's group ID. 

-    mode*: TMode  ## Read/write permission. 

-  

+               header: "<sys/ipc.h>", final, pure.} = object ## struct ipc_perm
+    uid*: tuid    ## Owner's user ID. 
+    gid*: tgid    ## Owner's group ID. 
+    cuid*: Tuid   ## Creator's user ID. 
+    cgid*: Tgid   ## Creator's group ID. 
+    mode*: TMode  ## Read/write permission. 
+  
   TStat* {.importc: "struct stat", 
-           header: "<sys/stat.h>", final, pure.} = object ## struct stat

-    st_dev*: TDev          ## Device ID of device containing file. 

-    st_ino*: TIno          ## File serial number. 

-    st_mode*: TMode        ## Mode of file (see below). 

-    st_nlink*: tnlink      ## Number of hard links to the file. 

-    st_uid*: tuid          ## User ID of file. 

-    st_gid*: Tgid          ## Group ID of file. 

-    st_rdev*: TDev         ## Device ID (if file is character or block special). 

-    st_size*: TOff         ## For regular files, the file size in bytes. 

-                           ## For symbolic links, the length in bytes of the 

-                           ## pathname contained in the symbolic link. 

-                           ## For a shared memory object, the length in bytes. 

-                           ## For a typed memory object, the length in bytes. 

-                           ## For other file types, the use of this field is 

-                           ## unspecified. 

-    st_atime*: ttime       ## Time of last access. 

-    st_mtime*: ttime       ## Time of last data modification. 

-    st_ctime*: ttime       ## Time of last status change. 

-    st_blksize*: Tblksize  ## A file system-specific preferred I/O block size  

-                           ## for this object. In some file system types, this 

-                           ## may vary from file to file. 

-    st_blocks*: Tblkcnt    ## Number of blocks allocated for this object. 

-

-  

+           header: "<sys/stat.h>", final, pure.} = object ## struct stat
+    st_dev*: TDev          ## Device ID of device containing file. 
+    st_ino*: TIno          ## File serial number. 
+    st_mode*: TMode        ## Mode of file (see below). 
+    st_nlink*: tnlink      ## Number of hard links to the file. 
+    st_uid*: tuid          ## User ID of file. 
+    st_gid*: Tgid          ## Group ID of file. 
+    st_rdev*: TDev         ## Device ID (if file is character or block special). 
+    st_size*: TOff         ## For regular files, the file size in bytes. 
+                           ## For symbolic links, the length in bytes of the 
+                           ## pathname contained in the symbolic link. 
+                           ## For a shared memory object, the length in bytes. 
+                           ## For a typed memory object, the length in bytes. 
+                           ## For other file types, the use of this field is 
+                           ## unspecified. 
+    st_atime*: ttime       ## Time of last access. 
+    st_mtime*: ttime       ## Time of last data modification. 
+    st_ctime*: ttime       ## Time of last status change. 
+    st_blksize*: Tblksize  ## A file system-specific preferred I/O block size  
+                           ## for this object. In some file system types, this 
+                           ## may vary from file to file. 
+    st_blocks*: Tblkcnt    ## Number of blocks allocated for this object. 
+
+  
   TStatvfs* {.importc: "struct statvfs", header: "<sys/statvfs.h>", 
-              final, pure.} = object ## struct statvfs

-    f_bsize*: int        ## File system block size. 

-    f_frsize*: int       ## Fundamental file system block size. 

+              final, pure.} = object ## struct statvfs
+    f_bsize*: int        ## File system block size. 
+    f_frsize*: int       ## Fundamental file system block size. 
     f_blocks*: Tfsblkcnt ## Total number of blocks on file system
-                         ## in units of f_frsize. 

-    f_bfree*: Tfsblkcnt  ## Total number of free blocks. 

-    f_bavail*: Tfsblkcnt ## Number of free blocks available to 

-                         ## non-privileged process. 

-    f_files*: Tfsfilcnt  ## Total number of file serial numbers. 

-    f_ffree*: Tfsfilcnt  ## Total number of free file serial numbers. 

-    f_favail*: Tfsfilcnt ## Number of file serial numbers available to 

-                         ## non-privileged process. 

-    f_fsid*: int         ## File system ID. 

-    f_flag*: int         ## Bit mask of f_flag values. 

-    f_namemax*: int      ## Maximum filename length. 

-

-  Tposix_typed_mem_info* {.importc: "struct posix_typed_mem_info", 

-                           header: "<sys/mman.h>", final, pure.} = object

-    posix_tmi_length*: int

-  

+                         ## in units of f_frsize. 
+    f_bfree*: Tfsblkcnt  ## Total number of free blocks. 
+    f_bavail*: Tfsblkcnt ## Number of free blocks available to 
+                         ## non-privileged process. 
+    f_files*: Tfsfilcnt  ## Total number of file serial numbers. 
+    f_ffree*: Tfsfilcnt  ## Total number of free file serial numbers. 
+    f_favail*: Tfsfilcnt ## Number of file serial numbers available to 
+                         ## non-privileged process. 
+    f_fsid*: int         ## File system ID. 
+    f_flag*: int         ## Bit mask of f_flag values. 
+    f_namemax*: int      ## Maximum filename length. 
+
+  Tposix_typed_mem_info* {.importc: "struct posix_typed_mem_info", 
+                           header: "<sys/mman.h>", final, pure.} = object
+    posix_tmi_length*: int
+  
   Ttm* {.importc: "struct tm", header: "<time.h>", 
-         final, pure.} = object ## struct tm

-    tm_sec*: cint   ## Seconds [0,60]. 

-    tm_min*: cint   ## Minutes [0,59]. 

-    tm_hour*: cint  ## Hour [0,23]. 

-    tm_mday*: cint  ## Day of month [1,31]. 

-    tm_mon*: cint   ## Month of year [0,11]. 

-    tm_year*: cint  ## Years since 1900. 

-    tm_wday*: cint  ## Day of week [0,6] (Sunday =0). 

-    tm_yday*: cint  ## Day of year [0,365]. 

-    tm_isdst*: cint ## Daylight Savings flag. 

+         final, pure.} = object ## struct tm
+    tm_sec*: cint   ## Seconds [0,60]. 
+    tm_min*: cint   ## Minutes [0,59]. 
+    tm_hour*: cint  ## Hour [0,23]. 
+    tm_mday*: cint  ## Day of month [1,31]. 
+    tm_mon*: cint   ## Month of year [0,11]. 
+    tm_year*: cint  ## Years since 1900. 
+    tm_wday*: cint  ## Day of week [0,6] (Sunday =0). 
+    tm_yday*: cint  ## Day of year [0,365]. 
+    tm_isdst*: cint ## Daylight Savings flag. 
   Ttimespec* {.importc: "struct timespec", 
-               header: "<time.h>", final, pure.} = object ## struct timespec

-    tv_sec*: Ttime ## Seconds. 

-    tv_nsec*: int  ## Nanoseconds. 

+               header: "<time.h>", final, pure.} = object ## struct timespec
+    tv_sec*: Ttime ## Seconds. 
+    tv_nsec*: int  ## Nanoseconds. 
   titimerspec* {.importc: "struct itimerspec", header: "<time.h>", 
-                 final, pure.} = object ## struct itimerspec

-    it_interval*: ttimespec ## Timer period. 

-    it_value*: ttimespec    ## Timer expiration. 

-  

-  Tsig_atomic* {.importc: "sig_atomic_t", header: "<signal.h>".} = cint

-    ## Possibly volatile-qualified integer type of an object that can be 

-    ## accessed as an atomic entity, even in the presence of asynchronous

-    ## interrupts.

-  Tsigset* {.importc: "sigset_t", header: "<signal.h>", final, pure.} = object

-  

+                 final, pure.} = object ## struct itimerspec
+    it_interval*: ttimespec ## Timer period. 
+    it_value*: ttimespec    ## Timer expiration. 
+  
+  Tsig_atomic* {.importc: "sig_atomic_t", header: "<signal.h>".} = cint
+    ## Possibly volatile-qualified integer type of an object that can be 
+    ## accessed as an atomic entity, even in the presence of asynchronous
+    ## interrupts.
+  Tsigset* {.importc: "sigset_t", header: "<signal.h>", final, pure.} = object
+  
   TsigEvent* {.importc: "struct sigevent", 
-               header: "<signal.h>", final, pure.} = object ## struct sigevent

-    sigev_notify*: cint           ## Notification type. 

-    sigev_signo*: cint            ## Signal number. 

-    sigev_value*: Tsigval         ## Signal value. 

-    sigev_notify_function*: proc (x: TSigval) {.noconv.} ## Notification function. 

-    sigev_notify_attributes*: ptr Tpthreadattr ## Notification attributes.

-

+               header: "<signal.h>", final, pure.} = object ## struct sigevent
+    sigev_notify*: cint           ## Notification type. 
+    sigev_signo*: cint            ## Signal number. 
+    sigev_value*: Tsigval         ## Signal value. 
+    sigev_notify_function*: proc (x: TSigval) {.noconv.} ## Notification function. 
+    sigev_notify_attributes*: ptr Tpthreadattr ## Notification attributes.
+
   TsigVal* {.importc: "union sigval", 
-             header: "<signal.h>", final, pure.} = object ## struct sigval

-    sival_ptr*: pointer ## pointer signal value; 

-                        ## integer signal value not defined!

+             header: "<signal.h>", final, pure.} = object ## struct sigval
+    sival_ptr*: pointer ## pointer signal value; 
+                        ## integer signal value not defined!
   TSigaction* {.importc: "struct sigaction", 
-                header: "<signal.h>", final, pure.} = object ## struct sigaction

-    sa_handler*: proc (x: cint) {.noconv.}  ## Pointer to a signal-catching

-                                            ## function or one of the macros 

-                                            ## SIG_IGN or SIG_DFL. 

-    sa_mask*: TsigSet ## Set of signals to be blocked during execution of 

-                      ## the signal handling function. 

-    sa_flags*: cint   ## Special flags. 

-    sa_sigaction*: proc (x: cint, y: var TSigInfo, z: pointer) {.noconv.}

-

+                header: "<signal.h>", final, pure.} = object ## struct sigaction
+    sa_handler*: proc (x: cint) {.noconv.}  ## Pointer to a signal-catching
+                                            ## function or one of the macros 
+                                            ## SIG_IGN or SIG_DFL. 
+    sa_mask*: TsigSet ## Set of signals to be blocked during execution of 
+                      ## the signal handling function. 
+    sa_flags*: cint   ## Special flags. 
+    sa_sigaction*: proc (x: cint, y: var TSigInfo, z: pointer) {.noconv.}
+
   TStack* {.importc: "stack_t",
-            header: "<signal.h>", final, pure.} = object ## stack_t

-    ss_sp*: pointer  ## Stack base or pointer. 

-    ss_size*: int    ## Stack size. 

-    ss_flags*: cint  ## Flags. 

-

+            header: "<signal.h>", final, pure.} = object ## stack_t
+    ss_sp*: pointer  ## Stack base or pointer. 
+    ss_size*: int    ## Stack size. 
+    ss_flags*: cint  ## Flags. 
+
   TSigStack* {.importc: "struct sigstack", 
-               header: "<signal.h>", final, pure.} = object ## struct sigstack

-    ss_onstack*: cint ## Non-zero when signal stack is in use. 

-    ss_sp*: pointer   ## Signal stack pointer. 

-

+               header: "<signal.h>", final, pure.} = object ## struct sigstack
+    ss_onstack*: cint ## Non-zero when signal stack is in use. 
+    ss_sp*: pointer   ## Signal stack pointer. 
+
   TsigInfo* {.importc: "siginfo_t", 
-              header: "<signal.h>", final, pure.} = object ## siginfo_t

-    si_signo*: cint    ## Signal number. 

-    si_code*: cint     ## Signal code. 

-    si_errno*: cint    ## If non-zero, an errno value associated with 

-                       ## this signal, as defined in <errno.h>. 

-    si_pid*: tpid      ## Sending process ID. 

-    si_uid*: tuid      ## Real user ID of sending process. 

-    si_addr*: pointer  ## Address of faulting instruction. 

-    si_status*: cint   ## Exit value or signal. 

-    si_band*: int      ## Band event for SIGPOLL. 

-    si_value*: TSigval ## Signal value. 

-  

-  Tnl_item* {.importc: "nl_item", header: "<nl_types.h>".} = cint

-  Tnl_catd* {.importc: "nl_catd", header: "<nl_types.h>".} = cint

-

+              header: "<signal.h>", final, pure.} = object ## siginfo_t
+    si_signo*: cint    ## Signal number. 
+    si_code*: cint     ## Signal code. 
+    si_errno*: cint    ## If non-zero, an errno value associated with 
+                       ## this signal, as defined in <errno.h>. 
+    si_pid*: tpid      ## Sending process ID. 
+    si_uid*: tuid      ## Real user ID of sending process. 
+    si_addr*: pointer  ## Address of faulting instruction. 
+    si_status*: cint   ## Exit value or signal. 
+    si_band*: int      ## Band event for SIGPOLL. 
+    si_value*: TSigval ## Signal value. 
+  
+  Tnl_item* {.importc: "nl_item", header: "<nl_types.h>".} = cint
+  Tnl_catd* {.importc: "nl_catd", header: "<nl_types.h>".} = cint
+
   Tsched_param* {.importc: "struct sched_param", 
                   header: "<sched.h>", 
-                  final, pure.} = object ## struct sched_param

-    sched_priority*: cint

-    sched_ss_low_priority*: cint     ## Low scheduling priority for 

-                                     ## sporadic server. 

-    sched_ss_repl_period*: ttimespec ## Replenishment period for 

-                                     ## sporadic server. 

-    sched_ss_init_budget*: ttimespec ## Initial budget for sporadic server. 

-    sched_ss_max_repl*: cint         ## Maximum pending replenishments for 

-                                     ## sporadic server. 

-

+                  final, pure.} = object ## struct sched_param
+    sched_priority*: cint
+    sched_ss_low_priority*: cint     ## Low scheduling priority for 
+                                     ## sporadic server. 
+    sched_ss_repl_period*: ttimespec ## Replenishment period for 
+                                     ## sporadic server. 
+    sched_ss_init_budget*: ttimespec ## Initial budget for sporadic server. 
+    sched_ss_max_repl*: cint         ## Maximum pending replenishments for 
+                                     ## sporadic server. 
+
   Ttimeval* {.importc: "struct timeval", header: "<sys/select.h>", 
-              final, pure.} = object ## struct timeval

-    tv_sec*: ttime       ## Seconds. 

-    tv_usec*: tsuseconds ## Microseconds. 

+              final, pure.} = object ## struct timeval
+    tv_sec*: ttime       ## Seconds. 
+    tv_usec*: tsuseconds ## Microseconds. 
   Tfd_set* {.importc: "struct fd_set", header: "<sys/select.h>", 
-             final, pure.} = object

+             final, pure.} = object
   Tmcontext* {.importc: "mcontext_t", header: "<ucontext.h>", 
-               final, pure.} = object

+               final, pure.} = object
   Tucontext* {.importc: "ucontext_t", header: "<ucontext.h>", 
-               final, pure.} = object ## ucontext_t

-    uc_link*: ptr Tucontext ## Pointer to the context that is resumed 

-                            ## when this context returns. 

-    uc_sigmask*: Tsigset    ## The set of signals that are blocked when this 

-                            ## context is active. 

-    uc_stack*: TStack       ## The stack used by this context. 

-    uc_mcontext*: Tmcontext ## A machine-specific representation of the saved 

-                            ## context. 

-

-when hasAioH:

-  type

+               final, pure.} = object ## ucontext_t
+    uc_link*: ptr Tucontext ## Pointer to the context that is resumed 
+                            ## when this context returns. 
+    uc_sigmask*: Tsigset    ## The set of signals that are blocked when this 
+                            ## context is active. 
+    uc_stack*: TStack       ## The stack used by this context. 
+    uc_mcontext*: Tmcontext ## A machine-specific representation of the saved 
+                            ## context. 
+
+when hasAioH:
+  type
     Taiocb* {.importc: "struct aiocb", header: "<aio.h>", 
-              final, pure.} = object ## struct aiocb

-      aio_fildes*: cint         ## File descriptor. 

-      aio_offset*: TOff         ## File offset. 

-      aio_buf*: pointer         ## Location of buffer. 

-      aio_nbytes*: int          ## Length of transfer. 

-      aio_reqprio*: cint        ## Request priority offset. 

-      aio_sigevent*: TSigEvent  ## Signal number and value. 

-      aio_lio_opcode: cint      ## Operation to be performed. 

- 

-when hasSpawnH:

-  type

+              final, pure.} = object ## struct aiocb
+      aio_fildes*: cint         ## File descriptor. 
+      aio_offset*: TOff         ## File offset. 
+      aio_buf*: pointer         ## Location of buffer. 
+      aio_nbytes*: int          ## Length of transfer. 
+      aio_reqprio*: cint        ## Request priority offset. 
+      aio_sigevent*: TSigEvent  ## Signal number and value. 
+      aio_lio_opcode: cint      ## Operation to be performed. 
+ 
+when hasSpawnH:
+  type
     Tposix_spawnattr* {.importc: "posix_spawnattr_t", 
-                        header: "<spawn.h>".} = cint

+                        header: "<spawn.h>".} = cint
     Tposix_spawn_file_actions* {.importc: "posix_spawn_file_actions_t", 
-                                 header: "<spawn.h>".} = cint 

-

+                                 header: "<spawn.h>".} = cint 
+
 type
   TSocklen* {.importc: "socklen_t", header: "<sys/socket.h>".} = cint
   TSa_Family* {.importc: "sa_family_t", header: "<sys/socket.h>".} = cint
@@ -541,911 +541,911 @@ type
   Tnfds* {.importc: "nfds_t", header: "<poll.h>".} = cint
 
 var
-  errno* {.importc, header: "<errno.h>".}: cint ## error variable

-  daylight* {.importc, header: "<time.h>".}: cint

-  timezone* {.importc, header: "<time.h>".}: int

-  

-# Constants as variables:

-when hasAioH:

-  var

-    AIO_ALLDONE* {.importc, header: "<aio.h>".}: cint

-      ## A return value indicating that none of the requested operations 

-      ## could be canceled since they are already complete.

-    AIO_CANCELED* {.importc, header: "<aio.h>".}: cint

-      ## A return value indicating that all requested operations have

-      ## been canceled.

-    AIO_NOTCANCELED* {.importc, header: "<aio.h>".}: cint

-      ## A return value indicating that some of the requested operations could 

-      ## not be canceled since they are in progress.

-    LIO_NOP* {.importc, header: "<aio.h>".}: cint

-      ## A lio_listio() element operation option indicating that no transfer is

-      ## requested.

-    LIO_NOWAIT* {.importc, header: "<aio.h>".}: cint

-      ## A lio_listio() synchronization operation indicating that the calling 

-      ## thread is to continue execution while the lio_listio() operation is 

-      ## being performed, and no notification is given when the operation is

-      ## complete.

-    LIO_READ* {.importc, header: "<aio.h>".}: cint

-      ## A lio_listio() element operation option requesting a read.

-    LIO_WAIT* {.importc, header: "<aio.h>".}: cint

-      ## A lio_listio() synchronization operation indicating that the calling 

-      ## thread is to suspend until the lio_listio() operation is complete.

-    LIO_WRITE* {.importc, header: "<aio.h>".}: cint

-      ## A lio_listio() element operation option requesting a write.

-

-var

-  RTLD_LAZY* {.importc, header: "<dlfcn.h>".}: cint

-    ## Relocations are performed at an implementation-defined time.

-  RTLD_NOW* {.importc, header: "<dlfcn.h>".}: cint

-    ## Relocations are performed when the object is loaded.

-  RTLD_GLOBAL* {.importc, header: "<dlfcn.h>".}: cint

-    ## All symbols are available for relocation processing of other modules.

-  RTLD_LOCAL* {.importc, header: "<dlfcn.h>".}: cint

-    ## All symbols are not made available for relocation processing by 

-    ## other modules. 

-    

-  E2BIG* {.importc, header: "<errno.h>".}: cint

-      ## Argument list too long.

-  EACCES* {.importc, header: "<errno.h>".}: cint

-      ## Permission denied.

-  EADDRINUSE* {.importc, header: "<errno.h>".}: cint

-      ## Address in use.

-  EADDRNOTAVAIL* {.importc, header: "<errno.h>".}: cint

-      ## Address not available.

-  EAFNOSUPPORT* {.importc, header: "<errno.h>".}: cint

-      ## Address family not supported.

-  EAGAIN* {.importc, header: "<errno.h>".}: cint

-      ## Resource unavailable, try again (may be the same value as [EWOULDBLOCK]).

-  EALREADY* {.importc, header: "<errno.h>".}: cint

-      ## Connection already in progress.

-  EBADF* {.importc, header: "<errno.h>".}: cint

-      ## Bad file descriptor.

-  EBADMSG* {.importc, header: "<errno.h>".}: cint

-      ## Bad message.

-  EBUSY* {.importc, header: "<errno.h>".}: cint

-      ## Device or resource busy.

-  ECANCELED* {.importc, header: "<errno.h>".}: cint

-      ## Operation canceled.

-  ECHILD* {.importc, header: "<errno.h>".}: cint

-      ## No child processes.

-  ECONNABORTED* {.importc, header: "<errno.h>".}: cint

-      ## Connection aborted.

-  ECONNREFUSED* {.importc, header: "<errno.h>".}: cint

-      ## Connection refused.

-  ECONNRESET* {.importc, header: "<errno.h>".}: cint

-      ## Connection reset.

-  EDEADLK* {.importc, header: "<errno.h>".}: cint

-      ## Resource deadlock would occur.

-  EDESTADDRREQ* {.importc, header: "<errno.h>".}: cint

-      ## Destination address required.

-  EDOM* {.importc, header: "<errno.h>".}: cint

-      ## Mathematics argument out of domain of function.

-  EDQUOT* {.importc, header: "<errno.h>".}: cint

-      ## Reserved.

-  EEXIST* {.importc, header: "<errno.h>".}: cint

-      ## File exists.

-  EFAULT* {.importc, header: "<errno.h>".}: cint

-      ## Bad address.

-  EFBIG* {.importc, header: "<errno.h>".}: cint

-      ## File too large.

-  EHOSTUNREACH* {.importc, header: "<errno.h>".}: cint

-      ## Host is unreachable.

-  EIDRM* {.importc, header: "<errno.h>".}: cint

-      ## Identifier removed.

-  EILSEQ* {.importc, header: "<errno.h>".}: cint

-      ## Illegal byte sequence.

-  EINPROGRESS* {.importc, header: "<errno.h>".}: cint

-      ## Operation in progress.

-  EINTR* {.importc, header: "<errno.h>".}: cint

-      ## Interrupted function.

-  EINVAL* {.importc, header: "<errno.h>".}: cint

-      ## Invalid argument.

-  EIO* {.importc, header: "<errno.h>".}: cint

-      ## I/O error.

-  EISCONN* {.importc, header: "<errno.h>".}: cint

-      ## Socket is connected.

-  EISDIR* {.importc, header: "<errno.h>".}: cint

-      ## Is a directory.

-  ELOOP* {.importc, header: "<errno.h>".}: cint

-      ## Too many levels of symbolic links.

-  EMFILE* {.importc, header: "<errno.h>".}: cint

-      ## Too many open files.

-  EMLINK* {.importc, header: "<errno.h>".}: cint

-      ## Too many links.

-  EMSGSIZE* {.importc, header: "<errno.h>".}: cint

-      ## Message too large.

-  EMULTIHOP* {.importc, header: "<errno.h>".}: cint

-      ## Reserved.

-  ENAMETOOLONG* {.importc, header: "<errno.h>".}: cint

-      ## Filename too long.

-  ENETDOWN* {.importc, header: "<errno.h>".}: cint

-      ## Network is down.

-  ENETRESET* {.importc, header: "<errno.h>".}: cint

-      ## Connection aborted by network.

-  ENETUNREACH* {.importc, header: "<errno.h>".}: cint

-      ## Network unreachable.

-  ENFILE* {.importc, header: "<errno.h>".}: cint

-      ## Too many files open in system.

-  ENOBUFS* {.importc, header: "<errno.h>".}: cint

-      ## No buffer space available.

-  ENODATA* {.importc, header: "<errno.h>".}: cint

-      ## No message is available on the STREAM head read queue.

-  ENODEV* {.importc, header: "<errno.h>".}: cint

-      ## No such device.

-  ENOENT* {.importc, header: "<errno.h>".}: cint

-      ## No such file or directory.

-  ENOEXEC* {.importc, header: "<errno.h>".}: cint

-      ## Executable file format error.

-  ENOLCK* {.importc, header: "<errno.h>".}: cint

-      ## No locks available.

-  ENOLINK* {.importc, header: "<errno.h>".}: cint

-      ## Reserved.

-  ENOMEM* {.importc, header: "<errno.h>".}: cint

-      ## Not enough space.

-  ENOMSG* {.importc, header: "<errno.h>".}: cint

-      ## No message of the desired type.

-  ENOPROTOOPT* {.importc, header: "<errno.h>".}: cint

-      ## Protocol not available.

-  ENOSPC* {.importc, header: "<errno.h>".}: cint

-      ## No space left on device.

-  ENOSR* {.importc, header: "<errno.h>".}: cint

-      ## No STREAM resources.

-  ENOSTR* {.importc, header: "<errno.h>".}: cint

-      ## Not a STREAM.

-  ENOSYS* {.importc, header: "<errno.h>".}: cint

-      ## Function not supported.

-  ENOTCONN* {.importc, header: "<errno.h>".}: cint

-      ## The socket is not connected.

-  ENOTDIR* {.importc, header: "<errno.h>".}: cint

-      ## Not a directory.

-  ENOTEMPTY* {.importc, header: "<errno.h>".}: cint

-      ## Directory not empty.

-  ENOTSOCK* {.importc, header: "<errno.h>".}: cint

-      ## Not a socket.

-  ENOTSUP* {.importc, header: "<errno.h>".}: cint

-      ## Not supported.

-  ENOTTY* {.importc, header: "<errno.h>".}: cint

-      ## Inappropriate I/O control operation.

-  ENXIO* {.importc, header: "<errno.h>".}: cint

-      ## No such device or address.

-  EOPNOTSUPP* {.importc, header: "<errno.h>".}: cint

-      ## Operation not supported on socket.

-  EOVERFLOW* {.importc, header: "<errno.h>".}: cint

-      ## Value too large to be stored in data type.

-  EPERM* {.importc, header: "<errno.h>".}: cint

-      ## Operation not permitted.

-  EPIPE* {.importc, header: "<errno.h>".}: cint

-      ## Broken pipe.

-  EPROTO* {.importc, header: "<errno.h>".}: cint

-      ## Protocol error.

-  EPROTONOSUPPORT* {.importc, header: "<errno.h>".}: cint

-      ## Protocol not supported.

-  EPROTOTYPE* {.importc, header: "<errno.h>".}: cint

-      ## Protocol wrong type for socket.

-  ERANGE* {.importc, header: "<errno.h>".}: cint

-      ## Result too large.

-  EROFS* {.importc, header: "<errno.h>".}: cint

-      ## Read-only file system.

-  ESPIPE* {.importc, header: "<errno.h>".}: cint

-      ## Invalid seek.

-  ESRCH* {.importc, header: "<errno.h>".}: cint

-      ## No such process.

-  ESTALE* {.importc, header: "<errno.h>".}: cint

-      ## Reserved.

-  ETIME* {.importc, header: "<errno.h>".}: cint

-      ## Stream ioctl() timeout.

-  ETIMEDOUT* {.importc, header: "<errno.h>".}: cint

-      ## Connection timed out.

-  ETXTBSY* {.importc, header: "<errno.h>".}: cint

-      ## Text file busy.

-  EWOULDBLOCK* {.importc, header: "<errno.h>".}: cint

-      ## Operation would block (may be the same value as [EAGAIN]).

-  EXDEV* {.importc, header: "<errno.h>".}: cint

-      ## Cross-device link.   

-

-  F_DUPFD* {.importc, header: "<fcntl.h>".}: cint

-    ## Duplicate file descriptor.

-  F_GETFD* {.importc, header: "<fcntl.h>".}: cint

-    ## Get file descriptor flags.

-  F_SETFD* {.importc, header: "<fcntl.h>".}: cint

-    ## Set file descriptor flags.

-  F_GETFL* {.importc, header: "<fcntl.h>".}: cint

-    ## Get file status flags and file access modes.

-  F_SETFL* {.importc, header: "<fcntl.h>".}: cint

-    ## Set file status flags.

-  F_GETLK* {.importc, header: "<fcntl.h>".}: cint

-    ## Get record locking information.

-  F_SETLK* {.importc, header: "<fcntl.h>".}: cint

-    ## Set record locking information.

-  F_SETLKW* {.importc, header: "<fcntl.h>".}: cint

-    ## Set record locking information; wait if blocked.

-  F_GETOWN* {.importc, header: "<fcntl.h>".}: cint

-    ## Get process or process group ID to receive SIGURG signals.

-  F_SETOWN* {.importc, header: "<fcntl.h>".}: cint

-    ## Set process or process group ID to receive SIGURG signals. 

-  FD_CLOEXEC* {.importc, header: "<fcntl.h>".}: cint

-    ## Close the file descriptor upon execution of an exec family function. 

-  F_RDLCK* {.importc, header: "<fcntl.h>".}: cint

-    ## Shared or read lock.

-  F_UNLCK* {.importc, header: "<fcntl.h>".}: cint

-    ## Unlock.

-  F_WRLCK* {.importc, header: "<fcntl.h>".}: cint

-    ## Exclusive or write lock. 

-  O_CREAT* {.importc, header: "<fcntl.h>".}: cint

-    ## Create file if it does not exist.

-  O_EXCL* {.importc, header: "<fcntl.h>".}: cint

-    ## Exclusive use flag.

-  O_NOCTTY* {.importc, header: "<fcntl.h>".}: cint

-    ## Do not assign controlling terminal.

-  O_TRUNC* {.importc, header: "<fcntl.h>".}: cint

-    ## Truncate flag. 

-  O_APPEND* {.importc, header: "<fcntl.h>".}: cint

-    ## Set append mode.

-  O_DSYNC* {.importc, header: "<fcntl.h>".}: cint

-    ## Write according to synchronized I/O data integrity completion.

-  O_NONBLOCK* {.importc, header: "<fcntl.h>".}: cint

-    ## Non-blocking mode.

-  O_RSYNC* {.importc, header: "<fcntl.h>".}: cint

-    ## Synchronized read I/O operations.

-  O_SYNC* {.importc, header: "<fcntl.h>".}: cint

-    ## Write according to synchronized I/O file integrity completion. 

-  O_ACCMODE* {.importc, header: "<fcntl.h>".}: cint

-    ## Mask for file access modes.      

-  O_RDONLY* {.importc, header: "<fcntl.h>".}: cint

-    ## Open for reading only.

-  O_RDWR* {.importc, header: "<fcntl.h>".}: cint

-    ## Open for reading and writing.

-  O_WRONLY* {.importc, header: "<fcntl.h>".}: cint

-    ## Open for writing only. 

-  POSIX_FADV_NORMAL* {.importc, header: "<fcntl.h>".}: cint

-    ## The application has no advice to give on its behavior with

-    ## respect to the specified data. It is the default characteristic

-    ## if no advice is given for an open file.

-  POSIX_FADV_SEQUENTIAL* {.importc, header: "<fcntl.h>".}: cint

-    ## The application expects to access the specified data 

-    # sequentially from lower offsets to higher offsets.

-  POSIX_FADV_RANDOM* {.importc, header: "<fcntl.h>".}: cint

-    ## The application expects to access the specified data in a random order.

-  POSIX_FADV_WILLNEED* {.importc, header: "<fcntl.h>".}: cint

-    ## The application expects to access the specified data in the near future.

-  POSIX_FADV_DONTNEED* {.importc, header: "<fcntl.h>".}: cint

-    ## The application expects that it will not access the specified data

-    ## in the near future.

-  POSIX_FADV_NOREUSE* {.importc, header: "<fcntl.h>".}: cint

-    ## The application expects to access the specified data once and 

-    ## then not reuse it thereafter. 

-

-  FE_DIVBYZERO* {.importc, header: "<fenv.h>".}: cint

-  FE_INEXACT* {.importc, header: "<fenv.h>".}: cint

-  FE_INVALID* {.importc, header: "<fenv.h>".}: cint

-  FE_OVERFLOW* {.importc, header: "<fenv.h>".}: cint

-  FE_UNDERFLOW* {.importc, header: "<fenv.h>".}: cint

-  FE_ALL_EXCEPT* {.importc, header: "<fenv.h>".}: cint

-  FE_DOWNWARD* {.importc, header: "<fenv.h>".}: cint

-  FE_TONEAREST* {.importc, header: "<fenv.h>".}: cint

-  FE_TOWARDZERO* {.importc, header: "<fenv.h>".}: cint

-  FE_UPWARD* {.importc, header: "<fenv.h>".}: cint

-  FE_DFL_ENV* {.importc, header: "<fenv.h>".}: cint

-

-  MM_HARD* {.importc, header: "<fmtmsg.h>".}: cint

-    ## Source of the condition is hardware.

-  MM_SOFT* {.importc, header: "<fmtmsg.h>".}: cint

-    ## Source of the condition is software.

-  MM_FIRM* {.importc, header: "<fmtmsg.h>".}: cint

-    ## Source of the condition is firmware.

-  MM_APPL* {.importc, header: "<fmtmsg.h>".}: cint

-    ## Condition detected by application.

-  MM_UTIL* {.importc, header: "<fmtmsg.h>".}: cint

-    ## Condition detected by utility.

-  MM_OPSYS* {.importc, header: "<fmtmsg.h>".}: cint

-    ## Condition detected by operating system.

-  MM_RECOVER* {.importc, header: "<fmtmsg.h>".}: cint

-    ## Recoverable error.

-  MM_NRECOV* {.importc, header: "<fmtmsg.h>".}: cint

-    ## Non-recoverable error.

-  MM_HALT* {.importc, header: "<fmtmsg.h>".}: cint

-    ## Error causing application to halt.

-  MM_ERROR* {.importc, header: "<fmtmsg.h>".}: cint

-    ## Application has encountered a non-fatal fault.

-  MM_WARNING* {.importc, header: "<fmtmsg.h>".}: cint

-    ## Application has detected unusual non-error condition.

-  MM_INFO* {.importc, header: "<fmtmsg.h>".}: cint

-    ## Informative message.

-  MM_NOSEV* {.importc, header: "<fmtmsg.h>".}: cint

-    ## No severity level provided for the message.

-  MM_PRINT* {.importc, header: "<fmtmsg.h>".}: cint

-    ## Display message on standard error.

-  MM_CONSOLE* {.importc, header: "<fmtmsg.h>".}: cint

-    ## Display message on system console. 

-

-  MM_OK* {.importc, header: "<fmtmsg.h>".}: cint

-    ## The function succeeded.

-  MM_NOTOK* {.importc, header: "<fmtmsg.h>".}: cint

-    ## The function failed completely.

-  MM_NOMSG* {.importc, header: "<fmtmsg.h>".}: cint

-    ## The function was unable to generate a message on standard error, 

-    ## but otherwise succeeded.

-  MM_NOCON* {.importc, header: "<fmtmsg.h>".}: cint

-    ## The function was unable to generate a console message, but 

-    ## otherwise succeeded. 

-    

-  FNM_NOMATCH* {.importc, header: "<fnmatch.h>".}: cint

-    ## The string does not match the specified pattern.

-  FNM_PATHNAME* {.importc, header: "<fnmatch.h>".}: cint

-    ## Slash in string only matches slash in pattern.

-  FNM_PERIOD* {.importc, header: "<fnmatch.h>".}: cint

-    ## Leading period in string must be exactly matched by period in pattern.

-  FNM_NOESCAPE* {.importc, header: "<fnmatch.h>".}: cint

-    ## Disable backslash escaping.

-  FNM_NOSYS* {.importc, header: "<fnmatch.h>".}: cint

-    ## Reserved.

-

-  FTW_F* {.importc, header: "<ftw.h>".}: cint

-    ## File.

-  FTW_D* {.importc, header: "<ftw.h>".}: cint

-    ## Directory.

-  FTW_DNR* {.importc, header: "<ftw.h>".}: cint

-    ## Directory without read permission.

-  FTW_DP* {.importc, header: "<ftw.h>".}: cint

-    ## Directory with subdirectories visited.

-  FTW_NS* {.importc, header: "<ftw.h>".}: cint

-    ## Unknown type; stat() failed.

-  FTW_SL* {.importc, header: "<ftw.h>".}: cint

-    ## Symbolic link.

-  FTW_SLN* {.importc, header: "<ftw.h>".}: cint

-    ## Symbolic link that names a nonexistent file.

-

-  FTW_PHYS* {.importc, header: "<ftw.h>".}: cint

-    ## Physical walk, does not follow symbolic links. Otherwise, nftw() 

-    ## follows links but does not walk down any path that crosses itself.

-  FTW_MOUNT* {.importc, header: "<ftw.h>".}: cint

-    ## The walk does not cross a mount point.

-  FTW_DEPTH* {.importc, header: "<ftw.h>".}: cint

-    ## All subdirectories are visited before the directory itself.

-  FTW_CHDIR* {.importc, header: "<ftw.h>".}: cint

-    ## The walk changes to each directory before reading it. 

-

-  GLOB_APPEND* {.importc, header: "<glob.h>".}: cint

-    ## Append generated pathnames to those previously obtained.

-  GLOB_DOOFFS* {.importc, header: "<glob.h>".}: cint

-    ## Specify how many null pointers to add to the beginning of gl_pathv.

-  GLOB_ERR* {.importc, header: "<glob.h>".}: cint

-    ## Cause glob() to return on error.

-  GLOB_MARK* {.importc, header: "<glob.h>".}: cint

-    ## Each pathname that is a directory that matches pattern has a 

-    ## slash appended.

-  GLOB_NOCHECK* {.importc, header: "<glob.h>".}: cint

-    ## If pattern does not match any pathname, then return a list

-    ## consisting of only pattern.

-  GLOB_NOESCAPE* {.importc, header: "<glob.h>".}: cint

-    ## Disable backslash escaping.

-  GLOB_NOSORT* {.importc, header: "<glob.h>".}: cint

-    ## Do not sort the pathnames returned.

-  GLOB_ABORTED* {.importc, header: "<glob.h>".}: cint

-    ## The scan was stopped because GLOB_ERR was set or errfunc() 

-    ## returned non-zero.

-  GLOB_NOMATCH* {.importc, header: "<glob.h>".}: cint

-    ## The pattern does not match any existing pathname, and GLOB_NOCHECK 

-    ## was not set in flags.

-  GLOB_NOSPACE* {.importc, header: "<glob.h>".}: cint

-    ## An attempt to allocate memory failed.

-  GLOB_NOSYS* {.importc, header: "<glob.h>".}: cint

-    ## Reserved

-

-  CODESET* {.importc, header: "<langinfo.h>".}: cint

-    ## Codeset name.

-  D_T_FMT* {.importc, header: "<langinfo.h>".}: cint

-    ## String for formatting date and time.

-  D_FMT * {.importc, header: "<langinfo.h>".}: cint

-    ## Date format string.

-  T_FMT* {.importc, header: "<langinfo.h>".}: cint

-    ## Time format string.

-  T_FMT_AMPM* {.importc, header: "<langinfo.h>".}: cint

-    ## a.m. or p.m. time format string.

-  AM_STR* {.importc, header: "<langinfo.h>".}: cint

-    ## Ante-meridiem affix.

-  PM_STR* {.importc, header: "<langinfo.h>".}: cint

-    ## Post-meridiem affix.

-  DAY_1* {.importc, header: "<langinfo.h>".}: cint

-    ## Name of the first day of the week (for example, Sunday).

-  DAY_2* {.importc, header: "<langinfo.h>".}: cint

-    ## Name of the second day of the week (for example, Monday).

-  DAY_3* {.importc, header: "<langinfo.h>".}: cint

-    ## Name of the third day of the week (for example, Tuesday).

-  DAY_4* {.importc, header: "<langinfo.h>".}: cint

-    ## Name of the fourth day of the week (for example, Wednesday).

-  DAY_5* {.importc, header: "<langinfo.h>".}: cint

-    ## Name of the fifth day of the week (for example, Thursday).

-  DAY_6* {.importc, header: "<langinfo.h>".}: cint

-    ## Name of the sixth day of the week (for example, Friday).

-  DAY_7* {.importc, header: "<langinfo.h>".}: cint

-    ## Name of the seventh day of the week (for example, Saturday).

-  ABDAY_1* {.importc, header: "<langinfo.h>".}: cint

-    ## Abbreviated name of the first day of the week.

-  ABDAY_2* {.importc, header: "<langinfo.h>".}: cint

-  ABDAY_3* {.importc, header: "<langinfo.h>".}: cint

-  ABDAY_4* {.importc, header: "<langinfo.h>".}: cint

-  ABDAY_5* {.importc, header: "<langinfo.h>".}: cint

-  ABDAY_6* {.importc, header: "<langinfo.h>".}: cint

-  ABDAY_7* {.importc, header: "<langinfo.h>".}: cint

-  MON_1* {.importc, header: "<langinfo.h>".}: cint

-    ## Name of the first month of the year.

-  MON_2* {.importc, header: "<langinfo.h>".}: cint

-  MON_3* {.importc, header: "<langinfo.h>".}: cint

-  MON_4* {.importc, header: "<langinfo.h>".}: cint

-  MON_5* {.importc, header: "<langinfo.h>".}: cint

-  MON_6* {.importc, header: "<langinfo.h>".}: cint

-  MON_7* {.importc, header: "<langinfo.h>".}: cint

-  MON_8* {.importc, header: "<langinfo.h>".}: cint

-  MON_9* {.importc, header: "<langinfo.h>".}: cint

-  MON_10* {.importc, header: "<langinfo.h>".}: cint

-  MON_11* {.importc, header: "<langinfo.h>".}: cint

-  MON_12* {.importc, header: "<langinfo.h>".}: cint

-  ABMON_1* {.importc, header: "<langinfo.h>".}: cint

-    ## Abbreviated name of the first month.

-  ABMON_2* {.importc, header: "<langinfo.h>".}: cint

-  ABMON_3* {.importc, header: "<langinfo.h>".}: cint

-  ABMON_4* {.importc, header: "<langinfo.h>".}: cint

-  ABMON_5* {.importc, header: "<langinfo.h>".}: cint

-  ABMON_6* {.importc, header: "<langinfo.h>".}: cint

-  ABMON_7* {.importc, header: "<langinfo.h>".}: cint

-  ABMON_8* {.importc, header: "<langinfo.h>".}: cint

-  ABMON_9* {.importc, header: "<langinfo.h>".}: cint

-  ABMON_10* {.importc, header: "<langinfo.h>".}: cint

-  ABMON_11* {.importc, header: "<langinfo.h>".}: cint

-  ABMON_12* {.importc, header: "<langinfo.h>".}: cint

-  ERA* {.importc, header: "<langinfo.h>".}: cint

-    ## Era description segments.

-  ERA_D_FMT* {.importc, header: "<langinfo.h>".}: cint

-    ## Era date format string.

-  ERA_D_T_FMT* {.importc, header: "<langinfo.h>".}: cint

-    ## Era date and time format string.

-  ERA_T_FMT* {.importc, header: "<langinfo.h>".}: cint

-    ## Era time format string.

-  ALT_DIGITS* {.importc, header: "<langinfo.h>".}: cint

-    ## Alternative symbols for digits.

-  RADIXCHAR* {.importc, header: "<langinfo.h>".}: cint

-    ## Radix character.

-  THOUSEP* {.importc, header: "<langinfo.h>".}: cint

-    ## Separator for thousands.

-  YESEXPR* {.importc, header: "<langinfo.h>".}: cint

-    ## Affirmative response expression.

-  NOEXPR* {.importc, header: "<langinfo.h>".}: cint

-    ## Negative response expression.

-  CRNCYSTR* {.importc, header: "<langinfo.h>".}: cint

-    ## Local currency symbol, preceded by '-' if the symbol 

-    ## should appear before the value, '+' if the symbol should appear 

-    ## after the value, or '.' if the symbol should replace the radix

-    ## character. If the local currency symbol is the empty string, 

-    ## implementations may return the empty string ( "" ).

-

-  LC_ALL* {.importc, header: "<locale.h>".}: cint

-  LC_COLLATE* {.importc, header: "<locale.h>".}: cint

-  LC_CTYPE* {.importc, header: "<locale.h>".}: cint

-  LC_MESSAGES* {.importc, header: "<locale.h>".}: cint

-  LC_MONETARY* {.importc, header: "<locale.h>".}: cint

-  LC_NUMERIC* {.importc, header: "<locale.h>".}: cint

-  LC_TIME* {.importc, header: "<locale.h>".}: cint

-  

-  PTHREAD_BARRIER_SERIAL_THREAD* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_CANCEL_ASYNCHRONOUS* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_CANCEL_ENABLE* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_CANCEL_DEFERRED* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_CANCEL_DISABLE* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_CANCELED* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_COND_INITIALIZER* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_CREATE_DETACHED* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_CREATE_JOINABLE* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_EXPLICIT_SCHED* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_INHERIT_SCHED* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_MUTEX_DEFAULT* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_MUTEX_ERRORCHECK* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_MUTEX_INITIALIZER* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_MUTEX_NORMAL* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_MUTEX_RECURSIVE* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_ONCE_INIT* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_PRIO_INHERIT* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_PRIO_NONE* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_PRIO_PROTECT* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_PROCESS_SHARED* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_PROCESS_PRIVATE* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_SCOPE_PROCESS* {.importc, header: "<pthread.h>".}: cint

-  PTHREAD_SCOPE_SYSTEM* {.importc, header: "<pthread.h>".}: cint

-

-  POSIX_ASYNC_IO* {.importc: "_POSIX_ASYNC_IO", header: "<unistd.h>".}: cint

-  POSIX_PRIO_IO* {.importc: "_POSIX_PRIO_IO", header: "<unistd.h>".}: cint

-  POSIX_SYNC_IO* {.importc: "_POSIX_SYNC_IO", header: "<unistd.h>".}: cint

-  F_OK* {.importc: "F_OK", header: "<unistd.h>".}: cint

-  R_OK* {.importc: "R_OK", header: "<unistd.h>".}: cint

-  W_OK* {.importc: "W_OK", header: "<unistd.h>".}: cint

-  X_OK* {.importc: "X_OK", header: "<unistd.h>".}: cint

-

-  CS_PATH* {.importc: "_CS_PATH", header: "<unistd.h>".}: cint

-  CS_POSIX_V6_ILP32_OFF32_CFLAGS* {.importc: "_CS_POSIX_V6_ILP32_OFF32_CFLAGS", header: "<unistd.h>".}: cint

-  CS_POSIX_V6_ILP32_OFF32_LDFLAGS* {.importc: "_CS_POSIX_V6_ILP32_OFF32_LDFLAGS", header: "<unistd.h>".}: cint

-  CS_POSIX_V6_ILP32_OFF32_LIBS* {.importc: "_CS_POSIX_V6_ILP32_OFF32_LIBS", header: "<unistd.h>".}: cint

-  CS_POSIX_V6_ILP32_OFFBIG_CFLAGS* {.importc: "_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS", header: "<unistd.h>".}: cint

-  CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS* {.importc: "_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS", header: "<unistd.h>".}: cint

-  CS_POSIX_V6_ILP32_OFFBIG_LIBS* {.importc: "_CS_POSIX_V6_ILP32_OFFBIG_LIBS", header: "<unistd.h>".}: cint

-  CS_POSIX_V6_LP64_OFF64_CFLAGS* {.importc: "_CS_POSIX_V6_LP64_OFF64_CFLAGS", header: "<unistd.h>".}: cint

-  CS_POSIX_V6_LP64_OFF64_LDFLAGS* {.importc: "_CS_POSIX_V6_LP64_OFF64_LDFLAGS", header: "<unistd.h>".}: cint

-  CS_POSIX_V6_LP64_OFF64_LIBS* {.importc: "_CS_POSIX_V6_LP64_OFF64_LIBS", header: "<unistd.h>".}: cint

-  CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS* {.importc: "_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS", header: "<unistd.h>".}: cint

-  CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS* {.importc: "_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS", header: "<unistd.h>".}: cint

-  CS_POSIX_V6_LPBIG_OFFBIG_LIBS* {.importc: "_CS_POSIX_V6_LPBIG_OFFBIG_LIBS", header: "<unistd.h>".}: cint

-  CS_POSIX_V6_WIDTH_RESTRICTED_ENVS* {.importc: "_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS", header: "<unistd.h>".}: cint

-  F_LOCK* {.importc: "F_LOCK", header: "<unistd.h>".}: cint

-  F_TEST* {.importc: "F_TEST", header: "<unistd.h>".}: cint

-  F_TLOCK* {.importc: "F_TLOCK", header: "<unistd.h>".}: cint

-  F_ULOCK* {.importc: "F_ULOCK", header: "<unistd.h>".}: cint

-  PC_2_SYMLINKS* {.importc: "_PC_2_SYMLINKS", header: "<unistd.h>".}: cint

-  PC_ALLOC_SIZE_MIN* {.importc: "_PC_ALLOC_SIZE_MIN", header: "<unistd.h>".}: cint

-  PC_ASYNC_IO* {.importc: "_PC_ASYNC_IO", header: "<unistd.h>".}: cint

-  PC_CHOWN_RESTRICTED* {.importc: "_PC_CHOWN_RESTRICTED", header: "<unistd.h>".}: cint

-  PC_FILESIZEBITS* {.importc: "_PC_FILESIZEBITS", header: "<unistd.h>".}: cint

-  PC_LINK_MAX* {.importc: "_PC_LINK_MAX", header: "<unistd.h>".}: cint

-  PC_MAX_CANON* {.importc: "_PC_MAX_CANON", header: "<unistd.h>".}: cint

-

-  PC_MAX_INPUT*{.importc: "_PC_MAX_INPUT", header: "<unistd.h>".}: cint

-  PC_NAME_MAX*{.importc: "_PC_NAME_MAX", header: "<unistd.h>".}: cint

-  PC_NO_TRUNC*{.importc: "_PC_NO_TRUNC", header: "<unistd.h>".}: cint

-  PC_PATH_MAX*{.importc: "_PC_PATH_MAX", header: "<unistd.h>".}: cint

-  PC_PIPE_BUF*{.importc: "_PC_PIPE_BUF", header: "<unistd.h>".}: cint

-  PC_PRIO_IO*{.importc: "_PC_PRIO_IO", header: "<unistd.h>".}: cint

-  PC_REC_INCR_XFER_SIZE*{.importc: "_PC_REC_INCR_XFER_SIZE", header: "<unistd.h>".}: cint

-  PC_REC_MIN_XFER_SIZE*{.importc: "_PC_REC_MIN_XFER_SIZE", header: "<unistd.h>".}: cint

-  PC_REC_XFER_ALIGN*{.importc: "_PC_REC_XFER_ALIGN", header: "<unistd.h>".}: cint

-  PC_SYMLINK_MAX*{.importc: "_PC_SYMLINK_MAX", header: "<unistd.h>".}: cint

-  PC_SYNC_IO*{.importc: "_PC_SYNC_IO", header: "<unistd.h>".}: cint

-  PC_VDISABLE*{.importc: "_PC_VDISABLE", header: "<unistd.h>".}: cint

-  SC_2_C_BIND*{.importc: "_SC_2_C_BIND", header: "<unistd.h>".}: cint

-  SC_2_C_DEV*{.importc: "_SC_2_C_DEV", header: "<unistd.h>".}: cint

-  SC_2_CHAR_TERM*{.importc: "_SC_2_CHAR_TERM", header: "<unistd.h>".}: cint

-  SC_2_FORT_DEV*{.importc: "_SC_2_FORT_DEV", header: "<unistd.h>".}: cint

-  SC_2_FORT_RUN*{.importc: "_SC_2_FORT_RUN", header: "<unistd.h>".}: cint

-  SC_2_LOCALEDEF*{.importc: "_SC_2_LOCALEDEF", header: "<unistd.h>".}: cint

-  SC_2_PBS*{.importc: "_SC_2_PBS", header: "<unistd.h>".}: cint

-  SC_2_PBS_ACCOUNTING*{.importc: "_SC_2_PBS_ACCOUNTING", header: "<unistd.h>".}: cint

-  SC_2_PBS_CHECKPOINT*{.importc: "_SC_2_PBS_CHECKPOINT", header: "<unistd.h>".}: cint

-  SC_2_PBS_LOCATE*{.importc: "_SC_2_PBS_LOCATE", header: "<unistd.h>".}: cint

-  SC_2_PBS_MESSAGE*{.importc: "_SC_2_PBS_MESSAGE", header: "<unistd.h>".}: cint

-  SC_2_PBS_TRACK*{.importc: "_SC_2_PBS_TRACK", header: "<unistd.h>".}: cint

-  SC_2_SW_DEV*{.importc: "_SC_2_SW_DEV", header: "<unistd.h>".}: cint

-  SC_2_UPE*{.importc: "_SC_2_UPE", header: "<unistd.h>".}: cint

-  SC_2_VERSION*{.importc: "_SC_2_VERSION", header: "<unistd.h>".}: cint

-  SC_ADVISORY_INFO*{.importc: "_SC_ADVISORY_INFO", header: "<unistd.h>".}: cint

-  SC_AIO_LISTIO_MAX*{.importc: "_SC_AIO_LISTIO_MAX", header: "<unistd.h>".}: cint

-  SC_AIO_MAX*{.importc: "_SC_AIO_MAX", header: "<unistd.h>".}: cint

-  SC_AIO_PRIO_DELTA_MAX*{.importc: "_SC_AIO_PRIO_DELTA_MAX", header: "<unistd.h>".}: cint

-  SC_ARG_MAX*{.importc: "_SC_ARG_MAX", header: "<unistd.h>".}: cint

-  SC_ASYNCHRONOUS_IO*{.importc: "_SC_ASYNCHRONOUS_IO", header: "<unistd.h>".}: cint

-  SC_ATEXIT_MAX*{.importc: "_SC_ATEXIT_MAX", header: "<unistd.h>".}: cint

-  SC_BARRIERS*{.importc: "_SC_BARRIERS", header: "<unistd.h>".}: cint

-  SC_BC_BASE_MAX*{.importc: "_SC_BC_BASE_MAX", header: "<unistd.h>".}: cint

-  SC_BC_DIM_MAX*{.importc: "_SC_BC_DIM_MAX", header: "<unistd.h>".}: cint

-  SC_BC_SCALE_MAX*{.importc: "_SC_BC_SCALE_MAX", header: "<unistd.h>".}: cint

-  SC_BC_STRING_MAX*{.importc: "_SC_BC_STRING_MAX", header: "<unistd.h>".}: cint

-  SC_CHILD_MAX*{.importc: "_SC_CHILD_MAX", header: "<unistd.h>".}: cint

-  SC_CLK_TCK*{.importc: "_SC_CLK_TCK", header: "<unistd.h>".}: cint

-  SC_CLOCK_SELECTION*{.importc: "_SC_CLOCK_SELECTION", header: "<unistd.h>".}: cint

-  SC_COLL_WEIGHTS_MAX*{.importc: "_SC_COLL_WEIGHTS_MAX", header: "<unistd.h>".}: cint

-  SC_CPUTIME*{.importc: "_SC_CPUTIME", header: "<unistd.h>".}: cint

-  SC_DELAYTIMER_MAX*{.importc: "_SC_DELAYTIMER_MAX", header: "<unistd.h>".}: cint

-  SC_EXPR_NEST_MAX*{.importc: "_SC_EXPR_NEST_MAX", header: "<unistd.h>".}: cint

-  SC_FSYNC*{.importc: "_SC_FSYNC", header: "<unistd.h>".}: cint

-  SC_GETGR_R_SIZE_MAX*{.importc: "_SC_GETGR_R_SIZE_MAX", header: "<unistd.h>".}: cint

-  SC_GETPW_R_SIZE_MAX*{.importc: "_SC_GETPW_R_SIZE_MAX", header: "<unistd.h>".}: cint

-  SC_HOST_NAME_MAX*{.importc: "_SC_HOST_NAME_MAX", header: "<unistd.h>".}: cint

-  SC_IOV_MAX*{.importc: "_SC_IOV_MAX", header: "<unistd.h>".}: cint

-  SC_IPV6*{.importc: "_SC_IPV6", header: "<unistd.h>".}: cint

-  SC_JOB_CONTROL*{.importc: "_SC_JOB_CONTROL", header: "<unistd.h>".}: cint

-  SC_LINE_MAX*{.importc: "_SC_LINE_MAX", header: "<unistd.h>".}: cint

-  SC_LOGIN_NAME_MAX*{.importc: "_SC_LOGIN_NAME_MAX", header: "<unistd.h>".}: cint

-  SC_MAPPED_FILES*{.importc: "_SC_MAPPED_FILES", header: "<unistd.h>".}: cint

-  SC_MEMLOCK*{.importc: "_SC_MEMLOCK", header: "<unistd.h>".}: cint

-  SC_MEMLOCK_RANGE*{.importc: "_SC_MEMLOCK_RANGE", header: "<unistd.h>".}: cint

-  SC_MEMORY_PROTECTION*{.importc: "_SC_MEMORY_PROTECTION", header: "<unistd.h>".}: cint

-  SC_MESSAGE_PASSING*{.importc: "_SC_MESSAGE_PASSING", header: "<unistd.h>".}: cint

-  SC_MONOTONIC_CLOCK*{.importc: "_SC_MONOTONIC_CLOCK", header: "<unistd.h>".}: cint

-  SC_MQ_OPEN_MAX*{.importc: "_SC_MQ_OPEN_MAX", header: "<unistd.h>".}: cint

-  SC_MQ_PRIO_MAX*{.importc: "_SC_MQ_PRIO_MAX", header: "<unistd.h>".}: cint

-  SC_NGROUPS_MAX*{.importc: "_SC_NGROUPS_MAX", header: "<unistd.h>".}: cint

-  SC_OPEN_MAX*{.importc: "_SC_OPEN_MAX", header: "<unistd.h>".}: cint

-  SC_PAGE_SIZE*{.importc: "_SC_PAGE_SIZE", header: "<unistd.h>".}: cint

-  SC_PRIORITIZED_IO*{.importc: "_SC_PRIORITIZED_IO", header: "<unistd.h>".}: cint

-  SC_PRIORITY_SCHEDULING*{.importc: "_SC_PRIORITY_SCHEDULING", header: "<unistd.h>".}: cint

-  SC_RAW_SOCKETS*{.importc: "_SC_RAW_SOCKETS", header: "<unistd.h>".}: cint

-  SC_RE_DUP_MAX*{.importc: "_SC_RE_DUP_MAX", header: "<unistd.h>".}: cint

-  SC_READER_WRITER_LOCKS*{.importc: "_SC_READER_WRITER_LOCKS", header: "<unistd.h>".}: cint

-  SC_REALTIME_SIGNALS*{.importc: "_SC_REALTIME_SIGNALS", header: "<unistd.h>".}: cint

-  SC_REGEXP*{.importc: "_SC_REGEXP", header: "<unistd.h>".}: cint

-  SC_RTSIG_MAX*{.importc: "_SC_RTSIG_MAX", header: "<unistd.h>".}: cint

-  SC_SAVED_IDS*{.importc: "_SC_SAVED_IDS", header: "<unistd.h>".}: cint

-  SC_SEM_NSEMS_MAX*{.importc: "_SC_SEM_NSEMS_MAX", header: "<unistd.h>".}: cint

-  SC_SEM_VALUE_MAX*{.importc: "_SC_SEM_VALUE_MAX", header: "<unistd.h>".}: cint

-  SC_SEMAPHORES*{.importc: "_SC_SEMAPHORES", header: "<unistd.h>".}: cint

-  SC_SHARED_MEMORY_OBJECTS*{.importc: "_SC_SHARED_MEMORY_OBJECTS", header: "<unistd.h>".}: cint

-  SC_SHELL*{.importc: "_SC_SHELL", header: "<unistd.h>".}: cint

-  SC_SIGQUEUE_MAX*{.importc: "_SC_SIGQUEUE_MAX", header: "<unistd.h>".}: cint

-  SC_SPAWN*{.importc: "_SC_SPAWN", header: "<unistd.h>".}: cint

-  SC_SPIN_LOCKS*{.importc: "_SC_SPIN_LOCKS", header: "<unistd.h>".}: cint

-  SC_SPORADIC_SERVER*{.importc: "_SC_SPORADIC_SERVER", header: "<unistd.h>".}: cint

-  SC_SS_REPL_MAX*{.importc: "_SC_SS_REPL_MAX", header: "<unistd.h>".}: cint

-  SC_STREAM_MAX*{.importc: "_SC_STREAM_MAX", header: "<unistd.h>".}: cint

-  SC_SYMLOOP_MAX*{.importc: "_SC_SYMLOOP_MAX", header: "<unistd.h>".}: cint

-  SC_SYNCHRONIZED_IO*{.importc: "_SC_SYNCHRONIZED_IO", header: "<unistd.h>".}: cint

-  SC_THREAD_ATTR_STACKADDR*{.importc: "_SC_THREAD_ATTR_STACKADDR", header: "<unistd.h>".}: cint

-  SC_THREAD_ATTR_STACKSIZE*{.importc: "_SC_THREAD_ATTR_STACKSIZE", header: "<unistd.h>".}: cint

-  SC_THREAD_CPUTIME*{.importc: "_SC_THREAD_CPUTIME", header: "<unistd.h>".}: cint

-  SC_THREAD_DESTRUCTOR_ITERATIONS*{.importc: "_SC_THREAD_DESTRUCTOR_ITERATIONS", header: "<unistd.h>".}: cint

-  SC_THREAD_KEYS_MAX*{.importc: "_SC_THREAD_KEYS_MAX", header: "<unistd.h>".}: cint

-  SC_THREAD_PRIO_INHERIT*{.importc: "_SC_THREAD_PRIO_INHERIT", header: "<unistd.h>".}: cint

-  SC_THREAD_PRIO_PROTECT*{.importc: "_SC_THREAD_PRIO_PROTECT", header: "<unistd.h>".}: cint

-  SC_THREAD_PRIORITY_SCHEDULING*{.importc: "_SC_THREAD_PRIORITY_SCHEDULING", header: "<unistd.h>".}: cint

-  SC_THREAD_PROCESS_SHARED*{.importc: "_SC_THREAD_PROCESS_SHARED", header: "<unistd.h>".}: cint

-  SC_THREAD_SAFE_FUNCTIONS*{.importc: "_SC_THREAD_SAFE_FUNCTIONS", header: "<unistd.h>".}: cint

-  SC_THREAD_SPORADIC_SERVER*{.importc: "_SC_THREAD_SPORADIC_SERVER", header: "<unistd.h>".}: cint

-  SC_THREAD_STACK_MIN*{.importc: "_SC_THREAD_STACK_MIN", header: "<unistd.h>".}: cint

-  SC_THREAD_THREADS_MAX*{.importc: "_SC_THREAD_THREADS_MAX", header: "<unistd.h>".}: cint

-  SC_THREADS*{.importc: "_SC_THREADS", header: "<unistd.h>".}: cint

-  SC_TIMEOUTS*{.importc: "_SC_TIMEOUTS", header: "<unistd.h>".}: cint

-  SC_TIMER_MAX*{.importc: "_SC_TIMER_MAX", header: "<unistd.h>".}: cint

-  SC_TIMERS*{.importc: "_SC_TIMERS", header: "<unistd.h>".}: cint

-  SC_TRACE*{.importc: "_SC_TRACE", header: "<unistd.h>".}: cint

-  SC_TRACE_EVENT_FILTER*{.importc: "_SC_TRACE_EVENT_FILTER", header: "<unistd.h>".}: cint

-  SC_TRACE_EVENT_NAME_MAX*{.importc: "_SC_TRACE_EVENT_NAME_MAX", header: "<unistd.h>".}: cint

-  SC_TRACE_INHERIT*{.importc: "_SC_TRACE_INHERIT", header: "<unistd.h>".}: cint

-  SC_TRACE_LOG*{.importc: "_SC_TRACE_LOG", header: "<unistd.h>".}: cint

-  SC_TRACE_NAME_MAX*{.importc: "_SC_TRACE_NAME_MAX", header: "<unistd.h>".}: cint

-  SC_TRACE_SYS_MAX*{.importc: "_SC_TRACE_SYS_MAX", header: "<unistd.h>".}: cint

-  SC_TRACE_USER_EVENT_MAX*{.importc: "_SC_TRACE_USER_EVENT_MAX", header: "<unistd.h>".}: cint

-  SC_TTY_NAME_MAX*{.importc: "_SC_TTY_NAME_MAX", header: "<unistd.h>".}: cint

-  SC_TYPED_MEMORY_OBJECTS*{.importc: "_SC_TYPED_MEMORY_OBJECTS", header: "<unistd.h>".}: cint

-  SC_TZNAME_MAX*{.importc: "_SC_TZNAME_MAX", header: "<unistd.h>".}: cint

-  SC_V6_ILP32_OFF32*{.importc: "_SC_V6_ILP32_OFF32", header: "<unistd.h>".}: cint

-  SC_V6_ILP32_OFFBIG*{.importc: "_SC_V6_ILP32_OFFBIG", header: "<unistd.h>".}: cint

-  SC_V6_LP64_OFF64*{.importc: "_SC_V6_LP64_OFF64", header: "<unistd.h>".}: cint

-  SC_V6_LPBIG_OFFBIG*{.importc: "_SC_V6_LPBIG_OFFBIG", header: "<unistd.h>".}: cint

-  SC_VERSION*{.importc: "_SC_VERSION", header: "<unistd.h>".}: cint

-  SC_XBS5_ILP32_OFF32*{.importc: "_SC_XBS5_ILP32_OFF32", header: "<unistd.h>".}: cint

-  SC_XBS5_ILP32_OFFBIG*{.importc: "_SC_XBS5_ILP32_OFFBIG", header: "<unistd.h>".}: cint

-  SC_XBS5_LP64_OFF64*{.importc: "_SC_XBS5_LP64_OFF64", header: "<unistd.h>".}: cint

+  errno* {.importc, header: "<errno.h>".}: cint ## error variable
+  daylight* {.importc, header: "<time.h>".}: cint
+  timezone* {.importc, header: "<time.h>".}: int
+  
+# Constants as variables:
+when hasAioH:
+  var
+    AIO_ALLDONE* {.importc, header: "<aio.h>".}: cint
+      ## A return value indicating that none of the requested operations 
+      ## could be canceled since they are already complete.
+    AIO_CANCELED* {.importc, header: "<aio.h>".}: cint
+      ## A return value indicating that all requested operations have
+      ## been canceled.
+    AIO_NOTCANCELED* {.importc, header: "<aio.h>".}: cint
+      ## A return value indicating that some of the requested operations could 
+      ## not be canceled since they are in progress.
+    LIO_NOP* {.importc, header: "<aio.h>".}: cint
+      ## A lio_listio() element operation option indicating that no transfer is
+      ## requested.
+    LIO_NOWAIT* {.importc, header: "<aio.h>".}: cint
+      ## A lio_listio() synchronization operation indicating that the calling 
+      ## thread is to continue execution while the lio_listio() operation is 
+      ## being performed, and no notification is given when the operation is
+      ## complete.
+    LIO_READ* {.importc, header: "<aio.h>".}: cint
+      ## A lio_listio() element operation option requesting a read.
+    LIO_WAIT* {.importc, header: "<aio.h>".}: cint
+      ## A lio_listio() synchronization operation indicating that the calling 
+      ## thread is to suspend until the lio_listio() operation is complete.
+    LIO_WRITE* {.importc, header: "<aio.h>".}: cint
+      ## A lio_listio() element operation option requesting a write.
+
+var
+  RTLD_LAZY* {.importc, header: "<dlfcn.h>".}: cint
+    ## Relocations are performed at an implementation-defined time.
+  RTLD_NOW* {.importc, header: "<dlfcn.h>".}: cint
+    ## Relocations are performed when the object is loaded.
+  RTLD_GLOBAL* {.importc, header: "<dlfcn.h>".}: cint
+    ## All symbols are available for relocation processing of other modules.
+  RTLD_LOCAL* {.importc, header: "<dlfcn.h>".}: cint
+    ## All symbols are not made available for relocation processing by 
+    ## other modules. 
+    
+  E2BIG* {.importc, header: "<errno.h>".}: cint
+      ## Argument list too long.
+  EACCES* {.importc, header: "<errno.h>".}: cint
+      ## Permission denied.
+  EADDRINUSE* {.importc, header: "<errno.h>".}: cint
+      ## Address in use.
+  EADDRNOTAVAIL* {.importc, header: "<errno.h>".}: cint
+      ## Address not available.
+  EAFNOSUPPORT* {.importc, header: "<errno.h>".}: cint
+      ## Address family not supported.
+  EAGAIN* {.importc, header: "<errno.h>".}: cint
+      ## Resource unavailable, try again (may be the same value as [EWOULDBLOCK]).
+  EALREADY* {.importc, header: "<errno.h>".}: cint
+      ## Connection already in progress.
+  EBADF* {.importc, header: "<errno.h>".}: cint
+      ## Bad file descriptor.
+  EBADMSG* {.importc, header: "<errno.h>".}: cint
+      ## Bad message.
+  EBUSY* {.importc, header: "<errno.h>".}: cint
+      ## Device or resource busy.
+  ECANCELED* {.importc, header: "<errno.h>".}: cint
+      ## Operation canceled.
+  ECHILD* {.importc, header: "<errno.h>".}: cint
+      ## No child processes.
+  ECONNABORTED* {.importc, header: "<errno.h>".}: cint
+      ## Connection aborted.
+  ECONNREFUSED* {.importc, header: "<errno.h>".}: cint
+      ## Connection refused.
+  ECONNRESET* {.importc, header: "<errno.h>".}: cint
+      ## Connection reset.
+  EDEADLK* {.importc, header: "<errno.h>".}: cint
+      ## Resource deadlock would occur.
+  EDESTADDRREQ* {.importc, header: "<errno.h>".}: cint
+      ## Destination address required.
+  EDOM* {.importc, header: "<errno.h>".}: cint
+      ## Mathematics argument out of domain of function.
+  EDQUOT* {.importc, header: "<errno.h>".}: cint
+      ## Reserved.
+  EEXIST* {.importc, header: "<errno.h>".}: cint
+      ## File exists.
+  EFAULT* {.importc, header: "<errno.h>".}: cint
+      ## Bad address.
+  EFBIG* {.importc, header: "<errno.h>".}: cint
+      ## File too large.
+  EHOSTUNREACH* {.importc, header: "<errno.h>".}: cint
+      ## Host is unreachable.
+  EIDRM* {.importc, header: "<errno.h>".}: cint
+      ## Identifier removed.
+  EILSEQ* {.importc, header: "<errno.h>".}: cint
+      ## Illegal byte sequence.
+  EINPROGRESS* {.importc, header: "<errno.h>".}: cint
+      ## Operation in progress.
+  EINTR* {.importc, header: "<errno.h>".}: cint
+      ## Interrupted function.
+  EINVAL* {.importc, header: "<errno.h>".}: cint
+      ## Invalid argument.
+  EIO* {.importc, header: "<errno.h>".}: cint
+      ## I/O error.
+  EISCONN* {.importc, header: "<errno.h>".}: cint
+      ## Socket is connected.
+  EISDIR* {.importc, header: "<errno.h>".}: cint
+      ## Is a directory.
+  ELOOP* {.importc, header: "<errno.h>".}: cint
+      ## Too many levels of symbolic links.
+  EMFILE* {.importc, header: "<errno.h>".}: cint
+      ## Too many open files.
+  EMLINK* {.importc, header: "<errno.h>".}: cint
+      ## Too many links.
+  EMSGSIZE* {.importc, header: "<errno.h>".}: cint
+      ## Message too large.
+  EMULTIHOP* {.importc, header: "<errno.h>".}: cint
+      ## Reserved.
+  ENAMETOOLONG* {.importc, header: "<errno.h>".}: cint
+      ## Filename too long.
+  ENETDOWN* {.importc, header: "<errno.h>".}: cint
+      ## Network is down.
+  ENETRESET* {.importc, header: "<errno.h>".}: cint
+      ## Connection aborted by network.
+  ENETUNREACH* {.importc, header: "<errno.h>".}: cint
+      ## Network unreachable.
+  ENFILE* {.importc, header: "<errno.h>".}: cint
+      ## Too many files open in system.
+  ENOBUFS* {.importc, header: "<errno.h>".}: cint
+      ## No buffer space available.
+  ENODATA* {.importc, header: "<errno.h>".}: cint
+      ## No message is available on the STREAM head read queue.
+  ENODEV* {.importc, header: "<errno.h>".}: cint
+      ## No such device.
+  ENOENT* {.importc, header: "<errno.h>".}: cint
+      ## No such file or directory.
+  ENOEXEC* {.importc, header: "<errno.h>".}: cint
+      ## Executable file format error.
+  ENOLCK* {.importc, header: "<errno.h>".}: cint
+      ## No locks available.
+  ENOLINK* {.importc, header: "<errno.h>".}: cint
+      ## Reserved.
+  ENOMEM* {.importc, header: "<errno.h>".}: cint
+      ## Not enough space.
+  ENOMSG* {.importc, header: "<errno.h>".}: cint
+      ## No message of the desired type.
+  ENOPROTOOPT* {.importc, header: "<errno.h>".}: cint
+      ## Protocol not available.
+  ENOSPC* {.importc, header: "<errno.h>".}: cint
+      ## No space left on device.
+  ENOSR* {.importc, header: "<errno.h>".}: cint
+      ## No STREAM resources.
+  ENOSTR* {.importc, header: "<errno.h>".}: cint
+      ## Not a STREAM.
+  ENOSYS* {.importc, header: "<errno.h>".}: cint
+      ## Function not supported.
+  ENOTCONN* {.importc, header: "<errno.h>".}: cint
+      ## The socket is not connected.
+  ENOTDIR* {.importc, header: "<errno.h>".}: cint
+      ## Not a directory.
+  ENOTEMPTY* {.importc, header: "<errno.h>".}: cint
+      ## Directory not empty.
+  ENOTSOCK* {.importc, header: "<errno.h>".}: cint
+      ## Not a socket.
+  ENOTSUP* {.importc, header: "<errno.h>".}: cint
+      ## Not supported.
+  ENOTTY* {.importc, header: "<errno.h>".}: cint
+      ## Inappropriate I/O control operation.
+  ENXIO* {.importc, header: "<errno.h>".}: cint
+      ## No such device or address.
+  EOPNOTSUPP* {.importc, header: "<errno.h>".}: cint
+      ## Operation not supported on socket.
+  EOVERFLOW* {.importc, header: "<errno.h>".}: cint
+      ## Value too large to be stored in data type.
+  EPERM* {.importc, header: "<errno.h>".}: cint
+      ## Operation not permitted.
+  EPIPE* {.importc, header: "<errno.h>".}: cint
+      ## Broken pipe.
+  EPROTO* {.importc, header: "<errno.h>".}: cint
+      ## Protocol error.
+  EPROTONOSUPPORT* {.importc, header: "<errno.h>".}: cint
+      ## Protocol not supported.
+  EPROTOTYPE* {.importc, header: "<errno.h>".}: cint
+      ## Protocol wrong type for socket.
+  ERANGE* {.importc, header: "<errno.h>".}: cint
+      ## Result too large.
+  EROFS* {.importc, header: "<errno.h>".}: cint
+      ## Read-only file system.
+  ESPIPE* {.importc, header: "<errno.h>".}: cint
+      ## Invalid seek.
+  ESRCH* {.importc, header: "<errno.h>".}: cint
+      ## No such process.
+  ESTALE* {.importc, header: "<errno.h>".}: cint
+      ## Reserved.
+  ETIME* {.importc, header: "<errno.h>".}: cint
+      ## Stream ioctl() timeout.
+  ETIMEDOUT* {.importc, header: "<errno.h>".}: cint
+      ## Connection timed out.
+  ETXTBSY* {.importc, header: "<errno.h>".}: cint
+      ## Text file busy.
+  EWOULDBLOCK* {.importc, header: "<errno.h>".}: cint
+      ## Operation would block (may be the same value as [EAGAIN]).
+  EXDEV* {.importc, header: "<errno.h>".}: cint
+      ## Cross-device link.   
+
+  F_DUPFD* {.importc, header: "<fcntl.h>".}: cint
+    ## Duplicate file descriptor.
+  F_GETFD* {.importc, header: "<fcntl.h>".}: cint
+    ## Get file descriptor flags.
+  F_SETFD* {.importc, header: "<fcntl.h>".}: cint
+    ## Set file descriptor flags.
+  F_GETFL* {.importc, header: "<fcntl.h>".}: cint
+    ## Get file status flags and file access modes.
+  F_SETFL* {.importc, header: "<fcntl.h>".}: cint
+    ## Set file status flags.
+  F_GETLK* {.importc, header: "<fcntl.h>".}: cint
+    ## Get record locking information.
+  F_SETLK* {.importc, header: "<fcntl.h>".}: cint
+    ## Set record locking information.
+  F_SETLKW* {.importc, header: "<fcntl.h>".}: cint
+    ## Set record locking information; wait if blocked.
+  F_GETOWN* {.importc, header: "<fcntl.h>".}: cint
+    ## Get process or process group ID to receive SIGURG signals.
+  F_SETOWN* {.importc, header: "<fcntl.h>".}: cint
+    ## Set process or process group ID to receive SIGURG signals. 
+  FD_CLOEXEC* {.importc, header: "<fcntl.h>".}: cint
+    ## Close the file descriptor upon execution of an exec family function. 
+  F_RDLCK* {.importc, header: "<fcntl.h>".}: cint
+    ## Shared or read lock.
+  F_UNLCK* {.importc, header: "<fcntl.h>".}: cint
+    ## Unlock.
+  F_WRLCK* {.importc, header: "<fcntl.h>".}: cint
+    ## Exclusive or write lock. 
+  O_CREAT* {.importc, header: "<fcntl.h>".}: cint
+    ## Create file if it does not exist.
+  O_EXCL* {.importc, header: "<fcntl.h>".}: cint
+    ## Exclusive use flag.
+  O_NOCTTY* {.importc, header: "<fcntl.h>".}: cint
+    ## Do not assign controlling terminal.
+  O_TRUNC* {.importc, header: "<fcntl.h>".}: cint
+    ## Truncate flag. 
+  O_APPEND* {.importc, header: "<fcntl.h>".}: cint
+    ## Set append mode.
+  O_DSYNC* {.importc, header: "<fcntl.h>".}: cint
+    ## Write according to synchronized I/O data integrity completion.
+  O_NONBLOCK* {.importc, header: "<fcntl.h>".}: cint
+    ## Non-blocking mode.
+  O_RSYNC* {.importc, header: "<fcntl.h>".}: cint
+    ## Synchronized read I/O operations.
+  O_SYNC* {.importc, header: "<fcntl.h>".}: cint
+    ## Write according to synchronized I/O file integrity completion. 
+  O_ACCMODE* {.importc, header: "<fcntl.h>".}: cint
+    ## Mask for file access modes.      
+  O_RDONLY* {.importc, header: "<fcntl.h>".}: cint
+    ## Open for reading only.
+  O_RDWR* {.importc, header: "<fcntl.h>".}: cint
+    ## Open for reading and writing.
+  O_WRONLY* {.importc, header: "<fcntl.h>".}: cint
+    ## Open for writing only. 
+  POSIX_FADV_NORMAL* {.importc, header: "<fcntl.h>".}: cint
+    ## The application has no advice to give on its behavior with
+    ## respect to the specified data. It is the default characteristic
+    ## if no advice is given for an open file.
+  POSIX_FADV_SEQUENTIAL* {.importc, header: "<fcntl.h>".}: cint
+    ## The application expects to access the specified data 
+    # sequentially from lower offsets to higher offsets.
+  POSIX_FADV_RANDOM* {.importc, header: "<fcntl.h>".}: cint
+    ## The application expects to access the specified data in a random order.
+  POSIX_FADV_WILLNEED* {.importc, header: "<fcntl.h>".}: cint
+    ## The application expects to access the specified data in the near future.
+  POSIX_FADV_DONTNEED* {.importc, header: "<fcntl.h>".}: cint
+    ## The application expects that it will not access the specified data
+    ## in the near future.
+  POSIX_FADV_NOREUSE* {.importc, header: "<fcntl.h>".}: cint
+    ## The application expects to access the specified data once and 
+    ## then not reuse it thereafter. 
+
+  FE_DIVBYZERO* {.importc, header: "<fenv.h>".}: cint
+  FE_INEXACT* {.importc, header: "<fenv.h>".}: cint
+  FE_INVALID* {.importc, header: "<fenv.h>".}: cint
+  FE_OVERFLOW* {.importc, header: "<fenv.h>".}: cint
+  FE_UNDERFLOW* {.importc, header: "<fenv.h>".}: cint
+  FE_ALL_EXCEPT* {.importc, header: "<fenv.h>".}: cint
+  FE_DOWNWARD* {.importc, header: "<fenv.h>".}: cint
+  FE_TONEAREST* {.importc, header: "<fenv.h>".}: cint
+  FE_TOWARDZERO* {.importc, header: "<fenv.h>".}: cint
+  FE_UPWARD* {.importc, header: "<fenv.h>".}: cint
+  FE_DFL_ENV* {.importc, header: "<fenv.h>".}: cint
+
+  MM_HARD* {.importc, header: "<fmtmsg.h>".}: cint
+    ## Source of the condition is hardware.
+  MM_SOFT* {.importc, header: "<fmtmsg.h>".}: cint
+    ## Source of the condition is software.
+  MM_FIRM* {.importc, header: "<fmtmsg.h>".}: cint
+    ## Source of the condition is firmware.
+  MM_APPL* {.importc, header: "<fmtmsg.h>".}: cint
+    ## Condition detected by application.
+  MM_UTIL* {.importc, header: "<fmtmsg.h>".}: cint
+    ## Condition detected by utility.
+  MM_OPSYS* {.importc, header: "<fmtmsg.h>".}: cint
+    ## Condition detected by operating system.
+  MM_RECOVER* {.importc, header: "<fmtmsg.h>".}: cint
+    ## Recoverable error.
+  MM_NRECOV* {.importc, header: "<fmtmsg.h>".}: cint
+    ## Non-recoverable error.
+  MM_HALT* {.importc, header: "<fmtmsg.h>".}: cint
+    ## Error causing application to halt.
+  MM_ERROR* {.importc, header: "<fmtmsg.h>".}: cint
+    ## Application has encountered a non-fatal fault.
+  MM_WARNING* {.importc, header: "<fmtmsg.h>".}: cint
+    ## Application has detected unusual non-error condition.
+  MM_INFO* {.importc, header: "<fmtmsg.h>".}: cint
+    ## Informative message.
+  MM_NOSEV* {.importc, header: "<fmtmsg.h>".}: cint
+    ## No severity level provided for the message.
+  MM_PRINT* {.importc, header: "<fmtmsg.h>".}: cint
+    ## Display message on standard error.
+  MM_CONSOLE* {.importc, header: "<fmtmsg.h>".}: cint
+    ## Display message on system console. 
+
+  MM_OK* {.importc, header: "<fmtmsg.h>".}: cint
+    ## The function succeeded.
+  MM_NOTOK* {.importc, header: "<fmtmsg.h>".}: cint
+    ## The function failed completely.
+  MM_NOMSG* {.importc, header: "<fmtmsg.h>".}: cint
+    ## The function was unable to generate a message on standard error, 
+    ## but otherwise succeeded.
+  MM_NOCON* {.importc, header: "<fmtmsg.h>".}: cint
+    ## The function was unable to generate a console message, but 
+    ## otherwise succeeded. 
+    
+  FNM_NOMATCH* {.importc, header: "<fnmatch.h>".}: cint
+    ## The string does not match the specified pattern.
+  FNM_PATHNAME* {.importc, header: "<fnmatch.h>".}: cint
+    ## Slash in string only matches slash in pattern.
+  FNM_PERIOD* {.importc, header: "<fnmatch.h>".}: cint
+    ## Leading period in string must be exactly matched by period in pattern.
+  FNM_NOESCAPE* {.importc, header: "<fnmatch.h>".}: cint
+    ## Disable backslash escaping.
+  FNM_NOSYS* {.importc, header: "<fnmatch.h>".}: cint
+    ## Reserved.
+
+  FTW_F* {.importc, header: "<ftw.h>".}: cint
+    ## File.
+  FTW_D* {.importc, header: "<ftw.h>".}: cint
+    ## Directory.
+  FTW_DNR* {.importc, header: "<ftw.h>".}: cint
+    ## Directory without read permission.
+  FTW_DP* {.importc, header: "<ftw.h>".}: cint
+    ## Directory with subdirectories visited.
+  FTW_NS* {.importc, header: "<ftw.h>".}: cint
+    ## Unknown type; stat() failed.
+  FTW_SL* {.importc, header: "<ftw.h>".}: cint
+    ## Symbolic link.
+  FTW_SLN* {.importc, header: "<ftw.h>".}: cint
+    ## Symbolic link that names a nonexistent file.
+
+  FTW_PHYS* {.importc, header: "<ftw.h>".}: cint
+    ## Physical walk, does not follow symbolic links. Otherwise, nftw() 
+    ## follows links but does not walk down any path that crosses itself.
+  FTW_MOUNT* {.importc, header: "<ftw.h>".}: cint
+    ## The walk does not cross a mount point.
+  FTW_DEPTH* {.importc, header: "<ftw.h>".}: cint
+    ## All subdirectories are visited before the directory itself.
+  FTW_CHDIR* {.importc, header: "<ftw.h>".}: cint
+    ## The walk changes to each directory before reading it. 
+
+  GLOB_APPEND* {.importc, header: "<glob.h>".}: cint
+    ## Append generated pathnames to those previously obtained.
+  GLOB_DOOFFS* {.importc, header: "<glob.h>".}: cint
+    ## Specify how many null pointers to add to the beginning of gl_pathv.
+  GLOB_ERR* {.importc, header: "<glob.h>".}: cint
+    ## Cause glob() to return on error.
+  GLOB_MARK* {.importc, header: "<glob.h>".}: cint
+    ## Each pathname that is a directory that matches pattern has a 
+    ## slash appended.
+  GLOB_NOCHECK* {.importc, header: "<glob.h>".}: cint
+    ## If pattern does not match any pathname, then return a list
+    ## consisting of only pattern.
+  GLOB_NOESCAPE* {.importc, header: "<glob.h>".}: cint
+    ## Disable backslash escaping.
+  GLOB_NOSORT* {.importc, header: "<glob.h>".}: cint
+    ## Do not sort the pathnames returned.
+  GLOB_ABORTED* {.importc, header: "<glob.h>".}: cint
+    ## The scan was stopped because GLOB_ERR was set or errfunc() 
+    ## returned non-zero.
+  GLOB_NOMATCH* {.importc, header: "<glob.h>".}: cint
+    ## The pattern does not match any existing pathname, and GLOB_NOCHECK 
+    ## was not set in flags.
+  GLOB_NOSPACE* {.importc, header: "<glob.h>".}: cint
+    ## An attempt to allocate memory failed.
+  GLOB_NOSYS* {.importc, header: "<glob.h>".}: cint
+    ## Reserved
+
+  CODESET* {.importc, header: "<langinfo.h>".}: cint
+    ## Codeset name.
+  D_T_FMT* {.importc, header: "<langinfo.h>".}: cint
+    ## String for formatting date and time.
+  D_FMT * {.importc, header: "<langinfo.h>".}: cint
+    ## Date format string.
+  T_FMT* {.importc, header: "<langinfo.h>".}: cint
+    ## Time format string.
+  T_FMT_AMPM* {.importc, header: "<langinfo.h>".}: cint
+    ## a.m. or p.m. time format string.
+  AM_STR* {.importc, header: "<langinfo.h>".}: cint
+    ## Ante-meridiem affix.
+  PM_STR* {.importc, header: "<langinfo.h>".}: cint
+    ## Post-meridiem affix.
+  DAY_1* {.importc, header: "<langinfo.h>".}: cint
+    ## Name of the first day of the week (for example, Sunday).
+  DAY_2* {.importc, header: "<langinfo.h>".}: cint
+    ## Name of the second day of the week (for example, Monday).
+  DAY_3* {.importc, header: "<langinfo.h>".}: cint
+    ## Name of the third day of the week (for example, Tuesday).
+  DAY_4* {.importc, header: "<langinfo.h>".}: cint
+    ## Name of the fourth day of the week (for example, Wednesday).
+  DAY_5* {.importc, header: "<langinfo.h>".}: cint
+    ## Name of the fifth day of the week (for example, Thursday).
+  DAY_6* {.importc, header: "<langinfo.h>".}: cint
+    ## Name of the sixth day of the week (for example, Friday).
+  DAY_7* {.importc, header: "<langinfo.h>".}: cint
+    ## Name of the seventh day of the week (for example, Saturday).
+  ABDAY_1* {.importc, header: "<langinfo.h>".}: cint
+    ## Abbreviated name of the first day of the week.
+  ABDAY_2* {.importc, header: "<langinfo.h>".}: cint
+  ABDAY_3* {.importc, header: "<langinfo.h>".}: cint
+  ABDAY_4* {.importc, header: "<langinfo.h>".}: cint
+  ABDAY_5* {.importc, header: "<langinfo.h>".}: cint
+  ABDAY_6* {.importc, header: "<langinfo.h>".}: cint
+  ABDAY_7* {.importc, header: "<langinfo.h>".}: cint
+  MON_1* {.importc, header: "<langinfo.h>".}: cint
+    ## Name of the first month of the year.
+  MON_2* {.importc, header: "<langinfo.h>".}: cint
+  MON_3* {.importc, header: "<langinfo.h>".}: cint
+  MON_4* {.importc, header: "<langinfo.h>".}: cint
+  MON_5* {.importc, header: "<langinfo.h>".}: cint
+  MON_6* {.importc, header: "<langinfo.h>".}: cint
+  MON_7* {.importc, header: "<langinfo.h>".}: cint
+  MON_8* {.importc, header: "<langinfo.h>".}: cint
+  MON_9* {.importc, header: "<langinfo.h>".}: cint
+  MON_10* {.importc, header: "<langinfo.h>".}: cint
+  MON_11* {.importc, header: "<langinfo.h>".}: cint
+  MON_12* {.importc, header: "<langinfo.h>".}: cint
+  ABMON_1* {.importc, header: "<langinfo.h>".}: cint
+    ## Abbreviated name of the first month.
+  ABMON_2* {.importc, header: "<langinfo.h>".}: cint
+  ABMON_3* {.importc, header: "<langinfo.h>".}: cint
+  ABMON_4* {.importc, header: "<langinfo.h>".}: cint
+  ABMON_5* {.importc, header: "<langinfo.h>".}: cint
+  ABMON_6* {.importc, header: "<langinfo.h>".}: cint
+  ABMON_7* {.importc, header: "<langinfo.h>".}: cint
+  ABMON_8* {.importc, header: "<langinfo.h>".}: cint
+  ABMON_9* {.importc, header: "<langinfo.h>".}: cint
+  ABMON_10* {.importc, header: "<langinfo.h>".}: cint
+  ABMON_11* {.importc, header: "<langinfo.h>".}: cint
+  ABMON_12* {.importc, header: "<langinfo.h>".}: cint
+  ERA* {.importc, header: "<langinfo.h>".}: cint
+    ## Era description segments.
+  ERA_D_FMT* {.importc, header: "<langinfo.h>".}: cint
+    ## Era date format string.
+  ERA_D_T_FMT* {.importc, header: "<langinfo.h>".}: cint
+    ## Era date and time format string.
+  ERA_T_FMT* {.importc, header: "<langinfo.h>".}: cint
+    ## Era time format string.
+  ALT_DIGITS* {.importc, header: "<langinfo.h>".}: cint
+    ## Alternative symbols for digits.
+  RADIXCHAR* {.importc, header: "<langinfo.h>".}: cint
+    ## Radix character.
+  THOUSEP* {.importc, header: "<langinfo.h>".}: cint
+    ## Separator for thousands.
+  YESEXPR* {.importc, header: "<langinfo.h>".}: cint
+    ## Affirmative response expression.
+  NOEXPR* {.importc, header: "<langinfo.h>".}: cint
+    ## Negative response expression.
+  CRNCYSTR* {.importc, header: "<langinfo.h>".}: cint
+    ## Local currency symbol, preceded by '-' if the symbol 
+    ## should appear before the value, '+' if the symbol should appear 
+    ## after the value, or '.' if the symbol should replace the radix
+    ## character. If the local currency symbol is the empty string, 
+    ## implementations may return the empty string ( "" ).
+
+  LC_ALL* {.importc, header: "<locale.h>".}: cint
+  LC_COLLATE* {.importc, header: "<locale.h>".}: cint
+  LC_CTYPE* {.importc, header: "<locale.h>".}: cint
+  LC_MESSAGES* {.importc, header: "<locale.h>".}: cint
+  LC_MONETARY* {.importc, header: "<locale.h>".}: cint
+  LC_NUMERIC* {.importc, header: "<locale.h>".}: cint
+  LC_TIME* {.importc, header: "<locale.h>".}: cint
+  
+  PTHREAD_BARRIER_SERIAL_THREAD* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_CANCEL_ASYNCHRONOUS* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_CANCEL_ENABLE* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_CANCEL_DEFERRED* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_CANCEL_DISABLE* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_CANCELED* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_COND_INITIALIZER* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_CREATE_DETACHED* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_CREATE_JOINABLE* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_EXPLICIT_SCHED* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_INHERIT_SCHED* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_MUTEX_DEFAULT* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_MUTEX_ERRORCHECK* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_MUTEX_INITIALIZER* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_MUTEX_NORMAL* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_MUTEX_RECURSIVE* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_ONCE_INIT* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_PRIO_INHERIT* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_PRIO_NONE* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_PRIO_PROTECT* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_PROCESS_SHARED* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_PROCESS_PRIVATE* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_SCOPE_PROCESS* {.importc, header: "<pthread.h>".}: cint
+  PTHREAD_SCOPE_SYSTEM* {.importc, header: "<pthread.h>".}: cint
+
+  POSIX_ASYNC_IO* {.importc: "_POSIX_ASYNC_IO", header: "<unistd.h>".}: cint
+  POSIX_PRIO_IO* {.importc: "_POSIX_PRIO_IO", header: "<unistd.h>".}: cint
+  POSIX_SYNC_IO* {.importc: "_POSIX_SYNC_IO", header: "<unistd.h>".}: cint
+  F_OK* {.importc: "F_OK", header: "<unistd.h>".}: cint
+  R_OK* {.importc: "R_OK", header: "<unistd.h>".}: cint
+  W_OK* {.importc: "W_OK", header: "<unistd.h>".}: cint
+  X_OK* {.importc: "X_OK", header: "<unistd.h>".}: cint
+
+  CS_PATH* {.importc: "_CS_PATH", header: "<unistd.h>".}: cint
+  CS_POSIX_V6_ILP32_OFF32_CFLAGS* {.importc: "_CS_POSIX_V6_ILP32_OFF32_CFLAGS", header: "<unistd.h>".}: cint
+  CS_POSIX_V6_ILP32_OFF32_LDFLAGS* {.importc: "_CS_POSIX_V6_ILP32_OFF32_LDFLAGS", header: "<unistd.h>".}: cint
+  CS_POSIX_V6_ILP32_OFF32_LIBS* {.importc: "_CS_POSIX_V6_ILP32_OFF32_LIBS", header: "<unistd.h>".}: cint
+  CS_POSIX_V6_ILP32_OFFBIG_CFLAGS* {.importc: "_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS", header: "<unistd.h>".}: cint
+  CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS* {.importc: "_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS", header: "<unistd.h>".}: cint
+  CS_POSIX_V6_ILP32_OFFBIG_LIBS* {.importc: "_CS_POSIX_V6_ILP32_OFFBIG_LIBS", header: "<unistd.h>".}: cint
+  CS_POSIX_V6_LP64_OFF64_CFLAGS* {.importc: "_CS_POSIX_V6_LP64_OFF64_CFLAGS", header: "<unistd.h>".}: cint
+  CS_POSIX_V6_LP64_OFF64_LDFLAGS* {.importc: "_CS_POSIX_V6_LP64_OFF64_LDFLAGS", header: "<unistd.h>".}: cint
+  CS_POSIX_V6_LP64_OFF64_LIBS* {.importc: "_CS_POSIX_V6_LP64_OFF64_LIBS", header: "<unistd.h>".}: cint
+  CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS* {.importc: "_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS", header: "<unistd.h>".}: cint
+  CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS* {.importc: "_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS", header: "<unistd.h>".}: cint
+  CS_POSIX_V6_LPBIG_OFFBIG_LIBS* {.importc: "_CS_POSIX_V6_LPBIG_OFFBIG_LIBS", header: "<unistd.h>".}: cint
+  CS_POSIX_V6_WIDTH_RESTRICTED_ENVS* {.importc: "_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS", header: "<unistd.h>".}: cint
+  F_LOCK* {.importc: "F_LOCK", header: "<unistd.h>".}: cint
+  F_TEST* {.importc: "F_TEST", header: "<unistd.h>".}: cint
+  F_TLOCK* {.importc: "F_TLOCK", header: "<unistd.h>".}: cint
+  F_ULOCK* {.importc: "F_ULOCK", header: "<unistd.h>".}: cint
+  PC_2_SYMLINKS* {.importc: "_PC_2_SYMLINKS", header: "<unistd.h>".}: cint
+  PC_ALLOC_SIZE_MIN* {.importc: "_PC_ALLOC_SIZE_MIN", header: "<unistd.h>".}: cint
+  PC_ASYNC_IO* {.importc: "_PC_ASYNC_IO", header: "<unistd.h>".}: cint
+  PC_CHOWN_RESTRICTED* {.importc: "_PC_CHOWN_RESTRICTED", header: "<unistd.h>".}: cint
+  PC_FILESIZEBITS* {.importc: "_PC_FILESIZEBITS", header: "<unistd.h>".}: cint
+  PC_LINK_MAX* {.importc: "_PC_LINK_MAX", header: "<unistd.h>".}: cint
+  PC_MAX_CANON* {.importc: "_PC_MAX_CANON", header: "<unistd.h>".}: cint
+
+  PC_MAX_INPUT*{.importc: "_PC_MAX_INPUT", header: "<unistd.h>".}: cint
+  PC_NAME_MAX*{.importc: "_PC_NAME_MAX", header: "<unistd.h>".}: cint
+  PC_NO_TRUNC*{.importc: "_PC_NO_TRUNC", header: "<unistd.h>".}: cint
+  PC_PATH_MAX*{.importc: "_PC_PATH_MAX", header: "<unistd.h>".}: cint
+  PC_PIPE_BUF*{.importc: "_PC_PIPE_BUF", header: "<unistd.h>".}: cint
+  PC_PRIO_IO*{.importc: "_PC_PRIO_IO", header: "<unistd.h>".}: cint
+  PC_REC_INCR_XFER_SIZE*{.importc: "_PC_REC_INCR_XFER_SIZE", header: "<unistd.h>".}: cint
+  PC_REC_MIN_XFER_SIZE*{.importc: "_PC_REC_MIN_XFER_SIZE", header: "<unistd.h>".}: cint
+  PC_REC_XFER_ALIGN*{.importc: "_PC_REC_XFER_ALIGN", header: "<unistd.h>".}: cint
+  PC_SYMLINK_MAX*{.importc: "_PC_SYMLINK_MAX", header: "<unistd.h>".}: cint
+  PC_SYNC_IO*{.importc: "_PC_SYNC_IO", header: "<unistd.h>".}: cint
+  PC_VDISABLE*{.importc: "_PC_VDISABLE", header: "<unistd.h>".}: cint
+  SC_2_C_BIND*{.importc: "_SC_2_C_BIND", header: "<unistd.h>".}: cint
+  SC_2_C_DEV*{.importc: "_SC_2_C_DEV", header: "<unistd.h>".}: cint
+  SC_2_CHAR_TERM*{.importc: "_SC_2_CHAR_TERM", header: "<unistd.h>".}: cint
+  SC_2_FORT_DEV*{.importc: "_SC_2_FORT_DEV", header: "<unistd.h>".}: cint
+  SC_2_FORT_RUN*{.importc: "_SC_2_FORT_RUN", header: "<unistd.h>".}: cint
+  SC_2_LOCALEDEF*{.importc: "_SC_2_LOCALEDEF", header: "<unistd.h>".}: cint
+  SC_2_PBS*{.importc: "_SC_2_PBS", header: "<unistd.h>".}: cint
+  SC_2_PBS_ACCOUNTING*{.importc: "_SC_2_PBS_ACCOUNTING", header: "<unistd.h>".}: cint
+  SC_2_PBS_CHECKPOINT*{.importc: "_SC_2_PBS_CHECKPOINT", header: "<unistd.h>".}: cint
+  SC_2_PBS_LOCATE*{.importc: "_SC_2_PBS_LOCATE", header: "<unistd.h>".}: cint
+  SC_2_PBS_MESSAGE*{.importc: "_SC_2_PBS_MESSAGE", header: "<unistd.h>".}: cint
+  SC_2_PBS_TRACK*{.importc: "_SC_2_PBS_TRACK", header: "<unistd.h>".}: cint
+  SC_2_SW_DEV*{.importc: "_SC_2_SW_DEV", header: "<unistd.h>".}: cint
+  SC_2_UPE*{.importc: "_SC_2_UPE", header: "<unistd.h>".}: cint
+  SC_2_VERSION*{.importc: "_SC_2_VERSION", header: "<unistd.h>".}: cint
+  SC_ADVISORY_INFO*{.importc: "_SC_ADVISORY_INFO", header: "<unistd.h>".}: cint
+  SC_AIO_LISTIO_MAX*{.importc: "_SC_AIO_LISTIO_MAX", header: "<unistd.h>".}: cint
+  SC_AIO_MAX*{.importc: "_SC_AIO_MAX", header: "<unistd.h>".}: cint
+  SC_AIO_PRIO_DELTA_MAX*{.importc: "_SC_AIO_PRIO_DELTA_MAX", header: "<unistd.h>".}: cint
+  SC_ARG_MAX*{.importc: "_SC_ARG_MAX", header: "<unistd.h>".}: cint
+  SC_ASYNCHRONOUS_IO*{.importc: "_SC_ASYNCHRONOUS_IO", header: "<unistd.h>".}: cint
+  SC_ATEXIT_MAX*{.importc: "_SC_ATEXIT_MAX", header: "<unistd.h>".}: cint
+  SC_BARRIERS*{.importc: "_SC_BARRIERS", header: "<unistd.h>".}: cint
+  SC_BC_BASE_MAX*{.importc: "_SC_BC_BASE_MAX", header: "<unistd.h>".}: cint
+  SC_BC_DIM_MAX*{.importc: "_SC_BC_DIM_MAX", header: "<unistd.h>".}: cint
+  SC_BC_SCALE_MAX*{.importc: "_SC_BC_SCALE_MAX", header: "<unistd.h>".}: cint
+  SC_BC_STRING_MAX*{.importc: "_SC_BC_STRING_MAX", header: "<unistd.h>".}: cint
+  SC_CHILD_MAX*{.importc: "_SC_CHILD_MAX", header: "<unistd.h>".}: cint
+  SC_CLK_TCK*{.importc: "_SC_CLK_TCK", header: "<unistd.h>".}: cint
+  SC_CLOCK_SELECTION*{.importc: "_SC_CLOCK_SELECTION", header: "<unistd.h>".}: cint
+  SC_COLL_WEIGHTS_MAX*{.importc: "_SC_COLL_WEIGHTS_MAX", header: "<unistd.h>".}: cint
+  SC_CPUTIME*{.importc: "_SC_CPUTIME", header: "<unistd.h>".}: cint
+  SC_DELAYTIMER_MAX*{.importc: "_SC_DELAYTIMER_MAX", header: "<unistd.h>".}: cint
+  SC_EXPR_NEST_MAX*{.importc: "_SC_EXPR_NEST_MAX", header: "<unistd.h>".}: cint
+  SC_FSYNC*{.importc: "_SC_FSYNC", header: "<unistd.h>".}: cint
+  SC_GETGR_R_SIZE_MAX*{.importc: "_SC_GETGR_R_SIZE_MAX", header: "<unistd.h>".}: cint
+  SC_GETPW_R_SIZE_MAX*{.importc: "_SC_GETPW_R_SIZE_MAX", header: "<unistd.h>".}: cint
+  SC_HOST_NAME_MAX*{.importc: "_SC_HOST_NAME_MAX", header: "<unistd.h>".}: cint
+  SC_IOV_MAX*{.importc: "_SC_IOV_MAX", header: "<unistd.h>".}: cint
+  SC_IPV6*{.importc: "_SC_IPV6", header: "<unistd.h>".}: cint
+  SC_JOB_CONTROL*{.importc: "_SC_JOB_CONTROL", header: "<unistd.h>".}: cint
+  SC_LINE_MAX*{.importc: "_SC_LINE_MAX", header: "<unistd.h>".}: cint
+  SC_LOGIN_NAME_MAX*{.importc: "_SC_LOGIN_NAME_MAX", header: "<unistd.h>".}: cint
+  SC_MAPPED_FILES*{.importc: "_SC_MAPPED_FILES", header: "<unistd.h>".}: cint
+  SC_MEMLOCK*{.importc: "_SC_MEMLOCK", header: "<unistd.h>".}: cint
+  SC_MEMLOCK_RANGE*{.importc: "_SC_MEMLOCK_RANGE", header: "<unistd.h>".}: cint
+  SC_MEMORY_PROTECTION*{.importc: "_SC_MEMORY_PROTECTION", header: "<unistd.h>".}: cint
+  SC_MESSAGE_PASSING*{.importc: "_SC_MESSAGE_PASSING", header: "<unistd.h>".}: cint
+  SC_MONOTONIC_CLOCK*{.importc: "_SC_MONOTONIC_CLOCK", header: "<unistd.h>".}: cint
+  SC_MQ_OPEN_MAX*{.importc: "_SC_MQ_OPEN_MAX", header: "<unistd.h>".}: cint
+  SC_MQ_PRIO_MAX*{.importc: "_SC_MQ_PRIO_MAX", header: "<unistd.h>".}: cint
+  SC_NGROUPS_MAX*{.importc: "_SC_NGROUPS_MAX", header: "<unistd.h>".}: cint
+  SC_OPEN_MAX*{.importc: "_SC_OPEN_MAX", header: "<unistd.h>".}: cint
+  SC_PAGE_SIZE*{.importc: "_SC_PAGE_SIZE", header: "<unistd.h>".}: cint
+  SC_PRIORITIZED_IO*{.importc: "_SC_PRIORITIZED_IO", header: "<unistd.h>".}: cint
+  SC_PRIORITY_SCHEDULING*{.importc: "_SC_PRIORITY_SCHEDULING", header: "<unistd.h>".}: cint
+  SC_RAW_SOCKETS*{.importc: "_SC_RAW_SOCKETS", header: "<unistd.h>".}: cint
+  SC_RE_DUP_MAX*{.importc: "_SC_RE_DUP_MAX", header: "<unistd.h>".}: cint
+  SC_READER_WRITER_LOCKS*{.importc: "_SC_READER_WRITER_LOCKS", header: "<unistd.h>".}: cint
+  SC_REALTIME_SIGNALS*{.importc: "_SC_REALTIME_SIGNALS", header: "<unistd.h>".}: cint
+  SC_REGEXP*{.importc: "_SC_REGEXP", header: "<unistd.h>".}: cint
+  SC_RTSIG_MAX*{.importc: "_SC_RTSIG_MAX", header: "<unistd.h>".}: cint
+  SC_SAVED_IDS*{.importc: "_SC_SAVED_IDS", header: "<unistd.h>".}: cint
+  SC_SEM_NSEMS_MAX*{.importc: "_SC_SEM_NSEMS_MAX", header: "<unistd.h>".}: cint
+  SC_SEM_VALUE_MAX*{.importc: "_SC_SEM_VALUE_MAX", header: "<unistd.h>".}: cint
+  SC_SEMAPHORES*{.importc: "_SC_SEMAPHORES", header: "<unistd.h>".}: cint
+  SC_SHARED_MEMORY_OBJECTS*{.importc: "_SC_SHARED_MEMORY_OBJECTS", header: "<unistd.h>".}: cint
+  SC_SHELL*{.importc: "_SC_SHELL", header: "<unistd.h>".}: cint
+  SC_SIGQUEUE_MAX*{.importc: "_SC_SIGQUEUE_MAX", header: "<unistd.h>".}: cint
+  SC_SPAWN*{.importc: "_SC_SPAWN", header: "<unistd.h>".}: cint
+  SC_SPIN_LOCKS*{.importc: "_SC_SPIN_LOCKS", header: "<unistd.h>".}: cint
+  SC_SPORADIC_SERVER*{.importc: "_SC_SPORADIC_SERVER", header: "<unistd.h>".}: cint
+  SC_SS_REPL_MAX*{.importc: "_SC_SS_REPL_MAX", header: "<unistd.h>".}: cint
+  SC_STREAM_MAX*{.importc: "_SC_STREAM_MAX", header: "<unistd.h>".}: cint
+  SC_SYMLOOP_MAX*{.importc: "_SC_SYMLOOP_MAX", header: "<unistd.h>".}: cint
+  SC_SYNCHRONIZED_IO*{.importc: "_SC_SYNCHRONIZED_IO", header: "<unistd.h>".}: cint
+  SC_THREAD_ATTR_STACKADDR*{.importc: "_SC_THREAD_ATTR_STACKADDR", header: "<unistd.h>".}: cint
+  SC_THREAD_ATTR_STACKSIZE*{.importc: "_SC_THREAD_ATTR_STACKSIZE", header: "<unistd.h>".}: cint
+  SC_THREAD_CPUTIME*{.importc: "_SC_THREAD_CPUTIME", header: "<unistd.h>".}: cint
+  SC_THREAD_DESTRUCTOR_ITERATIONS*{.importc: "_SC_THREAD_DESTRUCTOR_ITERATIONS", header: "<unistd.h>".}: cint
+  SC_THREAD_KEYS_MAX*{.importc: "_SC_THREAD_KEYS_MAX", header: "<unistd.h>".}: cint
+  SC_THREAD_PRIO_INHERIT*{.importc: "_SC_THREAD_PRIO_INHERIT", header: "<unistd.h>".}: cint
+  SC_THREAD_PRIO_PROTECT*{.importc: "_SC_THREAD_PRIO_PROTECT", header: "<unistd.h>".}: cint
+  SC_THREAD_PRIORITY_SCHEDULING*{.importc: "_SC_THREAD_PRIORITY_SCHEDULING", header: "<unistd.h>".}: cint
+  SC_THREAD_PROCESS_SHARED*{.importc: "_SC_THREAD_PROCESS_SHARED", header: "<unistd.h>".}: cint
+  SC_THREAD_SAFE_FUNCTIONS*{.importc: "_SC_THREAD_SAFE_FUNCTIONS", header: "<unistd.h>".}: cint
+  SC_THREAD_SPORADIC_SERVER*{.importc: "_SC_THREAD_SPORADIC_SERVER", header: "<unistd.h>".}: cint
+  SC_THREAD_STACK_MIN*{.importc: "_SC_THREAD_STACK_MIN", header: "<unistd.h>".}: cint
+  SC_THREAD_THREADS_MAX*{.importc: "_SC_THREAD_THREADS_MAX", header: "<unistd.h>".}: cint
+  SC_THREADS*{.importc: "_SC_THREADS", header: "<unistd.h>".}: cint
+  SC_TIMEOUTS*{.importc: "_SC_TIMEOUTS", header: "<unistd.h>".}: cint
+  SC_TIMER_MAX*{.importc: "_SC_TIMER_MAX", header: "<unistd.h>".}: cint
+  SC_TIMERS*{.importc: "_SC_TIMERS", header: "<unistd.h>".}: cint
+  SC_TRACE*{.importc: "_SC_TRACE", header: "<unistd.h>".}: cint
+  SC_TRACE_EVENT_FILTER*{.importc: "_SC_TRACE_EVENT_FILTER", header: "<unistd.h>".}: cint
+  SC_TRACE_EVENT_NAME_MAX*{.importc: "_SC_TRACE_EVENT_NAME_MAX", header: "<unistd.h>".}: cint
+  SC_TRACE_INHERIT*{.importc: "_SC_TRACE_INHERIT", header: "<unistd.h>".}: cint
+  SC_TRACE_LOG*{.importc: "_SC_TRACE_LOG", header: "<unistd.h>".}: cint
+  SC_TRACE_NAME_MAX*{.importc: "_SC_TRACE_NAME_MAX", header: "<unistd.h>".}: cint
+  SC_TRACE_SYS_MAX*{.importc: "_SC_TRACE_SYS_MAX", header: "<unistd.h>".}: cint
+  SC_TRACE_USER_EVENT_MAX*{.importc: "_SC_TRACE_USER_EVENT_MAX", header: "<unistd.h>".}: cint
+  SC_TTY_NAME_MAX*{.importc: "_SC_TTY_NAME_MAX", header: "<unistd.h>".}: cint
+  SC_TYPED_MEMORY_OBJECTS*{.importc: "_SC_TYPED_MEMORY_OBJECTS", header: "<unistd.h>".}: cint
+  SC_TZNAME_MAX*{.importc: "_SC_TZNAME_MAX", header: "<unistd.h>".}: cint
+  SC_V6_ILP32_OFF32*{.importc: "_SC_V6_ILP32_OFF32", header: "<unistd.h>".}: cint
+  SC_V6_ILP32_OFFBIG*{.importc: "_SC_V6_ILP32_OFFBIG", header: "<unistd.h>".}: cint
+  SC_V6_LP64_OFF64*{.importc: "_SC_V6_LP64_OFF64", header: "<unistd.h>".}: cint
+  SC_V6_LPBIG_OFFBIG*{.importc: "_SC_V6_LPBIG_OFFBIG", header: "<unistd.h>".}: cint
+  SC_VERSION*{.importc: "_SC_VERSION", header: "<unistd.h>".}: cint
+  SC_XBS5_ILP32_OFF32*{.importc: "_SC_XBS5_ILP32_OFF32", header: "<unistd.h>".}: cint
+  SC_XBS5_ILP32_OFFBIG*{.importc: "_SC_XBS5_ILP32_OFFBIG", header: "<unistd.h>".}: cint
+  SC_XBS5_LP64_OFF64*{.importc: "_SC_XBS5_LP64_OFF64", header: "<unistd.h>".}: cint
   SC_XBS5_LPBIG_OFFBIG*{.importc: "_SC_XBS5_LPBIG_OFFBIG", 
-                         header: "<unistd.h>".}: cint

-  SC_XOPEN_CRYPT*{.importc: "_SC_XOPEN_CRYPT", header: "<unistd.h>".}: cint

-  SC_XOPEN_ENH_I18N*{.importc: "_SC_XOPEN_ENH_I18N", header: "<unistd.h>".}: cint

-  SC_XOPEN_LEGACY*{.importc: "_SC_XOPEN_LEGACY", header: "<unistd.h>".}: cint

-  SC_XOPEN_REALTIME*{.importc: "_SC_XOPEN_REALTIME", header: "<unistd.h>".}: cint

+                         header: "<unistd.h>".}: cint
+  SC_XOPEN_CRYPT*{.importc: "_SC_XOPEN_CRYPT", header: "<unistd.h>".}: cint
+  SC_XOPEN_ENH_I18N*{.importc: "_SC_XOPEN_ENH_I18N", header: "<unistd.h>".}: cint
+  SC_XOPEN_LEGACY*{.importc: "_SC_XOPEN_LEGACY", header: "<unistd.h>".}: cint
+  SC_XOPEN_REALTIME*{.importc: "_SC_XOPEN_REALTIME", header: "<unistd.h>".}: cint
   SC_XOPEN_REALTIME_THREADS*{.importc: "_SC_XOPEN_REALTIME_THREADS", 
-                              header: "<unistd.h>".}: cint

-  SC_XOPEN_SHM*{.importc: "_SC_XOPEN_SHM", header: "<unistd.h>".}: cint

-  SC_XOPEN_STREAMS*{.importc: "_SC_XOPEN_STREAMS", header: "<unistd.h>".}: cint

-  SC_XOPEN_UNIX*{.importc: "_SC_XOPEN_UNIX", header: "<unistd.h>".}: cint

-  SC_XOPEN_VERSION*{.importc: "_SC_XOPEN_VERSION", header: "<unistd.h>".}: cint

-  

-  SEM_FAILED* {.importc, header: "<semaphore.h>".}: pointer

-  IPC_CREAT* {.importc, header: "<sys/ipc.h>".}: cint

-    ## Create entry if key does not exist.

-  IPC_EXCL* {.importc, header: "<sys/ipc.h>".}: cint

-    ## Fail if key exists.

-  IPC_NOWAIT* {.importc, header: "<sys/ipc.h>".}: cint

-    ## Error if request must wait.

-

-  IPC_PRIVATE* {.importc, header: "<sys/ipc.h>".}: cint

-    ## Private key.

-

-  IPC_RMID* {.importc, header: "<sys/ipc.h>".}: cint

-    ## Remove identifier.

-  IPC_SET* {.importc, header: "<sys/ipc.h>".}: cint

-    ## Set options.

-  IPC_STAT* {.importc, header: "<sys/ipc.h>".}: cint

-    ## Get options. 

-

-  S_IFMT* {.importc, header: "<sys/stat.h>".}: cint

-    ## Type of file.

-  S_IFBLK* {.importc, header: "<sys/stat.h>".}: cint

-    ## Block special.

-  S_IFCHR* {.importc, header: "<sys/stat.h>".}: cint

-    ## Character special.

-  S_IFIFO* {.importc, header: "<sys/stat.h>".}: cint

-    ## FIFO special.

-  S_IFREG* {.importc, header: "<sys/stat.h>".}: cint

-    ## Regular.

-  S_IFDIR* {.importc, header: "<sys/stat.h>".}: cint

-    ## Directory.

-  S_IFLNK* {.importc, header: "<sys/stat.h>".}: cint

-    ## Symbolic link.

-  S_IFSOCK* {.importc, header: "<sys/stat.h>".}: cint

-    ## Socket.

-  S_IRWXU* {.importc, header: "<sys/stat.h>".}: cint

-    ## Read, write, execute/search by owner.

-  S_IRUSR* {.importc, header: "<sys/stat.h>".}: cint

-    ## Read permission, owner.

-  S_IWUSR* {.importc, header: "<sys/stat.h>".}: cint

-    ## Write permission, owner.

-  S_IXUSR* {.importc, header: "<sys/stat.h>".}: cint

-    ## Execute/search permission, owner.

-  S_IRWXG* {.importc, header: "<sys/stat.h>".}: cint

-    ## Read, write, execute/search by group.

-  S_IRGRP* {.importc, header: "<sys/stat.h>".}: cint

-    ## Read permission, group.

-  S_IWGRP* {.importc, header: "<sys/stat.h>".}: cint

-    ## Write permission, group.

-  S_IXGRP* {.importc, header: "<sys/stat.h>".}: cint

-    ## Execute/search permission, group.

-  S_IRWXO* {.importc, header: "<sys/stat.h>".}: cint

-    ## Read, write, execute/search by others.

-  S_IROTH* {.importc, header: "<sys/stat.h>".}: cint

-    ## Read permission, others.

-  S_IWOTH* {.importc, header: "<sys/stat.h>".}: cint

-    ## Write permission, others.

-  S_IXOTH* {.importc, header: "<sys/stat.h>".}: cint

-    ## Execute/search permission, others.

-  S_ISUID* {.importc, header: "<sys/stat.h>".}: cint

-    ## Set-user-ID on execution.

-  S_ISGID* {.importc, header: "<sys/stat.h>".}: cint

-    ## Set-group-ID on execution.

-  S_ISVTX* {.importc, header: "<sys/stat.h>".}: cint

-    ## On directories, restricted deletion flag.

-  

-  ST_RDONLY* {.importc, header: "<sys/statvfs.h>".}: cint

-    ## Read-only file system.

-  ST_NOSUID* {.importc, header: "<sys/statvfs.h>".}: cint

-    ## Does not support the semantics of the ST_ISUID and ST_ISGID file mode bits.

-       

-  PROT_READ* {.importc, header: "<sys/mman.h>".}: cint

-    ## Page can be read.

-  PROT_WRITE* {.importc, header: "<sys/mman.h>".}: cint

-    ## Page can be written.

-  PROT_EXEC* {.importc, header: "<sys/mman.h>".}: cint

-    ## Page can be executed.

-  PROT_NONE* {.importc, header: "<sys/mman.h>".}: cint

-    ## Page cannot be accessed.

-  MAP_SHARED* {.importc, header: "<sys/mman.h>".}: cint

-    ## Share changes.

-  MAP_PRIVATE* {.importc, header: "<sys/mman.h>".}: cint

-    ## Changes are private.

-  MAP_FIXED* {.importc, header: "<sys/mman.h>".}: cint

-    ## Interpret addr exactly.

-  MS_ASYNC* {.importc, header: "<sys/mman.h>".}: cint

-    ## Perform asynchronous writes.

-  MS_SYNC* {.importc, header: "<sys/mman.h>".}: cint

-    ## Perform synchronous writes.

-  MS_INVALIDATE* {.importc, header: "<sys/mman.h>".}: cint

-    ## Invalidate mappings.

-  MCL_CURRENT* {.importc, header: "<sys/mman.h>".}: cint

-    ## Lock currently mapped pages.

-  MCL_FUTURE* {.importc, header: "<sys/mman.h>".}: cint

-    ## Lock pages that become mapped.

-  MAP_FAILED* {.importc, header: "<sys/mman.h>".}: cint

-  POSIX_MADV_NORMAL* {.importc, header: "<sys/mman.h>".}: cint

+                              header: "<unistd.h>".}: cint
+  SC_XOPEN_SHM*{.importc: "_SC_XOPEN_SHM", header: "<unistd.h>".}: cint
+  SC_XOPEN_STREAMS*{.importc: "_SC_XOPEN_STREAMS", header: "<unistd.h>".}: cint
+  SC_XOPEN_UNIX*{.importc: "_SC_XOPEN_UNIX", header: "<unistd.h>".}: cint
+  SC_XOPEN_VERSION*{.importc: "_SC_XOPEN_VERSION", header: "<unistd.h>".}: cint
+  
+  SEM_FAILED* {.importc, header: "<semaphore.h>".}: pointer
+  IPC_CREAT* {.importc, header: "<sys/ipc.h>".}: cint
+    ## Create entry if key does not exist.
+  IPC_EXCL* {.importc, header: "<sys/ipc.h>".}: cint
+    ## Fail if key exists.
+  IPC_NOWAIT* {.importc, header: "<sys/ipc.h>".}: cint
+    ## Error if request must wait.
+
+  IPC_PRIVATE* {.importc, header: "<sys/ipc.h>".}: cint
+    ## Private key.
+
+  IPC_RMID* {.importc, header: "<sys/ipc.h>".}: cint
+    ## Remove identifier.
+  IPC_SET* {.importc, header: "<sys/ipc.h>".}: cint
+    ## Set options.
+  IPC_STAT* {.importc, header: "<sys/ipc.h>".}: cint
+    ## Get options. 
+
+  S_IFMT* {.importc, header: "<sys/stat.h>".}: cint
+    ## Type of file.
+  S_IFBLK* {.importc, header: "<sys/stat.h>".}: cint
+    ## Block special.
+  S_IFCHR* {.importc, header: "<sys/stat.h>".}: cint
+    ## Character special.
+  S_IFIFO* {.importc, header: "<sys/stat.h>".}: cint
+    ## FIFO special.
+  S_IFREG* {.importc, header: "<sys/stat.h>".}: cint
+    ## Regular.
+  S_IFDIR* {.importc, header: "<sys/stat.h>".}: cint
+    ## Directory.
+  S_IFLNK* {.importc, header: "<sys/stat.h>".}: cint
+    ## Symbolic link.
+  S_IFSOCK* {.importc, header: "<sys/stat.h>".}: cint
+    ## Socket.
+  S_IRWXU* {.importc, header: "<sys/stat.h>".}: cint
+    ## Read, write, execute/search by owner.
+  S_IRUSR* {.importc, header: "<sys/stat.h>".}: cint
+    ## Read permission, owner.
+  S_IWUSR* {.importc, header: "<sys/stat.h>".}: cint
+    ## Write permission, owner.
+  S_IXUSR* {.importc, header: "<sys/stat.h>".}: cint
+    ## Execute/search permission, owner.
+  S_IRWXG* {.importc, header: "<sys/stat.h>".}: cint
+    ## Read, write, execute/search by group.
+  S_IRGRP* {.importc, header: "<sys/stat.h>".}: cint
+    ## Read permission, group.
+  S_IWGRP* {.importc, header: "<sys/stat.h>".}: cint
+    ## Write permission, group.
+  S_IXGRP* {.importc, header: "<sys/stat.h>".}: cint
+    ## Execute/search permission, group.
+  S_IRWXO* {.importc, header: "<sys/stat.h>".}: cint
+    ## Read, write, execute/search by others.
+  S_IROTH* {.importc, header: "<sys/stat.h>".}: cint
+    ## Read permission, others.
+  S_IWOTH* {.importc, header: "<sys/stat.h>".}: cint
+    ## Write permission, others.
+  S_IXOTH* {.importc, header: "<sys/stat.h>".}: cint
+    ## Execute/search permission, others.
+  S_ISUID* {.importc, header: "<sys/stat.h>".}: cint
+    ## Set-user-ID on execution.
+  S_ISGID* {.importc, header: "<sys/stat.h>".}: cint
+    ## Set-group-ID on execution.
+  S_ISVTX* {.importc, header: "<sys/stat.h>".}: cint
+    ## On directories, restricted deletion flag.
+  
+  ST_RDONLY* {.importc, header: "<sys/statvfs.h>".}: cint
+    ## Read-only file system.
+  ST_NOSUID* {.importc, header: "<sys/statvfs.h>".}: cint
+    ## Does not support the semantics of the ST_ISUID and ST_ISGID file mode bits.
+       
+  PROT_READ* {.importc, header: "<sys/mman.h>".}: cint
+    ## Page can be read.
+  PROT_WRITE* {.importc, header: "<sys/mman.h>".}: cint
+    ## Page can be written.
+  PROT_EXEC* {.importc, header: "<sys/mman.h>".}: cint
+    ## Page can be executed.
+  PROT_NONE* {.importc, header: "<sys/mman.h>".}: cint
+    ## Page cannot be accessed.
+  MAP_SHARED* {.importc, header: "<sys/mman.h>".}: cint
+    ## Share changes.
+  MAP_PRIVATE* {.importc, header: "<sys/mman.h>".}: cint
+    ## Changes are private.
+  MAP_FIXED* {.importc, header: "<sys/mman.h>".}: cint
+    ## Interpret addr exactly.
+  MS_ASYNC* {.importc, header: "<sys/mman.h>".}: cint
+    ## Perform asynchronous writes.
+  MS_SYNC* {.importc, header: "<sys/mman.h>".}: cint
+    ## Perform synchronous writes.
+  MS_INVALIDATE* {.importc, header: "<sys/mman.h>".}: cint
+    ## Invalidate mappings.
+  MCL_CURRENT* {.importc, header: "<sys/mman.h>".}: cint
+    ## Lock currently mapped pages.
+  MCL_FUTURE* {.importc, header: "<sys/mman.h>".}: cint
+    ## Lock pages that become mapped.
+  MAP_FAILED* {.importc, header: "<sys/mman.h>".}: cint
+  POSIX_MADV_NORMAL* {.importc, header: "<sys/mman.h>".}: cint
     ## The application has no advice to give on its behavior with 
     ## respect to the specified range. It is the default characteristic 
-    ## if no advice is given for a range of memory.

-  POSIX_MADV_SEQUENTIAL* {.importc, header: "<sys/mman.h>".}: cint

+    ## if no advice is given for a range of memory.
+  POSIX_MADV_SEQUENTIAL* {.importc, header: "<sys/mman.h>".}: cint
     ## The application expects to access the specified range sequentially
-    ## from lower addresses to higher addresses.

-  POSIX_MADV_RANDOM* {.importc, header: "<sys/mman.h>".}: cint

-    ## The application expects to access the specified range in a random order.

-  POSIX_MADV_WILLNEED* {.importc, header: "<sys/mman.h>".}: cint

-    ## The application expects to access the specified range in the near future.

-  POSIX_MADV_DONTNEED* {.importc, header: "<sys/mman.h>".}: cint

-  POSIX_TYPED_MEM_ALLOCATE* {.importc, header: "<sys/mman.h>".}: cint

-  POSIX_TYPED_MEM_ALLOCATE_CONTIG* {.importc, header: "<sys/mman.h>".}: cint

-  POSIX_TYPED_MEM_MAP_ALLOCATABLE* {.importc, header: "<sys/mman.h>".}: cint

-

-

-  CLOCKS_PER_SEC* {.importc, header: "<time.h>".}: int

-    ## A number used to convert the value returned by the clock() function

-    ## into seconds.

-  CLOCK_PROCESS_CPUTIME_ID* {.importc, header: "<time.h>".}: cint

-    ## The identifier of the CPU-time clock associated with the process 

-    ## making a clock() or timer*() function call.

-  CLOCK_THREAD_CPUTIME_ID* {.importc, header: "<time.h>".}: cint

-  CLOCK_REALTIME* {.importc, header: "<time.h>".}: cint

-    ## The identifier of the system-wide realtime clock.

-  TIMER_ABSTIME* {.importc, header: "<time.h>".}: cint

+    ## from lower addresses to higher addresses.
+  POSIX_MADV_RANDOM* {.importc, header: "<sys/mman.h>".}: cint
+    ## The application expects to access the specified range in a random order.
+  POSIX_MADV_WILLNEED* {.importc, header: "<sys/mman.h>".}: cint
+    ## The application expects to access the specified range in the near future.
+  POSIX_MADV_DONTNEED* {.importc, header: "<sys/mman.h>".}: cint
+  POSIX_TYPED_MEM_ALLOCATE* {.importc, header: "<sys/mman.h>".}: cint
+  POSIX_TYPED_MEM_ALLOCATE_CONTIG* {.importc, header: "<sys/mman.h>".}: cint
+  POSIX_TYPED_MEM_MAP_ALLOCATABLE* {.importc, header: "<sys/mman.h>".}: cint
+
+
+  CLOCKS_PER_SEC* {.importc, header: "<time.h>".}: int
+    ## A number used to convert the value returned by the clock() function
+    ## into seconds.
+  CLOCK_PROCESS_CPUTIME_ID* {.importc, header: "<time.h>".}: cint
+    ## The identifier of the CPU-time clock associated with the process 
+    ## making a clock() or timer*() function call.
+  CLOCK_THREAD_CPUTIME_ID* {.importc, header: "<time.h>".}: cint
+  CLOCK_REALTIME* {.importc, header: "<time.h>".}: cint
+    ## The identifier of the system-wide realtime clock.
+  TIMER_ABSTIME* {.importc, header: "<time.h>".}: cint
     ## Flag indicating time is absolute. For functions taking timer 
-    ## objects, this refers to the clock associated with the timer.

-  CLOCK_MONOTONIC* {.importc, header: "<time.h>".}: cint

-

-  WNOHANG* {.importc, header: "<sys/wait.h>".}: cint

-    ## Do not hang if no status is available; return immediately.

-  WUNTRACED* {.importc, header: "<sys/wait.h>".}: cint

-    ## Report status of stopped child process.

-  WEXITSTATUS* {.importc, header: "<sys/wait.h>".}: cint

-    ## Return exit status.

-  WIFCONTINUED* {.importc, header: "<sys/wait.h>".}: cint

-    ## True if child has been continued.

-  WIFEXITED* {.importc, header: "<sys/wait.h>".}: cint

-    ## True if child exited normally.

-  WIFSIGNALED* {.importc, header: "<sys/wait.h>".}: cint

-    ## True if child exited due to uncaught signal.

-  WIFSTOPPED* {.importc, header: "<sys/wait.h>".}: cint

-    ## True if child is currently stopped.

-  WSTOPSIG* {.importc, header: "<sys/wait.h>".}: cint

-    ## Return signal number that caused process to stop.

-  WTERMSIG* {.importc, header: "<sys/wait.h>".}: cint

-    ## Return signal number that caused process to terminate.

-  WEXITED* {.importc, header: "<sys/wait.h>".}: cint

-    ## Wait for processes that have exited.

-  WSTOPPED* {.importc, header: "<sys/wait.h>".}: cint

-    ## Status is returned for any child that has stopped upon receipt of a signal.

-  WCONTINUED* {.importc, header: "<sys/wait.h>".}: cint

-    ## Status is returned for any child that was stopped and has been continued.

-  WNOWAIT* {.importc, header: "<sys/wait.h>".}: cint

-    ## Keep the process whose status is returned in infop in a waitable state. 

-  P_ALL* {.importc, header: "<sys/wait.h>".}: cint 

-  P_PID* {.importc, header: "<sys/wait.h>".}: cint 

-  P_PGID* {.importc, header: "<sys/wait.h>".}: cint

-       

-  SIG_DFL* {.importc, header: "<signal.h>".}: proc (x: cint) {.noconv.}

-    ## Request for default signal handling.

-  SIG_ERR* {.importc, header: "<signal.h>".}: proc (x: cint) {.noconv.}

-    ## Return value from signal() in case of error.

-  cSIG_HOLD* {.importc: "SIG_HOLD", header: "<signal.h>".}: proc (x: cint) {.noconv.}

-    ## Request that signal be held.

-  SIG_IGN* {.importc, header: "<signal.h>".}: proc (x: cint) {.noconv.}

-    ## Request that signal be ignored. 

-

-  SIGEV_NONE* {.importc, header: "<signal.h>".}: cint

-  SIGEV_SIGNAL* {.importc, header: "<signal.h>".}: cint

-  SIGEV_THREAD* {.importc, header: "<signal.h>".}: cint

-  SIGABRT* {.importc, header: "<signal.h>".}: cint

-  SIGALRM* {.importc, header: "<signal.h>".}: cint

-  SIGBUS* {.importc, header: "<signal.h>".}: cint

-  SIGCHLD* {.importc, header: "<signal.h>".}: cint

-  SIGCONT* {.importc, header: "<signal.h>".}: cint

-  SIGFPE* {.importc, header: "<signal.h>".}: cint

-  SIGHUP* {.importc, header: "<signal.h>".}: cint

-  SIGILL* {.importc, header: "<signal.h>".}: cint

-  SIGINT* {.importc, header: "<signal.h>".}: cint

-  SIGKILL* {.importc, header: "<signal.h>".}: cint

-  SIGPIPE* {.importc, header: "<signal.h>".}: cint

-  SIGQUIT* {.importc, header: "<signal.h>".}: cint

-  SIGSEGV* {.importc, header: "<signal.h>".}: cint

-  SIGSTOP* {.importc, header: "<signal.h>".}: cint

-  SIGTERM* {.importc, header: "<signal.h>".}: cint

-  SIGTSTP* {.importc, header: "<signal.h>".}: cint

-  SIGTTIN* {.importc, header: "<signal.h>".}: cint

-  SIGTTOU* {.importc, header: "<signal.h>".}: cint

-  SIGUSR1* {.importc, header: "<signal.h>".}: cint

-  SIGUSR2* {.importc, header: "<signal.h>".}: cint

-  SIGPOLL* {.importc, header: "<signal.h>".}: cint

-  SIGPROF* {.importc, header: "<signal.h>".}: cint

-  SIGSYS* {.importc, header: "<signal.h>".}: cint

-  SIGTRAP* {.importc, header: "<signal.h>".}: cint

-  SIGURG* {.importc, header: "<signal.h>".}: cint

-  SIGVTALRM* {.importc, header: "<signal.h>".}: cint

-  SIGXCPU* {.importc, header: "<signal.h>".}: cint

-  SIGXFSZ* {.importc, header: "<signal.h>".}: cint

-  SA_NOCLDSTOP* {.importc, header: "<signal.h>".}: cint

-  SIG_BLOCK* {.importc, header: "<signal.h>".}: cint

-  SIG_UNBLOCK* {.importc, header: "<signal.h>".}: cint

-  SIG_SETMASK* {.importc, header: "<signal.h>".}: cint

-  SA_ONSTACK* {.importc, header: "<signal.h>".}: cint

-  SA_RESETHAND* {.importc, header: "<signal.h>".}: cint

-  SA_RESTART* {.importc, header: "<signal.h>".}: cint

-  SA_SIGINFO* {.importc, header: "<signal.h>".}: cint

-  SA_NOCLDWAIT* {.importc, header: "<signal.h>".}: cint

-  SA_NODEFER* {.importc, header: "<signal.h>".}: cint

-  SS_ONSTACK* {.importc, header: "<signal.h>".}: cint

-  SS_DISABLE* {.importc, header: "<signal.h>".}: cint

-  MINSIGSTKSZ* {.importc, header: "<signal.h>".}: cint

-  SIGSTKSZ* {.importc, header: "<signal.h>".}: cint

-

-  NL_SETD* {.importc, header: "<nl_types.h>".}: cint

-  NL_CAT_LOCALE* {.importc, header: "<nl_types.h>".}: cint

-

-  SCHED_FIFO* {.importc, header: "<sched.h>".}: cint

-  SCHED_RR* {.importc, header: "<sched.h>".}: cint

-  SCHED_SPORADIC* {.importc, header: "<sched.h>".}: cint

-  SCHED_OTHER* {.importc, header: "<sched.h>".}: cint

-  FD_SETSIZE* {.importc, header: "<sys/select.h>".}: cint

-

-  SEEK_SET* {.importc, header: "<unistd.h>".}: cint

-  SEEK_CUR* {.importc, header: "<unistd.h>".}: cint

-  SEEK_END* {.importc, header: "<unistd.h>".}: cint

+    ## objects, this refers to the clock associated with the timer.
+  CLOCK_MONOTONIC* {.importc, header: "<time.h>".}: cint
+
+  WNOHANG* {.importc, header: "<sys/wait.h>".}: cint
+    ## Do not hang if no status is available; return immediately.
+  WUNTRACED* {.importc, header: "<sys/wait.h>".}: cint
+    ## Report status of stopped child process.
+  WEXITSTATUS* {.importc, header: "<sys/wait.h>".}: cint
+    ## Return exit status.
+  WIFCONTINUED* {.importc, header: "<sys/wait.h>".}: cint
+    ## True if child has been continued.
+  WIFEXITED* {.importc, header: "<sys/wait.h>".}: cint
+    ## True if child exited normally.
+  WIFSIGNALED* {.importc, header: "<sys/wait.h>".}: cint
+    ## True if child exited due to uncaught signal.
+  WIFSTOPPED* {.importc, header: "<sys/wait.h>".}: cint
+    ## True if child is currently stopped.
+  WSTOPSIG* {.importc, header: "<sys/wait.h>".}: cint
+    ## Return signal number that caused process to stop.
+  WTERMSIG* {.importc, header: "<sys/wait.h>".}: cint
+    ## Return signal number that caused process to terminate.
+  WEXITED* {.importc, header: "<sys/wait.h>".}: cint
+    ## Wait for processes that have exited.
+  WSTOPPED* {.importc, header: "<sys/wait.h>".}: cint
+    ## Status is returned for any child that has stopped upon receipt of a signal.
+  WCONTINUED* {.importc, header: "<sys/wait.h>".}: cint
+    ## Status is returned for any child that was stopped and has been continued.
+  WNOWAIT* {.importc, header: "<sys/wait.h>".}: cint
+    ## Keep the process whose status is returned in infop in a waitable state. 
+  P_ALL* {.importc, header: "<sys/wait.h>".}: cint 
+  P_PID* {.importc, header: "<sys/wait.h>".}: cint 
+  P_PGID* {.importc, header: "<sys/wait.h>".}: cint
+       
+  SIG_DFL* {.importc, header: "<signal.h>".}: proc (x: cint) {.noconv.}
+    ## Request for default signal handling.
+  SIG_ERR* {.importc, header: "<signal.h>".}: proc (x: cint) {.noconv.}
+    ## Return value from signal() in case of error.
+  cSIG_HOLD* {.importc: "SIG_HOLD", header: "<signal.h>".}: proc (x: cint) {.noconv.}
+    ## Request that signal be held.
+  SIG_IGN* {.importc, header: "<signal.h>".}: proc (x: cint) {.noconv.}
+    ## Request that signal be ignored. 
+
+  SIGEV_NONE* {.importc, header: "<signal.h>".}: cint
+  SIGEV_SIGNAL* {.importc, header: "<signal.h>".}: cint
+  SIGEV_THREAD* {.importc, header: "<signal.h>".}: cint
+  SIGABRT* {.importc, header: "<signal.h>".}: cint
+  SIGALRM* {.importc, header: "<signal.h>".}: cint
+  SIGBUS* {.importc, header: "<signal.h>".}: cint
+  SIGCHLD* {.importc, header: "<signal.h>".}: cint
+  SIGCONT* {.importc, header: "<signal.h>".}: cint
+  SIGFPE* {.importc, header: "<signal.h>".}: cint
+  SIGHUP* {.importc, header: "<signal.h>".}: cint
+  SIGILL* {.importc, header: "<signal.h>".}: cint
+  SIGINT* {.importc, header: "<signal.h>".}: cint
+  SIGKILL* {.importc, header: "<signal.h>".}: cint
+  SIGPIPE* {.importc, header: "<signal.h>".}: cint
+  SIGQUIT* {.importc, header: "<signal.h>".}: cint
+  SIGSEGV* {.importc, header: "<signal.h>".}: cint
+  SIGSTOP* {.importc, header: "<signal.h>".}: cint
+  SIGTERM* {.importc, header: "<signal.h>".}: cint
+  SIGTSTP* {.importc, header: "<signal.h>".}: cint
+  SIGTTIN* {.importc, header: "<signal.h>".}: cint
+  SIGTTOU* {.importc, header: "<signal.h>".}: cint
+  SIGUSR1* {.importc, header: "<signal.h>".}: cint
+  SIGUSR2* {.importc, header: "<signal.h>".}: cint
+  SIGPOLL* {.importc, header: "<signal.h>".}: cint
+  SIGPROF* {.importc, header: "<signal.h>".}: cint
+  SIGSYS* {.importc, header: "<signal.h>".}: cint
+  SIGTRAP* {.importc, header: "<signal.h>".}: cint
+  SIGURG* {.importc, header: "<signal.h>".}: cint
+  SIGVTALRM* {.importc, header: "<signal.h>".}: cint
+  SIGXCPU* {.importc, header: "<signal.h>".}: cint
+  SIGXFSZ* {.importc, header: "<signal.h>".}: cint
+  SA_NOCLDSTOP* {.importc, header: "<signal.h>".}: cint
+  SIG_BLOCK* {.importc, header: "<signal.h>".}: cint
+  SIG_UNBLOCK* {.importc, header: "<signal.h>".}: cint
+  SIG_SETMASK* {.importc, header: "<signal.h>".}: cint
+  SA_ONSTACK* {.importc, header: "<signal.h>".}: cint
+  SA_RESETHAND* {.importc, header: "<signal.h>".}: cint
+  SA_RESTART* {.importc, header: "<signal.h>".}: cint
+  SA_SIGINFO* {.importc, header: "<signal.h>".}: cint
+  SA_NOCLDWAIT* {.importc, header: "<signal.h>".}: cint
+  SA_NODEFER* {.importc, header: "<signal.h>".}: cint
+  SS_ONSTACK* {.importc, header: "<signal.h>".}: cint
+  SS_DISABLE* {.importc, header: "<signal.h>".}: cint
+  MINSIGSTKSZ* {.importc, header: "<signal.h>".}: cint
+  SIGSTKSZ* {.importc, header: "<signal.h>".}: cint
+
+  NL_SETD* {.importc, header: "<nl_types.h>".}: cint
+  NL_CAT_LOCALE* {.importc, header: "<nl_types.h>".}: cint
+
+  SCHED_FIFO* {.importc, header: "<sched.h>".}: cint
+  SCHED_RR* {.importc, header: "<sched.h>".}: cint
+  SCHED_SPORADIC* {.importc, header: "<sched.h>".}: cint
+  SCHED_OTHER* {.importc, header: "<sched.h>".}: cint
+  FD_SETSIZE* {.importc, header: "<sys/select.h>".}: cint
+
+  SEEK_SET* {.importc, header: "<unistd.h>".}: cint
+  SEEK_CUR* {.importc, header: "<unistd.h>".}: cint
+  SEEK_END* {.importc, header: "<unistd.h>".}: cint
 
   SCM_RIGHTS* {.importc, header: "<sys/socket.h>".}: cint
     ## Indicates that the data array contains the access rights 
@@ -1653,38 +1653,38 @@ var
   POLLNVAL* {.importc, header: "<poll.h>".}: cshort
     ## Invalid fd member (revents only). 
 
-

-when hasSpawnh:

-  var

-    POSIX_SPAWN_RESETIDS* {.importc, header: "<spawn.h>".}: cint

-    POSIX_SPAWN_SETPGROUP* {.importc, header: "<spawn.h>".}: cint

-    POSIX_SPAWN_SETSCHEDPARAM* {.importc, header: "<spawn.h>".}: cint

-    POSIX_SPAWN_SETSCHEDULER* {.importc, header: "<spawn.h>".}: cint

-    POSIX_SPAWN_SETSIGDEF* {.importc, header: "<spawn.h>".}: cint

-    POSIX_SPAWN_SETSIGMASK* {.importc, header: "<spawn.h>".}: cint

-

-when hasAioH:

-  proc aio_cancel*(a1: cint, a2: ptr Taiocb): cint {.importc, header: "<aio.h>".}

-  proc aio_error*(a1: ptr Taiocb): cint {.importc, header: "<aio.h>".}

-  proc aio_fsync*(a1: cint, a2: ptr Taiocb): cint {.importc, header: "<aio.h>".}

-  proc aio_read*(a1: ptr Taiocb): cint {.importc, header: "<aio.h>".}

-  proc aio_return*(a1: ptr Taiocb): int {.importc, header: "<aio.h>".}

-  proc aio_suspend*(a1: ptr ptr Taiocb, a2: cint, a3: ptr ttimespec): cint {.

-                   importc, header: "<aio.h>".}

-  proc aio_write*(a1: ptr Taiocb): cint {.importc, header: "<aio.h>".}

-  proc lio_listio*(a1: cint, a2: ptr ptr Taiocb, a3: cint,

-               a4: ptr Tsigevent): cint {.importc, header: "<aio.h>".}

-

-# arpa/inet.h

-proc htonl*(a1: int32): int32 {.importc, header: "<arpa/inet.h>".}

-proc htons*(a1: int16): int16 {.importc, header: "<arpa/inet.h>".}

-proc ntohl*(a1: int32): int32 {.importc, header: "<arpa/inet.h>".}

-proc ntohs*(a1: int16): int16 {.importc, header: "<arpa/inet.h>".}

-

-proc inet_addr*(a1: cstring): int32 {.importc, header: "<arpa/inet.h>".}

-proc inet_ntoa*(a1: int32): cstring {.importc, header: "<arpa/inet.h>".}

-proc inet_ntop*(a1: cint, a2: pointer, a3: cstring, a4: int32): cstring {.importc, header: "<arpa/inet.h>".}

-proc inet_pton*(a1: cint, a2: cstring, a3: pointer): cint {.importc, header: "<arpa/inet.h>".}

+
+when hasSpawnh:
+  var
+    POSIX_SPAWN_RESETIDS* {.importc, header: "<spawn.h>".}: cint
+    POSIX_SPAWN_SETPGROUP* {.importc, header: "<spawn.h>".}: cint
+    POSIX_SPAWN_SETSCHEDPARAM* {.importc, header: "<spawn.h>".}: cint
+    POSIX_SPAWN_SETSCHEDULER* {.importc, header: "<spawn.h>".}: cint
+    POSIX_SPAWN_SETSIGDEF* {.importc, header: "<spawn.h>".}: cint
+    POSIX_SPAWN_SETSIGMASK* {.importc, header: "<spawn.h>".}: cint
+
+when hasAioH:
+  proc aio_cancel*(a1: cint, a2: ptr Taiocb): cint {.importc, header: "<aio.h>".}
+  proc aio_error*(a1: ptr Taiocb): cint {.importc, header: "<aio.h>".}
+  proc aio_fsync*(a1: cint, a2: ptr Taiocb): cint {.importc, header: "<aio.h>".}
+  proc aio_read*(a1: ptr Taiocb): cint {.importc, header: "<aio.h>".}
+  proc aio_return*(a1: ptr Taiocb): int {.importc, header: "<aio.h>".}
+  proc aio_suspend*(a1: ptr ptr Taiocb, a2: cint, a3: ptr ttimespec): cint {.
+                   importc, header: "<aio.h>".}
+  proc aio_write*(a1: ptr Taiocb): cint {.importc, header: "<aio.h>".}
+  proc lio_listio*(a1: cint, a2: ptr ptr Taiocb, a3: cint,
+               a4: ptr Tsigevent): cint {.importc, header: "<aio.h>".}
+
+# arpa/inet.h
+proc htonl*(a1: int32): int32 {.importc, header: "<arpa/inet.h>".}
+proc htons*(a1: int16): int16 {.importc, header: "<arpa/inet.h>".}
+proc ntohl*(a1: int32): int32 {.importc, header: "<arpa/inet.h>".}
+proc ntohs*(a1: int16): int16 {.importc, header: "<arpa/inet.h>".}
+
+proc inet_addr*(a1: cstring): int32 {.importc, header: "<arpa/inet.h>".}
+proc inet_ntoa*(a1: int32): cstring {.importc, header: "<arpa/inet.h>".}
+proc inet_ntop*(a1: cint, a2: pointer, a3: cstring, a4: int32): cstring {.importc, header: "<arpa/inet.h>".}
+proc inet_pton*(a1: cint, a2: cstring, a3: pointer): cint {.importc, header: "<arpa/inet.h>".}
 
 var
   in6addr_any* {.importc, header: "<netinet/in.h>".}: TIn6Addr
@@ -1692,607 +1692,607 @@ var
 
 proc IN6ADDR_ANY_INIT* (): TIn6Addr {.importc, header: "<netinet/in.h>".}
 proc IN6ADDR_LOOPBACK_INIT* (): TIn6Addr {.importc, header: "<netinet/in.h>".}
-

-# dirent.h

-proc closedir*(a1: ptr TDIR): cint  {.importc, header: "<dirent.h>".}

-proc opendir*(a1: cstring): ptr TDir {.importc, header: "<dirent.h>".}

-proc readdir*(a1: ptr TDIR): ptr TDirent  {.importc, header: "<dirent.h>".}

-proc readdir_r*(a1: ptr TDIR, a2: ptr Tdirent, a3: ptr ptr TDirent): cint  {.

-                importc, header: "<dirent.h>".}

-proc rewinddir*(a1: ptr TDIR)  {.importc, header: "<dirent.h>".}

-proc seekdir*(a1: ptr TDIR, a2: int)  {.importc, header: "<dirent.h>".}

-proc telldir*(a1: ptr TDIR): int {.importc, header: "<dirent.h>".}

-

-# dlfcn.h

-proc dlclose*(a1: pointer): cint {.importc, header: "<dlfcn.h>".}

-proc dlerror*(): cstring {.importc, header: "<dlfcn.h>".}

-proc dlopen*(a1: cstring, a2: cint): pointer {.importc, header: "<dlfcn.h>".}

-proc dlsym*(a1: pointer, a2: cstring): pointer {.importc, header: "<dlfcn.h>".}

-

-proc creat*(a1: cstring, a2: Tmode): cint {.importc, header: "<fcntl.h>".}

-proc fcntl*(a1: cint, a2: cint): cint {.varargs, importc, header: "<fcntl.h>".}

-proc open*(a1: cstring, a2: cint): cint {.varargs, importc, header: "<fcntl.h>".}

-proc posix_fadvise*(a1: cint, a2, a3: Toff, a4: cint): cint {.importc, header: "<fcntl.h>".}

-proc posix_fallocate*(a1: cint, a2, a3: Toff): cint {.importc, header: "<fcntl.h>".}

-

-proc feclearexcept*(a1: cint): cint {.importc, header: "<fenv.h>".}

-proc fegetexceptflag*(a1: ptr Tfexcept, a2: cint): cint {.importc, header: "<fenv.h>".}

-proc feraiseexcept*(a1: cint): cint {.importc, header: "<fenv.h>".}

-proc fesetexceptflag*(a1: ptr Tfexcept, a2: cint): cint {.importc, header: "<fenv.h>".}

-proc fetestexcept*(a1: cint): cint {.importc, header: "<fenv.h>".}

-proc fegetround*(): cint {.importc, header: "<fenv.h>".}

-proc fesetround*(a1: cint): cint {.importc, header: "<fenv.h>".}

-proc fegetenv*(a1: ptr Tfenv): cint {.importc, header: "<fenv.h>".}

-proc feholdexcept*(a1: ptr Tfenv): cint {.importc, header: "<fenv.h>".}

-proc fesetenv*(a1: ptr Tfenv): cint {.importc, header: "<fenv.h>".}

-proc feupdateenv*(a1: ptr TFenv): cint {.importc, header: "<fenv.h>".}

-

-proc fmtmsg*(a1: int, a2: cstring, a3: cint,

-            a4, a5, a6: cstring): cint {.importc, header: "<fmtmsg.h>".}

-            

-proc fnmatch*(a1, a2: cstring, a3: cint): cint {.importc, header: "<fnmatch.h>".}

-proc ftw*(a1: cstring, 

-         a2: proc (x1: cstring, x2: ptr TStat, x3: cint): cint {.noconv.},

-         a3: cint): cint {.importc, header: "<ftw.h>".}

-proc nftw*(a1: cstring, 

-          a2: proc (x1: cstring, x2: ptr TStat, x3: cint, x4: ptr TFTW): cint {.noconv.},

-          a3: cint,

-          a4: cint): cint {.importc, header: "<ftw.h>".}

-

-proc glob*(a1: cstring, a2: cint,

-          a3: proc (x1: cstring, x2: cint): cint {.noconv.},

-          a4: ptr Tglob): cint {.importc, header: "<glob.h>".}

-proc globfree*(a1: ptr TGlob) {.importc, header: "<glob.h>".}

-

-proc getgrgid*(a1: TGid): ptr TGroup {.importc, header: "<grp.h>".}

-proc getgrnam*(a1: cstring): ptr TGroup {.importc, header: "<grp.h>".}

-proc getgrgid_r*(a1: Tgid, a2: ptr TGroup, a3: cstring, a4: int,

-                 a5: ptr ptr TGroup): cint {.importc, header: "<grp.h>".}

-proc getgrnam_r*(a1: cstring, a2: ptr TGroup, a3: cstring, 

-                  a4: int, a5: ptr ptr TGroup): cint {.importc, header: "<grp.h>".}

-proc getgrent*(): ptr TGroup {.importc, header: "<grp.h>".}

-proc endgrent*() {.importc, header: "<grp.h>".}

-proc setgrent*() {.importc, header: "<grp.h>".}

-

-

-proc iconv_open*(a1, a2: cstring): TIconv {.importc, header: "<iconv.h>".}

-proc iconv*(a1: Ticonv, a2: var cstring, a3: var int, a4: var cstring,

-            a5: var int): int {.importc, header: "<iconv.h>".}

-proc iconv_close*(a1: Ticonv): cint {.importc, header: "<iconv.h>".}

-

-proc nl_langinfo*(a1: Tnl_item): cstring {.importc, header: "<langinfo.h>".}

-

-proc basename*(a1: cstring): cstring {.importc, header: "<libgen.h>".}

-proc dirname*(a1: cstring): cstring {.importc, header: "<libgen.h>".}

-

-proc localeconv*(): ptr Tlconv {.importc, header: "<locale.h>".}

-proc setlocale*(a1: cint, a2: cstring): cstring {.

-                importc, header: "<locale.h>".}

-

-proc strfmon*(a1: cstring, a2: int, a3: cstring): int {.varargs,

-   importc, header: "<monetary.h>".}

-

-proc mq_close*(a1: Tmqd): cint {.importc, header: "<mqueue.h>".}

-proc mq_getattr*(a1: Tmqd, a2: ptr Tmq_attr): cint {.importc, header: "<mqueue.h>".}

-proc mq_notify*(a1: Tmqd, a2: ptr Tsigevent): cint {.importc, header: "<mqueue.h>".}

-proc mq_open*(a1: cstring, a2: cint): TMqd {.varargs, importc, header: "<mqueue.h>".}

-proc mq_receive*(a1: Tmqd, a2: cstring, a3: int, a4: var int): int {.importc, header: "<mqueue.h>".}

-proc mq_send*(a1: Tmqd, a2: cstring, a3: int, a4: int): cint {.importc, header: "<mqueue.h>".}

-proc mq_setattr*(a1: Tmqd, a2, a3: ptr Tmq_attr): cint {.importc, header: "<mqueue.h>".}

-

-proc mq_timedreceive*(a1: Tmqd, a2: cstring, a3: int, a4: int, 

-                      a5: ptr TTimespec): int {.importc, header: "<mqueue.h>".}

-proc mq_timedsend*(a1: Tmqd, a2: cstring, a3: int, a4: int, 

-                   a5: ptr TTimeSpec): cint {.importc, header: "<mqueue.h>".}

-proc mq_unlink*(a1: cstring): cint {.importc, header: "<mqueue.h>".}

-

-

-proc getpwnam*(a1: cstring): ptr TPasswd {.importc, header: "<pwd.h>".}

-proc getpwuid*(a1: Tuid): ptr TPasswd {.importc, header: "<pwd.h>".}

-proc getpwnam_r*(a1: cstring, a2: ptr Tpasswd, a3: cstring, a4: int,

-                 a5: ptr ptr Tpasswd): cint {.importc, header: "<pwd.h>".}

-proc getpwuid_r*(a1: Tuid, a2: ptr Tpasswd, a3: cstring,

-      a4: int, a5: ptr ptr Tpasswd): cint {.importc, header: "<pwd.h>".}

-proc endpwent*() {.importc, header: "<pwd.h>".}

-proc getpwent*(): ptr TPasswd {.importc, header: "<pwd.h>".}

-proc setpwent*() {.importc, header: "<pwd.h>".}

-

-proc uname*(a1: var Tutsname): cint {.importc, header: "<sys/utsname.h>".}

-

-proc pthread_atfork*(a1, a2, a3: proc {.noconv.}): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_destroy*(a1: ptr Tpthread_attr): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_getdetachstate*(a1: ptr Tpthread_attr, a2: cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_getguardsize*(a1: ptr Tpthread_attr, a2: var cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_getinheritsched*(a1: ptr Tpthread_attr,

-          a2: var cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_getschedparam*(a1: ptr Tpthread_attr,

-          a2: ptr Tsched_param): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_getschedpolicy*(a1: ptr Tpthread_attr,

-          a2: var cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_getscope*(a1: ptr Tpthread_attr,

-          a2: var cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_getstack*(a1: ptr Tpthread_attr,

-         a2: var pointer, a3: var int): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_getstackaddr*(a1: ptr Tpthread_attr,

-          a2: var pointer): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_getstacksize*(a1: ptr Tpthread_attr,

-          a2: var int): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_init*(a1: ptr Tpthread_attr): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_setdetachstate*(a1: ptr Tpthread_attr, a2: cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_setguardsize*(a1: ptr Tpthread_attr, a2: int): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_setinheritsched*(a1: ptr Tpthread_attr, a2: cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_setschedparam*(a1: ptr Tpthread_attr,

-          a2: ptr Tsched_param): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_setschedpolicy*(a1: ptr Tpthread_attr, a2: cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_setscope*(a1: ptr Tpthread_attr, a2: cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_setstack*(a1: ptr Tpthread_attr, a2: pointer, a3: int): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_setstackaddr*(a1: ptr TPthread_attr, a2: pointer): cint {.importc, header: "<pthread.h>".}

-proc pthread_attr_setstacksize*(a1: ptr TPthread_attr, a2: int): cint {.importc, header: "<pthread.h>".}

-proc pthread_barrier_destroy*(a1: ptr Tpthread_barrier): cint {.importc, header: "<pthread.h>".}

-proc pthread_barrier_init*(a1: ptr Tpthread_barrier,

-         a2: ptr Tpthread_barrierattr, a3: cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_barrier_wait*(a1: ptr Tpthread_barrier): cint {.importc, header: "<pthread.h>".}

-proc pthread_barrierattr_destroy*(a1: ptr Tpthread_barrierattr): cint {.importc, header: "<pthread.h>".}

-proc pthread_barrierattr_getpshared*(

-          a1: ptr Tpthread_barrierattr, a2: var cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_barrierattr_init*(a1: ptr TPthread_barrierattr): cint {.importc, header: "<pthread.h>".}

-proc pthread_barrierattr_setpshared*(a1: ptr TPthread_barrierattr, a2: cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_cancel*(a1: Tpthread): cint {.importc, header: "<pthread.h>".}

-proc pthread_cleanup_push*(a1: proc (x: pointer) {.noconv.}, a2: pointer) {.importc, header: "<pthread.h>".}

-proc pthread_cleanup_pop*(a1: cint) {.importc, header: "<pthread.h>".}

-proc pthread_cond_broadcast*(a1: ptr Tpthread_cond): cint {.importc, header: "<pthread.h>".}

-proc pthread_cond_destroy*(a1: ptr Tpthread_cond): cint {.importc, header: "<pthread.h>".}

-proc pthread_cond_init*(a1: ptr Tpthread_cond,

-          a2: ptr Tpthread_condattr): cint {.importc, header: "<pthread.h>".}

-proc pthread_cond_signal*(a1: ptr Tpthread_cond): cint {.importc, header: "<pthread.h>".}

-proc pthread_cond_timedwait*(a1: ptr Tpthread_cond,

-          a2: ptr Tpthread_mutex, a3: ptr Ttimespec): cint {.importc, header: "<pthread.h>".}

-

-proc pthread_cond_wait*(a1: ptr Tpthread_cond,

-          a2: ptr Tpthread_mutex): cint {.importc, header: "<pthread.h>".}

-proc pthread_condattr_destroy*(a1: ptr Tpthread_condattr): cint {.importc, header: "<pthread.h>".}

-proc pthread_condattr_getclock*(a1: ptr Tpthread_condattr,

-          a2: var Tclockid): cint {.importc, header: "<pthread.h>".}

-proc pthread_condattr_getpshared*(a1: ptr Tpthread_condattr,

-          a2: var cint): cint {.importc, header: "<pthread.h>".}

-          

-proc pthread_condattr_init*(a1: ptr TPthread_condattr): cint {.importc, header: "<pthread.h>".}

-proc pthread_condattr_setclock*(a1: ptr TPthread_condattr,a2: Tclockid): cint {.importc, header: "<pthread.h>".}

-proc pthread_condattr_setpshared*(a1: ptr TPthread_condattr, a2: cint): cint {.importc, header: "<pthread.h>".}

-

-proc pthread_create*(a1: ptr Tpthread, a2: ptr Tpthread_attr,

-          a3: proc (x: pointer): pointer {.noconv.}, a4: pointer): cint {.importc, header: "<pthread.h>".}

-proc pthread_detach*(a1: Tpthread): cint {.importc, header: "<pthread.h>".}

-proc pthread_equal*(a1, a2: Tpthread): cint {.importc, header: "<pthread.h>".}

-proc pthread_exit*(a1: pointer) {.importc, header: "<pthread.h>".}

-proc pthread_getconcurrency*(): cint {.importc, header: "<pthread.h>".}

-proc pthread_getcpuclockid*(a1: Tpthread, a2: var Tclockid): cint {.importc, header: "<pthread.h>".}

-proc pthread_getschedparam*(a1: Tpthread,  a2: var cint,

-          a3: ptr Tsched_param): cint {.importc, header: "<pthread.h>".}

-proc pthread_getspecific*(a1: Tpthread_key): pointer {.importc, header: "<pthread.h>".}

-proc pthread_join*(a1: Tpthread, a2: ptr pointer): cint {.importc, header: "<pthread.h>".}

-proc pthread_key_create*(a1: ptr Tpthread_key, a2: proc (x: pointer) {.noconv.}): cint {.importc, header: "<pthread.h>".}

-proc pthread_key_delete*(a1: Tpthread_key): cint {.importc, header: "<pthread.h>".}

-

-proc pthread_mutex_destroy*(a1: ptr Tpthread_mutex): cint {.importc, header: "<pthread.h>".}

-proc pthread_mutex_getprioceiling*(a1: ptr Tpthread_mutex,

-         a2: var cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_mutex_init*(a1: ptr Tpthread_mutex,

-          a2: ptr Tpthread_mutexattr): cint {.importc, header: "<pthread.h>".}

-proc pthread_mutex_lock*(a1: ptr Tpthread_mutex): cint {.importc, header: "<pthread.h>".}

-proc pthread_mutex_setprioceiling*(a1: ptr Tpthread_mutex,a2: cint,

-          a3: var cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_mutex_timedlock*(a1: ptr Tpthread_mutex,

-          a2: ptr Ttimespec): cint {.importc, header: "<pthread.h>".}

-proc pthread_mutex_trylock*(a1: ptr Tpthread_mutex): cint {.importc, header: "<pthread.h>".}

-proc pthread_mutex_unlock*(a1: ptr Tpthread_mutex): cint {.importc, header: "<pthread.h>".}

-proc pthread_mutexattr_destroy*(a1: ptr Tpthread_mutexattr): cint {.importc, header: "<pthread.h>".}

-

-proc pthread_mutexattr_getprioceiling*(

-          a1: ptr Tpthread_mutexattr, a2: var cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_mutexattr_getprotocol*(a1: ptr Tpthread_mutexattr,

-          a2: var cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_mutexattr_getpshared*(a1: ptr Tpthread_mutexattr,

-          a2: var cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_mutexattr_gettype*(a1: ptr Tpthread_mutexattr,

-          a2: var cint): cint {.importc, header: "<pthread.h>".}

-

-proc pthread_mutexattr_init*(a1: ptr Tpthread_mutexattr): cint {.importc, header: "<pthread.h>".}

-proc pthread_mutexattr_setprioceiling*(a1: ptr tpthread_mutexattr, a2: cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_mutexattr_setprotocol*(a1: ptr Tpthread_mutexattr, a2: cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_mutexattr_setpshared*(a1: ptr Tpthread_mutexattr, a2: cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_mutexattr_settype*(a1: ptr Tpthread_mutexattr, a2: cint): cint {.importc, header: "<pthread.h>".}

-

-proc pthread_once*(a1: ptr Tpthread_once, a2: proc {.noconv.}): cint {.importc, header: "<pthread.h>".}

-

-proc pthread_rwlock_destroy*(a1: ptr Tpthread_rwlock): cint {.importc, header: "<pthread.h>".}

-proc pthread_rwlock_init*(a1: ptr Tpthread_rwlock,

-          a2: ptr Tpthread_rwlockattr): cint {.importc, header: "<pthread.h>".}

-proc pthread_rwlock_rdlock*(a1: ptr Tpthread_rwlock): cint {.importc, header: "<pthread.h>".}

-proc pthread_rwlock_timedrdlock*(a1: ptr Tpthread_rwlock,

-          a2: ptr Ttimespec): cint {.importc, header: "<pthread.h>".}

-proc pthread_rwlock_timedwrlock*(a1: ptr Tpthread_rwlock,

-          a2: ptr Ttimespec): cint {.importc, header: "<pthread.h>".}

-

-proc pthread_rwlock_tryrdlock*(a1: ptr Tpthread_rwlock): cint {.importc, header: "<pthread.h>".}

-proc pthread_rwlock_trywrlock*(a1: ptr Tpthread_rwlock): cint {.importc, header: "<pthread.h>".}

-proc pthread_rwlock_unlock*(a1: ptr Tpthread_rwlock): cint {.importc, header: "<pthread.h>".}

-proc pthread_rwlock_wrlock*(a1: ptr Tpthread_rwlock): cint {.importc, header: "<pthread.h>".}

-proc pthread_rwlockattr_destroy*(a1: ptr Tpthread_rwlockattr): cint {.importc, header: "<pthread.h>".}

-proc pthread_rwlockattr_getpshared*(

-          a1: ptr Tpthread_rwlockattr, a2: var cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_rwlockattr_init*(a1: ptr Tpthread_rwlockattr): cint {.importc, header: "<pthread.h>".}

-proc pthread_rwlockattr_setpshared*(a1: ptr Tpthread_rwlockattr, a2: cint): cint {.importc, header: "<pthread.h>".}

-

-proc pthread_self*(): Tpthread {.importc, header: "<pthread.h>".}

-proc pthread_setcancelstate*(a1: cint, a2: var cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_setcanceltype*(a1: cint, a2: var cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_setconcurrency*(a1: cint): cint {.importc, header: "<pthread.h>".}

-proc pthread_setschedparam*(a1: Tpthread, a2: cint,

-          a3: ptr Tsched_param): cint {.importc, header: "<pthread.h>".}

-

+
+# dirent.h
+proc closedir*(a1: ptr TDIR): cint  {.importc, header: "<dirent.h>".}
+proc opendir*(a1: cstring): ptr TDir {.importc, header: "<dirent.h>".}
+proc readdir*(a1: ptr TDIR): ptr TDirent  {.importc, header: "<dirent.h>".}
+proc readdir_r*(a1: ptr TDIR, a2: ptr Tdirent, a3: ptr ptr TDirent): cint  {.
+                importc, header: "<dirent.h>".}
+proc rewinddir*(a1: ptr TDIR)  {.importc, header: "<dirent.h>".}
+proc seekdir*(a1: ptr TDIR, a2: int)  {.importc, header: "<dirent.h>".}
+proc telldir*(a1: ptr TDIR): int {.importc, header: "<dirent.h>".}
+
+# dlfcn.h
+proc dlclose*(a1: pointer): cint {.importc, header: "<dlfcn.h>".}
+proc dlerror*(): cstring {.importc, header: "<dlfcn.h>".}
+proc dlopen*(a1: cstring, a2: cint): pointer {.importc, header: "<dlfcn.h>".}
+proc dlsym*(a1: pointer, a2: cstring): pointer {.importc, header: "<dlfcn.h>".}
+
+proc creat*(a1: cstring, a2: Tmode): cint {.importc, header: "<fcntl.h>".}
+proc fcntl*(a1: cint, a2: cint): cint {.varargs, importc, header: "<fcntl.h>".}
+proc open*(a1: cstring, a2: cint): cint {.varargs, importc, header: "<fcntl.h>".}
+proc posix_fadvise*(a1: cint, a2, a3: Toff, a4: cint): cint {.importc, header: "<fcntl.h>".}
+proc posix_fallocate*(a1: cint, a2, a3: Toff): cint {.importc, header: "<fcntl.h>".}
+
+proc feclearexcept*(a1: cint): cint {.importc, header: "<fenv.h>".}
+proc fegetexceptflag*(a1: ptr Tfexcept, a2: cint): cint {.importc, header: "<fenv.h>".}
+proc feraiseexcept*(a1: cint): cint {.importc, header: "<fenv.h>".}
+proc fesetexceptflag*(a1: ptr Tfexcept, a2: cint): cint {.importc, header: "<fenv.h>".}
+proc fetestexcept*(a1: cint): cint {.importc, header: "<fenv.h>".}
+proc fegetround*(): cint {.importc, header: "<fenv.h>".}
+proc fesetround*(a1: cint): cint {.importc, header: "<fenv.h>".}
+proc fegetenv*(a1: ptr Tfenv): cint {.importc, header: "<fenv.h>".}
+proc feholdexcept*(a1: ptr Tfenv): cint {.importc, header: "<fenv.h>".}
+proc fesetenv*(a1: ptr Tfenv): cint {.importc, header: "<fenv.h>".}
+proc feupdateenv*(a1: ptr TFenv): cint {.importc, header: "<fenv.h>".}
+
+proc fmtmsg*(a1: int, a2: cstring, a3: cint,
+            a4, a5, a6: cstring): cint {.importc, header: "<fmtmsg.h>".}
+            
+proc fnmatch*(a1, a2: cstring, a3: cint): cint {.importc, header: "<fnmatch.h>".}
+proc ftw*(a1: cstring, 
+         a2: proc (x1: cstring, x2: ptr TStat, x3: cint): cint {.noconv.},
+         a3: cint): cint {.importc, header: "<ftw.h>".}
+proc nftw*(a1: cstring, 
+          a2: proc (x1: cstring, x2: ptr TStat, x3: cint, x4: ptr TFTW): cint {.noconv.},
+          a3: cint,
+          a4: cint): cint {.importc, header: "<ftw.h>".}
+
+proc glob*(a1: cstring, a2: cint,
+          a3: proc (x1: cstring, x2: cint): cint {.noconv.},
+          a4: ptr Tglob): cint {.importc, header: "<glob.h>".}
+proc globfree*(a1: ptr TGlob) {.importc, header: "<glob.h>".}
+
+proc getgrgid*(a1: TGid): ptr TGroup {.importc, header: "<grp.h>".}
+proc getgrnam*(a1: cstring): ptr TGroup {.importc, header: "<grp.h>".}
+proc getgrgid_r*(a1: Tgid, a2: ptr TGroup, a3: cstring, a4: int,
+                 a5: ptr ptr TGroup): cint {.importc, header: "<grp.h>".}
+proc getgrnam_r*(a1: cstring, a2: ptr TGroup, a3: cstring, 
+                  a4: int, a5: ptr ptr TGroup): cint {.importc, header: "<grp.h>".}
+proc getgrent*(): ptr TGroup {.importc, header: "<grp.h>".}
+proc endgrent*() {.importc, header: "<grp.h>".}
+proc setgrent*() {.importc, header: "<grp.h>".}
+
+
+proc iconv_open*(a1, a2: cstring): TIconv {.importc, header: "<iconv.h>".}
+proc iconv*(a1: Ticonv, a2: var cstring, a3: var int, a4: var cstring,
+            a5: var int): int {.importc, header: "<iconv.h>".}
+proc iconv_close*(a1: Ticonv): cint {.importc, header: "<iconv.h>".}
+
+proc nl_langinfo*(a1: Tnl_item): cstring {.importc, header: "<langinfo.h>".}
+
+proc basename*(a1: cstring): cstring {.importc, header: "<libgen.h>".}
+proc dirname*(a1: cstring): cstring {.importc, header: "<libgen.h>".}
+
+proc localeconv*(): ptr Tlconv {.importc, header: "<locale.h>".}
+proc setlocale*(a1: cint, a2: cstring): cstring {.
+                importc, header: "<locale.h>".}
+
+proc strfmon*(a1: cstring, a2: int, a3: cstring): int {.varargs,
+   importc, header: "<monetary.h>".}
+
+proc mq_close*(a1: Tmqd): cint {.importc, header: "<mqueue.h>".}
+proc mq_getattr*(a1: Tmqd, a2: ptr Tmq_attr): cint {.importc, header: "<mqueue.h>".}
+proc mq_notify*(a1: Tmqd, a2: ptr Tsigevent): cint {.importc, header: "<mqueue.h>".}
+proc mq_open*(a1: cstring, a2: cint): TMqd {.varargs, importc, header: "<mqueue.h>".}
+proc mq_receive*(a1: Tmqd, a2: cstring, a3: int, a4: var int): int {.importc, header: "<mqueue.h>".}
+proc mq_send*(a1: Tmqd, a2: cstring, a3: int, a4: int): cint {.importc, header: "<mqueue.h>".}
+proc mq_setattr*(a1: Tmqd, a2, a3: ptr Tmq_attr): cint {.importc, header: "<mqueue.h>".}
+
+proc mq_timedreceive*(a1: Tmqd, a2: cstring, a3: int, a4: int, 
+                      a5: ptr TTimespec): int {.importc, header: "<mqueue.h>".}
+proc mq_timedsend*(a1: Tmqd, a2: cstring, a3: int, a4: int, 
+                   a5: ptr TTimeSpec): cint {.importc, header: "<mqueue.h>".}
+proc mq_unlink*(a1: cstring): cint {.importc, header: "<mqueue.h>".}
+
+
+proc getpwnam*(a1: cstring): ptr TPasswd {.importc, header: "<pwd.h>".}
+proc getpwuid*(a1: Tuid): ptr TPasswd {.importc, header: "<pwd.h>".}
+proc getpwnam_r*(a1: cstring, a2: ptr Tpasswd, a3: cstring, a4: int,
+                 a5: ptr ptr Tpasswd): cint {.importc, header: "<pwd.h>".}
+proc getpwuid_r*(a1: Tuid, a2: ptr Tpasswd, a3: cstring,
+      a4: int, a5: ptr ptr Tpasswd): cint {.importc, header: "<pwd.h>".}
+proc endpwent*() {.importc, header: "<pwd.h>".}
+proc getpwent*(): ptr TPasswd {.importc, header: "<pwd.h>".}
+proc setpwent*() {.importc, header: "<pwd.h>".}
+
+proc uname*(a1: var Tutsname): cint {.importc, header: "<sys/utsname.h>".}
+
+proc pthread_atfork*(a1, a2, a3: proc {.noconv.}): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_destroy*(a1: ptr Tpthread_attr): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_getdetachstate*(a1: ptr Tpthread_attr, a2: cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_getguardsize*(a1: ptr Tpthread_attr, a2: var cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_getinheritsched*(a1: ptr Tpthread_attr,
+          a2: var cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_getschedparam*(a1: ptr Tpthread_attr,
+          a2: ptr Tsched_param): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_getschedpolicy*(a1: ptr Tpthread_attr,
+          a2: var cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_getscope*(a1: ptr Tpthread_attr,
+          a2: var cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_getstack*(a1: ptr Tpthread_attr,
+         a2: var pointer, a3: var int): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_getstackaddr*(a1: ptr Tpthread_attr,
+          a2: var pointer): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_getstacksize*(a1: ptr Tpthread_attr,
+          a2: var int): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_init*(a1: ptr Tpthread_attr): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_setdetachstate*(a1: ptr Tpthread_attr, a2: cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_setguardsize*(a1: ptr Tpthread_attr, a2: int): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_setinheritsched*(a1: ptr Tpthread_attr, a2: cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_setschedparam*(a1: ptr Tpthread_attr,
+          a2: ptr Tsched_param): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_setschedpolicy*(a1: ptr Tpthread_attr, a2: cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_setscope*(a1: ptr Tpthread_attr, a2: cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_setstack*(a1: ptr Tpthread_attr, a2: pointer, a3: int): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_setstackaddr*(a1: ptr TPthread_attr, a2: pointer): cint {.importc, header: "<pthread.h>".}
+proc pthread_attr_setstacksize*(a1: ptr TPthread_attr, a2: int): cint {.importc, header: "<pthread.h>".}
+proc pthread_barrier_destroy*(a1: ptr Tpthread_barrier): cint {.importc, header: "<pthread.h>".}
+proc pthread_barrier_init*(a1: ptr Tpthread_barrier,
+         a2: ptr Tpthread_barrierattr, a3: cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_barrier_wait*(a1: ptr Tpthread_barrier): cint {.importc, header: "<pthread.h>".}
+proc pthread_barrierattr_destroy*(a1: ptr Tpthread_barrierattr): cint {.importc, header: "<pthread.h>".}
+proc pthread_barrierattr_getpshared*(
+          a1: ptr Tpthread_barrierattr, a2: var cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_barrierattr_init*(a1: ptr TPthread_barrierattr): cint {.importc, header: "<pthread.h>".}
+proc pthread_barrierattr_setpshared*(a1: ptr TPthread_barrierattr, a2: cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_cancel*(a1: Tpthread): cint {.importc, header: "<pthread.h>".}
+proc pthread_cleanup_push*(a1: proc (x: pointer) {.noconv.}, a2: pointer) {.importc, header: "<pthread.h>".}
+proc pthread_cleanup_pop*(a1: cint) {.importc, header: "<pthread.h>".}
+proc pthread_cond_broadcast*(a1: ptr Tpthread_cond): cint {.importc, header: "<pthread.h>".}
+proc pthread_cond_destroy*(a1: ptr Tpthread_cond): cint {.importc, header: "<pthread.h>".}
+proc pthread_cond_init*(a1: ptr Tpthread_cond,
+          a2: ptr Tpthread_condattr): cint {.importc, header: "<pthread.h>".}
+proc pthread_cond_signal*(a1: ptr Tpthread_cond): cint {.importc, header: "<pthread.h>".}
+proc pthread_cond_timedwait*(a1: ptr Tpthread_cond,
+          a2: ptr Tpthread_mutex, a3: ptr Ttimespec): cint {.importc, header: "<pthread.h>".}
+
+proc pthread_cond_wait*(a1: ptr Tpthread_cond,
+          a2: ptr Tpthread_mutex): cint {.importc, header: "<pthread.h>".}
+proc pthread_condattr_destroy*(a1: ptr Tpthread_condattr): cint {.importc, header: "<pthread.h>".}
+proc pthread_condattr_getclock*(a1: ptr Tpthread_condattr,
+          a2: var Tclockid): cint {.importc, header: "<pthread.h>".}
+proc pthread_condattr_getpshared*(a1: ptr Tpthread_condattr,
+          a2: var cint): cint {.importc, header: "<pthread.h>".}
+          
+proc pthread_condattr_init*(a1: ptr TPthread_condattr): cint {.importc, header: "<pthread.h>".}
+proc pthread_condattr_setclock*(a1: ptr TPthread_condattr,a2: Tclockid): cint {.importc, header: "<pthread.h>".}
+proc pthread_condattr_setpshared*(a1: ptr TPthread_condattr, a2: cint): cint {.importc, header: "<pthread.h>".}
+
+proc pthread_create*(a1: ptr Tpthread, a2: ptr Tpthread_attr,
+          a3: proc (x: pointer): pointer {.noconv.}, a4: pointer): cint {.importc, header: "<pthread.h>".}
+proc pthread_detach*(a1: Tpthread): cint {.importc, header: "<pthread.h>".}
+proc pthread_equal*(a1, a2: Tpthread): cint {.importc, header: "<pthread.h>".}
+proc pthread_exit*(a1: pointer) {.importc, header: "<pthread.h>".}
+proc pthread_getconcurrency*(): cint {.importc, header: "<pthread.h>".}
+proc pthread_getcpuclockid*(a1: Tpthread, a2: var Tclockid): cint {.importc, header: "<pthread.h>".}
+proc pthread_getschedparam*(a1: Tpthread,  a2: var cint,
+          a3: ptr Tsched_param): cint {.importc, header: "<pthread.h>".}
+proc pthread_getspecific*(a1: Tpthread_key): pointer {.importc, header: "<pthread.h>".}
+proc pthread_join*(a1: Tpthread, a2: ptr pointer): cint {.importc, header: "<pthread.h>".}
+proc pthread_key_create*(a1: ptr Tpthread_key, a2: proc (x: pointer) {.noconv.}): cint {.importc, header: "<pthread.h>".}
+proc pthread_key_delete*(a1: Tpthread_key): cint {.importc, header: "<pthread.h>".}
+
+proc pthread_mutex_destroy*(a1: ptr Tpthread_mutex): cint {.importc, header: "<pthread.h>".}
+proc pthread_mutex_getprioceiling*(a1: ptr Tpthread_mutex,
+         a2: var cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_mutex_init*(a1: ptr Tpthread_mutex,
+          a2: ptr Tpthread_mutexattr): cint {.importc, header: "<pthread.h>".}
+proc pthread_mutex_lock*(a1: ptr Tpthread_mutex): cint {.importc, header: "<pthread.h>".}
+proc pthread_mutex_setprioceiling*(a1: ptr Tpthread_mutex,a2: cint,
+          a3: var cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_mutex_timedlock*(a1: ptr Tpthread_mutex,
+          a2: ptr Ttimespec): cint {.importc, header: "<pthread.h>".}
+proc pthread_mutex_trylock*(a1: ptr Tpthread_mutex): cint {.importc, header: "<pthread.h>".}
+proc pthread_mutex_unlock*(a1: ptr Tpthread_mutex): cint {.importc, header: "<pthread.h>".}
+proc pthread_mutexattr_destroy*(a1: ptr Tpthread_mutexattr): cint {.importc, header: "<pthread.h>".}
+
+proc pthread_mutexattr_getprioceiling*(
+          a1: ptr Tpthread_mutexattr, a2: var cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_mutexattr_getprotocol*(a1: ptr Tpthread_mutexattr,
+          a2: var cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_mutexattr_getpshared*(a1: ptr Tpthread_mutexattr,
+          a2: var cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_mutexattr_gettype*(a1: ptr Tpthread_mutexattr,
+          a2: var cint): cint {.importc, header: "<pthread.h>".}
+
+proc pthread_mutexattr_init*(a1: ptr Tpthread_mutexattr): cint {.importc, header: "<pthread.h>".}
+proc pthread_mutexattr_setprioceiling*(a1: ptr tpthread_mutexattr, a2: cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_mutexattr_setprotocol*(a1: ptr Tpthread_mutexattr, a2: cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_mutexattr_setpshared*(a1: ptr Tpthread_mutexattr, a2: cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_mutexattr_settype*(a1: ptr Tpthread_mutexattr, a2: cint): cint {.importc, header: "<pthread.h>".}
+
+proc pthread_once*(a1: ptr Tpthread_once, a2: proc {.noconv.}): cint {.importc, header: "<pthread.h>".}
+
+proc pthread_rwlock_destroy*(a1: ptr Tpthread_rwlock): cint {.importc, header: "<pthread.h>".}
+proc pthread_rwlock_init*(a1: ptr Tpthread_rwlock,
+          a2: ptr Tpthread_rwlockattr): cint {.importc, header: "<pthread.h>".}
+proc pthread_rwlock_rdlock*(a1: ptr Tpthread_rwlock): cint {.importc, header: "<pthread.h>".}
+proc pthread_rwlock_timedrdlock*(a1: ptr Tpthread_rwlock,
+          a2: ptr Ttimespec): cint {.importc, header: "<pthread.h>".}
+proc pthread_rwlock_timedwrlock*(a1: ptr Tpthread_rwlock,
+          a2: ptr Ttimespec): cint {.importc, header: "<pthread.h>".}
+
+proc pthread_rwlock_tryrdlock*(a1: ptr Tpthread_rwlock): cint {.importc, header: "<pthread.h>".}
+proc pthread_rwlock_trywrlock*(a1: ptr Tpthread_rwlock): cint {.importc, header: "<pthread.h>".}
+proc pthread_rwlock_unlock*(a1: ptr Tpthread_rwlock): cint {.importc, header: "<pthread.h>".}
+proc pthread_rwlock_wrlock*(a1: ptr Tpthread_rwlock): cint {.importc, header: "<pthread.h>".}
+proc pthread_rwlockattr_destroy*(a1: ptr Tpthread_rwlockattr): cint {.importc, header: "<pthread.h>".}
+proc pthread_rwlockattr_getpshared*(
+          a1: ptr Tpthread_rwlockattr, a2: var cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_rwlockattr_init*(a1: ptr Tpthread_rwlockattr): cint {.importc, header: "<pthread.h>".}
+proc pthread_rwlockattr_setpshared*(a1: ptr Tpthread_rwlockattr, a2: cint): cint {.importc, header: "<pthread.h>".}
+
+proc pthread_self*(): Tpthread {.importc, header: "<pthread.h>".}
+proc pthread_setcancelstate*(a1: cint, a2: var cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_setcanceltype*(a1: cint, a2: var cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_setconcurrency*(a1: cint): cint {.importc, header: "<pthread.h>".}
+proc pthread_setschedparam*(a1: Tpthread, a2: cint,
+          a3: ptr Tsched_param): cint {.importc, header: "<pthread.h>".}
+
 proc pthread_setschedprio*(a1: Tpthread, a2: cint): cint {.
-  importc, header: "<pthread.h>".}

+  importc, header: "<pthread.h>".}
 proc pthread_setspecific*(a1: Tpthread_key, a2: pointer): cint {.
-  importc, header: "<pthread.h>".}

+  importc, header: "<pthread.h>".}
 proc pthread_spin_destroy*(a1: ptr Tpthread_spinlock): cint {.
-  importc, header: "<pthread.h>".}

+  importc, header: "<pthread.h>".}
 proc pthread_spin_init*(a1: ptr Tpthread_spinlock, a2: cint): cint {.
-  importc, header: "<pthread.h>".}

+  importc, header: "<pthread.h>".}
 proc pthread_spin_lock*(a1: ptr Tpthread_spinlock): cint {.
-  importc, header: "<pthread.h>".}

+  importc, header: "<pthread.h>".}
 proc pthread_spin_trylock*(a1: ptr Tpthread_spinlock): cint{.
-  importc, header: "<pthread.h>".}

+  importc, header: "<pthread.h>".}
 proc pthread_spin_unlock*(a1: ptr Tpthread_spinlock): cint {.
-  importc, header: "<pthread.h>".}

-proc pthread_testcancel*() {.importc, header: "<pthread.h>".}

-

-

-proc access*(a1: cstring, a2: cint): cint {.importc, header: "<unistd.h>".}

-proc alarm*(a1: cint): cint {.importc, header: "<unistd.h>".}

-proc chdir*(a1: cstring): cint {.importc, header: "<unistd.h>".}

-proc chown*(a1: cstring, a2: Tuid, a3: Tgid): cint {.importc, header: "<unistd.h>".}

-proc close*(a1: cint): cint {.importc, header: "<unistd.h>".}

-proc confstr*(a1: cint, a2: cstring, a3: int): int {.importc, header: "<unistd.h>".}

-proc crypt*(a1, a2: cstring): cstring {.importc, header: "<unistd.h>".}

-proc ctermid*(a1: cstring): cstring {.importc, header: "<unistd.h>".}

-proc dup*(a1: cint): cint {.importc, header: "<unistd.h>".}

-proc dup2*(a1, a2: cint): cint {.importc, header: "<unistd.h>".}

-proc encrypt*(a1: array[0..63, char], a2: cint) {.importc, header: "<unistd.h>".}

-

-proc execl*(a1, a2: cstring): cint {.varargs, importc, header: "<unistd.h>".}

-proc execle*(a1, a2: cstring): cint {.varargs, importc, header: "<unistd.h>".}

-proc execlp*(a1, a2: cstring): cint {.varargs, importc, header: "<unistd.h>".}

-proc execv*(a1: cstring, a2: cstringArray): cint {.importc, header: "<unistd.h>".}

+  importc, header: "<pthread.h>".}
+proc pthread_testcancel*() {.importc, header: "<pthread.h>".}
+
+
+proc access*(a1: cstring, a2: cint): cint {.importc, header: "<unistd.h>".}
+proc alarm*(a1: cint): cint {.importc, header: "<unistd.h>".}
+proc chdir*(a1: cstring): cint {.importc, header: "<unistd.h>".}
+proc chown*(a1: cstring, a2: Tuid, a3: Tgid): cint {.importc, header: "<unistd.h>".}
+proc close*(a1: cint): cint {.importc, header: "<unistd.h>".}
+proc confstr*(a1: cint, a2: cstring, a3: int): int {.importc, header: "<unistd.h>".}
+proc crypt*(a1, a2: cstring): cstring {.importc, header: "<unistd.h>".}
+proc ctermid*(a1: cstring): cstring {.importc, header: "<unistd.h>".}
+proc dup*(a1: cint): cint {.importc, header: "<unistd.h>".}
+proc dup2*(a1, a2: cint): cint {.importc, header: "<unistd.h>".}
+proc encrypt*(a1: array[0..63, char], a2: cint) {.importc, header: "<unistd.h>".}
+
+proc execl*(a1, a2: cstring): cint {.varargs, importc, header: "<unistd.h>".}
+proc execle*(a1, a2: cstring): cint {.varargs, importc, header: "<unistd.h>".}
+proc execlp*(a1, a2: cstring): cint {.varargs, importc, header: "<unistd.h>".}
+proc execv*(a1: cstring, a2: cstringArray): cint {.importc, header: "<unistd.h>".}
 proc execve*(a1: cstring, a2, a3: cstringArray): cint {.
-  importc, header: "<unistd.h>".}

-proc execvp*(a1: cstring, a2: cstringArray): cint {.importc, header: "<unistd.h>".}

-proc fchown*(a1: cint, a2: Tuid, a3: Tgid): cint {.importc, header: "<unistd.h>".}

-proc fchdir*(a1: cint): cint {.importc, header: "<unistd.h>".}

-proc fdatasync*(a1: cint): cint {.importc, header: "<unistd.h>".}

-proc fork*(): Tpid {.importc, header: "<unistd.h>".}

-proc fpathconf*(a1, a2: cint): int {.importc, header: "<unistd.h>".}

-proc fsync*(a1: cint): cint {.importc, header: "<unistd.h>".}

-proc ftruncate*(a1: cint, a2: Toff): cint {.importc, header: "<unistd.h>".}

-proc getcwd*(a1: cstring, a2: int): cstring {.importc, header: "<unistd.h>".}

-proc getegid*(): TGid {.importc, header: "<unistd.h>".}

-proc geteuid*(): TUid {.importc, header: "<unistd.h>".}

-proc getgid*(): TGid {.importc, header: "<unistd.h>".}

-

+  importc, header: "<unistd.h>".}
+proc execvp*(a1: cstring, a2: cstringArray): cint {.importc, header: "<unistd.h>".}
+proc fchown*(a1: cint, a2: Tuid, a3: Tgid): cint {.importc, header: "<unistd.h>".}
+proc fchdir*(a1: cint): cint {.importc, header: "<unistd.h>".}
+proc fdatasync*(a1: cint): cint {.importc, header: "<unistd.h>".}
+proc fork*(): Tpid {.importc, header: "<unistd.h>".}
+proc fpathconf*(a1, a2: cint): int {.importc, header: "<unistd.h>".}
+proc fsync*(a1: cint): cint {.importc, header: "<unistd.h>".}
+proc ftruncate*(a1: cint, a2: Toff): cint {.importc, header: "<unistd.h>".}
+proc getcwd*(a1: cstring, a2: int): cstring {.importc, header: "<unistd.h>".}
+proc getegid*(): TGid {.importc, header: "<unistd.h>".}
+proc geteuid*(): TUid {.importc, header: "<unistd.h>".}
+proc getgid*(): TGid {.importc, header: "<unistd.h>".}
+
 proc getgroups*(a1: cint, a2: ptr array[0..255, Tgid]): cint {.
-  importc, header: "<unistd.h>".}

-proc gethostid*(): int {.importc, header: "<unistd.h>".}

-proc gethostname*(a1: cstring, a2: int): cint {.importc, header: "<unistd.h>".}

-proc getlogin*(): cstring {.importc, header: "<unistd.h>".}

-proc getlogin_r*(a1: cstring, a2: int): cint {.importc, header: "<unistd.h>".}

-

+  importc, header: "<unistd.h>".}
+proc gethostid*(): int {.importc, header: "<unistd.h>".}
+proc gethostname*(a1: cstring, a2: int): cint {.importc, header: "<unistd.h>".}
+proc getlogin*(): cstring {.importc, header: "<unistd.h>".}
+proc getlogin_r*(a1: cstring, a2: int): cint {.importc, header: "<unistd.h>".}
+
 proc getopt*(a1: cint, a2: cstringArray, a3: cstring): cint {.
-  importc, header: "<unistd.h>".}

-proc getpgid*(a1: Tpid): Tpid {.importc, header: "<unistd.h>".}

-proc getpgrp*(): Tpid {.importc, header: "<unistd.h>".}

-proc getpid*(): Tpid {.importc, header: "<unistd.h>".}

-proc getppid*(): Tpid {.importc, header: "<unistd.h>".}

-proc getsid*(a1: Tpid): Tpid {.importc, header: "<unistd.h>".}

-proc getuid*(): Tuid {.importc, header: "<unistd.h>".}

-proc getwd*(a1: cstring): cstring {.importc, header: "<unistd.h>".}

-proc isatty*(a1: cint): cint {.importc, header: "<unistd.h>".}

-proc lchown*(a1: cstring, a2: Tuid, a3: Tgid): cint {.importc, header: "<unistd.h>".}

-proc link*(a1, a2: cstring): cint {.importc, header: "<unistd.h>".}

-

-proc lockf*(a1, a2: cint, a3: Toff): cint {.importc, header: "<unistd.h>".}

-proc lseek*(a1: cint, a2: Toff, a3: cint): Toff {.importc, header: "<unistd.h>".}

-proc nice*(a1: cint): cint {.importc, header: "<unistd.h>".}

-proc pathconf*(a1: cstring, a2: cint): int {.importc, header: "<unistd.h>".}

-

-proc pause*(): cint {.importc, header: "<unistd.h>".}

-proc pipe*(a: array[0..1, cint]): cint {.importc, header: "<unistd.h>".}

+  importc, header: "<unistd.h>".}
+proc getpgid*(a1: Tpid): Tpid {.importc, header: "<unistd.h>".}
+proc getpgrp*(): Tpid {.importc, header: "<unistd.h>".}
+proc getpid*(): Tpid {.importc, header: "<unistd.h>".}
+proc getppid*(): Tpid {.importc, header: "<unistd.h>".}
+proc getsid*(a1: Tpid): Tpid {.importc, header: "<unistd.h>".}
+proc getuid*(): Tuid {.importc, header: "<unistd.h>".}
+proc getwd*(a1: cstring): cstring {.importc, header: "<unistd.h>".}
+proc isatty*(a1: cint): cint {.importc, header: "<unistd.h>".}
+proc lchown*(a1: cstring, a2: Tuid, a3: Tgid): cint {.importc, header: "<unistd.h>".}
+proc link*(a1, a2: cstring): cint {.importc, header: "<unistd.h>".}
+
+proc lockf*(a1, a2: cint, a3: Toff): cint {.importc, header: "<unistd.h>".}
+proc lseek*(a1: cint, a2: Toff, a3: cint): Toff {.importc, header: "<unistd.h>".}
+proc nice*(a1: cint): cint {.importc, header: "<unistd.h>".}
+proc pathconf*(a1: cstring, a2: cint): int {.importc, header: "<unistd.h>".}
+
+proc pause*(): cint {.importc, header: "<unistd.h>".}
+proc pipe*(a: array[0..1, cint]): cint {.importc, header: "<unistd.h>".}
 proc pread*(a1: cint, a2: pointer, a3: int, a4: Toff): int {.
-  importc, header: "<unistd.h>".}

+  importc, header: "<unistd.h>".}
 proc pwrite*(a1: cint, a2: pointer, a3: int, a4: Toff): int {.
-  importc, header: "<unistd.h>".}

-proc read*(a1: cint, a2: pointer, a3: int): int {.importc, header: "<unistd.h>".}

-proc readlink*(a1, a2: cstring, a3: int): int {.importc, header: "<unistd.h>".}

-

-proc rmdir*(a1: cstring): cint {.importc, header: "<unistd.h>".}

-proc setegid*(a1: Tgid): cint {.importc, header: "<unistd.h>".}

-proc seteuid*(a1: Tuid): cint {.importc, header: "<unistd.h>".}

-proc setgid*(a1: Tgid): cint {.importc, header: "<unistd.h>".}

-

-proc setpgid*(a1, a2: Tpid): cint {.importc, header: "<unistd.h>".}

-proc setpgrp*(): Tpid {.importc, header: "<unistd.h>".}

-proc setregid*(a1, a2: Tgid): cint {.importc, header: "<unistd.h>".}

-proc setreuid*(a1, a2: Tuid): cint {.importc, header: "<unistd.h>".}

-proc setsid*(): Tpid {.importc, header: "<unistd.h>".}

-proc setuid*(a1: Tuid): cint {.importc, header: "<unistd.h>".}

-proc sleep*(a1: cint): cint {.importc, header: "<unistd.h>".}

-proc swab*(a1, a2: pointer, a3: int) {.importc, header: "<unistd.h>".}

-proc symlink*(a1, a2: cstring): cint {.importc, header: "<unistd.h>".}

-proc sync*() {.importc, header: "<unistd.h>".}

-proc sysconf*(a1: cint): int {.importc, header: "<unistd.h>".}

-proc tcgetpgrp*(a1: cint): tpid {.importc, header: "<unistd.h>".}

-proc tcsetpgrp*(a1: cint, a2: Tpid): cint {.importc, header: "<unistd.h>".}

-proc truncate*(a1: cstring, a2: Toff): cint {.importc, header: "<unistd.h>".}

-proc ttyname*(a1: cint): cstring {.importc, header: "<unistd.h>".}

+  importc, header: "<unistd.h>".}
+proc read*(a1: cint, a2: pointer, a3: int): int {.importc, header: "<unistd.h>".}
+proc readlink*(a1, a2: cstring, a3: int): int {.importc, header: "<unistd.h>".}
+
+proc rmdir*(a1: cstring): cint {.importc, header: "<unistd.h>".}
+proc setegid*(a1: Tgid): cint {.importc, header: "<unistd.h>".}
+proc seteuid*(a1: Tuid): cint {.importc, header: "<unistd.h>".}
+proc setgid*(a1: Tgid): cint {.importc, header: "<unistd.h>".}
+
+proc setpgid*(a1, a2: Tpid): cint {.importc, header: "<unistd.h>".}
+proc setpgrp*(): Tpid {.importc, header: "<unistd.h>".}
+proc setregid*(a1, a2: Tgid): cint {.importc, header: "<unistd.h>".}
+proc setreuid*(a1, a2: Tuid): cint {.importc, header: "<unistd.h>".}
+proc setsid*(): Tpid {.importc, header: "<unistd.h>".}
+proc setuid*(a1: Tuid): cint {.importc, header: "<unistd.h>".}
+proc sleep*(a1: cint): cint {.importc, header: "<unistd.h>".}
+proc swab*(a1, a2: pointer, a3: int) {.importc, header: "<unistd.h>".}
+proc symlink*(a1, a2: cstring): cint {.importc, header: "<unistd.h>".}
+proc sync*() {.importc, header: "<unistd.h>".}
+proc sysconf*(a1: cint): int {.importc, header: "<unistd.h>".}
+proc tcgetpgrp*(a1: cint): tpid {.importc, header: "<unistd.h>".}
+proc tcsetpgrp*(a1: cint, a2: Tpid): cint {.importc, header: "<unistd.h>".}
+proc truncate*(a1: cstring, a2: Toff): cint {.importc, header: "<unistd.h>".}
+proc ttyname*(a1: cint): cstring {.importc, header: "<unistd.h>".}
 proc ttyname_r*(a1: cint, a2: cstring, a3: int): cint {.
-  importc, header: "<unistd.h>".}

-proc ualarm*(a1, a2: Tuseconds): Tuseconds {.importc, header: "<unistd.h>".}

-proc unlink*(a1: cstring): cint {.importc, header: "<unistd.h>".}

-proc usleep*(a1: Tuseconds): cint {.importc, header: "<unistd.h>".}

-proc vfork*(): tpid {.importc, header: "<unistd.h>".}

-proc write*(a1: cint, a2: pointer, a3: int): int {.importc, header: "<unistd.h>".}

-

-proc sem_close*(a1: ptr Tsem): cint {.importc, header: "<semaphore.h>".}

-proc sem_destroy*(a1: ptr Tsem): cint {.importc, header: "<semaphore.h>".}

+  importc, header: "<unistd.h>".}
+proc ualarm*(a1, a2: Tuseconds): Tuseconds {.importc, header: "<unistd.h>".}
+proc unlink*(a1: cstring): cint {.importc, header: "<unistd.h>".}
+proc usleep*(a1: Tuseconds): cint {.importc, header: "<unistd.h>".}
+proc vfork*(): tpid {.importc, header: "<unistd.h>".}
+proc write*(a1: cint, a2: pointer, a3: int): int {.importc, header: "<unistd.h>".}
+
+proc sem_close*(a1: ptr Tsem): cint {.importc, header: "<semaphore.h>".}
+proc sem_destroy*(a1: ptr Tsem): cint {.importc, header: "<semaphore.h>".}
 proc sem_getvalue*(a1: ptr Tsem, a2: var cint): cint {.
-  importc, header: "<semaphore.h>".}

+  importc, header: "<semaphore.h>".}
 proc sem_init*(a1: ptr Tsem, a2: cint, a3: cint): cint {.
-  importc, header: "<semaphore.h>".}

+  importc, header: "<semaphore.h>".}
 proc sem_open*(a1: cstring, a2: cint): ptr TSem {.
-  varargs, importc, header: "<semaphore.h>".}

-proc sem_post*(a1: ptr Tsem): cint {.importc, header: "<semaphore.h>".}

+  varargs, importc, header: "<semaphore.h>".}
+proc sem_post*(a1: ptr Tsem): cint {.importc, header: "<semaphore.h>".}
 proc sem_timedwait*(a1: ptr Tsem, a2: ptr Ttimespec): cint {.
-  importc, header: "<semaphore.h>".}

-proc sem_trywait*(a1: ptr Tsem): cint {.importc, header: "<semaphore.h>".}

-proc sem_unlink*(a1: cstring): cint {.importc, header: "<semaphore.h>".}

-proc sem_wait*(a1: ptr Tsem): cint {.importc, header: "<semaphore.h>".}

-

-proc ftok*(a1: cstring, a2: cint): Tkey {.importc, header: "<sys/ipc.h>".}

-

+  importc, header: "<semaphore.h>".}
+proc sem_trywait*(a1: ptr Tsem): cint {.importc, header: "<semaphore.h>".}
+proc sem_unlink*(a1: cstring): cint {.importc, header: "<semaphore.h>".}
+proc sem_wait*(a1: ptr Tsem): cint {.importc, header: "<semaphore.h>".}
+
+proc ftok*(a1: cstring, a2: cint): Tkey {.importc, header: "<sys/ipc.h>".}
+
 proc statvfs*(a1: cstring, a2: var Tstatvfs): cint {.
-  importc, header: "<sys/statvfs.h>".}

+  importc, header: "<sys/statvfs.h>".}
 proc fstatvfs*(a1: cint, a2: var Tstatvfs): cint {.
-  importc, header: "<sys/statvfs.h>".}

-

-proc chmod*(a1: cstring, a2: TMode): cint {.importc, header: "<sys/stat.h>".}

-proc fchmod*(a1: cint, a2: TMode): cint {.importc, header: "<sys/stat.h>".}

-proc fstat*(a1: cint, a2: var Tstat): cint {.importc, header: "<sys/stat.h>".}

-proc lstat*(a1: cstring, a2: var Tstat): cint {.importc, header: "<sys/stat.h>".}

-proc mkdir*(a1: cstring, a2: TMode): cint {.importc, header: "<sys/stat.h>".}

-proc mkfifo*(a1: cstring, a2: TMode): cint {.importc, header: "<sys/stat.h>".}

+  importc, header: "<sys/statvfs.h>".}
+
+proc chmod*(a1: cstring, a2: TMode): cint {.importc, header: "<sys/stat.h>".}
+proc fchmod*(a1: cint, a2: TMode): cint {.importc, header: "<sys/stat.h>".}
+proc fstat*(a1: cint, a2: var Tstat): cint {.importc, header: "<sys/stat.h>".}
+proc lstat*(a1: cstring, a2: var Tstat): cint {.importc, header: "<sys/stat.h>".}
+proc mkdir*(a1: cstring, a2: TMode): cint {.importc, header: "<sys/stat.h>".}
+proc mkfifo*(a1: cstring, a2: TMode): cint {.importc, header: "<sys/stat.h>".}
 proc mknod*(a1: cstring, a2: TMode, a3: Tdev): cint {.
-  importc, header: "<sys/stat.h>".}

-proc stat*(a1: cstring, a2: var Tstat): cint {.importc, header: "<sys/stat.h>".}

-proc umask*(a1: Tmode): TMode {.importc, header: "<sys/stat.h>".}

-

-proc S_ISBLK*(m: Tmode): bool {.importc, header: "<sys/stat.h>".}

-  ## Test for a block special file.

-proc S_ISCHR*(m: Tmode): bool {.importc, header: "<sys/stat.h>".}

-  ## Test for a character special file.

-proc S_ISDIR*(m: Tmode): bool {.importc, header: "<sys/stat.h>".}

-  ## Test for a directory.

-proc S_ISFIFO*(m: Tmode): bool {.importc, header: "<sys/stat.h>".}

-  ## Test for a pipe or FIFO special file.

-proc S_ISREG*(m: Tmode): bool {.importc, header: "<sys/stat.h>".}

-  ## Test for a regular file.

-proc S_ISLNK*(m: Tmode): bool {.importc, header: "<sys/stat.h>".}

-  ## Test for a symbolic link.

-proc S_ISSOCK*(m: Tmode): bool {.importc, header: "<sys/stat.h>".}

-  ## Test for a socket. 

-    

-proc S_TYPEISMQ*(buf: var TStat): bool {.importc, header: "<sys/stat.h>".}

-  ## Test for a message queue.

-proc S_TYPEISSEM*(buf: var TStat): bool {.importc, header: "<sys/stat.h>".}

-  ## Test for a semaphore.

-proc S_TYPEISSHM*(buf: var TStat): bool {.importc, header: "<sys/stat.h>".}

-  ## Test for a shared memory object. 

-    

-proc S_TYPEISTMO*(buf: var TStat): bool {.importc, header: "<sys/stat.h>".}

-  ## Test macro for a typed memory object. 

-  

-proc mlock*(a1: pointer, a2: int): cint {.importc, header: "<sys/mman.h>".}

-proc mlockall*(a1: cint): cint {.importc, header: "<sys/mman.h>".}

+  importc, header: "<sys/stat.h>".}
+proc stat*(a1: cstring, a2: var Tstat): cint {.importc, header: "<sys/stat.h>".}
+proc umask*(a1: Tmode): TMode {.importc, header: "<sys/stat.h>".}
+
+proc S_ISBLK*(m: Tmode): bool {.importc, header: "<sys/stat.h>".}
+  ## Test for a block special file.
+proc S_ISCHR*(m: Tmode): bool {.importc, header: "<sys/stat.h>".}
+  ## Test for a character special file.
+proc S_ISDIR*(m: Tmode): bool {.importc, header: "<sys/stat.h>".}
+  ## Test for a directory.
+proc S_ISFIFO*(m: Tmode): bool {.importc, header: "<sys/stat.h>".}
+  ## Test for a pipe or FIFO special file.
+proc S_ISREG*(m: Tmode): bool {.importc, header: "<sys/stat.h>".}
+  ## Test for a regular file.
+proc S_ISLNK*(m: Tmode): bool {.importc, header: "<sys/stat.h>".}
+  ## Test for a symbolic link.
+proc S_ISSOCK*(m: Tmode): bool {.importc, header: "<sys/stat.h>".}
+  ## Test for a socket. 
+    
+proc S_TYPEISMQ*(buf: var TStat): bool {.importc, header: "<sys/stat.h>".}
+  ## Test for a message queue.
+proc S_TYPEISSEM*(buf: var TStat): bool {.importc, header: "<sys/stat.h>".}
+  ## Test for a semaphore.
+proc S_TYPEISSHM*(buf: var TStat): bool {.importc, header: "<sys/stat.h>".}
+  ## Test for a shared memory object. 
+    
+proc S_TYPEISTMO*(buf: var TStat): bool {.importc, header: "<sys/stat.h>".}
+  ## Test macro for a typed memory object. 
+  
+proc mlock*(a1: pointer, a2: int): cint {.importc, header: "<sys/mman.h>".}
+proc mlockall*(a1: cint): cint {.importc, header: "<sys/mman.h>".}
 proc mmap*(a1: pointer, a2: int, a3, a4, a5: cint, a6: Toff): pointer {.
-  importc, header: "<sys/mman.h>".}

+  importc, header: "<sys/mman.h>".}
 proc mprotect*(a1: pointer, a2: int, a3: cint): cint {.
-  importc, header: "<sys/mman.h>".}

-proc msync*(a1: pointer, a2: int, a3: cint): cint {.importc, header: "<sys/mman.h>".}

-proc munlock*(a1: pointer, a2: int): cint {.importc, header: "<sys/mman.h>".}

-proc munlockall*(): cint {.importc, header: "<sys/mman.h>".}

-proc munmap*(a1: pointer, a2: int): cint {.importc, header: "<sys/mman.h>".}

+  importc, header: "<sys/mman.h>".}
+proc msync*(a1: pointer, a2: int, a3: cint): cint {.importc, header: "<sys/mman.h>".}
+proc munlock*(a1: pointer, a2: int): cint {.importc, header: "<sys/mman.h>".}
+proc munlockall*(): cint {.importc, header: "<sys/mman.h>".}
+proc munmap*(a1: pointer, a2: int): cint {.importc, header: "<sys/mman.h>".}
 proc posix_madvise*(a1: pointer, a2: int, a3: cint): cint {.
-  importc, header: "<sys/mman.h>".}

-proc posix_mem_offset*(a1: pointer, a2: int, a3: var Toff,

-           a4: var int, a5: var cint): cint {.importc, header: "<sys/mman.h>".}

+  importc, header: "<sys/mman.h>".}
+proc posix_mem_offset*(a1: pointer, a2: int, a3: var Toff,
+           a4: var int, a5: var cint): cint {.importc, header: "<sys/mman.h>".}
 proc posix_typed_mem_get_info*(a1: cint, 
-  a2: var Tposix_typed_mem_info): cint {.importc, header: "<sys/mman.h>".}

+  a2: var Tposix_typed_mem_info): cint {.importc, header: "<sys/mman.h>".}
 proc posix_typed_mem_open*(a1: cstring, a2, a3: cint): cint {.
-  importc, header: "<sys/mman.h>".}

+  importc, header: "<sys/mman.h>".}
 proc shm_open*(a1: cstring, a2: cint, a3: Tmode): cint {.
-  importc, header: "<sys/mman.h>".}

-proc shm_unlink*(a1: cstring): cint {.importc, header: "<sys/mman.h>".}

-

-proc asctime*(a1: var ttm): cstring{.importc, header: "<time.h>".}

-

-proc asctime_r*(a1: var ttm, a2: cstring): cstring {.importc, header: "<time.h>".}

-proc clock*(): Tclock {.importc, header: "<time.h>".}

+  importc, header: "<sys/mman.h>".}
+proc shm_unlink*(a1: cstring): cint {.importc, header: "<sys/mman.h>".}
+
+proc asctime*(a1: var ttm): cstring{.importc, header: "<time.h>".}
+
+proc asctime_r*(a1: var ttm, a2: cstring): cstring {.importc, header: "<time.h>".}
+proc clock*(): Tclock {.importc, header: "<time.h>".}
 proc clock_getcpuclockid*(a1: tpid, a2: var Tclockid): cint {.
-  importc, header: "<time.h>".}

+  importc, header: "<time.h>".}
 proc clock_getres*(a1: Tclockid, a2: var Ttimespec): cint {.
-  importc, header: "<time.h>".}

+  importc, header: "<time.h>".}
 proc clock_gettime*(a1: Tclockid, a2: var Ttimespec): cint {.
-  importc, header: "<time.h>".}

-proc clock_nanosleep*(a1: Tclockid, a2: cint, a3: var Ttimespec,

-               a4: var Ttimespec): cint {.importc, header: "<time.h>".}

+  importc, header: "<time.h>".}
+proc clock_nanosleep*(a1: Tclockid, a2: cint, a3: var Ttimespec,
+               a4: var Ttimespec): cint {.importc, header: "<time.h>".}
 proc clock_settime*(a1: Tclockid, a2: var Ttimespec): cint {.
-  importc, header: "<time.h>".}

-

-proc ctime*(a1: var Ttime): cstring {.importc, header: "<time.h>".}

-proc ctime_r*(a1: var Ttime, a2: cstring): cstring {.importc, header: "<time.h>".}

-proc difftime*(a1, a2: Ttime): cdouble {.importc, header: "<time.h>".}

-proc getdate*(a1: cstring): ptr ttm {.importc, header: "<time.h>".}

-

-proc gmtime*(a1: var ttime): ptr ttm {.importc, header: "<time.h>".}

-proc gmtime_r*(a1: var ttime, a2: var ttm): ptr ttm {.importc, header: "<time.h>".}

-proc localtime*(a1: var ttime): ptr ttm {.importc, header: "<time.h>".}

-proc localtime_r*(a1: var ttime, a2: var ttm): ptr ttm {.importc, header: "<time.h>".}

-proc mktime*(a1: var ttm): ttime  {.importc, header: "<time.h>".}

-proc nanosleep*(a1, a2: var Ttimespec): cint {.importc, header: "<time.h>".}

-proc strftime*(a1: cstring, a2: int, a3: cstring,

-           a4: var ttm): int {.importc, header: "<time.h>".}

-proc strptime*(a1, a2: cstring, a3: var ttm): cstring {.importc, header: "<time.h>".}

-proc time*(a1: var Ttime): ttime {.importc, header: "<time.h>".}

-proc timer_create*(a1: var Tclockid, a2: var Tsigevent,

-               a3: var Ttimer): cint {.importc, header: "<time.h>".}

-proc timer_delete*(a1: var Ttimer): cint {.importc, header: "<time.h>".}

+  importc, header: "<time.h>".}
+
+proc ctime*(a1: var Ttime): cstring {.importc, header: "<time.h>".}
+proc ctime_r*(a1: var Ttime, a2: cstring): cstring {.importc, header: "<time.h>".}
+proc difftime*(a1, a2: Ttime): cdouble {.importc, header: "<time.h>".}
+proc getdate*(a1: cstring): ptr ttm {.importc, header: "<time.h>".}
+
+proc gmtime*(a1: var ttime): ptr ttm {.importc, header: "<time.h>".}
+proc gmtime_r*(a1: var ttime, a2: var ttm): ptr ttm {.importc, header: "<time.h>".}
+proc localtime*(a1: var ttime): ptr ttm {.importc, header: "<time.h>".}
+proc localtime_r*(a1: var ttime, a2: var ttm): ptr ttm {.importc, header: "<time.h>".}
+proc mktime*(a1: var ttm): ttime  {.importc, header: "<time.h>".}
+proc nanosleep*(a1, a2: var Ttimespec): cint {.importc, header: "<time.h>".}
+proc strftime*(a1: cstring, a2: int, a3: cstring,
+           a4: var ttm): int {.importc, header: "<time.h>".}
+proc strptime*(a1, a2: cstring, a3: var ttm): cstring {.importc, header: "<time.h>".}
+proc time*(a1: var Ttime): ttime {.importc, header: "<time.h>".}
+proc timer_create*(a1: var Tclockid, a2: var Tsigevent,
+               a3: var Ttimer): cint {.importc, header: "<time.h>".}
+proc timer_delete*(a1: var Ttimer): cint {.importc, header: "<time.h>".}
 proc timer_gettime*(a1: Ttimer, a2: var Titimerspec): cint {.
-  importc, header: "<time.h>".}

-proc timer_getoverrun*(a1: Ttimer): cint {.importc, header: "<time.h>".}

-proc timer_settime*(a1: Ttimer, a2: cint, a3: var Titimerspec,

-               a4: var titimerspec): cint {.importc, header: "<time.h>".}

-proc tzset*() {.importc, header: "<time.h>".}

-

-

-proc wait*(a1: var cint): tpid {.importc, header: "<sys/wait.h>".}

+  importc, header: "<time.h>".}
+proc timer_getoverrun*(a1: Ttimer): cint {.importc, header: "<time.h>".}
+proc timer_settime*(a1: Ttimer, a2: cint, a3: var Titimerspec,
+               a4: var titimerspec): cint {.importc, header: "<time.h>".}
+proc tzset*() {.importc, header: "<time.h>".}
+
+
+proc wait*(a1: var cint): tpid {.importc, header: "<sys/wait.h>".}
 proc waitid*(a1: cint, a2: tid, a3: var Tsiginfo, a4: cint): cint {.
-  importc, header: "<sys/wait.h>".}

+  importc, header: "<sys/wait.h>".}
 proc waitpid*(a1: tpid, a2: var cint, a3: cint): tpid  {.
-  importc, header: "<sys/wait.h>".}

-

+  importc, header: "<sys/wait.h>".}
+
 proc bsd_signal*(a1: cint, a2: proc (x: pointer) {.noconv.}) {.
-  importc, header: "<signal.h>".}

-proc kill*(a1: Tpid, a2: cint): cint {.importc, header: "<signal.h>".}

-proc killpg*(a1: Tpid, a2: cint): cint {.importc, header: "<signal.h>".}

-proc pthread_kill*(a1: tpthread, a2: cint): cint {.importc, header: "<signal.h>".}

+  importc, header: "<signal.h>".}
+proc kill*(a1: Tpid, a2: cint): cint {.importc, header: "<signal.h>".}
+proc killpg*(a1: Tpid, a2: cint): cint {.importc, header: "<signal.h>".}
+proc pthread_kill*(a1: tpthread, a2: cint): cint {.importc, header: "<signal.h>".}
 proc pthread_sigmask*(a1: cint, a2, a3: var Tsigset): cint {.
-  importc, header: "<signal.h>".}

-proc `raise`*(a1: cint): cint {.importc, header: "<signal.h>".}

+  importc, header: "<signal.h>".}
+proc `raise`*(a1: cint): cint {.importc, header: "<signal.h>".}
 proc sigaction*(a1: cint, a2, a3: var Tsigaction): cint {.
-  importc, header: "<signal.h>".}

-proc sigaddset*(a1: var Tsigset, a2: cint): cint {.importc, header: "<signal.h>".}

-proc sigaltstack*(a1, a2: var Tstack): cint {.importc, header: "<signal.h>".}

-proc sigdelset*(a1: var Tsigset, a2: cint): cint {.importc, header: "<signal.h>".}

-proc sigemptyset*(a1: var Tsigset): cint {.importc, header: "<signal.h>".}

-proc sigfillset*(a1: var Tsigset): cint {.importc, header: "<signal.h>".}

-proc sighold*(a1: cint): cint {.importc, header: "<signal.h>".}

-proc sigignore*(a1: cint): cint {.importc, header: "<signal.h>".}

-proc siginterrupt*(a1, a2: cint): cint {.importc, header: "<signal.h>".}

-proc sigismember*(a1: var Tsigset, a2: cint): cint {.importc, header: "<signal.h>".}

+  importc, header: "<signal.h>".}
+proc sigaddset*(a1: var Tsigset, a2: cint): cint {.importc, header: "<signal.h>".}
+proc sigaltstack*(a1, a2: var Tstack): cint {.importc, header: "<signal.h>".}
+proc sigdelset*(a1: var Tsigset, a2: cint): cint {.importc, header: "<signal.h>".}
+proc sigemptyset*(a1: var Tsigset): cint {.importc, header: "<signal.h>".}
+proc sigfillset*(a1: var Tsigset): cint {.importc, header: "<signal.h>".}
+proc sighold*(a1: cint): cint {.importc, header: "<signal.h>".}
+proc sigignore*(a1: cint): cint {.importc, header: "<signal.h>".}
+proc siginterrupt*(a1, a2: cint): cint {.importc, header: "<signal.h>".}
+proc sigismember*(a1: var Tsigset, a2: cint): cint {.importc, header: "<signal.h>".}
 proc signal*(a1: cint, a2: proc (x: cint) {.noconv.}) {.
-  importc, header: "<signal.h>".}

-proc sigpause*(a1: cint): cint {.importc, header: "<signal.h>".}

-proc sigpending*(a1: var tsigset): cint {.importc, header: "<signal.h>".}

+  importc, header: "<signal.h>".}
+proc sigpause*(a1: cint): cint {.importc, header: "<signal.h>".}
+proc sigpending*(a1: var tsigset): cint {.importc, header: "<signal.h>".}
 proc sigprocmask*(a1: cint, a2, a3: var tsigset): cint {.
-  importc, header: "<signal.h>".}

+  importc, header: "<signal.h>".}
 proc sigqueue*(a1: tpid, a2: cint, a3: Tsigval): cint {.
-  importc, header: "<signal.h>".}

-proc sigrelse*(a1: cint): cint {.importc, header: "<signal.h>".}

-proc sigset*(a1: int, a2: proc (x: cint) {.noconv.}) {.importc, header: "<signal.h>".}

-proc sigsuspend*(a1: var Tsigset): cint {.importc, header: "<signal.h>".}

+  importc, header: "<signal.h>".}
+proc sigrelse*(a1: cint): cint {.importc, header: "<signal.h>".}
+proc sigset*(a1: int, a2: proc (x: cint) {.noconv.}) {.importc, header: "<signal.h>".}
+proc sigsuspend*(a1: var Tsigset): cint {.importc, header: "<signal.h>".}
 proc sigtimedwait*(a1: var Tsigset, a2: var tsiginfo, 
-                   a3: var ttimespec): cint {.importc, header: "<signal.h>".}

-proc sigwait*(a1: var Tsigset, a2: var cint): cint {.importc, header: "<signal.h>".}

+                   a3: var ttimespec): cint {.importc, header: "<signal.h>".}
+proc sigwait*(a1: var Tsigset, a2: var cint): cint {.importc, header: "<signal.h>".}
 proc sigwaitinfo*(a1: var Tsigset, a2: var tsiginfo): cint {.
-  importc, header: "<signal.h>".}

-

-

-proc catclose*(a1: Tnl_catd): cint {.importc, header: "<nl_types.h>".}

+  importc, header: "<signal.h>".}
+
+
+proc catclose*(a1: Tnl_catd): cint {.importc, header: "<nl_types.h>".}
 proc catgets*(a1: Tnl_catd, a2, a3: cint, a4: cstring): cstring {.
-  importc, header: "<nl_types.h>".}

-proc catopen*(a1: cstring, a2: cint): Tnl_catd {.importc, header: "<nl_types.h>".}

-

-proc sched_get_priority_max*(a1: cint): cint {.importc, header: "<sched.h>".}

-proc sched_get_priority_min*(a1: cint): cint {.importc, header: "<sched.h>".}

+  importc, header: "<nl_types.h>".}
+proc catopen*(a1: cstring, a2: cint): Tnl_catd {.importc, header: "<nl_types.h>".}
+
+proc sched_get_priority_max*(a1: cint): cint {.importc, header: "<sched.h>".}
+proc sched_get_priority_min*(a1: cint): cint {.importc, header: "<sched.h>".}
 proc sched_getparam*(a1: tpid, a2: var Tsched_param): cint {.
-  importc, header: "<sched.h>".}

-proc sched_getscheduler*(a1: tpid): cint {.importc, header: "<sched.h>".}

+  importc, header: "<sched.h>".}
+proc sched_getscheduler*(a1: tpid): cint {.importc, header: "<sched.h>".}
 proc sched_rr_get_interval*(a1: tpid, a2: var Ttimespec): cint {.
-  importc, header: "<sched.h>".}

+  importc, header: "<sched.h>".}
 proc sched_setparam*(a1: tpid, a2: var Tsched_param): cint {.
-  importc, header: "<sched.h>".}

+  importc, header: "<sched.h>".}
 proc sched_setscheduler*(a1: tpid, a2: cint, a3: var tsched_param): cint {.
-  importc, header: "<sched.h>".}

-proc sched_yield*(): cint {.importc, header: "<sched.h>".}

-

-proc strerror*(errnum: cint): cstring {.importc, header: "<string.h>".}

-

-proc FD_CLR*(a1: cint, a2: var Tfd_set) {.importc, header: "<sys/select.h>".}

+  importc, header: "<sched.h>".}
+proc sched_yield*(): cint {.importc, header: "<sched.h>".}
+
+proc strerror*(errnum: cint): cstring {.importc, header: "<string.h>".}
+
+proc FD_CLR*(a1: cint, a2: var Tfd_set) {.importc, header: "<sys/select.h>".}
 proc FD_ISSET*(a1: cint, a2: var Tfd_set): cint {.
-  importc, header: "<sys/select.h>".}

-proc FD_SET*(a1: cint, a2: var Tfd_set) {.importc, header: "<sys/select.h>".}

-proc FD_ZERO*(a1: var Tfd_set) {.importc, header: "<sys/select.h>".}

-

-proc pselect*(a1: cint, a2, a3, a4: var Tfd_set, a5: var ttimespec,

-         a6: var Tsigset): cint  {.importc, header: "<sys/select.h>".}

-proc select*(a1: cint, a2, a3, a4: var Tfd_set, a5: var ttimeval): cint {.

-             importc, header: "<sys/select.h>".}

-

-when hasSpawnH:

-  proc posix_spawn*(a1: var tpid, a2: cstring,

-            a3: var Tposix_spawn_file_actions,

+  importc, header: "<sys/select.h>".}
+proc FD_SET*(a1: cint, a2: var Tfd_set) {.importc, header: "<sys/select.h>".}
+proc FD_ZERO*(a1: var Tfd_set) {.importc, header: "<sys/select.h>".}
+
+proc pselect*(a1: cint, a2, a3, a4: var Tfd_set, a5: var ttimespec,
+         a6: var Tsigset): cint  {.importc, header: "<sys/select.h>".}
+proc select*(a1: cint, a2, a3, a4: var Tfd_set, a5: var ttimeval): cint {.
+             importc, header: "<sys/select.h>".}
+
+when hasSpawnH:
+  proc posix_spawn*(a1: var tpid, a2: cstring,
+            a3: var Tposix_spawn_file_actions,
             a4: var Tposix_spawnattr, 
-            a5, a6: cstringArray): cint {.importc, header: "<spawn.h>".}

-  proc posix_spawn_file_actions_addclose*(a1: var tposix_spawn_file_actions,

-            a2: cint): cint {.importc, header: "<spawn.h>".}

-  proc posix_spawn_file_actions_adddup2*(a1: var tposix_spawn_file_actions,

-            a2, a3: cint): cint {.importc, header: "<spawn.h>".}

-  proc posix_spawn_file_actions_addopen*(a1: var tposix_spawn_file_actions,

+            a5, a6: cstringArray): cint {.importc, header: "<spawn.h>".}
+  proc posix_spawn_file_actions_addclose*(a1: var tposix_spawn_file_actions,
+            a2: cint): cint {.importc, header: "<spawn.h>".}
+  proc posix_spawn_file_actions_adddup2*(a1: var tposix_spawn_file_actions,
+            a2, a3: cint): cint {.importc, header: "<spawn.h>".}
+  proc posix_spawn_file_actions_addopen*(a1: var tposix_spawn_file_actions,
             a2: cint, a3: cstring, a4: cint, a5: tmode): cint {.
-            importc, header: "<spawn.h>".}

+            importc, header: "<spawn.h>".}
   proc posix_spawn_file_actions_destroy*(
-    a1: var tposix_spawn_file_actions): cint {.importc, header: "<spawn.h>".}

+    a1: var tposix_spawn_file_actions): cint {.importc, header: "<spawn.h>".}
   proc posix_spawn_file_actions_init*(
-    a1: var tposix_spawn_file_actions): cint {.importc, header: "<spawn.h>".}

+    a1: var tposix_spawn_file_actions): cint {.importc, header: "<spawn.h>".}
   proc posix_spawnattr_destroy*(a1: var tposix_spawnattr): cint {.
-    importc, header: "<spawn.h>".}

-  proc posix_spawnattr_getsigdefault*(a1: var tposix_spawnattr,

-            a2: var Tsigset): cint {.importc, header: "<spawn.h>".}

-  proc posix_spawnattr_getflags*(a1: var tposix_spawnattr,

-            a2: var cshort): cint {.importc, header: "<spawn.h>".}

-  proc posix_spawnattr_getpgroup*(a1: var tposix_spawnattr,

-            a2: var tpid): cint {.importc, header: "<spawn.h>".}

-  proc posix_spawnattr_getschedparam*(a1: var tposix_spawnattr,

-            a2: var tsched_param): cint {.importc, header: "<spawn.h>".}

-  proc posix_spawnattr_getschedpolicy*(a1: var tposix_spawnattr,

-            a2: var cint): cint {.importc, header: "<spawn.h>".}

-  proc posix_spawnattr_getsigmask*(a1: var tposix_spawnattr,

-            a2: var tsigset): cint {.importc, header: "<spawn.h>".}

-  

+    importc, header: "<spawn.h>".}
+  proc posix_spawnattr_getsigdefault*(a1: var tposix_spawnattr,
+            a2: var Tsigset): cint {.importc, header: "<spawn.h>".}
+  proc posix_spawnattr_getflags*(a1: var tposix_spawnattr,
+            a2: var cshort): cint {.importc, header: "<spawn.h>".}
+  proc posix_spawnattr_getpgroup*(a1: var tposix_spawnattr,
+            a2: var tpid): cint {.importc, header: "<spawn.h>".}
+  proc posix_spawnattr_getschedparam*(a1: var tposix_spawnattr,
+            a2: var tsched_param): cint {.importc, header: "<spawn.h>".}
+  proc posix_spawnattr_getschedpolicy*(a1: var tposix_spawnattr,
+            a2: var cint): cint {.importc, header: "<spawn.h>".}
+  proc posix_spawnattr_getsigmask*(a1: var tposix_spawnattr,
+            a2: var tsigset): cint {.importc, header: "<spawn.h>".}
+  
   proc posix_spawnattr_init*(a1: var tposix_spawnattr): cint {.
-    importc, header: "<spawn.h>".}

-  proc posix_spawnattr_setsigdefault*(a1: var tposix_spawnattr,

-            a2: var tsigset): cint {.importc, header: "<spawn.h>".}

+    importc, header: "<spawn.h>".}
+  proc posix_spawnattr_setsigdefault*(a1: var tposix_spawnattr,
+            a2: var tsigset): cint {.importc, header: "<spawn.h>".}
   proc posix_spawnattr_setflags*(a1: var tposix_spawnattr, a2: cshort): cint {.
-    importc, header: "<spawn.h>".}

+    importc, header: "<spawn.h>".}
   proc posix_spawnattr_setpgroup*(a1: var tposix_spawnattr, a2: tpid): cint {.
-    importc, header: "<spawn.h>".}

-  

-  proc posix_spawnattr_setschedparam*(a1: var tposix_spawnattr,

-            a2: var tsched_param): cint {.importc, header: "<spawn.h>".}

+    importc, header: "<spawn.h>".}
+  
+  proc posix_spawnattr_setschedparam*(a1: var tposix_spawnattr,
+            a2: var tsched_param): cint {.importc, header: "<spawn.h>".}
   proc posix_spawnattr_setschedpolicy*(a1: var tposix_spawnattr, 
                                        a2: cint): cint {.
-                                       importc, header: "<spawn.h>".}

-  proc posix_spawnattr_setsigmask*(a1: var tposix_spawnattr,

-            a2: var tsigset): cint {.importc, header: "<spawn.h>".}

-  proc posix_spawnp*(a1: var tpid, a2: cstring,

-            a3: var tposix_spawn_file_actions,

-            a4: var tposix_spawnattr,

-            a5, a6: cstringArray): cint {.importc, header: "<spawn.h>".}

-

-proc getcontext*(a1: var Tucontext): cint {.importc, header: "<ucontext.h>".}

+                                       importc, header: "<spawn.h>".}
+  proc posix_spawnattr_setsigmask*(a1: var tposix_spawnattr,
+            a2: var tsigset): cint {.importc, header: "<spawn.h>".}
+  proc posix_spawnp*(a1: var tpid, a2: cstring,
+            a3: var tposix_spawn_file_actions,
+            a4: var tposix_spawnattr,
+            a5, a6: cstringArray): cint {.importc, header: "<spawn.h>".}
+
+proc getcontext*(a1: var Tucontext): cint {.importc, header: "<ucontext.h>".}
 proc makecontext*(a1: var Tucontext, a4: proc (){.noconv.}, a3: cint) {.
-  varargs, importc, header: "<ucontext.h>".}

-proc setcontext*(a1: var Tucontext): cint {.importc, header: "<ucontext.h>".}

-proc swapcontext*(a1, a2: var Tucontext): cint {.importc, header: "<ucontext.h>".}

+  varargs, importc, header: "<ucontext.h>".}
+proc setcontext*(a1: var Tucontext): cint {.importc, header: "<ucontext.h>".}
+proc swapcontext*(a1, a2: var Tucontext): cint {.importc, header: "<ucontext.h>".}
 
 proc readv*(a1: cint, a2: ptr TIOVec, a3: cint): int {.
   importc, header: "<sys/uio.h>".}
@@ -2311,8 +2311,9 @@ proc CMSG_FIRSTHDR*(mhdr: ptr TMsgHdr): ptr TCMsgHdr {.
 proc accept*(a1: cint, a2: ptr Tsockaddr, a3: ptr Tsocklen): cint {.
   importc, header: "<sys/socket.h>".}
 
-proc bind*(a1: cint, a2: ptr Tsockaddr, a3: Tsocklen): cint {.
-  importc, header: "<sys/socket.h>".}
+proc bindSocket*(a1: cint, a2: ptr Tsockaddr, a3: Tsocklen): cint {.
+  importc: "bind", header: "<sys/socket.h>".}
+  ## is Posix's ``bind``, because ``bind`` is a reserved word
   
 proc connect*(a1: cint, a2: ptr Tsockaddr, a3: Tsocklen): cint {.
   importc, header: "<sys/socket.h>".}
diff --git a/lib/pure/macros.nim b/lib/pure/macros.nim
index ce026a832..644a785cf 100644
--- a/lib/pure/macros.nim
+++ b/lib/pure/macros.nim
@@ -45,27 +45,27 @@ type
     nnkCurly, nnkBracket, nnkBracketExpr, nnkPragmaExpr, 
     nnkRange, nnkDotExpr, nnkCheckedFieldExpr, nnkDerefExpr, 
     nnkIfExpr, nnkElifExpr, nnkElseExpr, nnkLambda, 
-    nnkAccQuoted, nnkHeaderQuoted, nnkTableConstr, nnkQualified, 
-    nnkHiddenStdConv, nnkHiddenSubConv, nnkHiddenCallConv, nnkConv, 
-    nnkCast, nnkAddr, nnkHiddenAddr, nnkHiddenDeref, 
-    nnkObjDownConv, nnkObjUpConv, nnkChckRangeF, nnkChckRange64, 
-    nnkChckRange, nnkStringToCString, nnkCStringToString, nnkPassAsOpenArray, 
-    nnkAsgn, nnkFastAsgn, nnkDefaultTypeParam, nnkGenericParams, 
-    nnkFormalParams, nnkOfInherit, nnkModule, nnkProcDef, 
-    nnkConverterDef, nnkMacroDef, nnkTemplateDef, nnkIteratorDef, 
-    nnkOfBranch, nnkElifBranch, nnkExceptBranch, nnkElse, 
-    nnkMacroStmt, nnkAsmStmt, nnkPragma, nnkIfStmt, 
-    nnkWhenStmt, nnkForStmt, nnkWhileStmt, nnkCaseStmt, 
-    nnkVarSection, nnkConstSection, nnkConstDef, nnkTypeSection, 
-    nnkTypeDef, nnkYieldStmt, nnkTryStmt, nnkFinally, 
-    nnkRaiseStmt, nnkReturnStmt, nnkBreakStmt, nnkContinueStmt, 
-    nnkBlockStmt, nnkDiscardStmt, nnkStmtList, nnkImportStmt, 
-    nnkFromStmt, nnkImportAs, nnkIncludeStmt, nnkCommentStmt, 
-    nnkStmtListExpr, nnkBlockExpr, nnkStmtListType, nnkBlockType, 
-    nnkVm, nnkTypeOfExpr, nnkObjectTy, nnkTupleTy, 
-    nnkRecList, nnkRecCase, nnkRecWhen, nnkRefTy, 
-    nnkPtrTy, nnkVarTy, nnkAbstractTy, nnkProcTy, 
-    nnkEnumTy, nnkEnumFieldDef, nnkReturnToken
+    nnkAccQuoted, nnkTableConstr, nnkQualified, nnkBind, 
+    nnkSymChoice, nnkHiddenStdConv, nnkHiddenSubConv, nnkHiddenCallConv, 
+    nnkConv, nnkCast, nnkAddr, nnkHiddenAddr, 
+    nnkHiddenDeref, nnkObjDownConv, nnkObjUpConv, nnkChckRangeF, 
+    nnkChckRange64, nnkChckRange, nnkStringToCString, nnkCStringToString, 
+    nnkPassAsOpenArray, nnkAsgn, nnkFastAsgn, nnkDefaultTypeParam, 
+    nnkGenericParams, nnkFormalParams, nnkOfInherit, nnkModule, 
+    nnkProcDef, nnkConverterDef, nnkMacroDef, nnkTemplateDef, 
+    nnkIteratorDef, nnkOfBranch, nnkElifBranch, nnkExceptBranch, 
+    nnkElse, nnkMacroStmt, nnkAsmStmt, nnkPragma, 
+    nnkIfStmt, nnkWhenStmt, nnkForStmt, nnkWhileStmt, 
+    nnkCaseStmt, nnkVarSection, nnkConstSection, nnkConstDef, 
+    nnkTypeSection, nnkTypeDef, nnkYieldStmt, nnkTryStmt, 
+    nnkFinally, nnkRaiseStmt, nnkReturnStmt, nnkBreakStmt, 
+    nnkContinueStmt, nnkBlockStmt, nnkDiscardStmt, nnkStmtList, 
+    nnkImportStmt, nnkFromStmt, nnkImportAs, nnkIncludeStmt, 
+    nnkCommentStmt, nnkStmtListExpr, nnkBlockExpr, nnkStmtListType, 
+    nnkBlockType, nnkVm, nnkTypeOfExpr, nnkObjectTy, 
+    nnkTupleTy, nnkRecList, nnkRecCase, nnkRecWhen, 
+    nnkRefTy, nnkPtrTy, nnkVarTy, nnkAbstractTy, 
+    nnkProcTy, nnkEnumTy, nnkEnumFieldDef, nnkReturnToken
   TNimNodeKinds* = set[TNimrodNodeKind]
   TNimrodTypeKind* = enum
     ntyNone, ntyBool, ntyChar, ntyEmpty, 
diff --git a/lib/pure/os.nim b/lib/pure/os.nim
index 847117d93..a0e5565e8 100644
--- a/lib/pure/os.nim
+++ b/lib/pure/os.nim
@@ -556,9 +556,9 @@ proc sameFileContent*(path1, path2: string): bool =
     bufSize = 8192 # 8K buffer
   var
     a, b: TFile
-  if not openFile(a, path1): return false
-  if not openFile(b, path2):
-    closeFile(a)
+  if not open(a, path1): return false
+  if not open(b, path2):
+    close(a)
     return false
   var bufA = alloc(bufsize)
   var bufB = alloc(bufsize)
@@ -576,8 +576,8 @@ proc sameFileContent*(path1, path2: string): bool =
     if readA != bufSize: break # end of file
   dealloc(bufA)
   dealloc(bufB)
-  closeFile(a)
-  closeFile(b)
+  close(a)
+  close(b)
 
 proc copyFile*(dest, source: string) =
   ## Copies a file from `source` to `dest`. If this fails,
@@ -590,9 +590,9 @@ proc copyFile*(dest, source: string) =
       bufSize = 8192 # 8K buffer
     var
       d, s: TFile
-    if not openFile(s, source): OSError()
-    if not openFile(d, dest, fmWrite):
-      closeFile(s)
+    if not open(s, source): OSError()
+    if not open(d, dest, fmWrite):
+      close(s)
       OSError()
     var
       buf: Pointer = alloc(bufsize)
@@ -603,8 +603,8 @@ proc copyFile*(dest, source: string) =
       if bytesread != bufSize: break
       if bytesread != bytesWritten: OSError()
     dealloc(buf)
-    closeFile(s)
-    closeFile(d)
+    close(s)
+    close(d)
 
 proc moveFile*(dest, source: string) =
   ## Moves a file from `source` to `dest`. If this fails, `EOS` is raised.
@@ -954,7 +954,7 @@ proc getHomeDir*(): string =
   when defined(windows): return getEnv("USERPROFILE") & "\\"
   else: return getEnv("HOME") & "/"
 
-proc getConfigDir*(): string {.noSideEffect.} =
+proc getConfigDir*(): string =
   ## Returns the config directory of the current user for applications.
   when defined(windows): return getEnv("APPDATA") & "\\"
   else: return getEnv("HOME") & "/.config/"
diff --git a/lib/pure/osproc.nim b/lib/pure/osproc.nim
index 205460614..cf4d926b6 100644
--- a/lib/pure/osproc.nim
+++ b/lib/pure/osproc.nim
@@ -405,17 +405,17 @@ else:
 
   proc inputStream(p: PProcess): PStream =
     var f: TFile
-    if not openFile(f, p.inputHandle, fmWrite): OSError()
+    if not open(f, p.inputHandle, fmWrite): OSError()
     result = newFileStream(f)
 
   proc outputStream(p: PProcess): PStream =
     var f: TFile
-    if not openFile(f, p.outputHandle, fmRead): OSError()
+    if not open(f, p.outputHandle, fmRead): OSError()
     result = newFileStream(f)
 
   proc errorStream(p: PProcess): PStream =
     var f: TFile
-    if not openFile(f, p.errorHandle, fmRead): OSError()
+    if not open(f, p.errorHandle, fmRead): OSError()
     result = newFileStream(f)
 
   proc csystem(cmd: cstring): cint {.nodecl, importc: "system".}
diff --git a/lib/pure/regexprs.nim b/lib/pure/regexprs.nim
index e2aac3d17..69b35d7f0 100644
--- a/lib/pure/regexprs.nim
+++ b/lib/pure/regexprs.nim
@@ -152,3 +152,25 @@ const ## common regular expressions
   reURL* = r"\b(http(s)?|ftp|gopher|telnet|file|notes|ms\-help):" &
            r"((//)|(\\\\))+[\w\d:#@%/;$()~_?\+\-\=\\\.\&]*\b"
     ## describes an URL
+    
+proc verbose*(pattern: string): string {.noSideEffect.} = 
+  ## deletes whitespace from a pattern that is not escaped or in a character
+  ## class. This is modelled after Perl's ``/x`` modifier. 
+  result = ""
+  var i = 0
+  while i < pattern.len: 
+    case pattern[i]
+    of ' ', '\t': 
+      inc i
+    of '\\': 
+      add result, '\\'
+      add result, pattern[i+1]
+      inc i, 2
+    of '[': 
+      while pattern[i] != ']' and pattern[i] != '\0': 
+        add result, pattern[i]
+        inc i
+    else: 
+      add result, pattern[i]
+      inc i
+
diff --git a/lib/pure/streams.nim b/lib/pure/streams.nim
index 238cba4ec..0f4d4f771 100644
--- a/lib/pure/streams.nim
+++ b/lib/pure/streams.nim
@@ -144,7 +144,7 @@ type
   TFileStream* = object of TStream
     f: TFile
 
-proc fsClose(s: PFileStream) = closeFile(s.f)
+proc fsClose(s: PFileStream) = close(s.f)
 proc fsAtEnd(s: PFileStream): bool = return EndOfFile(s.f)
 proc fsSetPosition(s: PFileStream, pos: int) = setFilePos(s.f, pos)
 proc fsGetPosition(s: PFileStream): int = return int(getFilePos(s.f))
@@ -171,7 +171,7 @@ proc newFileStream*(filename: string, mode: TFileMode): PFileStream =
   ## creates a new stream from the file named `filename` with the mode `mode`.
   ## If the file cannot be opened, nil is returned.
   var f: TFile
-  if OpenFile(f, filename, mode): result = newFileStream(f)
+  if Open(f, filename, mode): result = newFileStream(f)
 
 
 when true:
diff --git a/lib/pure/strutils.nim b/lib/pure/strutils.nim
index a4895110b..3a9a8d0b3 100644
--- a/lib/pure/strutils.nim
+++ b/lib/pure/strutils.nim
@@ -150,15 +150,18 @@ proc find*(s: string, chars: set[char], start: int = 0): int {.noSideEffect.}
   ## Searches for `chars` in `s` starting at position `start`. If `s` contains
   ## none of the characters in `chars`, -1 is returned.
 
-proc replaceStr*(s, sub, by: string): string {.noSideEffect.}
+proc replaceStr*(s, sub, by: string): string {.noSideEffect, deprecated.}
   ## Replaces `sub` in `s` by the string `by`.
+  ## **Deprecated since version 0.8.0**: Use `replace` instead.
 
-proc replaceStr*(s: string, sub, by: char): string {.noSideEffect.}
+proc replaceStr*(s: string, sub, by: char): string {.noSideEffect, deprecated.}
   ## optimized version for characters.
+  ## **Deprecated since version 0.8.0**: Use `replace` instead.
 
-proc deleteStr*(s: var string, first, last: int)
+proc deleteStr*(s: var string, first, last: int) {.deprecated.}
   ## Deletes in `s` the characters at position `first`..`last`. This modifies
   ## `s` itself, it does not return a copy.
+  ## **Deprecated since version 0.8.0**: Use `delete` instead.
 
 proc toOctal*(c: char): string
   ## Converts a character `c` to its octal representation. The resulting
@@ -185,7 +188,7 @@ iterator split*(s: string, seps: set[char] = Whitespace): string =
   ##   for word in split(";;this;is;an;;example;;;", {';'}):
   ##     writeln(stdout, word)
   ##
-  ## produces in the same output.
+  ## produces the same output.
   var
     first: int = 0
     last: int = 0
@@ -315,17 +318,15 @@ proc intToStr*(x: int, minchars: int = 1): string
 proc ParseInt*(s: string): int {.noSideEffect.}
   ## Parses a decimal integer value contained in `s`. If `s` is not
   ## a valid integer, `EInvalidValue` is raised.
-  # XXX: make this biggestint!
 
 proc ParseBiggestInt*(s: string): biggestInt {.noSideEffect.}
   ## Parses a decimal integer value contained in `s`. If `s` is not
   ## a valid integer, `EInvalidValue` is raised.
 
-proc ParseFloat*(s: string, start = 0): float {.noSideEffect.}
+proc ParseFloat*(s: string): float {.noSideEffect.}
   ## Parses a decimal floating point value contained in `s`. If `s` is not
   ## a valid floating point number, `EInvalidValue` is raised. ``NAN``,
   ## ``INF``, ``-INF`` are also supported (case insensitive comparison).
-  # XXX: make this biggestfloat.
 
 # the stringify and format operators:
 proc toString*[Ty](x: Ty): string
@@ -439,10 +440,15 @@ proc findNormalized(x: string, inArray: openarray[string]): int =
 proc addf(s: var string, formatstr: string, a: openarray[string]) =
   const PatternChars = {'a'..'z', 'A'..'Z', '0'..'9', '\128'..'\255', '_'}
   var i = 0
+  var num = 0
   while i < len(formatstr):
     if formatstr[i] == '$':
       case formatstr[i+1] # again we use the fact that strings
                           # are zero-terminated here
+      of '#':
+        add s, a[num]
+        inc i, 2
+        inc num
       of '$':
         add s, '$'
         inc(i, 2)
@@ -452,6 +458,7 @@ proc addf(s: var string, formatstr: string, a: openarray[string]) =
         while formatstr[i] in {'0'..'9'}:
           j = j * 10 + ord(formatstr[i]) - ord('0')
           inc(i)
+        num = j
         add s, a[j - 1]
       of '{':
         var j = i+1
@@ -510,6 +517,31 @@ proc splitSeq(s: string, seps: set[char]): seq[string] =
 
 # ---------------------------------------------------------------------------
 
+proc join*(a: openArray[string], sep: string): string =
+  ## concatenates all strings in `a` separating them with `sep`.
+  if len(a) > 0:
+    var L = sep.len * (a.len-1)
+    for i in 0..high(a): inc(L, a[i].len)
+    result = newString(L)
+    setLen(result, 0)
+    add(result, a[0])
+    for i in 1..high(a):
+      add(result, sep)
+      add(result, a[i])
+  else:
+    result = ""
+  
+proc join*(a: openArray[string]): string =
+  ## concatenates all strings in `a`.
+  if len(a) > 0:
+    var L = 0
+    for i in 0..high(a): inc(L, a[i].len)
+    result = newString(L)
+    setLen(result, 0)
+    for i in 0..high(a): add(result, a[i])
+  else:
+    result = ""
+
 proc strip(s: string, leading = true, trailing = true): string =
   const
     chars: set[Char] = Whitespace
@@ -638,7 +670,8 @@ proc contains(s: string, c: char): bool =
 proc contains(s, sub: string): bool =
   return find(s, sub) >= 0
 
-proc replaceStr(s, sub, by: string): string =
+proc replace*(s, sub, by: string): string =
+  ## Replaces `sub` in `s` by the string `by`.
   var a: TSkipTable
   result = ""
   preprocessSub(sub, a)
@@ -652,7 +685,8 @@ proc replaceStr(s, sub, by: string): string =
   # copy the rest:
   add result, copy(s, i)
 
-proc replaceStr(s: string, sub, by: char): string =
+proc replace*(s: string, sub, by: char): string =
+  ## optimized version for characters.
   result = newString(s.len)
   var i = 0
   while i < s.len:
@@ -660,17 +694,23 @@ proc replaceStr(s: string, sub, by: char): string =
     else: result[i] = s[i]
     inc(i)
 
-proc deleteStr(s: var string, first, last: int) =
+proc delete*(s: var string, first, last: int) =
+  ## Deletes in `s` the characters at position `first`..`last`. This modifies
+  ## `s` itself, it does not return a copy.
+  var
+    i = first
   # example: "abc___uvwxyz\0"  (___ is to be deleted)
   # --> first == 3, last == 5
   # s[first..] = s[last+1..]
-  var
-    i = first
   while last+i+1 < len(s):
     s[i] = s[last+i+1]
     inc(i)
   setlen(s, len(s)-(last-first+1))
 
+proc replaceStr(s, sub, by: string): string = return replace(s, sub, by)
+proc replaceStr(s: string, sub, by: char): string = return replace(s, sub, by)
+proc deleteStr*(s: var string, first, last: int) = delete(s, first, last)
+
 # parsing numbers:
 
 proc toHex(x: BiggestInt, len: int): string =
@@ -734,11 +774,11 @@ proc ParseBiggestInt(s: string): biggestInt =
   if index == -1:
     raise newException(EInvalidValue, "invalid integer: " & s)
 
-proc ParseFloat(s: string, start = 0): float =
+proc ParseFloat(s: string): float =
   var
     esign = 1.0
     sign = 1.0
-    i = start
+    i = 0
     exponent: int
     flags: int
   result = 0.0
diff --git a/lib/system.nim b/lib/system.nim
index 5f7eefa45..236a8f8cc 100644
--- a/lib/system.nim
+++ b/lib/system.nim
@@ -69,11 +69,12 @@ proc `or`*(x, y: bool): bool {.magic: "Or", noSideEffect.}
 proc `xor`*(x, y: bool): bool {.magic: "Xor", noSideEffect.}
   ## Boolean `exclusive or`; returns true iff ``x != y``.
 
-proc new*[T](a: var ref T) {.magic: "New".}
+proc new*[T](a: var ref T) {.magic: "New", noSideEffect.}
   ## creates a new object of type ``T`` and returns a safe (traced)
   ## reference to it in ``a``.
 
-proc new*[T](a: var ref T, finalizer: proc (x: ref T)) {.magic: "NewFinalize".}
+proc new*[T](a: var ref T, finalizer: proc (x: ref T)) {.
+  magic: "NewFinalize", noSideEffect.}
   ## creates a new object of type ``T`` and returns a safe (traced)
   ## reference to it in ``a``. When the garbage collector frees the object,
   ## `finalizer` is called. The `finalizer` may not keep a reference to the
@@ -230,17 +231,17 @@ proc pred*[T](x: ordinal[T], y = 1): T {.magic: "Pred", noSideEffect.}
   ## an ordinal type. If such a value does not exist, ``EOutOfRange`` is raised
   ## or a compile time error occurs.
 
-proc inc*[T](x: var ordinal[T], y = 1) {.magic: "Inc".}
+proc inc*[T](x: var ordinal[T], y = 1) {.magic: "Inc", noSideEffect.}
   ## increments the ordinal ``x`` by ``y``. If such a value does not
   ## exist, ``EOutOfRange`` is raised or a compile time error occurs. This is a
   ## short notation for: ``x = succ(x, y)``.
 
-proc dec*[T](x: var ordinal[T], y = 1) {.magic: "Dec".}
+proc dec*[T](x: var ordinal[T], y = 1) {.magic: "Dec", noSideEffect.}
   ## decrements the ordinal ``x`` by ``y``. If such a value does not
   ## exist, ``EOutOfRange`` is raised or a compile time error occurs. This is a
   ## short notation for: ``x = pred(x, y)``.
   
-proc newSeq*[T](s: var seq[T], len: int) {.magic: "NewSeq".}
+proc newSeq*[T](s: var seq[T], len: int) {.magic: "NewSeq", noSideEffect.}
   ## creates a new sequence of type ``seq[T]`` with length ``len``.
   ## This is equivalent to ``s = []; setlen(s, len)``, but more
   ## efficient since no relocation is needed.
@@ -255,11 +256,11 @@ proc len*[T](x: seq[T]): int {.magic: "LengthSeq", noSideEffect.}
   ## always an int.
 
 # set routines:
-proc incl*[T](x: var set[T], y: T) {.magic: "Incl".}
+proc incl*[T](x: var set[T], y: T) {.magic: "Incl", noSideEffect.}
   ## includes element ``y`` to the set ``x``. This is the same as
   ## ``x = x + {y}``, but it might be more efficient.
 
-proc excl*[T](x: var set[T], y: T) {.magic: "Excl".}
+proc excl*[T](x: var set[T], y: T) {.magic: "Excl", noSideEffect.}
   ## excludes element ``y`` to the set ``x``. This is the same as
   ## ``x = x - {y}``, but it might be more efficient.
 
@@ -641,8 +642,8 @@ proc `&` * (x: char, y: string): string {.
   magic: "ConStrStr", noSideEffect, merge.}
   ## is the `concatenation operator`. It concatenates `x` and `y`.
 
-proc add*(x: var string, y: char) {.magic: "AppendStrCh".}
-proc add*(x: var string, y: string) {.magic: "AppendStrStr".}
+proc add*(x: var string, y: char) {.magic: "AppendStrCh", noSideEffect.}
+proc add*(x: var string, y: string) {.magic: "AppendStrStr", noSideEffect.}
 
 when not defined(ECMAScript):
   {.push overflow_checks:off}
@@ -663,8 +664,8 @@ else:
       `x`[0][len] = 0
     """
 
-proc add *[T](x: var seq[T], y: T) {.magic: "AppendSeqElem".}
-proc add *[T](x: var seq[T], y: seq[T]) {.magic: "AppendSeqSeq".}
+proc add *[T](x: var seq[T], y: T) {.magic: "AppendSeqElem", noSideEffect.}
+proc add *[T](x: var seq[T], y: seq[T]) {.magic: "AppendSeqSeq", noSideEffect.}
   ## Generic proc for adding a data item `y` to a container `x`.
   ## For containers that have an order, `add` means *append*. New generic
   ## containers should also call their adding proc `add` for consistency.
@@ -811,7 +812,8 @@ proc copy*(s: string, first, last: int): string {.
   ## the first and last characters that shall be copied. If ``last``
   ## is omitted, it is treated as ``high(s)``.
 
-proc setLen*(s: var string, newlen: int) {.magic: "SetLengthStr".}
+proc setLen*(s: var string, newlen: int) {.
+  magic: "SetLengthStr", noSideEffect.}
   ## sets the length of `s` to `newlen`.
   ## If the current length is greater than the new length,
   ## ``s`` will be truncated.
@@ -873,20 +875,21 @@ proc dealloc*(p: Pointer) {.noconv.}
   ## or other memory may be corrupted. So this procedure is really
   ## *unsafe*.
 
-proc setLen*[T](s: var seq[T], newlen: int) {.magic: "SetLengthSeq".}
+proc setLen*[T](s: var seq[T], newlen: int) {.
+  magic: "SetLengthSeq", noSideEffect.}
   ## sets the length of `s` to `newlen`.
   ## ``T`` may be any sequence type.
   ## If the current length is greater than the new length,
   ## ``s`` will be truncated.
 
-proc assert*(cond: bool) {.magic: "Assert".}
+proc assert*(cond: bool) {.magic: "Assert", noSideEffect.}
   ## provides a means to implement `programming by contracts` in Nimrod.
   ## ``assert`` evaluates expression ``cond`` and if ``cond`` is false, it
   ## raises an ``EAssertionFailure`` exception. However, the compiler may
   ## not generate any code at all for ``assert`` if it is advised to do so.
   ## Thus one should use ``assert`` for debugging purposes only.
 
-proc swap*[T](a, b: var T) {.magic: "Swap".}
+proc swap*[T](a, b: var T) {.magic: "Swap", noSideEffect.}
   ## swaps the values `a` and `b`. This is often more efficient than
   ## ``tmp = a; a = b; b = tmp``. Particularly useful for sorting algorithms.
 
@@ -934,7 +937,7 @@ proc `$` *[T](x: ordinal[T]): string {.magic: "EnumToStr", noSideEffect.}
   ## used instead. (In other words: *Overwriting* is possible.)
 
 # undocumented:
-proc getRefcount*[T](x: ref T): int {.importc: "getRefcount".}
+proc getRefcount*[T](x: ref T): int {.importc: "getRefcount", noSideEffect.}
   ## retrieves the reference count of an heap-allocated object. The
   ## value is implementation-dependant.
 
@@ -1107,18 +1110,19 @@ proc find*[T, S](a: T, item: S): int {.inline.} =
     inc(result)
   result = -1
 
-proc pop*[T](s: var seq[T]): T {.inline.} = 
+proc pop*[T](s: var seq[T]): T {.inline, noSideEffect.} = 
   ## returns the last item of `s` and decreases ``s.len`` by one. This treats
   ## `s` as a stack and implements the common *pop* operation.
   var L = s.len-1
   result = s[L]
   setLen(s, L)
 
-proc each*[T, S](data: openArray[T], op: proc (x: T): S): seq[S] = 
+proc each*[T, S](data: openArray[T], op: proc (x: T): S): seq[S] {.
+    noSideEffect.} = 
   ## The well-known ``map`` operation from functional programming. Applies
   ## `op` to every item in `data` and returns the result as a sequence.
-  result = @[]
-  for d in items(data): add(result, op(d))
+  newSeq(result, data.len)
+  for i in 0..data.len-1: result[i] = op(data[i])
 
 
 # ----------------- FPU ------------------------------------------------------
@@ -1293,7 +1297,16 @@ when not defined(EcmaScript) and not defined(NimrodVM):
       ## does not work because the program writes to ``stderr``.
 
   proc OpenFile*(f: var TFile, filename: string,
-                 mode: TFileMode = fmRead, bufSize: int = -1): Bool
+                 mode: TFileMode = fmRead, 
+                 bufSize: int = -1): Bool {.deprecated.}
+    ## **Deprecated since version 0.8.0**: Use `open` instead.
+
+  proc OpenFile*(f: var TFile, filehandle: TFileHandle,
+                 mode: TFileMode = fmRead): Bool {.deprecated.}
+    ## **Deprecated since version 0.8.0**: Use `open` instead.
+
+  proc Open*(f: var TFile, filename: string,
+             mode: TFileMode = fmRead, bufSize: int = -1): Bool
     ## Opens a file named `filename` with given `mode`.
     ##
     ## Default mode is readonly. Returns true iff the file could be opened.
@@ -1301,14 +1314,19 @@ when not defined(EcmaScript) and not defined(NimrodVM):
     ## that the programmer needs to provide an appropriate error message anyway
     ## (yes, even in scripts).
 
-  proc OpenFile*(f: var TFile, filehandle: TFileHandle,
-                 mode: TFileMode = fmRead): Bool
+  proc Open*(f: var TFile, filehandle: TFileHandle,
+             mode: TFileMode = fmRead): Bool
     ## Creates a ``TFile`` from a `filehandle` with given `mode`.
     ##
     ## Default mode is readonly. Returns true iff the file could be opened.
 
-  proc CloseFile*(f: TFile) {.importc: "fclose", nodecl.}
+  proc CloseFile*(f: TFile) {.importc: "fclose", nodecl, deprecated.}
     ## Closes the file.
+    ## **Deprecated since version 0.8.0**: Use `close` instead.
+
+  proc Close*(f: TFile) {.importc: "fclose", nodecl.}
+    ## Closes the file.
+
   proc EndOfFile*(f: TFile): Bool
     ## Returns true iff `f` is at the end.
   proc readChar*(f: TFile): char {.importc: "fgetc", nodecl.}
@@ -1394,13 +1412,13 @@ when not defined(EcmaScript) and not defined(NimrodVM):
     ## If the file does not exist `EIO` is raised.
     var
       f: TFile
-    if not openFile(f, filename):
+    if not open(f, filename):
       raise newException(EIO, "cannot open: " & filename)
     var res = ""
     while not endOfFile(f):
       rawReadLine(f, res)
       yield res
-    CloseFile(f)
+    Close(f)
 
   proc fileHandle*(f: TFile): TFileHandle {.importc: "fileno",
                                             header: "<stdio.h>"}
diff --git a/lib/system/ansi_c.nim b/lib/system/ansi_c.nim
index bdde11d50..e9300949b 100644
--- a/lib/system/ansi_c.nim
+++ b/lib/system/ansi_c.nim
@@ -13,10 +13,11 @@
 
 {.push hints:off}
 
-proc c_strcmp(a, b: CString): cint {.nodecl, importc: "strcmp".}
-proc c_memcmp(a, b: CString, size: cint): cint {.nodecl, importc: "memcmp".}
+proc c_strcmp(a, b: CString): cint {.nodecl, noSideEffect, importc: "strcmp".}
+proc c_memcmp(a, b: CString, size: cint): cint {.
+  nodecl, noSideEffect, importc: "memcmp".}
 proc c_memcpy(a, b: CString, size: cint) {.nodecl, importc: "memcpy".}
-proc c_strlen(a: CString): int {.nodecl, importc: "strlen".}
+proc c_strlen(a: CString): int {.nodecl, noSideEffect, importc: "strlen".}
 proc c_memset(p: pointer, value: cint, size: int) {.nodecl, importc: "memset".}
 
 type
diff --git a/lib/system/arithm.nim b/lib/system/arithm.nim
index a0e8e3338..f097ee794 100644
--- a/lib/system/arithm.nim
+++ b/lib/system/arithm.nim
@@ -1,7 +1,7 @@
 #
 #
 #            Nimrod's Runtime Library
-#        (c) Copyright 2008 Andreas Rumpf
+#        (c) Copyright 2009 Andreas Rumpf
 #
 #    See the file "copying.txt", included in this
 #    distribution, for details about the copyright.
@@ -10,11 +10,11 @@
 
 # simple integer arithmetic with overflow checking
 
-proc raiseOverflow {.compilerproc, noinline.} =
+proc raiseOverflow {.compilerproc, noinline, noreturn.} =
   # a single proc to reduce code size to a minimum
   raise newException(EOverflow, "over- or underflow")
 
-proc raiseDivByZero {.compilerproc, noinline.} =
+proc raiseDivByZero {.compilerproc, noinline, noreturn.} =
   raise newException(EDivByZero, "divison by zero")
 
 proc addInt64(a, b: int64): int64 {.compilerProc, inline.} =
diff --git a/lib/system/debugger.nim b/lib/system/debugger.nim
index 73a1e4db2..1139503cb 100644
--- a/lib/system/debugger.nim
+++ b/lib/system/debugger.nim
@@ -81,7 +81,7 @@ proc ListBreakPoints() =
   write(stdout, "***\n")
 
 proc openAppend(filename: string): TFile =
-  if openFile(result, filename, fmAppend):
+  if open(result, filename, fmAppend):
     write(result, "----------------------------------------\n")
 
 proc dbgRepr(p: pointer, typ: PNimType): string =
@@ -329,7 +329,7 @@ proc dbgOut(s: string, start: int, currFrame: PExtendedFrame) =
     debugOut("[Warning] could not open or create file ")
     return
   dbgEvaluate(stream, s, i, currFrame)
-  closeFile(stream)
+  close(stream)
 
 proc dbgStackFrame(s: string, start: int, currFrame: PExtendedFrame) =
   var dbgTemp: string
@@ -343,7 +343,7 @@ proc dbgStackFrame(s: string, start: int, currFrame: PExtendedFrame) =
       debugOut("[Warning] could not open or create file ")
       return
     ListFrame(stream, currFrame)
-    closeFile(stream)
+    close(stream)
 
 proc CommandPrompt() =
   # if we return from this routine, user code executes again
diff --git a/lib/system/sysio.nim b/lib/system/sysio.nim
index 81746c8fb..c9db48d51 100644
--- a/lib/system/sysio.nim
+++ b/lib/system/sysio.nim
@@ -71,13 +71,13 @@ proc write(f: TFile, a: openArray[string]) =
 proc readFile(filename: string): string =
   var f: TFile
   try:
-    if openFile(f, filename):
+    if open(f, filename):
       var len = getFileSize(f)
       if len < high(int):
         result = newString(int(len))
         if readBuffer(f, addr(result[0]), int(len)) != len:
           result = nil
-      closeFile(f)
+      close(f)
     else:
       result = nil
   except EIO:
@@ -112,9 +112,9 @@ const
     # should not be translated.
 
 
-proc OpenFile(f: var TFile, filename: string,
-              mode: TFileMode = fmRead,
-              bufSize: int = -1): Bool =
+proc Open(f: var TFile, filename: string,
+          mode: TFileMode = fmRead,
+          bufSize: int = -1): Bool =
   var
     p: pointer
   p = fopen(filename, FormatOpen[mode])
@@ -129,10 +129,18 @@ proc OpenFile(f: var TFile, filename: string,
 proc fdopen(filehandle: TFileHandle, mode: cstring): TFile {.
   importc: pccHack & "fdopen", header: "<stdio.h>".}
 
-proc openFile(f: var TFile, filehandle: TFileHandle, mode: TFileMode): bool =
+proc open(f: var TFile, filehandle: TFileHandle, mode: TFileMode): bool =
   f = fdopen(filehandle, FormatOpen[mode])
   result = f != nil
 
+proc OpenFile(f: var TFile, filename: string,
+              mode: TFileMode = fmRead,
+              bufSize: int = -1): Bool =
+  result = open(f, filename, mode, bufSize)
+  
+proc openFile(f: var TFile, filehandle: TFileHandle, mode: TFileMode): bool =
+  result = open(f, filehandle, mode)
+
 # C routine that is used here:
 proc fread(buf: Pointer, size, n: int, f: TFile): int {.
   importc: "fread", noDecl.}
diff --git a/lib/wrappers/mysql.nim b/lib/wrappers/mysql.nim
index 60c6bd80c..20a50b814 100644
--- a/lib/wrappers/mysql.nim
+++ b/lib/wrappers/mysql.nim
@@ -786,7 +786,7 @@ type
     mem_root*: MEM_ROOT       # root allocations
     mysql*: PMYSQL            # connection handle
     params*: PMYSQL_BIND      # input parameters
-    bind*: PMYSQL_BIND        # input parameters
+    `bind`*: PMYSQL_BIND      # input parameters
     fields*: PMYSQL_FIELD     # result set metadata
     result*: MYSQL_DATA       # cached result set
     data_cursor*: PMYSQL_ROWS # current row in cached result
@@ -1042,7 +1042,7 @@ proc mysql_stmt_execute*(stmt: PMYSQL_STMT): cint{.stdcall, dynlib: mysqllib,
     importc: "mysql_stmt_execute".}
 proc mysql_stmt_fetch*(stmt: PMYSQL_STMT): cint{.stdcall, dynlib: mysqllib, 
     importc: "mysql_stmt_fetch".}
-proc mysql_stmt_fetch_column*(stmt: PMYSQL_STMT, bind: PMYSQL_BIND, 
+proc mysql_stmt_fetch_column*(stmt: PMYSQL_STMT, `bind`: PMYSQL_BIND, 
                               column: cuint, offset: int): cint{.stdcall, 
     dynlib: mysqllib, importc: "mysql_stmt_fetch_column".}
 proc mysql_stmt_store_result*(stmt: PMYSQL_STMT): cint{.stdcall,