OSDN Git Service

Sync w/ glibc
authorPeter S. Mazinger <ps.m@gmx.net>
Thu, 3 Nov 2005 23:33:53 +0000 (23:33 -0000)
committerPeter S. Mazinger <ps.m@gmx.net>
Thu, 3 Nov 2005 23:33:53 +0000 (23:33 -0000)
include/unistd.h

index 6ee8732..bb5cfd4 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1999, 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2002, 2003, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -30,34 +30,30 @@ __BEGIN_DECLS
 /* These may be used to determine what facilities are present at compile time.
    Their values can be obtained at run time from `sysconf'.  */
 
-/* POSIX Standard approved as ISO/IEC 9945-1 as of August, 1988 and
-   extended by POSIX-1b (aka POSIX-4) and POSIX-1c (aka POSIX threads).  */
-#define        _POSIX_VERSION  199506L
+/* POSIX Standard approved as ISO/IEC 9945-1 as of December 2001.  */
+#define        _POSIX_VERSION  200112L
 
 /* These are not #ifdef __USE_POSIX2 because they are
    in the theoretically application-owned namespace.  */
 
-/* POSIX Standard approved as ISO/IEC 9945-2 as of December, 1993.  */
-#define        _POSIX2_C_VERSION       199209L
-
 /* The utilities on GNU systems also correspond to this version.  */
-#define _POSIX2_VERSION        199209L
+#define _POSIX2_VERSION        200112L
 
 /* If defined, the implementation supports the
    C Language Bindings Option.  */
-#define        _POSIX2_C_BIND  1
+#define        _POSIX2_C_BIND  200112L
 
 /* If defined, the implementation supports the
    C Language Development Utilities Option.  */
-#define        _POSIX2_C_DEV   1
+#define        _POSIX2_C_DEV   200112L
 
 /* If defined, the implementation supports the
    Software Development Utilities Option.  */
-#define        _POSIX2_SW_DEV  1
+#define        _POSIX2_SW_DEV  200112L
 
 /* If defined, the implementation supports the
    creation of locales with the localedef utility.  */
-#define _POSIX2_LOCALEDEF       1
+#define _POSIX2_LOCALEDEF       200112L
 
 /* X/Open version number to which the library conforms.  It is selectable.  */
 #ifdef __USE_UNIX98
@@ -198,7 +194,7 @@ typedef __ssize_t ssize_t;
 #define __need_NULL
 #include <stddef.h>
 
-#ifdef __USE_XOPEN
+#if defined __USE_XOPEN || defined __USE_XOPEN2K
 /* The Single Unix specification says that some more types are
    available here.  */
 # ifndef __gid_t_defined
@@ -257,7 +253,14 @@ typedef __socklen_t socklen_t;
 #define        F_OK    0               /* Test for existence.  */
 
 /* Test for access to NAME using the real UID and real GID.  */
-extern int access (__const char *__name, int __type) __THROW;
+extern int access (__const char *__name, int __type) __THROW __nonnull ((1));
+
+#if 0 /* def __USE_GNU */
+/* Test for access to NAME using the effective UID and GID
+   (as normal file operations use).  */
+extern int euidaccess (__const char *__name, int __type)
+     __THROW __nonnull ((1));
+#endif
 
 
 /* Values for the WHENCE argument to lseek.  */
@@ -285,9 +288,8 @@ extern __off_t lseek (int __fd, __off_t __offset, int __whence) __THROW;
 #else
 # ifdef __REDIRECT
 extern __off64_t __REDIRECT (lseek,
-                            (int __fd, __off64_t __offset, int __whence)
-                            __THROW,
-                            lseek64);
+                                (int __fd, __off64_t __offset, int __whence),
+                                lseek64);
 # else
 #  define lseek lseek64
 # endif
@@ -296,31 +298,51 @@ extern __off64_t __REDIRECT (lseek,
 extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) __THROW;
 #endif
 
-/* Close the file descriptor FD.  */
-extern int close (int __fd) __THROW;
+/* Close the file descriptor FD.
+
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
+extern int close (int __fd);
 
 /* Read NBYTES into BUF from FD.  Return the
-   number read, -1 for errors or 0 for EOF.  */
-extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __THROW;
+   number read, -1 for errors or 0 for EOF.
+
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
+extern ssize_t read (int __fd, void *__buf, size_t __nbytes);
+
+/* Write N bytes of BUF to FD.  Return the number written, or -1.
 
-/* Write N bytes of BUF to FD.  Return the number written, or -1.  */
-extern ssize_t write (int __fd, __const void *__buf, size_t __n) __THROW;
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
+extern ssize_t write (int __fd, __const void *__buf, size_t __n);
 
 #ifdef __USE_UNIX98
 # ifndef __USE_FILE_OFFSET64
-extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset)
-     __THROW;
+/* Read NBYTES into BUF from FD at the given position OFFSET without
+   changing the file pointer.  Return the number read, -1 for errors
+   or 0 for EOF.
+
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
+extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
+                     __off_t __offset);
+
+/* Write N bytes of BUF to FD at the given position OFFSET without
+   changing the file pointer.  Return the number written, or -1.
+
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
 extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
-                      __off_t __offset) __THROW;
+                      __off_t __offset);
 # else
 #  ifdef __REDIRECT
 extern ssize_t __REDIRECT (pread, (int __fd, void *__buf, size_t __nbytes,
-                                  __off64_t __offset) __THROW,
+                                  __off64_t __offset),
                           pread64);
 extern ssize_t __REDIRECT (pwrite, (int __fd, __const void *__buf,
-                                   size_t __nbytes, __off64_t __offset)
-                          __THROW,
-                       pwrite64);
+                                   size_t __nbytes, __off64_t __offset),
+                          pwrite64);
 #  else
 #   define pread pread64
 #   define pwrite pwrite64
@@ -332,11 +354,11 @@ extern ssize_t __REDIRECT (pwrite, (int __fd, __const void *__buf,
    changing the file pointer.  Return the number read, -1 for errors
    or 0 for EOF.  */
 extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
-                       __off64_t __offset) __THROW;
+                       __off64_t __offset);
 /* Write N bytes of BUF to FD at the given position OFFSET without
    changing the file pointer.  Return the number written, or -1.  */
 extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
-                        __off64_t __offset) __THROW;
+                        __off64_t __offset);
 # endif
 #endif
 
@@ -361,8 +383,11 @@ extern unsigned int alarm (unsigned int __seconds) __THROW;
    If a signal handler does a `longjmp' or modifies the handling of the
    SIGALRM signal while inside `sleep' call, the handling of the SIGALRM
    signal afterwards is undefined.  There is no return value to indicate
-   error, but if `sleep' returns SECONDS, it probably didn't work.  */
-extern unsigned int sleep (unsigned int __seconds) __THROW;
+   error, but if `sleep' returns SECONDS, it probably didn't work.
+
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
+extern unsigned int sleep (unsigned int __seconds);
 
 #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
 /* Set an alarm to go off (generating a SIGALRM signal) in VALUE
@@ -373,19 +398,25 @@ extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
      __THROW;
 
 /* Sleep USECONDS microseconds, or until a signal arrives that is not blocked
-   or ignored.  */
-extern int usleep (__useconds_t __useconds) __THROW;
+   or ignored.
+
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
+extern int usleep (__useconds_t __useconds);
 #endif
 
 
 /* Suspend the process until a signal arrives.
-   This always returns -1 and sets `errno' to EINTR.  */
-extern int pause (void) __THROW;
+   This always returns -1 and sets `errno' to EINTR.
+
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
+extern int pause (void);
 
 
 /* Change the owner and group of FILE.  */
 extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
-     __THROW;
+     __THROW __nonnull ((1));
 
 #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
 /* Change the owner and group of the file that FD is open on.  */
@@ -395,12 +426,12 @@ extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __THROW;
 /* Change owner and group of FILE, if it is a symbolic
    link the ownership of the symbolic link is changed.  */
 extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
-     __THROW;
+     __THROW __nonnull ((1));
 
 #endif /* Use BSD || X/Open Unix.  */
 
 /* Change the process's working directory to PATH.  */
-extern int chdir (__const char *__path) __THROW;
+extern int chdir (__const char *__path) __THROW __nonnull ((1));
 
 #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
 /* Change the process's working directory to the one FD is open on.  */
@@ -416,11 +447,19 @@ extern int fchdir (int __fd) __THROW;
    big as necessary.  */
 extern char *getcwd (char *__buf, size_t __size) __THROW;
 
+#ifdef __USE_GNU
 /* Return a malloc'd string containing the current directory name.
    If the environment variable `PWD' is set, and its value is correct,
    that value is used.  */
 extern char *get_current_dir_name (void) __THROW;
+#endif
 
+#if 0 /* defined __USE_BSD || defined __USE_XOPEN_EXTENDED */
+/* Put the absolute pathname of the current working directory in BUF.
+   If successful, return BUF.  If not, put an error message in
+   BUF and return NULL.  BUF should be at least PATH_MAX bytes long.  */
+extern char *getwd (char *__buf) __THROW __nonnull ((1));
+#endif
 
 
 /* Duplicate FD, returning a new file descriptor on the same file.  */
@@ -439,27 +478,40 @@ extern char **environ;
 /* Replace the current process, executing PATH with arguments ARGV and
    environment ENVP.  ARGV and ENVP are terminated by NULL pointers.  */
 extern int execve (__const char *__path, char *__const __argv[],
-                  char *__const __envp[]) __THROW;
+                  char *__const __envp[]) __THROW __nonnull ((1));
+
+#if 0 /* def __USE_GNU */
+/* Execute the file FD refers to, overlaying the running program image.
+   ARGV and ENVP are passed to the new program, as for `execve'.  */
+extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[])
+     __THROW;
+#endif
+
 
 /* Execute PATH with arguments ARGV and environment from `environ'.  */
-extern int execv (__const char *__path, char *__const __argv[]) __THROW;
+extern int execv (__const char *__path, char *__const __argv[])
+     __THROW __nonnull ((1));
 
 /* Execute PATH with all arguments after PATH until a NULL pointer,
    and the argument after that for environment.  */
-extern int execle (__const char *__path, __const char *__arg, ...) __THROW;
+extern int execle (__const char *__path, __const char *__arg, ...)
+     __THROW __nonnull ((1));
 
 /* Execute PATH with all arguments after PATH until
    a NULL pointer and environment from `environ'.  */
-extern int execl (__const char *__path, __const char *__arg, ...) __THROW;
+extern int execl (__const char *__path, __const char *__arg, ...)
+     __THROW __nonnull ((1));
 
 /* Execute FILE, searching in the `PATH' environment variable if it contains
    no slashes, with arguments ARGV and environment from `environ'.  */
-extern int execvp (__const char *__file, char *__const __argv[]) __THROW;
+extern int execvp (__const char *__file, char *__const __argv[])
+     __THROW __nonnull ((1));
 
 /* Execute FILE, searching in the `PATH' environment variable if
    it contains no slashes, with all arguments after FILE until a
    NULL pointer and environment from `environ'.  */
-extern int execlp (__const char *__file, __const char *__arg, ...) __THROW;
+extern int execlp (__const char *__file, __const char *__arg, ...)
+     __THROW __nonnull ((1));
 
 
 #if defined __USE_MISC || defined __USE_XOPEN
@@ -478,7 +530,8 @@ extern void _exit (int __status) __attribute__ ((__noreturn__));
 #include <bits/confname.h>
 
 /* Get file-specific configuration information about PATH.  */
-extern long int pathconf (__const char *__path, int __name) __THROW;
+extern long int pathconf (__const char *__path, int __name)
+     __THROW __nonnull ((1));
 
 /* Get file-specific configuration about descriptor FD.  */
 extern long int fpathconf (int __fd, int __name) __THROW;
@@ -504,7 +557,7 @@ extern __pid_t getppid (void) __THROW;
 extern __pid_t getpgrp (void) __THROW;
 #else
 # ifdef __REDIRECT
-extern __pid_t __REDIRECT (getpgrp, (__pid_t __pid) __THROW, __getpgid);
+extern __pid_t __REDIRECT (getpgrp, (__pid_t __pid), __getpgid);
 # else
 #  define getpgrp __getpgid
 # endif
@@ -543,8 +596,7 @@ extern int setpgrp (void) __THROW;
 
 /* Another name for `setpgid' (above).  */
 #  ifdef __REDIRECT
-extern int __REDIRECT (setpgrp, (__pid_t __pid, __pid_t __pgrp) __THROW,
-                      setpgid);
+extern int __REDIRECT (setpgrp, (__pid_t __pid, __pid_t __pgrp), setpgid);
 #  else
 #   define setpgrp setpgid
 #  endif
@@ -579,6 +631,11 @@ extern __gid_t getegid (void) __THROW;
    of its supplementary groups in LIST and return the number written.  */
 extern int getgroups (int __size, __gid_t __list[]) __THROW;
 
+#if 0 /* def   __USE_GNU */
+/* Return nonzero iff the calling process is in group GID.  */
+extern int group_member (__gid_t __gid) __THROW;
+#endif
+
 /* Set the user ID of the calling process to UID.
    If the calling process is the super-user, set the real
    and effective user IDs, and the saved set-user-ID to UID;
@@ -654,33 +711,42 @@ extern char *ttyname (int __fd) __THROW;
 
 /* Store at most BUFLEN characters of the pathname of the terminal FD is
    open on in BUF.  Return 0 on success, otherwise an error number.  */
-extern int ttyname_r (int __fd, char *__buf, size_t __buflen) __THROW;
+extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
+     __THROW __nonnull ((2));
 
 /* Return 1 if FD is a valid descriptor associated
    with a terminal, zero if not.  */
 extern int isatty (int __fd) __THROW;
 
+#if 0 /* defined __USE_BSD \
+    || (defined __USE_XOPEN_EXTENDED && !defined __USE_UNIX98) */
+/* Return the index into the active-logins file (utmp) for
+   the controlling terminal.  */
+extern int ttyslot (void) __THROW;
+#endif
 
 
 /* Make a link to FROM named TO.  */
-extern int link (__const char *__from, __const char *__to) __THROW;
+extern int link (__const char *__from, __const char *__to)
+     __THROW __nonnull ((1, 2));
 
-#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
+#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
 /* Make a symbolic link to FROM named TO.  */
-extern int symlink (__const char *__from, __const char *__to) __THROW;
+extern int symlink (__const char *__from, __const char *__to)
+     __THROW __nonnull ((1, 2));
 
 /* Read the contents of the symbolic link PATH into no more than
    LEN bytes of BUF.  The contents are not null-terminated.
    Returns the number of characters read, or -1 for errors.  */
 extern int readlink (__const char *__restrict __path, char *__restrict __buf,
-                    size_t __len) __THROW;
+                    size_t __len) __THROW __nonnull ((1, 2));
 #endif /* Use BSD.  */
 
 /* Remove the link NAME.  */
-extern int unlink (__const char *__name) __THROW;
+extern int unlink (__const char *__name) __THROW __nonnull ((1));
 
 /* Remove the directory PATH.  */
-extern int rmdir (__const char *__path) __THROW;
+extern int rmdir (__const char *__path) __THROW __nonnull ((1));
 
 
 /* Return the foreground process group ID of FD.  */
@@ -690,15 +756,25 @@ extern __pid_t tcgetpgrp (int __fd) __THROW;
 extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __THROW;
 
 
-/* Return the login name of the user.  */
-extern char *getlogin (void) __THROW;
+/* Return the login name of the user.
+
+   This function is a possible cancellation points and therefore not
+   marked with __THROW.  */
+extern char *getlogin (void);
 #if defined __USE_REENTRANT || defined __USE_UNIX98
 /* Return at most NAME_LEN characters of the login name of the user in NAME.
    If it cannot be determined or some other error occurred, return the error
-   code.  Otherwise return 0.  */
-extern int getlogin_r (char *__name, size_t __name_len) __THROW;
+   code.  Otherwise return 0.
+
+   This function is a possible cancellation points and therefore not
+   marked with __THROW.  */
+extern int getlogin_r (char *__name, size_t __name_len) __nonnull ((1));
 #endif
 
+#if 0 /* def   __USE_BSD */
+/* Set the login name returned by `getlogin'.  */
+extern int setlogin (__const char *__name) __THROW __nonnull ((1));
+#endif
 
 
 #ifdef __USE_POSIX2
@@ -706,7 +782,7 @@ extern int getlogin_r (char *__name, size_t __name_len) __THROW;
    arguments in ARGV (ARGC of them, minus the program name) for
    options given in OPTS.  */
 # define __need_getopt
-# include <bits/getopt.h>
+# include <getopt.h>
 #endif
 
 
@@ -714,14 +790,15 @@ extern int getlogin_r (char *__name, size_t __name_len) __THROW;
 /* Put the name of the current host in no more than LEN bytes of NAME.
    The result is null-terminated if LEN is large enough for the full
    name and the terminator.  */
-extern int gethostname (char *__name, size_t __len) __THROW;
+extern int gethostname (char *__name, size_t __len) __THROW __nonnull ((1));
 #endif
 
 
 #if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_UNIX98)
 /* Set the name of the current host to NAME, which is LEN bytes long.
    This call is restricted to the super-user.  */
-extern int sethostname (__const char *__name, size_t __len) __THROW;
+extern int sethostname (__const char *__name, size_t __len)
+     __THROW __nonnull ((1));
 
 /* Set the current machine's Internet number to ID.
    This call is restricted to the super-user.  */
@@ -731,8 +808,10 @@ extern int sethostid (long int __id) __THROW;
 /* Get and set the NIS (aka YP) domain name, if any.
    Called just like `gethostname' and `sethostname'.
    The NIS domain name is usually the empty string when not using NIS.  */
-extern int getdomainname (char *__name, size_t __len) __THROW;
-extern int setdomainname (__const char *__name, size_t __len) __THROW;
+extern int getdomainname (char *__name, size_t __len)
+     __THROW __nonnull ((1));
+extern int setdomainname (__const char *__name, size_t __len)
+     __THROW __nonnull ((1));
 
 
 /* Revoke access permissions to all processes currently communicating
@@ -740,12 +819,26 @@ extern int setdomainname (__const char *__name, size_t __len) __THROW;
    group of the control terminal.  */
 extern int vhangup (void) __THROW;
 
+#if 0
+/* Revoke the access of all descriptors currently open on FILE.  */
+extern int revoke (__const char *__file) __THROW __nonnull ((1));
+
+
+/* Enable statistical profiling, writing samples of the PC into at most
+   SIZE bytes of SAMPLE_BUFFER; every processor clock tick while profiling
+   is enabled, the system examines the user PC and increments
+   SAMPLE_BUFFER[((PC - OFFSET) / 2) * SCALE / 65536].  If SCALE is zero,
+   disable profiling.  Returns zero on success, -1 on error.  */
+extern int profil (unsigned short int *__sample_buffer, size_t __size,
+                  size_t __offset, unsigned int __scale)
+     __THROW __nonnull ((1));
+#endif
 
 
 /* Turn accounting on if NAME is an existing file.  The system will then write
    a record for each process as it terminates, to this file.  If NAME is NULL,
    turn accounting off.  This call is restricted to the super-user.  */
-extern int acct (__const char *__name) __THROW;
+extern int acct (__const char *__name) __THROW __nonnull ((1));
 
 
 /* Successive calls return the shells listed in `/etc/shells'.  */
@@ -754,7 +847,7 @@ extern void endusershell (void) __THROW; /* Discard cached info.  */
 extern void setusershell (void) __THROW; /* Rewind and re-read the file.  */
 
 
-#if defined __ARCH_HAS_MMU__
+#ifdef __ARCH_HAS_MMU__
 /* Put the program in the background, and dissociate from the controlling
    terminal.  If NOCHDIR is zero, do `chdir ("/")'.  If NOCLOSE is zero,
    redirects stdin, stdout, and stderr to /dev/null.  */
@@ -766,24 +859,27 @@ extern int daemon (int __nochdir, int __noclose) __THROW;
 #if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
 /* Make PATH be the root directory (the starting point for absolute paths).
    This call is restricted to the super-user.  */
-extern int chroot (__const char *__path) __THROW;
+extern int chroot (__const char *__path) __THROW __nonnull ((1));
 
 /* Prompt with PROMPT and read a string from the terminal without echoing.
    Uses /dev/tty if possible; otherwise stderr and stdin.  */
-extern char *getpass (__const char *__prompt) __THROW;
+extern char *getpass (__const char *__prompt) __nonnull ((1));
 #endif /* Use BSD || X/Open.  */
 
 
 #if defined __USE_BSD || defined __USE_XOPEN
-/* Make all changes done to FD actually appear on disk.  */
-extern int fsync (int __fd) __THROW;
+/* Make all changes done to FD actually appear on disk.
+
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
+extern int fsync (int __fd);
 #endif /* Use BSD || X/Open.  */
 
 
 #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
 
-/* Return the current machine's Internet number.  */
-extern long int gethostid (void) __THROW;
+/* Return identifier for the current host.  */
+extern long int gethostid (void);
 
 /* Make all changes done to all files actually appear on disk.  */
 extern void sync (void) __THROW;
@@ -794,29 +890,40 @@ extern void sync (void) __THROW;
 extern int getpagesize (void)  __THROW __attribute__ ((__const__));
 
 
+/* Return the maximum number of file descriptors
+   the current process could possibly have.  */
+extern int getdtablesize (void) __THROW;
+
+
 /* Truncate FILE to LENGTH bytes.  */
 # ifndef __USE_FILE_OFFSET64
-extern int truncate (__const char *__file, __off_t __length) __THROW;
+extern int truncate (__const char *__file, __off_t __length)
+     __THROW __nonnull ((1));
 # else
 #  ifdef __REDIRECT
 extern int __REDIRECT (truncate,
-                      (__const char *__file, __off64_t __length) __THROW,
-                      truncate64);
+                          (__const char *__file, __off64_t __length),
+                          truncate64) __nonnull ((1));
 #  else
 #   define truncate truncate64
 #  endif
 # endif
 # ifdef __USE_LARGEFILE64
-extern int truncate64 (__const char *__file, __off64_t __length) __THROW;
+extern int truncate64 (__const char *__file, __off64_t __length)
+     __THROW __nonnull ((1));
 # endif
 
+#endif /* Use BSD || X/Open Unix.  */
+
+#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
+
 /* Truncate the file FD is open on to LENGTH bytes.  */
 # ifndef __USE_FILE_OFFSET64
 extern int ftruncate (int __fd, __off_t __length) __THROW;
 # else
 #  ifdef __REDIRECT
-extern int __REDIRECT (ftruncate, (int __fd, __off64_t __length) __THROW,
-                      ftruncate64);
+extern int __REDIRECT (ftruncate, (int __fd, __off64_t __length),
+                          ftruncate64);
 #  else
 #   define ftruncate ftruncate64
 #  endif
@@ -825,12 +932,7 @@ extern int __REDIRECT (ftruncate, (int __fd, __off64_t __length) __THROW,
 extern int ftruncate64 (int __fd, __off64_t __length) __THROW;
 # endif
 
-
-/* Return the maximum number of file descriptors
-   the current process could possibly have.  */
-extern int getdtablesize (void) __THROW;
-
-#endif /* Use BSD || X/Open Unix.  */
+#endif /* Use BSD || X/Open Unix || POSIX 2003.  */
 
 
 #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
@@ -870,7 +972,10 @@ extern long int syscall (long int __sysno, ...) __THROW;
 
 /* `lockf' is a simpler interface to the locking facilities of `fcntl'.
    LEN is always relative to the current file position.
-   The CMD argument is one of the following.  */
+   The CMD argument is one of the following.
+
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
 
 # define F_ULOCK 0     /* Unlock a previously locked region.  */
 # define F_LOCK  1     /* Lock a region for exclusive use.  */
@@ -878,17 +983,17 @@ extern long int syscall (long int __sysno, ...) __THROW;
 # define F_TEST  3     /* Test a region for other processes locks.  */
 
 # ifndef __USE_FILE_OFFSET64
-extern int lockf (int __fd, int __cmd, __off_t __len) __THROW;
+extern int lockf (int __fd, int __cmd, __off_t __len);
 # else
 #  ifdef __REDIRECT
-extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len) __THROW,
+extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len),
                       lockf64);
 #  else
 #   define lockf lockf64
 #  endif
 # endif
 # ifdef __USE_LARGEFILE64
-extern int lockf64 (int __fd, int __cmd, __off64_t __len) __THROW;
+extern int lockf64 (int __fd, int __cmd, __off64_t __len);
 # endif
 #endif /* Use misc and F_LOCK not already defined.  */
 
@@ -917,11 +1022,12 @@ extern int fdatasync (int __fildes) __THROW;
    be defined here.  */
 #ifdef __USE_XOPEN
 /* Encrypt at most 8 characters from KEY using salt to perturb DES.  */
-extern char *crypt (__const char *__key, __const char *__salt) __THROW;
+extern char *crypt (__const char *__key, __const char *__salt)
+     __THROW __nonnull ((1, 2));
 
 /* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt
    block in place.  */
-extern void encrypt (char *__block, int __edflag) __THROW;
+extern void encrypt (char *__block, int __edflag) __THROW __nonnull ((1));
 
 
 /* Swab pairs bytes in the first N bytes of the area pointed to by
@@ -929,7 +1035,7 @@ extern void encrypt (char *__block, int __edflag) __THROW;
    range [FROM - N + 1, FROM - 1].  If N is odd the first byte in FROM
    is without partner.  */
 extern void swab (__const void *__restrict __from, void *__restrict __to,
-                 ssize_t __n) __THROW;
+                 ssize_t __n) __THROW __nonnull ((1, 2));
 #endif
 
 
@@ -937,7 +1043,7 @@ extern void swab (__const void *__restrict __from, void *__restrict __to,
    It is also found in <stdio.h>.  */
 #ifdef __USE_XOPEN
 /* Return the name of the controlling terminal.  */
-extern char *ctermid (char *__s) __THROW;
+extern char *ctermid (char *__s) __THROW __nonnull ((1));
 #endif
 
 __END_DECLS