LCOV - code coverage report
Current view: top level - usr/include - unistd.h (source / functions) Hit Total Coverage
Test: coverage report for master 2f515e9b Lines: 13 23 56.5 %
Date: 2024-04-21 15:09:00 Functions: 13 23 56.5 %

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

Generated by: LCOV version 1.14