]> git.saurik.com Git - apple/libc.git/blobdiff - include/unistd.h
Libc-1272.200.26.tar.gz
[apple/libc.git] / include / unistd.h
index 31da492c83e2fe84c5583073cf13afe5ab2d3836..7896f8d2aae8d05ed7575f20a4871b8e0e1b3ccb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000, 2002-2006, 2008-2010, 2012 Apple Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
  * 
 
 #include <_types.h>
 #include <sys/unistd.h>
-
-#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
-#ifndef _DEV_T
-#define        _DEV_T
-typedef __darwin_dev_t         dev_t;
-#endif
-#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
-
-#ifndef _GID_T
-#define        _GID_T
-typedef __darwin_gid_t         gid_t;
-#endif
-
-#ifndef _INTPTR_T
-#define        _INTPTR_T
-typedef __darwin_intptr_t      intptr_t;
-#endif
-
-#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
-#ifndef _MODE_T
-#define        _MODE_T
-typedef __darwin_mode_t                mode_t;
-#endif
-#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
-
-#ifndef _OFF_T
-#define        _OFF_T
-typedef __darwin_off_t         off_t;
-#endif
-
-#ifndef _PID_T
-#define        _PID_T
-typedef __darwin_pid_t         pid_t;
-#endif
-
-#ifndef _SIZE_T
-#define        _SIZE_T
+#include <Availability.h>
+#include <sys/_types/_gid_t.h>
+#include <sys/_types/_intptr_t.h>
+#include <sys/_types/_off_t.h>
+#include <sys/_types/_pid_t.h>
 /* DO NOT REMOVE THIS COMMENT: fixincludes needs to see:
  * _GCC_SIZE_T */
-typedef __darwin_size_t                size_t;
-#endif
-
-#ifndef        _SSIZE_T
-#define        _SSIZE_T
-typedef        __darwin_ssize_t        ssize_t;
-#endif
-
-#ifndef _UID_T
-#define        _UID_T
-typedef __darwin_uid_t         uid_t;  /* user id      */
-#endif
-
-#ifndef _USECONDS_T
-#define        _USECONDS_T
-typedef __darwin_useconds_t    useconds_t;
-#endif
-
-#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
-#ifndef _UUID_T
-#define        _UUID_T
-typedef __darwin_uuid_t                uuid_t;
-#endif /* _UUID_T */
-#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+#include <sys/_types/_size_t.h>
+#include <sys/_types/_ssize_t.h>
+#include <sys/_types/_uid_t.h>
+#include <sys/_types/_useconds_t.h>
+#include <sys/_types/_null.h>
 
 #define         STDIN_FILENO   0       /* standard input file descriptor */
 #define        STDOUT_FILENO   1       /* standard output file descriptor */
 #define        STDERR_FILENO   2       /* standard error file descriptor */
 
-#ifndef NULL
-#define        NULL __DARWIN_NULL
-#endif /* ! NULL */
 
 /* Version test macros */
 /* _POSIX_VERSION and _POSIX2_VERSION from sys/unistd.h */
@@ -200,6 +146,7 @@ typedef __darwin_uuid_t             uuid_t;
 #define        _POSIX_VDISABLE                 0xff            /* same as sys/termios.h */
 #endif /* _POSIX_VDISABLE */
 
+#if __DARWIN_C_LEVEL >= 199209L
 #define        _POSIX2_C_BIND                  200112L
 #define        _POSIX2_C_DEV                   200112L         /* c99 command */
 #define        _POSIX2_CHAR_TERM               200112L
@@ -214,31 +161,52 @@ typedef __darwin_uuid_t           uuid_t;
 #define        _POSIX2_PBS_TRACK               (-1)
 #define        _POSIX2_SW_DEV                  200112L
 #define        _POSIX2_UPE                     200112L /* XXXX no fc, newgrp, tabs */
-
-#define        _V6_ILP32_OFF32                 (-1)
-#define        _V6_ILP32_OFFBIG                (1)
-#define        _V6_LP64_OFF64                  (-1)
-#define        _V6_LPBIG_OFFBIG                (-1)
-
-#define        _XBS5_ILP32_OFF32               _V6_ILP32_OFF32         /* legacy */
-#define        _XBS5_ILP32_OFFBIG              _V6_ILP32_OFFBIG        /* legacy */
-#define        _XBS5_LP64_OFF64                _V6_LP64_OFF64          /* legacy */
-#define        _XBS5_LPBIG_OFFBIG              _V6_LPBIG_OFFBIG        /* legacy */
-
+#endif /* __DARWIN_C_LEVEL */
+
+#define        __ILP32_OFF32          (-1)
+#define        __ILP32_OFFBIG         (1)
+#define        __LP64_OFF64           (1)
+#define        __LPBIG_OFFBIG         (1)
+
+#if __DARWIN_C_LEVEL >= 200112L
+#define        _POSIX_V6_ILP32_OFF32           __ILP32_OFF32
+#define        _POSIX_V6_ILP32_OFFBIG          __ILP32_OFFBIG
+#define        _POSIX_V6_LP64_OFF64            __LP64_OFF64
+#define        _POSIX_V6_LPBIG_OFFBIG          __LPBIG_OFFBIG
+#endif /* __DARWIN_C_LEVEL >= 200112L */
+
+#if __DARWIN_C_LEVEL >= 200809L
+#define        _POSIX_V7_ILP32_OFF32           __ILP32_OFF32
+#define        _POSIX_V7_ILP32_OFFBIG          __ILP32_OFFBIG
+#define        _POSIX_V7_LP64_OFF64            __LP64_OFF64
+#define        _POSIX_V7_LPBIG_OFFBIG          __LPBIG_OFFBIG
+#endif /* __DARWIN_C_LEVEL >= 200809L */
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+#define        _V6_ILP32_OFF32             __ILP32_OFF32
+#define        _V6_ILP32_OFFBIG            __ILP32_OFFBIG
+#define        _V6_LP64_OFF64              __LP64_OFF64
+#define        _V6_LPBIG_OFFBIG            __LPBIG_OFFBIG
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+
+#if (__DARWIN_C_LEVEL >= 199506L && __DARWIN_C_LEVEL < 200809L) || __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+/* Removed in Issue 7 */
+#define        _XBS5_ILP32_OFF32                   __ILP32_OFF32
+#define        _XBS5_ILP32_OFFBIG                  __ILP32_OFFBIG
+#define        _XBS5_LP64_OFF64                    __LP64_OFF64
+#define        _XBS5_LPBIG_OFFBIG                  __LPBIG_OFFBIG
+#endif /* __DARWIN_C_LEVEL < 200809L */
+
+#if __DARWIN_C_LEVEL >= 199506L /* This really should be XSI */ 
 #define        _XOPEN_CRYPT                    (1)
 #define        _XOPEN_ENH_I18N                 (1)             /* XXX required */
 #define        _XOPEN_LEGACY                   (-1)    /* no ftime gcvt, wcswcs */
 #define        _XOPEN_REALTIME                 (-1)    /* no q'ed signals, mq_* */
 #define        _XOPEN_REALTIME_THREADS         (-1)    /* no posix_spawn, et. al. */
 #define        _XOPEN_SHM                      (1)
-#define        _XOPEN_STREAMS                  (-1)
+#define        _XOPEN_STREAMS                  (-1)   /* Issue 6 */
 #define        _XOPEN_UNIX                     (1)
-
-
-#define        F_ULOCK         0      /* unlock locked section */
-#define        F_LOCK          1      /* lock a section for exclusive use */
-#define        F_TLOCK         2      /* test and lock a section for exclusive use */
-#define        F_TEST          3      /* test a section for locks by other procs */
+#endif /* XSI */
 
 /* configurable system variables */
 #define        _SC_ARG_MAX                      1
@@ -268,6 +236,8 @@ typedef __darwin_uuid_t             uuid_t;
 #define        _SC_2_UPE                       25
 #define        _SC_STREAM_MAX                  26
 #define        _SC_TZNAME_MAX                  27
+
+#if __DARWIN_C_LEVEL >= 199309L
 #define        _SC_ASYNCHRONOUS_IO             28
 #define        _SC_PAGESIZE                    29
 #define        _SC_MEMLOCK                     30
@@ -293,10 +263,14 @@ typedef __darwin_uuid_t           uuid_t;
 #define        _SC_SEM_VALUE_MAX               50
 #define        _SC_SIGQUEUE_MAX                51
 #define        _SC_TIMER_MAX                   52
-#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#endif /* __DARWIN_C_LEVEL >= 199309L */
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
 #define        _SC_NPROCESSORS_CONF            57
 #define        _SC_NPROCESSORS_ONLN            58
-#endif /* !_POSIX_C_SOURCE || _DARWIN_C_SOURCE */
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+
+#if __DARWIN_C_LEVEL >= 200112L
 #define        _SC_2_PBS                       59
 #define        _SC_2_PBS_ACCOUNTING            60
 #define        _SC_2_PBS_CHECKPOINT            61
@@ -348,33 +322,57 @@ typedef __darwin_uuid_t           uuid_t;
 #define        _SC_IPV6                        118
 #define        _SC_RAW_SOCKETS                 119
 #define        _SC_SYMLOOP_MAX                 120
+#endif /* __DARWIN_C_LEVEL >= 200112L */
+
+#if __DARWIN_C_LEVEL >= 199506L /* Really XSI */
 #define        _SC_ATEXIT_MAX                  107
 #define        _SC_IOV_MAX                     56
 #define        _SC_PAGE_SIZE                   _SC_PAGESIZE
 #define        _SC_XOPEN_CRYPT                 108
 #define        _SC_XOPEN_ENH_I18N              109
-#define        _SC_XOPEN_LEGACY                110
-#define        _SC_XOPEN_REALTIME              111
-#define        _SC_XOPEN_REALTIME_THREADS      112
+#define        _SC_XOPEN_LEGACY                110      /* Issue 6 */
+#define        _SC_XOPEN_REALTIME              111      /* Issue 6 */
+#define        _SC_XOPEN_REALTIME_THREADS      112  /* Issue 6 */
 #define        _SC_XOPEN_SHM                   113
-#define        _SC_XOPEN_STREAMS               114
+#define        _SC_XOPEN_STREAMS               114      /* Issue 6 */
 #define        _SC_XOPEN_UNIX                  115
 #define        _SC_XOPEN_VERSION               116
 #define        _SC_XOPEN_XCU_VERSION           121
+#endif /* XSI */
+
+#if (__DARWIN_C_LEVEL >= 199506L && __DARWIN_C_LEVEL < 200809L) || __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+/* Removed in Issue 7 */
 #define        _SC_XBS5_ILP32_OFF32            122
 #define        _SC_XBS5_ILP32_OFFBIG           123
 #define        _SC_XBS5_LP64_OFF64             124
 #define        _SC_XBS5_LPBIG_OFFBIG           125
+#endif /* __DARWIN_C_LEVEL <= 200809L */
+
+#if __DARWIN_C_LEVEL >= 200112L
 #define        _SC_SS_REPL_MAX                 126
 #define        _SC_TRACE_EVENT_NAME_MAX        127
 #define        _SC_TRACE_NAME_MAX              128
 #define        _SC_TRACE_SYS_MAX               129
 #define        _SC_TRACE_USER_EVENT_MAX        130
+#endif
+
+#if __DARWIN_C_LEVEL < 200112L || __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+/* Removed in Issue 6 */
 #define        _SC_PASS_MAX                    131
+#endif
 
-#ifndef _CS_PATH       /* XXX temporary #ifdef'ed for <sys/unistd.h> */
+/* 132-199 available for future use */
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+#define        _SC_PHYS_PAGES                  200
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+
+#if __DARWIN_C_LEVEL >= 199209L
+#ifndef _CS_PATH /* Defined in <sys/unistd.h> */
 #define        _CS_PATH                                1
 #endif
+#endif
+
+#if __DARWIN_C_LEVEL >= 200112
 #define        _CS_POSIX_V6_ILP32_OFF32_CFLAGS         2
 #define        _CS_POSIX_V6_ILP32_OFF32_LDFLAGS        3
 #define        _CS_POSIX_V6_ILP32_OFF32_LIBS           4
@@ -388,8 +386,10 @@ typedef __darwin_uuid_t            uuid_t;
 #define        _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS       12
 #define        _CS_POSIX_V6_LPBIG_OFFBIG_LIBS          13
 #define        _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS      14
+#endif
 
-/* reserved for compatibility with Issue 5 */
+#if (__DARWIN_C_LEVEL >= 199506L && __DARWIN_C_LEVEL < 200809L) || __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+/* Removed in Issue 7 */
 #define        _CS_XBS5_ILP32_OFF32_CFLAGS             20
 #define        _CS_XBS5_ILP32_OFF32_LDFLAGS            21
 #define        _CS_XBS5_ILP32_OFF32_LIBS               22
@@ -406,19 +406,33 @@ typedef __darwin_uuid_t           uuid_t;
 #define        _CS_XBS5_LPBIG_OFFBIG_LDFLAGS           33
 #define        _CS_XBS5_LPBIG_OFFBIG_LIBS              34
 #define        _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS         35
+#endif
 
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
 #define        _CS_DARWIN_USER_DIR                     65536
 #define        _CS_DARWIN_USER_TEMP_DIR                65537
 #define        _CS_DARWIN_USER_CACHE_DIR               65538
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
 
-__BEGIN_DECLS
 
+#ifdef _DARWIN_UNLIMITED_GETGROUPS
+#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_3_2
+#error "_DARWIN_UNLIMITED_GETGROUPS specified, but -miphoneos-version-min version does not support it."
+#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_6
+#error "_DARWIN_UNLIMITED_GETGROUPS specified, but -mmacosx-version-min version does not support it."
+#endif
+#endif
+
+/* POSIX.1-1990 */
+
+__BEGIN_DECLS
 void    _exit(int) __dead2;
 int     access(const char *, int);
 unsigned int
         alarm(unsigned int);
 int     chdir(const char *);
 int     chown(const char *, uid_t, gid_t);
+
 //Begin-Libc
 #ifndef LIBC_ALIAS_CLOSE
 //End-Libc
@@ -428,6 +442,116 @@ int        close(int) __DARWIN_ALIAS_C(close);
 int     close(int) LIBC_ALIAS_C(close);
 #endif /* !LIBC_ALIAS_CLOSE */
 //End-Libc
+
+int     dup(int);
+int     dup2(int, int);
+int     execl(const char * __path, const char * __arg0, ...) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+int     execle(const char * __path, const char * __arg0, ...) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+int     execlp(const char * __file, const char * __arg0, ...) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+int     execv(const char * __path, char * const * __argv) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+int     execve(const char * __file, char * const * __argv, char * const * __envp) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+int     execvp(const char * __file, char * const * __argv) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+pid_t   fork(void) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+long    fpathconf(int, int);
+char   *getcwd(char *, size_t);
+gid_t   getegid(void);
+uid_t   geteuid(void);
+gid_t   getgid(void);
+#if defined(_DARWIN_UNLIMITED_GETGROUPS) || defined(_DARWIN_C_SOURCE)
+int     getgroups(int, gid_t []) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_3_2, __DARWIN_EXTSN(getgroups));
+#else /* !_DARWIN_UNLIMITED_GETGROUPS && !_DARWIN_C_SOURCE */
+int     getgroups(int, gid_t []);
+#endif /* _DARWIN_UNLIMITED_GETGROUPS || _DARWIN_C_SOURCE */
+char   *getlogin(void);
+pid_t   getpgrp(void);
+pid_t   getpid(void);
+pid_t   getppid(void);
+uid_t   getuid(void);
+int     isatty(int);
+int     link(const char *, const char *);
+off_t   lseek(int, off_t, int);
+long    pathconf(const char *, int);
+
+//Begin-Libc
+#ifndef LIBC_ALIAS_PAUSE
+//End-Libc
+int     pause(void) __DARWIN_ALIAS_C(pause);
+//Begin-Libc
+#else /* LIBC_ALIAS_PAUSE */
+int     pause(void) LIBC_ALIAS_C(pause);
+#endif /* !LIBC_ALIAS_PAUSE */
+//End-Libc
+
+int     pipe(int [2]);
+
+//Begin-Libc
+#ifndef LIBC_ALIAS_READ
+//End-Libc
+ssize_t         read(int, void *, size_t) __DARWIN_ALIAS_C(read);
+//Begin-Libc
+#else /* LIBC_ALIAS_READ */
+ssize_t         read(int, void *, size_t) LIBC_ALIAS_C(read);
+#endif /* !LIBC_ALIAS_READ */
+//End-Libc
+
+int     rmdir(const char *);
+int     setgid(gid_t);
+int     setpgid(pid_t, pid_t);
+pid_t   setsid(void);
+int     setuid(uid_t);
+
+//Begin-Libc
+#ifndef LIBC_ALIAS_SLEEP
+//End-Libc
+unsigned int
+        sleep(unsigned int) __DARWIN_ALIAS_C(sleep);
+//Begin-Libc
+#else /* LIBC_ALIAS_SLEEP */
+unsigned int
+        sleep(unsigned int) LIBC_ALIAS_C(sleep);
+#endif /* !LIBC_ALIAS_SLEEP */
+//End-Libc
+
+long    sysconf(int);
+pid_t   tcgetpgrp(int);
+int     tcsetpgrp(int, pid_t);
+char   *ttyname(int);
+
+#if __DARWIN_UNIX03
+//Begin-Libc
+#ifndef LIBC_ALIAS_TTYNAME_R
+//End-Libc
+int     ttyname_r(int, char *, size_t) __DARWIN_ALIAS(ttyname_r);
+//Begin-Libc
+#else /* LIBC_ALIAS_TTYNAME_R */
+int     ttyname_r(int, char *, size_t) LIBC_ALIAS(ttyname_r);
+#endif /* !LIBC_ALIAS_TTYNAME_R */
+//End-Libc
+#else /* !__DARWIN_UNIX03 */
+char   *ttyname_r(int, char *, size_t);
+#endif /* __DARWIN_UNIX03 */
+
+int     unlink(const char *);
+
+//Begin-Libc
+#ifndef LIBC_ALIAS_WRITE
+//End-Libc
+ssize_t         write(int __fd, const void * __buf, size_t __nbyte) __DARWIN_ALIAS_C(write);
+//Begin-Libc
+#else /* LIBC_ALIAS_WRITE */
+ssize_t         write(int __fd, const void * __buf, size_t __nbyte) LIBC_ALIAS_C(write);
+#endif /* !LIBC_ALIAS_WRITE */
+//End-Libc
+__END_DECLS
+
+
+
+/* Additional functionality provided by:
+ * POSIX.2-1992 C Language Binding Option
+ */
+
+#if __DARWIN_C_LEVEL >= 199209L
+__BEGIN_DECLS
 //Begin-Libc
 #ifndef LIBC_ALIAS_CONFSTR
 //End-Libc
@@ -437,10 +561,55 @@ size_t     confstr(int, char *, size_t) __DARWIN_ALIAS(confstr);
 size_t  confstr(int, char *, size_t) LIBC_ALIAS(confstr);
 #endif /* !LIBC_ALIAS_CONFSTR */
 //End-Libc
+
+//Begin-Libc
+#ifndef LIBC_ALIAS_GETOPT
+//End-Libc
+int     getopt(int, char * const [], const char *) __DARWIN_ALIAS(getopt);
+//Begin-Libc
+#else /* LIBC_ALIAS_GETOPT */
+int     getopt(int, char * const [], const char *) LIBC_ALIAS(getopt);
+#endif /* !LIBC_ALIAS_GETOPT */
+//End-Libc
+
+extern char *optarg;                   /* getopt(3) external variables */
+extern int optind, opterr, optopt;
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= 199209L */
+
+
+
+/* Additional functionality provided by:
+ * POSIX.1c-1995,
+ * POSIX.1i-1995,
+ * and the omnibus ISO/IEC 9945-1: 1996
+ */
+
+#if __DARWIN_C_LEVEL >= 199506L
+                               /* These F_* are really XSI or Issue 6 */
+#define F_ULOCK         0      /* unlock locked section */
+#define        F_LOCK          1      /* lock a section for exclusive use */
+#define        F_TLOCK         2      /* test and lock a section for exclusive use */
+#define        F_TEST          3      /* test a section for locks by other procs */
+
+ __BEGIN_DECLS
+
+/* Begin XSI */
+/* Removed in Issue 6 */
+#if !defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 200112L
+#if !defined(_POSIX_C_SOURCE)
+__deprecated __WATCHOS_PROHIBITED __TVOS_PROHIBITED
+#endif
+void   *brk(const void *);
+int     chroot(const char *) __POSIX_C_DEPRECATED(199506L);
+#endif
+
 char   *crypt(const char *, const char *);
-char   *ctermid(char *);
-int     dup(int);
-int     dup2(int, int);
+#ifndef __CTERMID_DEFINED
+/* Multiply defined in stdio.h and unistd.h by SUS */
+#define __CTERMID_DEFINED 1
+char    *ctermid(char *);
+#endif
 #if __DARWIN_UNIX03
 //Begin-Libc
 #ifndef LIBC_ALIAS_ENCRYPT
@@ -454,52 +623,23 @@ void       encrypt(char *, int) LIBC_ALIAS(encrypt);
 #else /* !__DARWIN_UNIX03 */
 int     encrypt(char *, int);
 #endif /* __DARWIN_UNIX03 */
-int     execl(const char *, const char *, ...);
-int     execle(const char *, const char *, ...);
-int     execlp(const char *, const char *, ...);
-int     execv(const char *, char * const *);
-int     execve(const char *, char * const *, char * const *);
-int     execvp(const char *, char * const *);
-int     fchown(int, uid_t, gid_t);
 int     fchdir(int);
-pid_t   fork(void);
-long    fpathconf(int, int);
-//Begin-Libc
-#ifndef LIBC_ALIAS_FSYNC
-//End-Libc
-int     fsync(int) __DARWIN_ALIAS_C(fsync);
-//Begin-Libc
-#else /* LIBC_ALIAS_FSYNC */
-int     fsync(int) LIBC_ALIAS_C(fsync);
-#endif /* !LIBC_ALIAS_FSYNC */
-//End-Libc
-int     ftruncate(int, off_t);
-char   *getcwd(char *, size_t);
-gid_t   getegid(void);
-uid_t   geteuid(void);
-gid_t   getgid(void);
-int     getgroups(int, gid_t []);
 long    gethostid(void);
-int     gethostname(char *, size_t);
-char   *getlogin(void);
-int     getlogin_r(char *, size_t);
-//Begin-Libc
-#ifndef LIBC_ALIAS_GETOPT
-//End-Libc
-int     getopt(int, char * const [], const char *) __DARWIN_ALIAS(getopt);
-//Begin-Libc
-#else /* LIBC_ALIAS_GETOPT */
-int     getopt(int, char * const [], const char *) LIBC_ALIAS(getopt);
-#endif /* !LIBC_ALIAS_GETOPT */
-//End-Libc
 pid_t   getpgid(pid_t);
-pid_t   getpgrp(void);
-pid_t   getpid(void);
-pid_t   getppid(void);
 pid_t   getsid(pid_t);
-uid_t   getuid(void);
-char   *getwd(char *);                 /* obsoleted by getcwd() */
-int     isatty(int);
+
+/* Removed in Issue 6 */
+#if !defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 200112L
+int     getdtablesize(void) __POSIX_C_DEPRECATED(199506L);
+int     getpagesize(void) __pure2 __POSIX_C_DEPRECATED(199506L);
+char   *getpass(const char *) __POSIX_C_DEPRECATED(199506L);
+#endif
+
+/* Removed in Issue 7 */
+#if !defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 200809L
+char   *getwd(char *) __POSIX_C_DEPRECATED(200112L); /* obsoleted by getcwd() */
+#endif
+
 //Begin-Libc
 #ifndef LIBC_ALIAS_LCHOWN
 //End-Libc
@@ -509,7 +649,7 @@ int  lchown(const char *, uid_t, gid_t) __DARWIN_ALIAS(lchown);
 int     lchown(const char *, uid_t, gid_t) LIBC_ALIAS(lchown);
 #endif /* !LIBC_ALIAS_LCHOWN */
 //End-Libc
-int     link(const char *, const char *);
+
 //Begin-Libc
 #ifndef LIBC_ALIAS_LOCKF
 //End-Libc
@@ -519,7 +659,7 @@ int  lockf(int, int, off_t) __DARWIN_ALIAS_C(lockf);
 int     lockf(int, int, off_t) LIBC_ALIAS_C(lockf);
 #endif /* !LIBC_ALIAS_LOCKF */
 //End-Libc
-off_t   lseek(int, off_t, int);
+
 //Begin-Libc
 #ifndef LIBC_ALIAS_NICE
 //End-Libc
@@ -529,50 +669,37 @@ int        nice(int) __DARWIN_ALIAS(nice);
 int     nice(int) LIBC_ALIAS(nice);
 #endif /* !LIBC_ALIAS_NICE */
 //End-Libc
-long    pathconf(const char *, int);
-//Begin-Libc
-#ifndef LIBC_ALIAS_PAUSE
-//End-Libc
-int     pause(void) __DARWIN_ALIAS_C(pause);
-//Begin-Libc
-#else /* LIBC_ALIAS_PAUSE */
-int     pause(void) LIBC_ALIAS_C(pause);
-#endif /* !LIBC_ALIAS_PAUSE */
-//End-Libc
-int     pipe(int [2]);
+
 //Begin-Libc
 #ifndef LIBC_ALIAS_PREAD
 //End-Libc
-ssize_t         pread(int, void *, size_t, off_t) __DARWIN_ALIAS_C(pread);
+ssize_t         pread(int __fd, void * __buf, size_t __nbyte, off_t __offset) __DARWIN_ALIAS_C(pread);
 //Begin-Libc
 #else /* LIBC_ALIAS_PREAD */
-ssize_t         pread(int, void *, size_t, off_t) LIBC_ALIAS_C(pread);
+ssize_t         pread(int __fd, void * __buf, size_t __nbyte, off_t __offset) LIBC_ALIAS_C(pread);
 #endif /* !LIBC_ALIAS_PREAD */
 //End-Libc
+
 //Begin-Libc
 #ifndef LIBC_ALIAS_PWRITE
 //End-Libc
-ssize_t         pwrite(int, const void *, size_t, off_t) __DARWIN_ALIAS_C(pwrite);
+ssize_t         pwrite(int __fd, const void * __buf, size_t __nbyte, off_t __offset) __DARWIN_ALIAS_C(pwrite);
 //Begin-Libc
 #else /* LIBC_ALIAS_PWRITE */
-ssize_t         pwrite(int, const void *, size_t, off_t) LIBC_ALIAS_C(pwrite);
+ssize_t         pwrite(int __fd, const void * __buf, size_t __nbyte, off_t __offset) LIBC_ALIAS_C(pwrite);
 #endif /* !LIBC_ALIAS_PWRITE */
 //End-Libc
-//Begin-Libc
-#ifndef LIBC_ALIAS_READ
-//End-Libc
-ssize_t         read(int, void *, size_t) __DARWIN_ALIAS_C(read);
-//Begin-Libc
-#else /* LIBC_ALIAS_READ */
-ssize_t         read(int, void *, size_t) LIBC_ALIAS_C(read);
-#endif /* !LIBC_ALIAS_READ */
-//End-Libc
-ssize_t  readlink(const char * __restrict, char * __restrict, size_t);
-int     rmdir(const char *);
-int     setegid(gid_t);
-int     seteuid(uid_t);
-int     setgid(gid_t);
-int     setpgid(pid_t, pid_t);
+
+/* Removed in Issue 6 */
+#if !defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 200112L
+/* Note that Issue 5 changed the argument as intprt_t,
+ * but we keep it as int for binary compatability. */
+#if !defined(_POSIX_C_SOURCE)
+__deprecated __WATCHOS_PROHIBITED __TVOS_PROHIBITED
+#endif
+void   *sbrk(int);
+#endif
+
 #if __DARWIN_UNIX03
 //Begin-Libc
 #ifndef LIBC_ALIAS_SETPGRP
@@ -586,6 +713,7 @@ pid_t        setpgrp(void) LIBC_ALIAS(setpgrp);
 #else /* !__DARWIN_UNIX03 */
 int     setpgrp(pid_t pid, pid_t pgrp);        /* obsoleted by setpgid() */
 #endif /* __DARWIN_UNIX03 */
+
 //Begin-Libc
 #ifndef LIBC_ALIAS_SETREGID
 //End-Libc
@@ -595,6 +723,7 @@ int  setregid(gid_t, gid_t) __DARWIN_ALIAS(setregid);
 int     setregid(gid_t, gid_t) LIBC_ALIAS(setregid);
 #endif /* !LIBC_ALIAS_SETREGID */
 //End-Libc
+
 //Begin-Libc
 #ifndef LIBC_ALIAS_SETREUID
 //End-Libc
@@ -604,43 +733,11 @@ int        setreuid(uid_t, uid_t) __DARWIN_ALIAS(setreuid);
 int     setreuid(uid_t, uid_t) LIBC_ALIAS(setreuid);
 #endif /* !LIBC_ALIAS_SETREUID */
 //End-Libc
-pid_t   setsid(void);
-int     setuid(uid_t);
-//Begin-Libc
-#ifndef LIBC_ALIAS_SLEEP
-//End-Libc
-unsigned int
-        sleep(unsigned int) __DARWIN_ALIAS_C(sleep);
-//Begin-Libc
-#else /* LIBC_ALIAS_SLEEP */
-unsigned int
-        sleep(unsigned int) LIBC_ALIAS_C(sleep);
-#endif /* !LIBC_ALIAS_SLEEP */
-//End-Libc
+
 void     swab(const void * __restrict, void * __restrict, ssize_t);
-int     symlink(const char *, const char *);
 void    sync(void);
-long    sysconf(int);
-pid_t   tcgetpgrp(int);
-int     tcsetpgrp(int, pid_t);
 int     truncate(const char *, off_t);
-char   *ttyname(int);
-#if __DARWIN_UNIX03
-//Begin-Libc
-#ifndef LIBC_ALIAS_TTYNAME_R
-//End-Libc
-int     ttyname_r(int, char *, size_t) __DARWIN_ALIAS(ttyname_r);
-//Begin-Libc
-#else /* LIBC_ALIAS_TTYNAME_R */
-int     ttyname_r(int, char *, size_t) LIBC_ALIAS(ttyname_r);
-#endif /* !LIBC_ALIAS_TTYNAME_R */
-//End-Libc
-#else /* !__DARWIN_UNIX03 */
-char   *ttyname_r(int, char *, size_t);
-#endif /* __DARWIN_UNIX03 */
-useconds_t
-        ualarm(useconds_t, useconds_t);
-int     unlink(const char *);
+useconds_t      ualarm(useconds_t, useconds_t);
 //Begin-Libc
 #ifndef LIBC_ALIAS_USLEEP
 //End-Libc
@@ -650,66 +747,126 @@ int       usleep(useconds_t) __DARWIN_ALIAS_C(usleep);
 int     usleep(useconds_t) LIBC_ALIAS_C(usleep);
 #endif /* !LIBC_ALIAS_USLEEP */
 //End-Libc
-pid_t   vfork(void);
+pid_t   vfork(void) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+/* End XSI */
+
 //Begin-Libc
-#ifndef LIBC_ALIAS_WRITE
+#ifndef LIBC_ALIAS_FSYNC
 //End-Libc
-ssize_t         write(int, const void *, size_t) __DARWIN_ALIAS_C(write);
+int     fsync(int) __DARWIN_ALIAS_C(fsync);
 //Begin-Libc
-#else /* LIBC_ALIAS_WRITE */
-ssize_t         write(int, const void *, size_t) LIBC_ALIAS_C(write);
-#endif /* !LIBC_ALIAS_WRITE */
+#else /* LIBC_ALIAS_FSYNC */
+int     fsync(int) LIBC_ALIAS_C(fsync);
+#endif /* !LIBC_ALIAS_FSYNC */
 //End-Libc
 
-extern char *optarg;                   /* getopt(3) external variables */
-extern int optind, opterr, optopt;
+int     ftruncate(int, off_t);
+int     getlogin_r(char *, size_t);
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= 199506L */
 
-#if    !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+
+
+/* Additional functionality provided by:
+ * POSIX.1-2001
+ * ISO C99
+ */
+
+#if __DARWIN_C_LEVEL >= 200112L
+__BEGIN_DECLS
+int     fchown(int, uid_t, gid_t);
+int     gethostname(char *, size_t);
+ssize_t  readlink(const char * __restrict, char * __restrict, size_t);
+int     setegid(gid_t);
+int     seteuid(uid_t);
+int     symlink(const char *, const char *);
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= 200112L */
+
+
+
+/* Darwin extensions */
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
 #include <sys/select.h>
 
+#include <sys/_types/_dev_t.h>
+#include <sys/_types/_mode_t.h>
+#include <sys/_types/_uuid_t.h>
+
+__BEGIN_DECLS
 void    _Exit(int) __dead2;
 int     accessx_np(const struct accessx_descriptor *, size_t, int *, uid_t);
 int     acct(const char *);
-int     add_profil(char *, size_t, unsigned long, unsigned int);
-void   *brk(const void *);
-int     chroot(const char *);
+int     add_profil(char *, size_t, unsigned long, unsigned int) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
 void    endusershell(void);
-int     execvP(const char *, const char *, char * const *);
+int     execvP(const char * __file, const char * __searchpath, char * const * __argv)  __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
 char   *fflagstostr(unsigned long);
-int     getdtablesize(void);
 int     getdomainname(char *, int);
 int     getgrouplist(const char *, int, int *, int *);
+#if defined(__has_include)
+#if __has_include(<gethostuuid_private.h>)
+#include <gethostuuid_private.h>
+#else
+#include <gethostuuid.h>
+#endif
+#else
+#include <gethostuuid.h>
+#endif
 mode_t  getmode(const void *, mode_t);
-int     getpagesize(void) __pure2;
-char   *getpass(const char *);
 int     getpeereid(int, uid_t *, gid_t *);
-int     getpgid(pid_t _pid);
 int     getsgroups_np(int *, uuid_t);
-int     getsid(pid_t _pid);
 char   *getusershell(void);
 int     getwgroups_np(int *, uuid_t);
 int     initgroups(const char *, int);
-int     iruserok(unsigned long, int, const char *, const char *);
-int     iruserok_sa(const void *, int, int, const char *, const char *);
 int     issetugid(void);
 char   *mkdtemp(char *);
 int     mknod(const char *, mode_t, dev_t);
+int     mkpath_np(const char *path, mode_t omode) __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_5_0); /* returns errno */
+int     mkpathat_np(int dfd, const char *path, mode_t omode) /* returns errno */
+               __OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0)
+               __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
 int     mkstemp(char *);
 int     mkstemps(char *, int);
 char   *mktemp(char *);
+int     mkostemp(char *path, int oflags)
+               __OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0)
+               __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
+int     mkostemps(char *path, int slen, int oflags)
+               __OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0)
+               __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
+/* Non-portable mkstemp that uses open_dprotected_np */
+int     mkstemp_dprotected_np(char *path, int dpclass, int dpflags)
+               __OSX_UNAVAILABLE __IOS_AVAILABLE(10.0)
+               __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
+char   *mkdtempat_np(int dfd, char *path)
+               __OSX_AVAILABLE(10.13) __IOS_AVAILABLE(11.0)
+               __TVOS_AVAILABLE(11.0) __WATCHOS_AVAILABLE(4.0);
+int     mkstempsat_np(int dfd, char *path, int slen)
+               __OSX_AVAILABLE(10.13) __IOS_AVAILABLE(11.0)
+               __TVOS_AVAILABLE(11.0) __WATCHOS_AVAILABLE(4.0);
+int     mkostempsat_np(int dfd, char *path, int slen, int oflags)
+               __OSX_AVAILABLE(10.13) __IOS_AVAILABLE(11.0)
+               __TVOS_AVAILABLE(11.0) __WATCHOS_AVAILABLE(4.0);
 int     nfssvc(int, void *);
 int     profil(char *, size_t, unsigned long, unsigned int);
+
+__deprecated_msg("Use of per-thread security contexts is error-prone and discouraged.")
 int     pthread_setugid_np(uid_t, gid_t);
 int     pthread_getugid_np( uid_t *, gid_t *);
-int     rcmd(char **, int, const char *, const char *, const char *, int *);
-int     rcmd_af(char **, int, const char *, const char *, const char *, int *,
-               int);
+
 int     reboot(int);
 int     revoke(const char *);
-int     rresvport(int *);
-int     rresvport_af(int *, int);
-int     ruserok(const char *, int, const char *, const char *);
-void   *sbrk(int);
+
+__deprecated int        rcmd(char **, int, const char *, const char *, const char *, int *);
+__deprecated int        rcmd_af(char **, int, const char *, const char *, const char *, int *,
+               int);
+__deprecated int        rresvport(int *);
+__deprecated int        rresvport_af(int *, int);
+__deprecated int        iruserok(unsigned long, int, const char *, const char *);
+__deprecated int        iruserok_sa(const void *, int, int, const char *, const char *);
+__deprecated int        ruserok(const char *, int, const char *, const char *);
+
 int     setdomainname(const char *, int);
 int     setgroups(int, const gid_t *);
 void    sethostid(long);
@@ -728,7 +885,15 @@ void        setkey(const char *) LIBC_ALIAS(setkey);
 int     setkey(const char *);
 #endif /* __DARWIN_UNIX03 */
 int     setlogin(const char *);
-void   *setmode(const char *);
+//Begin-Libc
+#ifndef LIBC_ALIAS_SETMODE
+//End-Libc
+void   *setmode(const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_2_0, __DARWIN_ALIAS(setmode));
+//Begin-Libc
+#else /* LIBC_ALIAS_SETMODE */
+void   *setmode(const char *) LIBC_ALIAS(setmode);
+#endif /* !LIBC_ALIAS_SETMODE */
+//End-Libc
 int     setrgid(gid_t);
 int     setruid(uid_t);
 int     setsgroups_np(int, const uuid_t);
@@ -736,17 +901,25 @@ void       setusershell(void);
 int     setwgroups_np(int, const uuid_t);
 int     strtofflags(char **, unsigned long *, unsigned long *);
 int     swapon(const char *);
-int     syscall(int, ...);
 int     ttyslot(void);
 int     undelete(const char *);
 int     unwhiteout(const char *);
 void   *valloc(size_t);                        
 
+__WATCHOS_PROHIBITED __TVOS_PROHIBITED
+__OS_AVAILABILITY_MSG(ios,deprecated=10.0,"syscall(2) is unsupported; "
+    "please switch to a supported interface. For SYS_kdebug_trace use kdebug_signpost().")
+__OS_AVAILABILITY_MSG(macosx,deprecated=10.12,"syscall(2) is unsupported; "
+    "please switch to a supported interface. For SYS_kdebug_trace use kdebug_signpost().")
+int     syscall(int, ...);
+
 extern char *suboptarg;                        /* getsubopt(3) external variable */
 int     getsubopt(char **, char * const *, char **);
 
 /*  HFS & HFS Plus semantics system calls go here */
 #ifdef __LP64__
+int    fgetattrlist(int,void*,void*,size_t,unsigned int) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
+int    fsetattrlist(int,void*,void*,size_t,unsigned int) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
 //Begin-Libc
 #ifndef LIBC_ALIAS_GETATTRLIST
 //End-Libc
@@ -765,12 +938,12 @@ int    setattrlist(const char*,void*,void*,size_t,unsigned int) __DARWIN_ALIAS(s
 int    setattrlist(const char*,void*,void*,size_t,unsigned int) LIBC_ALIAS(setattrlist);
 #endif /* !LIBC_ALIAS_SETATTRLIST */
 //End-Libc
-int exchangedata(const char*,const char*,unsigned int);
-int    getdirentriesattr(int,void*,void*,size_t,unsigned int*,unsigned int*,unsigned int*,unsigned int);
-int    searchfs(const char*,void*,void*,unsigned int,unsigned int,void*);
+int exchangedata(const char*,const char*,unsigned int) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+int    getdirentriesattr(int,void*,void*,size_t,unsigned int*,unsigned int*,unsigned int*,unsigned int) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
 
-int fsctl(const char *,unsigned int,void*,unsigned int);
 #else /* __LP64__ */
+int    fgetattrlist(int,void*,void*,size_t,unsigned long) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
+int    fsetattrlist(int,void*,void*,size_t,unsigned long) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
 //Begin-Libc
 #ifndef LIBC_ALIAS_GETATTRLIST
 //End-Libc
@@ -789,16 +962,30 @@ int       setattrlist(const char*,void*,void*,size_t,unsigned long) __DARWIN_ALIAS(set
 int    setattrlist(const char*,void*,void*,size_t,unsigned long) LIBC_ALIAS(setattrlist);
 #endif /* !LIBC_ALIAS_SETATTRLIST */
 //End-Libc
-int exchangedata(const char*,const char*,unsigned long);
-int    getdirentriesattr(int,void*,void*,size_t,unsigned long*,unsigned long*,unsigned long*,unsigned long);
-int    searchfs(const char*,void*,void*,unsigned long,unsigned long,void*);
+int exchangedata(const char*,const char*,unsigned long)
+               __OSX_DEPRECATED(10.0, 10.13, "use renamex_np with the RENAME_SWAP flag")
+               __IOS_DEPRECATED(2.0, 11.0, "use renamex_np with the RENAME_SWAP flag")
+               __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+int    getdirentriesattr(int,void*,void*,size_t,unsigned long*,unsigned long*,unsigned long*,unsigned long) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
 
-int fsctl(const char *,unsigned long,void*,unsigned long);             
 #endif /* __LP64__ */
 
+struct fssearchblock;
+struct searchstate;
+
+int     searchfs(const char *, struct fssearchblock *, unsigned long *, unsigned int, unsigned int, struct searchstate *) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+int     fsctl(const char *,unsigned long,void*,unsigned int);
+int     ffsctl(int,unsigned long,void*,unsigned int) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
+
+#define        SYNC_VOLUME_FULLSYNC    0x01    /* Flush data and metadata to platter, not just to disk cache */
+#define SYNC_VOLUME_WAIT       0x02    /* Wait for sync to complete */
+
+int    fsync_volume_np(int, int) __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
+int    sync_volume_np(const char *, int) __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
+
 extern int optreset;
 
-#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
 __END_DECLS
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
 
-#endif /* !_UNISTD_H_ */
+#endif /* _UNISTD_H_ */