LCOV - code coverage report
Current view: top level - usr/include - unistd.h (source / functions) Hit Total Coverage
Test: coverage report for v4-17-test 1498b464 Lines: 26 45 57.8 %
Date: 2024-06-13 04:01:37 Functions: 13 23 56.5 %

          Line data    Source code
       1             : /* Copyright (C) 1991-2018 Free Software Foundation, Inc.
       2             :    This file is part of the GNU C Library.
       3             : 
       4             :    The GNU C Library is free software; you can redistribute it and/or
       5             :    modify it under the terms of the GNU Lesser General Public
       6             :    License as published by the Free Software Foundation; either
       7             :    version 2.1 of the License, or (at your option) any later version.
       8             : 
       9             :    The GNU C Library is distributed in the hope that it will be useful,
      10             :    but WITHOUT ANY WARRANTY; without even the implied warranty of
      11             :    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12             :    Lesser General Public License for more details.
      13             : 
      14             :    You should have received a copy of the GNU Lesser General Public
      15             :    License along with the GNU C Library; if not, see
      16             :    <http://www.gnu.org/licenses/>.  */
      17             : 
      18             : /*
      19             :  *      POSIX Standard: 2.10 Symbolic Constants         <unistd.h>
      20             :  */
      21             : 
      22             : #ifndef _UNISTD_H
      23             : #define _UNISTD_H       1
      24             : 
      25             : #include <features.h>
      26             : 
      27             : __BEGIN_DECLS
      28             : 
      29             : /* These may be used to determine what facilities are present at compile time.
      30             :    Their values can be obtained at run time from `sysconf'.  */
      31             : 
      32             : #ifdef __USE_XOPEN2K8
      33             : /* POSIX Standard approved as ISO/IEC 9945-1 as of September 2008.  */
      34             : # define _POSIX_VERSION 200809L
      35             : #elif defined __USE_XOPEN2K
      36             : /* POSIX Standard approved as ISO/IEC 9945-1 as of December 2001.  */
      37             : # define _POSIX_VERSION 200112L
      38             : #elif defined __USE_POSIX199506
      39             : /* POSIX Standard approved as ISO/IEC 9945-1 as of June 1995.  */
      40             : # define _POSIX_VERSION 199506L
      41             : #elif defined __USE_POSIX199309
      42             : /* POSIX Standard approved as ISO/IEC 9945-1 as of September 1993.  */
      43             : # define _POSIX_VERSION 199309L
      44             : #else
      45             : /* POSIX Standard approved as ISO/IEC 9945-1 as of September 1990.  */
      46             : # define _POSIX_VERSION 199009L
      47             : #endif
      48             : 
      49             : /* These are not #ifdef __USE_POSIX2 because they are
      50             :    in the theoretically application-owned namespace.  */
      51             : 
      52             : #ifdef __USE_XOPEN2K8
      53             : # define __POSIX2_THIS_VERSION  200809L
      54             : /* The utilities on GNU systems also correspond to this version.  */
      55             : #elif defined __USE_XOPEN2K
      56             : /* The utilities on GNU systems also correspond to this version.  */
      57             : # define __POSIX2_THIS_VERSION  200112L
      58             : #elif defined __USE_POSIX199506
      59             : /* The utilities on GNU systems also correspond to this version.  */
      60             : # define __POSIX2_THIS_VERSION  199506L
      61             : #else
      62             : /* The utilities on GNU systems also correspond to this version.  */
      63             : # define __POSIX2_THIS_VERSION  199209L
      64             : #endif
      65             : 
      66             : /* The utilities on GNU systems also correspond to this version.  */
      67             : #define _POSIX2_VERSION __POSIX2_THIS_VERSION
      68             : 
      69             : /* This symbol was required until the 2001 edition of POSIX.  */
      70             : #define _POSIX2_C_VERSION       __POSIX2_THIS_VERSION
      71             : 
      72             : /* If defined, the implementation supports the
      73             :    C Language Bindings Option.  */
      74             : #define _POSIX2_C_BIND  __POSIX2_THIS_VERSION
      75             : 
      76             : /* If defined, the implementation supports the
      77             :    C Language Development Utilities Option.  */
      78             : #define _POSIX2_C_DEV   __POSIX2_THIS_VERSION
      79             : 
      80             : /* If defined, the implementation supports the
      81             :    Software Development Utilities Option.  */
      82             : #define _POSIX2_SW_DEV  __POSIX2_THIS_VERSION
      83             : 
      84             : /* If defined, the implementation supports the
      85             :    creation of locales with the localedef utility.  */
      86             : #define _POSIX2_LOCALEDEF       __POSIX2_THIS_VERSION
      87             : 
      88             : /* X/Open version number to which the library conforms.  It is selectable.  */
      89             : #ifdef __USE_XOPEN2K8
      90             : # define _XOPEN_VERSION 700
      91             : #elif defined __USE_XOPEN2K
      92             : # define _XOPEN_VERSION 600
      93             : #elif defined __USE_UNIX98
      94             : # define _XOPEN_VERSION 500
      95             : #else
      96             : # define _XOPEN_VERSION 4
      97             : #endif
      98             : 
      99             : /* Commands and utilities from XPG4 are available.  */
     100             : #define _XOPEN_XCU_VERSION      4
     101             : 
     102             : /* We are compatible with the old published standards as well.  */
     103             : #define _XOPEN_XPG2     1
     104             : #define _XOPEN_XPG3     1
     105             : #define _XOPEN_XPG4     1
     106             : 
     107             : /* The X/Open Unix extensions are available.  */
     108             : #define _XOPEN_UNIX     1
     109             : 
     110             : /* Encryption is present.  */
     111             : #define _XOPEN_CRYPT    1
     112             : 
     113             : /* The enhanced internationalization capabilities according to XPG4.2
     114             :    are present.  */
     115             : #define _XOPEN_ENH_I18N 1
     116             : 
     117             : /* The legacy interfaces are also available.  */
     118             : #define _XOPEN_LEGACY   1
     119             : 
     120             : 
     121             : /* Get values of POSIX options:
     122             : 
     123             :    If these symbols are defined, the corresponding features are
     124             :    always available.  If not, they may be available sometimes.
     125             :    The current values can be obtained with `sysconf'.
     126             : 
     127             :    _POSIX_JOB_CONTROL           Job control is supported.
     128             :    _POSIX_SAVED_IDS             Processes have a saved set-user-ID
     129             :                                 and a saved set-group-ID.
     130             :    _POSIX_REALTIME_SIGNALS      Real-time, queued signals are supported.
     131             :    _POSIX_PRIORITY_SCHEDULING   Priority scheduling is supported.
     132             :    _POSIX_TIMERS                POSIX.4 clocks and timers are supported.
     133             :    _POSIX_ASYNCHRONOUS_IO       Asynchronous I/O is supported.
     134             :    _POSIX_PRIORITIZED_IO        Prioritized asynchronous I/O is supported.
     135             :    _POSIX_SYNCHRONIZED_IO       Synchronizing file data is supported.
     136             :    _POSIX_FSYNC                 The fsync function is present.
     137             :    _POSIX_MAPPED_FILES          Mapping of files to memory is supported.
     138             :    _POSIX_MEMLOCK               Locking of all memory is supported.
     139             :    _POSIX_MEMLOCK_RANGE         Locking of ranges of memory is supported.
     140             :    _POSIX_MEMORY_PROTECTION     Setting of memory protections is supported.
     141             :    _POSIX_MESSAGE_PASSING       POSIX.4 message queues are supported.
     142             :    _POSIX_SEMAPHORES            POSIX.4 counting semaphores are supported.
     143             :    _POSIX_SHARED_MEMORY_OBJECTS POSIX.4 shared memory objects are supported.
     144             :    _POSIX_THREADS               POSIX.1c pthreads are supported.
     145             :    _POSIX_THREAD_ATTR_STACKADDR Thread stack address attribute option supported.
     146             :    _POSIX_THREAD_ATTR_STACKSIZE Thread stack size attribute option supported.
     147             :    _POSIX_THREAD_SAFE_FUNCTIONS Thread-safe functions are supported.
     148             :    _POSIX_THREAD_PRIORITY_SCHEDULING
     149             :                                 POSIX.1c thread execution scheduling supported.
     150             :    _POSIX_THREAD_PRIO_INHERIT   Thread priority inheritance option supported.
     151             :    _POSIX_THREAD_PRIO_PROTECT   Thread priority protection option supported.
     152             :    _POSIX_THREAD_PROCESS_SHARED Process-shared synchronization supported.
     153             :    _POSIX_PII                   Protocol-independent interfaces are supported.
     154             :    _POSIX_PII_XTI               XTI protocol-indep. interfaces are supported.
     155             :    _POSIX_PII_SOCKET            Socket protocol-indep. interfaces are supported.
     156             :    _POSIX_PII_INTERNET          Internet family of protocols supported.
     157             :    _POSIX_PII_INTERNET_STREAM   Connection-mode Internet protocol supported.
     158             :    _POSIX_PII_INTERNET_DGRAM    Connectionless Internet protocol supported.
     159             :    _POSIX_PII_OSI               ISO/OSI family of protocols supported.
     160             :    _POSIX_PII_OSI_COTS          Connection-mode ISO/OSI service supported.
     161             :    _POSIX_PII_OSI_CLTS          Connectionless ISO/OSI service supported.
     162             :    _POSIX_POLL                  Implementation supports `poll' function.
     163             :    _POSIX_SELECT                Implementation supports `select' and `pselect'.
     164             : 
     165             :    _XOPEN_REALTIME              X/Open realtime support is available.
     166             :    _XOPEN_REALTIME_THREADS      X/Open realtime thread support is available.
     167             :    _XOPEN_SHM                   Shared memory interface according to XPG4.2.
     168             : 
     169             :    _XBS5_ILP32_OFF32            Implementation provides environment with 32-bit
     170             :                                 int, long, pointer, and off_t types.
     171             :    _XBS5_ILP32_OFFBIG           Implementation provides environment with 32-bit
     172             :                                 int, long, and pointer and off_t with at least
     173             :                                 64 bits.
     174             :    _XBS5_LP64_OFF64             Implementation provides environment with 32-bit
     175             :                                 int, and 64-bit long, pointer, and off_t types.
     176             :    _XBS5_LPBIG_OFFBIG           Implementation provides environment with at
     177             :                                 least 32 bits int and long, pointer, and off_t
     178             :                                 with at least 64 bits.
     179             : 
     180             :    If any of these symbols is defined as -1, the corresponding option is not
     181             :    true for any file.  If any is defined as other than -1, the corresponding
     182             :    option is true for all files.  If a symbol is not defined at all, the value
     183             :    for a specific file can be obtained from `pathconf' and `fpathconf'.
     184             : 
     185             :    _POSIX_CHOWN_RESTRICTED      Only the super user can use `chown' to change
     186             :                                 the owner of a file.  `chown' can only be used
     187             :                                 to change the group ID of a file to a group of
     188             :                                 which the calling process is a member.
     189             :    _POSIX_NO_TRUNC              Pathname components longer than
     190             :                                 NAME_MAX generate an error.
     191             :    _POSIX_VDISABLE              If defined, if the value of an element of the
     192             :                                 `c_cc' member of `struct termios' is
     193             :                                 _POSIX_VDISABLE, no character will have the
     194             :                                 effect associated with that element.
     195             :    _POSIX_SYNC_IO               Synchronous I/O may be performed.
     196             :    _POSIX_ASYNC_IO              Asynchronous I/O may be performed.
     197             :    _POSIX_PRIO_IO               Prioritized Asynchronous I/O may be performed.
     198             : 
     199             :    Support for the Large File Support interface is not generally available.
     200             :    If it is available the following constants are defined to one.
     201             :    _LFS64_LARGEFILE             Low-level I/O supports large files.
     202             :    _LFS64_STDIO                 Standard I/O supports large files.
     203             :    */
     204             : 
     205             : #include <bits/posix_opt.h>
     206             : 
     207             : /* Get the environment definitions from Unix98.  */
     208             : #if defined __USE_UNIX98 || defined __USE_XOPEN2K
     209             : # include <bits/environments.h>
     210             : #endif
     211             : 
     212             : /* Standard file descriptors.  */
     213             : #define STDIN_FILENO    0       /* Standard input.  */
     214             : #define STDOUT_FILENO   1       /* Standard output.  */
     215             : #define STDERR_FILENO   2       /* Standard error output.  */
     216             : 
     217             : 
     218             : /* All functions that are not declared anywhere else.  */
     219             : 
     220             : #include <bits/types.h>
     221             : 
     222             : #ifndef __ssize_t_defined
     223             : typedef __ssize_t ssize_t;
     224             : # define __ssize_t_defined
     225             : #endif
     226             : 
     227             : #define __need_size_t
     228             : #define __need_NULL
     229             : #include <stddef.h>
     230             : 
     231             : #if defined __USE_XOPEN || defined __USE_XOPEN2K
     232             : /* The Single Unix specification says that some more types are
     233             :    available here.  */
     234             : # ifndef __gid_t_defined
     235             : typedef __gid_t gid_t;
     236             : #  define __gid_t_defined
     237             : # endif
     238             : 
     239             : # ifndef __uid_t_defined
     240             : typedef __uid_t uid_t;
     241             : #  define __uid_t_defined
     242             : # endif
     243             : 
     244             : # ifndef __off_t_defined
     245             : #  ifndef __USE_FILE_OFFSET64
     246             : typedef __off_t off_t;
     247             : #  else
     248             : typedef __off64_t off_t;
     249             : #  endif
     250             : #  define __off_t_defined
     251             : # endif
     252             : # if defined __USE_LARGEFILE64 && !defined __off64_t_defined
     253             : typedef __off64_t off64_t;
     254             : #  define __off64_t_defined
     255             : # endif
     256             : 
     257             : # ifndef __useconds_t_defined
     258             : typedef __useconds_t useconds_t;
     259             : #  define __useconds_t_defined
     260             : # endif
     261             : 
     262             : # ifndef __pid_t_defined
     263             : typedef __pid_t pid_t;
     264             : #  define __pid_t_defined
     265             : # endif
     266             : #endif  /* X/Open */
     267             : 
     268             : #if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
     269             : # ifndef __intptr_t_defined
     270             : typedef __intptr_t intptr_t;
     271             : #  define __intptr_t_defined
     272             : # endif
     273             : #endif
     274             : 
     275             : #if defined __USE_MISC || defined __USE_XOPEN
     276             : # ifndef __socklen_t_defined
     277             : typedef __socklen_t socklen_t;
     278             : #  define __socklen_t_defined
     279             : # endif
     280             : #endif
     281             : 
     282             : /* Values for the second argument to access.
     283             :    These may be OR'd together.  */
     284             : #define R_OK    4               /* Test for read permission.  */
     285             : #define W_OK    2               /* Test for write permission.  */
     286             : #define X_OK    1               /* Test for execute permission.  */
     287             : #define F_OK    0               /* Test for existence.  */
     288             : 
     289             : /* Test for access to NAME using the real UID and real GID.  */
     290             : extern int access (const char *__name, int __type) __THROW __nonnull ((1));
     291             : 
     292             : #ifdef __USE_GNU
     293             : /* Test for access to NAME using the effective UID and GID
     294             :    (as normal file operations use).  */
     295             : extern int euidaccess (const char *__name, int __type)
     296             :      __THROW __nonnull ((1));
     297             : 
     298             : /* An alias for `euidaccess', used by some other systems.  */
     299             : extern int eaccess (const char *__name, int __type)
     300             :      __THROW __nonnull ((1));
     301             : #endif
     302             : 
     303             : #ifdef __USE_ATFILE
     304             : /* Test for access to FILE relative to the directory FD is open on.
     305             :    If AT_EACCESS is set in FLAG, then use effective IDs like `eaccess',
     306             :    otherwise use real IDs like `access'.  */
     307             : extern int faccessat (int __fd, const char *__file, int __type, int __flag)
     308             :      __THROW __nonnull ((2)) __wur;
     309             : #endif /* Use GNU.  */
     310             : 
     311             : 
     312             : /* Values for the WHENCE argument to lseek.  */
     313             : #ifndef _STDIO_H                /* <stdio.h> has the same definitions.  */
     314             : # define SEEK_SET       0       /* Seek from beginning of file.  */
     315             : # define SEEK_CUR       1       /* Seek from current position.  */
     316             : # define SEEK_END       2       /* Seek from end of file.  */
     317             : # ifdef __USE_GNU
     318             : #  define SEEK_DATA     3       /* Seek to next data.  */
     319             : #  define SEEK_HOLE     4       /* Seek to next hole.  */
     320             : # endif
     321             : #endif
     322             : 
     323             : #if defined __USE_MISC && !defined L_SET
     324             : /* Old BSD names for the same constants; just for compatibility.  */
     325             : # define L_SET          SEEK_SET
     326             : # define L_INCR         SEEK_CUR
     327             : # define L_XTND         SEEK_END
     328             : #endif
     329             : 
     330             : 
     331             : /* Move FD's file position to OFFSET bytes from the
     332             :    beginning of the file (if WHENCE is SEEK_SET),
     333             :    the current position (if WHENCE is SEEK_CUR),
     334             :    or the end of the file (if WHENCE is SEEK_END).
     335             :    Return the new file position.  */
     336             : #ifndef __USE_FILE_OFFSET64
     337             : extern __off_t lseek (int __fd, __off_t __offset, int __whence) __THROW;
     338             : #else
     339             : # ifdef __REDIRECT_NTH
     340             : extern __off64_t __REDIRECT_NTH (lseek,
     341             :                                  (int __fd, __off64_t __offset, int __whence),
     342             :                                  lseek64);
     343             : # else
     344             : #  define lseek lseek64
     345             : # endif
     346             : #endif
     347             : #ifdef __USE_LARGEFILE64
     348             : extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
     349             :      __THROW;
     350             : #endif
     351             : 
     352             : /* Close the file descriptor FD.
     353             : 
     354             :    This function is a cancellation point and therefore not marked with
     355             :    __THROW.  */
     356    30661816 : extern int close (int __fd);
     357             : 
     358     5691423 : /* Read NBYTES into BUF from FD.  Return the
     359             :    number read, -1 for errors or 0 for EOF.
     360             : 
     361             :    This function is a cancellation point and therefore not marked with
     362             :    __THROW.  */
     363     9395637 : extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __wur;
     364             : 
     365             : /* Write N bytes of BUF to FD.  Return the number written, or -1.
     366             : 
     367             :    This function is a cancellation point and therefore not marked with
     368             :    __THROW.  */
     369     9028266 : extern ssize_t write (int __fd, const void *__buf, size_t __n) __wur;
     370             : 
     371      854039 : #if defined __USE_UNIX98 || defined __USE_XOPEN2K8
     372             : # ifndef __USE_FILE_OFFSET64
     373             : /* Read NBYTES into BUF from FD at the given position OFFSET without
     374             :    changing the file pointer.  Return the number read, -1 for errors
     375             :    or 0 for EOF.
     376             : 
     377             :    This function is a cancellation point and therefore not marked with
     378      664633 :    __THROW.  */
     379             : extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
     380             :                       __off_t __offset) __wur;
     381             : 
     382             : /* Write N bytes of BUF to FD at the given position OFFSET without
     383             :    changing the file pointer.  Return the number written, or -1.
     384             : 
     385             :    This function is a cancellation point and therefore not marked with
     386             :    __THROW.  */
     387             : extern ssize_t pwrite (int __fd, const void *__buf, size_t __n,
     388             :                        __off_t __offset) __wur;
     389             : # else
     390             : #  ifdef __REDIRECT
     391             : extern ssize_t __REDIRECT (pread, (int __fd, void *__buf, size_t __nbytes,
     392             :                                    __off64_t __offset),
     393             :                            pread64) __wur;
     394             : extern ssize_t __REDIRECT (pwrite, (int __fd, const void *__buf,
     395             :                                     size_t __nbytes, __off64_t __offset),
     396             :                            pwrite64) __wur;
     397             : #  else
     398             : #   define pread pread64
     399             : #   define pwrite pwrite64
     400             : #  endif
     401             : # endif
     402             : 
     403             : # ifdef __USE_LARGEFILE64
     404             : /* Read NBYTES into BUF from FD at the given position OFFSET without
     405             :    changing the file pointer.  Return the number read, -1 for errors
     406             :    or 0 for EOF.  */
     407             : extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
     408             :                         __off64_t __offset) __wur;
     409             : /* Write N bytes of BUF to FD at the given position OFFSET without
     410             :    changing the file pointer.  Return the number written, or -1.  */
     411             : extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n,
     412             :                          __off64_t __offset) __wur;
     413             : # endif
     414             : #endif
     415             : 
     416             : /* Create a one-way communication channel (pipe).
     417             :    If successful, two file descriptors are stored in PIPEDES;
     418             :    bytes written on PIPEDES[1] can be read from PIPEDES[0].
     419             :    Returns 0 if successful, -1 if not.  */
     420       72106 : extern int pipe (int __pipedes[2]) __THROW __wur;
     421             : 
     422             : #ifdef __USE_GNU
     423             : /* Same as pipe but apply flags passed in FLAGS to the new file
     424             :    descriptors.  */
     425             : extern int pipe2 (int __pipedes[2], int __flags) __THROW __wur;
     426             : #endif
     427             : 
     428             : /* Schedule an alarm.  In SECONDS seconds, the process will get a SIGALRM.
     429             :    If SECONDS is zero, any currently scheduled alarm will be cancelled.
     430             :    The function returns the number of seconds remaining until the last
     431             :    alarm scheduled would have signaled, or zero if there wasn't one.
     432             :    There is no return value to indicate an error, but you can set `errno'
     433             :    to 0 and check its value after calling `alarm', and this might tell you.
     434             :    The signal may come late due to processor scheduling.  */
     435             : extern unsigned int alarm (unsigned int __seconds) __THROW;
     436             : 
     437      231563 : /* Make the process sleep for SECONDS seconds, or until a signal arrives
     438             :    and is not ignored.  The function returns the number of seconds less
     439             :    than SECONDS which it actually slept (thus zero if it slept the full time).
     440             :    If a signal handler does a `longjmp' or modifies the handling of the
     441             :    SIGALRM signal while inside `sleep' call, the handling of the SIGALRM
     442             :    signal afterwards is undefined.  There is no return value to indicate
     443             :    error, but if `sleep' returns SECONDS, it probably didn't work.
     444             : 
     445             :    This function is a cancellation point and therefore not marked with
     446             :    __THROW.  */
     447             : extern unsigned int sleep (unsigned int __seconds);
     448             : 
     449             : #if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) \
     450             :     || defined __USE_MISC
     451             : /* Set an alarm to go off (generating a SIGALRM signal) in VALUE
     452             :    microseconds.  If INTERVAL is nonzero, when the alarm goes off, the
     453             :    timer is reset to go off every INTERVAL microseconds thereafter.
     454             :    Returns the number of microseconds remaining before the alarm.  */
     455             : extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
     456             :      __THROW;
     457             : 
     458             : /* Sleep USECONDS microseconds, or until a signal arrives that is not blocked
     459             :    or ignored.
     460             : 
     461             :    This function is a cancellation point and therefore not marked with
     462             :    __THROW.  */
     463             : extern int usleep (__useconds_t __useconds);
     464             : #endif
     465             : 
     466             : 
     467             : /* Suspend the process until a signal arrives.
     468             :    This always returns -1 and sets `errno' to EINTR.
     469             : 
     470             :    This function is a cancellation point and therefore not marked with
     471             :    __THROW.  */
     472             : extern int pause (void);
     473             : 
     474             : 
     475             : /* Change the owner and group of FILE.  */
     476             : extern int chown (const char *__file, __uid_t __owner, __gid_t __group)
     477             :      __THROW __nonnull ((1)) __wur;
     478             : 
     479             : #if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
     480             : /* Change the owner and group of the file that FD is open on.  */
     481             : extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __THROW __wur;
     482             : 
     483             : 
     484             : /* Change owner and group of FILE, if it is a symbolic
     485             :    link the ownership of the symbolic link is changed.  */
     486             : extern int lchown (const char *__file, __uid_t __owner, __gid_t __group)
     487             :      __THROW __nonnull ((1)) __wur;
     488             : 
     489             : #endif /* Use X/Open Unix.  */
     490             : 
     491             : #ifdef __USE_ATFILE
     492             : /* Change the owner and group of FILE relative to the directory FD is open
     493             :    on.  */
     494             : extern int fchownat (int __fd, const char *__file, __uid_t __owner,
     495             :                      __gid_t __group, int __flag)
     496             :      __THROW __nonnull ((2)) __wur;
     497             : #endif /* Use GNU.  */
     498             : 
     499             : /* Change the process's working directory to PATH.  */
     500             : extern int chdir (const char *__path) __THROW __nonnull ((1)) __wur;
     501             : 
     502             : #if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
     503             : /* Change the process's working directory to the one FD is open on.  */
     504             : extern int fchdir (int __fd) __THROW __wur;
     505             : #endif
     506             : 
     507             : /* Get the pathname of the current working directory,
     508             :    and put it in SIZE bytes of BUF.  Returns NULL if the
     509             :    directory couldn't be determined or SIZE was too small.
     510             :    If successful, returns BUF.  In GNU, if BUF is NULL,
     511             :    an array is allocated with `malloc'; the array is SIZE
     512             :    bytes long, unless SIZE == 0, in which case it is as
     513             :    big as necessary.  */
     514             : extern char *getcwd (char *__buf, size_t __size) __THROW __wur;
     515             : 
     516             : #ifdef  __USE_GNU
     517             : /* Return a malloc'd string containing the current directory name.
     518             :    If the environment variable `PWD' is set, and its value is correct,
     519             :    that value is used.  */
     520             : extern char *get_current_dir_name (void) __THROW;
     521             : #endif
     522             : 
     523             : #if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) \
     524             :     || defined __USE_MISC
     525             : /* Put the absolute pathname of the current working directory in BUF.
     526             :    If successful, return BUF.  If not, put an error message in
     527             :    BUF and return NULL.  BUF should be at least PATH_MAX bytes long.  */
     528             : extern char *getwd (char *__buf)
     529             :      __THROW __nonnull ((1)) __attribute_deprecated__ __wur;
     530             : #endif
     531             : 
     532             : 
     533             : /* Duplicate FD, returning a new file descriptor on the same file.  */
     534       61379 : extern int dup (int __fd) __THROW __wur;
     535             : 
     536             : /* Duplicate FD to FD2, closing FD2 and making it open on the same file.  */
     537       31858 : extern int dup2 (int __fd, int __fd2) __THROW;
     538             : 
     539             : #ifdef __USE_GNU
     540             : /* Duplicate FD to FD2, closing FD2 and making it open on the same
     541             :    file while setting flags according to FLAGS.  */
     542             : extern int dup3 (int __fd, int __fd2, int __flags) __THROW;
     543             : #endif
     544             : 
     545             : /* NULL-terminated array of "NAME=VALUE" environment variables.  */
     546             : extern char **__environ;
     547             : #ifdef __USE_GNU
     548             : extern char **environ;
     549             : #endif
     550             : 
     551             : 
     552        9420 : /* Replace the current process, executing PATH with arguments ARGV and
     553             :    environment ENVP.  ARGV and ENVP are terminated by NULL pointers.  */
     554             : extern int execve (const char *__path, char *const __argv[],
     555       34294 :                    char *const __envp[]) __THROW __nonnull ((1, 2));
     556             : 
     557             : #ifdef __USE_XOPEN2K8
     558             : /* Execute the file FD refers to, overlaying the running program image.
     559             :    ARGV and ENVP are passed to the new program, as for `execve'.  */
     560             : extern int fexecve (int __fd, char *const __argv[], char *const __envp[])
     561             :      __THROW __nonnull ((2));
     562             : #endif
     563             : 
     564             : 
     565             : /* Execute PATH with arguments ARGV and environment from `environ'.  */
     566             : extern int execv (const char *__path, char *const __argv[])
     567             :      __THROW __nonnull ((1, 2));
     568             : 
     569             : /* Execute PATH with all arguments after PATH until a NULL pointer,
     570             :    and the argument after that for environment.  */
     571             : extern int execle (const char *__path, const char *__arg, ...)
     572             :      __THROW __nonnull ((1, 2));
     573             : 
     574             : /* Execute PATH with all arguments after PATH until
     575             :    a NULL pointer and environment from `environ'.  */
     576             : extern int execl (const char *__path, const char *__arg, ...)
     577             :      __THROW __nonnull ((1, 2));
     578             : 
     579             : /* Execute FILE, searching in the `PATH' environment variable if it contains
     580             :    no slashes, with arguments ARGV and environment from `environ'.  */
     581             : extern int execvp (const char *__file, char *const __argv[])
     582             :      __THROW __nonnull ((1, 2));
     583             : 
     584             : /* Execute FILE, searching in the `PATH' environment variable if
     585             :    it contains no slashes, with all arguments after FILE until a
     586             :    NULL pointer and environment from `environ'.  */
     587             : extern int execlp (const char *__file, const char *__arg, ...)
     588             :      __THROW __nonnull ((1, 2));
     589             : 
     590             : #ifdef __USE_GNU
     591             : /* Execute FILE, searching in the `PATH' environment variable if it contains
     592             :    no slashes, with arguments ARGV and environment from `environ'.  */
     593             : extern int execvpe (const char *__file, char *const __argv[],
     594             :                     char *const __envp[])
     595             :      __THROW __nonnull ((1, 2));
     596             : #endif
     597             : 
     598             : 
     599             : #if defined __USE_MISC || defined __USE_XOPEN
     600             : /* Add INC to priority of the current process.  */
     601             : extern int nice (int __inc) __THROW __wur;
     602             : #endif
     603             : 
     604             : 
     605             : /* Terminate program execution with the low-order 8 bits of STATUS.  */
     606             : extern void _exit (int __status) __attribute__ ((__noreturn__));
     607             : 
     608             : 
     609             : /* Get the `_PC_*' symbols for the NAME argument to `pathconf' and `fpathconf';
     610             :    the `_SC_*' symbols for the NAME argument to `sysconf';
     611             :    and the `_CS_*' symbols for the NAME argument to `confstr'.  */
     612             : #include <bits/confname.h>
     613             : 
     614             : /* Get file-specific configuration information about PATH.  */
     615             : extern long int pathconf (const char *__path, int __name)
     616             :      __THROW __nonnull ((1));
     617             : 
     618             : /* Get file-specific configuration about descriptor FD.  */
     619             : extern long int fpathconf (int __fd, int __name) __THROW;
     620             : 
     621             : /* Get the value of the system variable NAME.  */
     622             : extern long int sysconf (int __name) __THROW;
     623             : 
     624             : #ifdef  __USE_POSIX2
     625             : /* Get the value of the string-valued system variable NAME.  */
     626             : extern size_t confstr (int __name, char *__buf, size_t __len) __THROW;
     627             : #endif
     628             : 
     629             : 
     630             : /* Get the process ID of the calling process.  */
     631             : extern __pid_t getpid (void) __THROW;
     632             : 
     633             : /* Get the process ID of the calling process's parent.  */
     634             : extern __pid_t getppid (void) __THROW;
     635             : 
     636             : /* Get the process group ID of the calling process.  */
     637             : extern __pid_t getpgrp (void) __THROW;
     638             : 
     639             : /* Get the process group ID of process PID.  */
     640             : extern __pid_t __getpgid (__pid_t __pid) __THROW;
     641             : #if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
     642             : extern __pid_t getpgid (__pid_t __pid) __THROW;
     643             : #endif
     644             : 
     645             : 
     646             : /* Set the process group ID of the process matching PID to PGID.
     647             :    If PID is zero, the current process's process group ID is set.
     648             :    If PGID is zero, the process ID of the process is used.  */
     649             : extern int setpgid (__pid_t __pid, __pid_t __pgid) __THROW;
     650             : 
     651             : #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
     652             : /* Both System V and BSD have `setpgrp' functions, but with different
     653             :    calling conventions.  The BSD function is the same as POSIX.1 `setpgid'
     654             :    (above).  The System V function takes no arguments and puts the calling
     655             :    process in its on group like `setpgid (0, 0)'.
     656             : 
     657             :    New programs should always use `setpgid' instead.
     658             : 
     659             :    GNU provides the POSIX.1 function.  */
     660             : 
     661             : /* Set the process group ID of the calling process to its own PID.
     662             :    This is exactly the same as `setpgid (0, 0)'.  */
     663             : extern int setpgrp (void) __THROW;
     664             : 
     665             : #endif  /* Use misc or X/Open.  */
     666             : 
     667             : /* Create a new session with the calling process as its leader.
     668             :    The process group IDs of the session and the calling process
     669             :    are set to the process ID of the calling process, which is returned.  */
     670             : extern __pid_t setsid (void) __THROW;
     671             : 
     672             : #if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
     673             : /* Return the session ID of the given process.  */
     674             : extern __pid_t getsid (__pid_t __pid) __THROW;
     675             : #endif
     676             : 
     677             : /* Get the real user ID of the calling process.  */
     678       45408 : extern __uid_t getuid (void) __THROW;
     679             : 
     680             : /* Get the effective user ID of the calling process.  */
     681     1667879 : extern __uid_t geteuid (void) __THROW;
     682             : 
     683             : /* Get the real group ID of the calling process.  */
     684        7868 : extern __gid_t getgid (void) __THROW;
     685             : 
     686             : /* Get the effective group ID of the calling process.  */
     687      904286 : extern __gid_t getegid (void) __THROW;
     688             : 
     689             : /* If SIZE is zero, return the number of supplementary groups
     690             :    the calling process is in.  Otherwise, fill in the group IDs
     691             :    of its supplementary groups in LIST and return the number written.  */
     692     1451453 : extern int getgroups (int __size, __gid_t __list[]) __THROW __wur;
     693             : 
     694             : #ifdef  __USE_GNU
     695             : /* Return nonzero iff the calling process is in group GID.  */
     696             : extern int group_member (__gid_t __gid) __THROW;
     697       10588 : #endif
     698             : 
     699             : /* Set the user ID of the calling process to UID.
     700      163000 :    If the calling process is the super-user, set the real
     701             :    and effective user IDs, and the saved set-user-ID to UID;
     702             :    if not, the effective user ID is set to UID.  */
     703        5602 : extern int setuid (__uid_t __uid) __THROW __wur;
     704             : 
     705             : #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
     706      107126 : /* Set the real user ID of the calling process to RUID,
     707             :    and the effective user ID of the calling process to EUID.  */
     708           0 : extern int setreuid (__uid_t __ruid, __uid_t __euid) __THROW __wur;
     709             : #endif
     710             : 
     711       27777 : #ifdef __USE_XOPEN2K
     712             : /* Set the effective user ID of the calling process to UID.  */
     713           0 : extern int seteuid (__uid_t __uid) __THROW __wur;
     714             : #endif /* Use POSIX.1-2001.  */
     715             : 
     716             : /* Set the group ID of the calling process to GID.
     717             :    If the calling process is the super-user, set the real
     718             :    and effective group IDs, and the saved set-group-ID to GID;
     719             :    if not, the effective group ID is set to GID.  */
     720           0 : extern int setgid (__gid_t __gid) __THROW __wur;
     721             : 
     722           0 : #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
     723             : /* Set the real group ID of the calling process to RGID,
     724             :    and the effective group ID of the calling process to EGID.  */
     725           0 : extern int setregid (__gid_t __rgid, __gid_t __egid) __THROW __wur;
     726             : #endif
     727           0 : 
     728             : #ifdef __USE_XOPEN2K
     729             : /* Set the effective group ID of the calling process to GID.  */
     730           0 : extern int setegid (__gid_t __gid) __THROW __wur;
     731             : #endif /* Use POSIX.1-2001.  */
     732           0 : 
     733             : #ifdef __USE_GNU
     734             : /* Fetch the real user ID, effective user ID, and saved-set user ID,
     735             :    of the calling process.  */
     736           0 : extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid)
     737             :      __THROW;
     738             : 
     739           0 : /* Fetch the real group ID, effective group ID, and saved-set group ID,
     740             :    of the calling process.  */
     741           0 : extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid)
     742             :      __THROW;
     743             : 
     744           0 : /* Set the real user ID, effective user ID, and saved-set user ID,
     745             :    of the calling process to RUID, EUID, and SUID, respectively.  */
     746           0 : extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid)
     747             :      __THROW __wur;
     748             : 
     749           0 : /* Set the real group ID, effective group ID, and saved-set group ID,
     750             :    of the calling process to RGID, EGID, and SGID, respectively.  */
     751           0 : extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
     752             :      __THROW __wur;
     753             : #endif
     754             : 
     755           0 : 
     756             : /* Clone the calling process, creating an exact copy.
     757             :    Return -1 for errors, 0 to the new process,
     758             :    and the process ID of the new process to the old process.  */
     759             : extern __pid_t fork (void) __THROWNL;
     760           0 : 
     761             : #if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) \
     762             :     || defined __USE_MISC
     763             : /* Clone the calling process, but without copying the whole address space.
     764             :    The calling process is suspended until the new process exits or is
     765           0 :    replaced by a call to `execve'.  Return -1 for errors, 0 to the new process,
     766             :    and the process ID of the new process to the old process.  */
     767             : extern __pid_t vfork (void) __THROW;
     768             : #endif /* Use misc or XPG < 7. */
     769             : 
     770           0 : 
     771             : /* Return the pathname of the terminal FD is open on, or NULL on errors.
     772             :    The returned storage is good only until the next call to this function.  */
     773             : extern char *ttyname (int __fd) __THROW;
     774             : 
     775             : /* Store at most BUFLEN characters of the pathname of the terminal FD is
     776             :    open on in BUF.  Return 0 on success, otherwise an error number.  */
     777             : extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
     778             :      __THROW __nonnull ((2)) __wur;
     779             : 
     780             : /* Return 1 if FD is a valid descriptor associated
     781             :    with a terminal, zero if not.  */
     782             : extern int isatty (int __fd) __THROW;
     783             : 
     784             : #ifdef __USE_MISC
     785             : /* Return the index into the active-logins file (utmp) for
     786             :    the controlling terminal.  */
     787             : extern int ttyslot (void) __THROW;
     788             : #endif
     789             : 
     790             : 
     791             : /* Make a link to FROM named TO.  */
     792             : extern int link (const char *__from, const char *__to)
     793             :      __THROW __nonnull ((1, 2)) __wur;
     794             : 
     795             : #ifdef __USE_ATFILE
     796             : /* Like link but relative paths in TO and FROM are interpreted relative
     797             :    to FROMFD and TOFD respectively.  */
     798             : extern int linkat (int __fromfd, const char *__from, int __tofd,
     799             :                    const char *__to, int __flags)
     800             :      __THROW __nonnull ((2, 4)) __wur;
     801             : #endif
     802             : 
     803             : #if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
     804             : /* Make a symbolic link to FROM named TO.  */
     805             : extern int symlink (const char *__from, const char *__to)
     806             :      __THROW __nonnull ((1, 2)) __wur;
     807             : 
     808             : /* Read the contents of the symbolic link PATH into no more than
     809             :    LEN bytes of BUF.  The contents are not null-terminated.
     810             :    Returns the number of characters read, or -1 for errors.  */
     811             : extern ssize_t readlink (const char *__restrict __path,
     812             :                          char *__restrict __buf, size_t __len)
     813             :      __THROW __nonnull ((1, 2)) __wur;
     814             : #endif /* Use POSIX.1-2001.  */
     815             : 
     816             : #ifdef __USE_ATFILE
     817             : /* Like symlink but a relative path in TO is interpreted relative to TOFD.  */
     818             : extern int symlinkat (const char *__from, int __tofd,
     819             :                       const char *__to) __THROW __nonnull ((1, 3)) __wur;
     820             : 
     821             : /* Like readlink but a relative PATH is interpreted relative to FD.  */
     822             : extern ssize_t readlinkat (int __fd, const char *__restrict __path,
     823             :                            char *__restrict __buf, size_t __len)
     824             :      __THROW __nonnull ((2, 3)) __wur;
     825             : #endif
     826             : 
     827             : /* Remove the link NAME.  */
     828             : extern int unlink (const char *__name) __THROW __nonnull ((1));
     829             : 
     830             : #ifdef __USE_ATFILE
     831             : /* Remove the link NAME relative to FD.  */
     832             : extern int unlinkat (int __fd, const char *__name, int __flag)
     833             :      __THROW __nonnull ((2));
     834             : #endif
     835             : 
     836             : /* Remove the directory PATH.  */
     837             : extern int rmdir (const char *__path) __THROW __nonnull ((1));
     838             : 
     839             : 
     840             : /* Return the foreground process group ID of FD.  */
     841             : extern __pid_t tcgetpgrp (int __fd) __THROW;
     842             : 
     843             : /* Set the foreground process group ID of FD set PGRP_ID.  */
     844             : extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __THROW;
     845             : 
     846             : 
     847             : /* Return the login name of the user.
     848             : 
     849             :    This function is a possible cancellation point and therefore not
     850             :    marked with __THROW.  */
     851             : extern char *getlogin (void);
     852             : #ifdef __USE_POSIX199506
     853             : /* Return at most NAME_LEN characters of the login name of the user in NAME.
     854             :    If it cannot be determined or some other error occurred, return the error
     855             :    code.  Otherwise return 0.
     856             : 
     857             :    This function is a possible cancellation point and therefore not
     858             :    marked with __THROW.  */
     859             : extern int getlogin_r (char *__name, size_t __name_len) __nonnull ((1));
     860             : #endif
     861             : 
     862             : #ifdef  __USE_MISC
     863             : /* Set the login name returned by `getlogin'.  */
     864             : extern int setlogin (const char *__name) __THROW __nonnull ((1));
     865             : #endif
     866             : 
     867             : 
     868             : #ifdef  __USE_POSIX2
     869             : /* Get definitions and prototypes for functions to process the
     870             :    arguments in ARGV (ARGC of them, minus the program name) for
     871             :    options given in OPTS.  */
     872             : # include <bits/getopt_posix.h>
     873             : #endif
     874             : 
     875             : 
     876             : #if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
     877             : /* Put the name of the current host in no more than LEN bytes of NAME.
     878             :    The result is null-terminated if LEN is large enough for the full
     879             :    name and the terminator.  */
     880       21265 : extern int gethostname (char *__name, size_t __len) __THROW __nonnull ((1));
     881             : #endif
     882             : 
     883             : 
     884             : #if defined __USE_MISC
     885             : /* Set the name of the current host to NAME, which is LEN bytes long.
     886             :    This call is restricted to the super-user.  */
     887             : extern int sethostname (const char *__name, size_t __len)
     888             :      __THROW __nonnull ((1)) __wur;
     889             : 
     890             : /* Set the current machine's Internet number to ID.
     891             :    This call is restricted to the super-user.  */
     892             : extern int sethostid (long int __id) __THROW __wur;
     893             : 
     894             : 
     895             : /* Get and set the NIS (aka YP) domain name, if any.
     896             :    Called just like `gethostname' and `sethostname'.
     897             :    The NIS domain name is usually the empty string when not using NIS.  */
     898             : extern int getdomainname (char *__name, size_t __len)
     899             :      __THROW __nonnull ((1)) __wur;
     900             : extern int setdomainname (const char *__name, size_t __len)
     901             :      __THROW __nonnull ((1)) __wur;
     902             : 
     903             : 
     904             : /* Revoke access permissions to all processes currently communicating
     905             :    with the control terminal, and then send a SIGHUP signal to the process
     906             :    group of the control terminal.  */
     907             : extern int vhangup (void) __THROW;
     908             : 
     909             : /* Revoke the access of all descriptors currently open on FILE.  */
     910             : extern int revoke (const char *__file) __THROW __nonnull ((1)) __wur;
     911       11158 : 
     912             : 
     913             : /* Enable statistical profiling, writing samples of the PC into at most
     914             :    SIZE bytes of SAMPLE_BUFFER; every processor clock tick while profiling
     915             :    is enabled, the system examines the user PC and increments
     916             :    SAMPLE_BUFFER[((PC - OFFSET) / 2) * SCALE / 65536].  If SCALE is zero,
     917             :    disable profiling.  Returns zero on success, -1 on error.  */
     918             : extern int profil (unsigned short int *__sample_buffer, size_t __size,
     919             :                    size_t __offset, unsigned int __scale)
     920             :      __THROW __nonnull ((1));
     921             : 
     922             : 
     923             : /* Turn accounting on if NAME is an existing file.  The system will then write
     924             :    a record for each process as it terminates, to this file.  If NAME is NULL,
     925             :    turn accounting off.  This call is restricted to the super-user.  */
     926             : extern int acct (const char *__name) __THROW;
     927             : 
     928             : 
     929             : /* Successive calls return the shells listed in `/etc/shells'.  */
     930             : extern char *getusershell (void) __THROW;
     931             : extern void endusershell (void) __THROW; /* Discard cached info.  */
     932             : extern void setusershell (void) __THROW; /* Rewind and re-read the file.  */
     933             : 
     934             : 
     935             : /* Put the program in the background, and dissociate from the controlling
     936             :    terminal.  If NOCHDIR is zero, do `chdir ("/")'.  If NOCLOSE is zero,
     937             :    redirects stdin, stdout, and stderr to /dev/null.  */
     938             : extern int daemon (int __nochdir, int __noclose) __THROW __wur;
     939             : #endif /* Use misc.  */
     940             : 
     941             : 
     942             : #if defined __USE_MISC || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
     943             : /* Make PATH be the root directory (the starting point for absolute paths).
     944             :    This call is restricted to the super-user.  */
     945             : extern int chroot (const char *__path) __THROW __nonnull ((1)) __wur;
     946             : 
     947             : /* Prompt with PROMPT and read a string from the terminal without echoing.
     948             :    Uses /dev/tty if possible; otherwise stderr and stdin.  */
     949             : extern char *getpass (const char *__prompt) __nonnull ((1));
     950             : #endif /* Use misc || X/Open.  */
     951             : 
     952             : 
     953             : /* Make all changes done to FD actually appear on disk.
     954             : 
     955             :    This function is a cancellation point and therefore not marked with
     956             :    __THROW.  */
     957             : extern int fsync (int __fd);
     958             : 
     959             : 
     960             : #ifdef __USE_GNU
     961             : /* Make all changes done to all files on the file system associated
     962             :    with FD actually appear on disk.  */
     963             : extern int syncfs (int __fd) __THROW;
     964             : #endif
     965             : 
     966             : 
     967             : #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
     968             : 
     969             : /* Return identifier for the current host.  */
     970             : extern long int gethostid (void);
     971             : 
     972             : /* Make all changes done to all files actually appear on disk.  */
     973             : extern void sync (void) __THROW;
     974             : 
     975             : 
     976             : # if defined __USE_MISC || !defined __USE_XOPEN2K
     977             : /* Return the number of bytes in a page.  This is the system's page size,
     978             :    which is not necessarily the same as the hardware page size.  */
     979             : extern int getpagesize (void)  __THROW __attribute__ ((__const__));
     980             : 
     981             : 
     982             : /* Return the maximum number of file descriptors
     983             :    the current process could possibly have.  */
     984             : extern int getdtablesize (void) __THROW;
     985             : # endif
     986             : 
     987             : #endif /* Use misc || X/Open Unix.  */
     988             : 
     989             : 
     990             : #if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
     991             : 
     992             : /* Truncate FILE to LENGTH bytes.  */
     993             : # ifndef __USE_FILE_OFFSET64
     994             : extern int truncate (const char *__file, __off_t __length)
     995             :      __THROW __nonnull ((1)) __wur;
     996             : # else
     997             : #  ifdef __REDIRECT_NTH
     998             : extern int __REDIRECT_NTH (truncate,
     999             :                            (const char *__file, __off64_t __length),
    1000             :                            truncate64) __nonnull ((1)) __wur;
    1001             : #  else
    1002             : #   define truncate truncate64
    1003             : #  endif
    1004             : # endif
    1005             : # ifdef __USE_LARGEFILE64
    1006             : extern int truncate64 (const char *__file, __off64_t __length)
    1007             :      __THROW __nonnull ((1)) __wur;
    1008             : # endif
    1009             : 
    1010             : #endif /* Use X/Open Unix || POSIX 2008.  */
    1011             : 
    1012             : #if defined __USE_POSIX199309 \
    1013             :     || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
    1014             : 
    1015             : /* Truncate the file FD is open on to LENGTH bytes.  */
    1016             : # ifndef __USE_FILE_OFFSET64
    1017             : extern int ftruncate (int __fd, __off_t __length) __THROW __wur;
    1018             : # else
    1019             : #  ifdef __REDIRECT_NTH
    1020             : extern int __REDIRECT_NTH (ftruncate, (int __fd, __off64_t __length),
    1021             :                            ftruncate64) __wur;
    1022             : #  else
    1023             : #   define ftruncate ftruncate64
    1024             : #  endif
    1025             : # endif
    1026             : # ifdef __USE_LARGEFILE64
    1027             : extern int ftruncate64 (int __fd, __off64_t __length) __THROW __wur;
    1028             : # endif
    1029             : 
    1030             : #endif /* Use POSIX.1b || X/Open Unix || XPG6.  */
    1031             : 
    1032             : 
    1033             : #if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K) \
    1034             :     || defined __USE_MISC
    1035             : 
    1036             : /* Set the end of accessible data space (aka "the break") to ADDR.
    1037             :    Returns zero on success and -1 for errors (with errno set).  */
    1038             : extern int brk (void *__addr) __THROW __wur;
    1039             : 
    1040             : /* Increase or decrease the end of accessible data space by DELTA bytes.
    1041             :    If successful, returns the address the previous end of data space
    1042             :    (i.e. the beginning of the new space, if DELTA > 0);
    1043             :    returns (void *) -1 for errors (with errno set).  */
    1044             : extern void *sbrk (intptr_t __delta) __THROW;
    1045             : #endif
    1046             : 
    1047             : 
    1048             : #ifdef __USE_MISC
    1049             : /* Invoke `system call' number SYSNO, passing it the remaining arguments.
    1050             :    This is completely system-dependent, and not often useful.
    1051             : 
    1052             :    In Unix, `syscall' sets `errno' for all errors and most calls return -1
    1053             :    for errors; in many systems you cannot pass arguments or get return
    1054             :    values for all system calls (`pipe', `fork', and `getppid' typically
    1055             :    among them).
    1056             : 
    1057             :    In Mach, all system calls take normal arguments and always return an
    1058             :    error code (zero for success).  */
    1059     6033574 : extern long int syscall (long int __sysno, ...) __THROW;
    1060             : 
    1061             : #endif  /* Use misc.  */
    1062             : 
    1063             : 
    1064             : #if (defined __USE_MISC || defined __USE_XOPEN_EXTENDED) && !defined F_LOCK
    1065             : /* NOTE: These declarations also appear in <fcntl.h>; be sure to keep both
    1066             :    files consistent.  Some systems have them there and some here, and some
    1067             :    software depends on the macros being defined without including both.  */
    1068             : 
    1069             : /* `lockf' is a simpler interface to the locking facilities of `fcntl'.
    1070             :    LEN is always relative to the current file position.
    1071             :    The CMD argument is one of the following.
    1072             : 
    1073             :    This function is a cancellation point and therefore not marked with
    1074             :    __THROW.  */
    1075             : 
    1076             : # define F_ULOCK 0      /* Unlock a previously locked region.  */
    1077             : # define F_LOCK  1      /* Lock a region for exclusive use.  */
    1078             : # define F_TLOCK 2      /* Test and lock a region for exclusive use.  */
    1079             : # define F_TEST  3      /* Test a region for other processes locks.  */
    1080             : 
    1081             : # ifndef __USE_FILE_OFFSET64
    1082             : extern int lockf (int __fd, int __cmd, __off_t __len) __wur;
    1083             : # else
    1084             : #  ifdef __REDIRECT
    1085             : extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len),
    1086             :                        lockf64) __wur;
    1087             : #  else
    1088             : #   define lockf lockf64
    1089             : #  endif
    1090             : # endif
    1091      471879 : # ifdef __USE_LARGEFILE64
    1092             : extern int lockf64 (int __fd, int __cmd, __off64_t __len) __wur;
    1093             : # endif
    1094             : #endif /* Use misc and F_LOCK not already defined.  */
    1095             : 
    1096             : 
    1097             : #ifdef __USE_GNU
    1098             : 
    1099             : /* Evaluate EXPRESSION, and repeat as long as it returns -1 with `errno'
    1100             :    set to EINTR.  */
    1101             : 
    1102             : # define TEMP_FAILURE_RETRY(expression) \
    1103             :   (__extension__                                                              \
    1104             :     ({ long int __result;                                                     \
    1105             :        do __result = (long int) (expression);                                 \
    1106             :        while (__result == -1L && errno == EINTR);                             \
    1107             :        __result; }))
    1108             : 
    1109             : /* Copy LENGTH bytes from INFD to OUTFD.  */
    1110             : ssize_t copy_file_range (int __infd, __off64_t *__pinoff,
    1111             :                          int __outfd, __off64_t *__poutoff,
    1112             :                          size_t __length, unsigned int __flags);
    1113             : #endif /* __USE_GNU */
    1114             : 
    1115             : #if defined __USE_POSIX199309 || defined __USE_UNIX98
    1116             : /* Synchronize at least the data part of a file with the underlying
    1117             :    media.  */
    1118             : extern int fdatasync (int __fildes);
    1119             : #endif /* Use POSIX199309 */
    1120             : 
    1121             : 
    1122             : /* XPG4.2 specifies that prototypes for the encryption functions must
    1123             :    be defined here.  */
    1124             : #ifdef  __USE_XOPEN
    1125             : /* Encrypt at most 8 characters from KEY using salt to perturb DES.  */
    1126             : extern char *crypt (const char *__key, const char *__salt)
    1127             :      __THROW __nonnull ((1, 2));
    1128             : 
    1129             : /* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt
    1130             :    block in place.  */
    1131             : extern void encrypt (char *__glibc_block, int __edflag)
    1132             :      __THROW __nonnull ((1));
    1133             : 
    1134             : 
    1135             : /* Swab pairs bytes in the first N bytes of the area pointed to by
    1136             :    FROM and copy the result to TO.  The value of TO must not be in the
    1137             :    range [FROM - N + 1, FROM - 1].  If N is odd the first byte in FROM
    1138             :    is without partner.  */
    1139             : extern void swab (const void *__restrict __from, void *__restrict __to,
    1140             :                   ssize_t __n) __THROW __nonnull ((1, 2));
    1141             : #endif
    1142             : 
    1143             : 
    1144             : /* Prior to Issue 6, the Single Unix Specification required these
    1145             :    prototypes to appear in this header.  They are also found in
    1146             :    <stdio.h>.  */
    1147             : #if defined __USE_XOPEN && !defined __USE_XOPEN2K
    1148             : /* Return the name of the controlling terminal.  */
    1149             : extern char *ctermid (char *__s) __THROW;
    1150             : 
    1151             : /* Return the name of the current user.  */
    1152             : extern char *cuserid (char *__s);
    1153             : #endif
    1154             : 
    1155             : 
    1156             : /* Unix98 requires this function to be declared here.  In other
    1157             :    standards it is in <pthread.h>.  */
    1158             : #if defined __USE_UNIX98 && !defined __USE_XOPEN2K
    1159             : extern int pthread_atfork (void (*__prepare) (void),
    1160             :                            void (*__parent) (void),
    1161             :                            void (*__child) (void)) __THROW;
    1162             : #endif
    1163             : 
    1164             : #ifdef __USE_MISC
    1165             : /* Write LENGTH bytes of randomness starting at BUFFER.  Return 0 on
    1166             :    success or -1 on error.  */
    1167             : int getentropy (void *__buffer, size_t __length) __wur;
    1168             : #endif
    1169             : 
    1170             : /* Define some macros helping to catch buffer overflows.  */
    1171             : #if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
    1172             : # include <bits/unistd.h>
    1173             : #endif
    1174             : 
    1175             : __END_DECLS
    1176             : 
    1177             : #endif /* unistd.h  */

Generated by: LCOV version 1.13