Dr Andrew Scott G7VAV

My photo
 
April 2024
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 1 2 3 4 5
6 7 8 9 10 11 12


unistd.h
0001: /* Copyright (C) 1991-2009, 2010, 2011 Free Software Foundation, Inc.
0002:    This file is part of the GNU C Library.
0003: 
0004:    The GNU C Library is free software; you can redistribute it and/or
0005:    modify it under the terms of the GNU Lesser General Public
0006:    License as published by the Free Software Foundation; either
0007:    version 2.1 of the License, or (at your option) any later version.
0008: 
0009:    The GNU C Library is distributed in the hope that it will be useful,
0010:    but WITHOUT ANY WARRANTY; without even the implied warranty of
0011:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0012:    Lesser General Public License for more details.
0013: 
0014:    You should have received a copy of the GNU Lesser General Public
0015:    License along with the GNU C Library; if not, write to the Free
0016:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
0017:    02111-1307 USA.  */
0018: 
0019: /*
0020:  *      POSIX Standard: 2.10 Symbolic Constants         <unistd.h>
0021:  */
0022: 
0023: #ifndef _UNISTD_H
0024: #define _UNISTD_H       1
0025: 
0026: #include <features.h>
0027: 
0028: __BEGIN_DECLS
0029: 
0030: /* These may be used to determine what facilities are present at compile time.
0031:    Their values can be obtained at run time from `sysconf'.  */
0032: 
0033: #ifdef __USE_XOPEN2K8
0034: /* POSIX Standard approved as ISO/IEC 9945-1 as of September 2008.  */
0035: # define _POSIX_VERSION 200809L
0036: #elif defined __USE_XOPEN2K
0037: /* POSIX Standard approved as ISO/IEC 9945-1 as of December 2001.  */
0038: # define _POSIX_VERSION 200112L
0039: #elif defined __USE_POSIX199506
0040: /* POSIX Standard approved as ISO/IEC 9945-1 as of June 1995.  */
0041: # define _POSIX_VERSION 199506L
0042: #elif defined __USE_POSIX199309
0043: /* POSIX Standard approved as ISO/IEC 9945-1 as of September 1993.  */
0044: # define _POSIX_VERSION 199309L
0045: #else
0046: /* POSIX Standard approved as ISO/IEC 9945-1 as of September 1990.  */
0047: # define _POSIX_VERSION 199009L
0048: #endif
0049: 
0050: /* These are not #ifdef __USE_POSIX2 because they are
0051:    in the theoretically application-owned namespace.  */
0052: 
0053: #ifdef __USE_XOPEN2K8
0054: # define __POSIX2_THIS_VERSION  200809L
0055: /* The utilities on GNU systems also correspond to this version.  */
0056: #elif defined __USE_XOPEN2K
0057: /* The utilities on GNU systems also correspond to this version.  */
0058: # define __POSIX2_THIS_VERSION  200112L
0059: #elif defined __USE_POSIX199506
0060: /* The utilities on GNU systems also correspond to this version.  */
0061: # define __POSIX2_THIS_VERSION  199506L
0062: #else
0063: /* The utilities on GNU systems also correspond to this version.  */
0064: # define __POSIX2_THIS_VERSION  199209L
0065: #endif
0066: 
0067: /* The utilities on GNU systems also correspond to this version.  */
0068: #define _POSIX2_VERSION __POSIX2_THIS_VERSION
0069: 
0070: /* If defined, the implementation supports the
0071:    C Language Bindings Option.  */
0072: #define _POSIX2_C_BIND  __POSIX2_THIS_VERSION
0073: 
0074: /* If defined, the implementation supports the
0075:    C Language Development Utilities Option.  */
0076: #define _POSIX2_C_DEV   __POSIX2_THIS_VERSION
0077: 
0078: /* If defined, the implementation supports the
0079:    Software Development Utilities Option.  */
0080: #define _POSIX2_SW_DEV  __POSIX2_THIS_VERSION
0081: 
0082: /* If defined, the implementation supports the
0083:    creation of locales with the localedef utility.  */
0084: #define _POSIX2_LOCALEDEF       __POSIX2_THIS_VERSION
0085: 
0086: /* X/Open version number to which the library conforms.  It is selectable.  */
0087: #ifdef __USE_XOPEN2K8
0088: # define _XOPEN_VERSION 700
0089: #elif defined __USE_XOPEN2K
0090: # define _XOPEN_VERSION 600
0091: #elif defined __USE_UNIX98
0092: # define _XOPEN_VERSION 500
0093: #else
0094: # define _XOPEN_VERSION 4
0095: #endif
0096: 
0097: /* Commands and utilities from XPG4 are available.  */
0098: #define _XOPEN_XCU_VERSION      4
0099: 
0100: /* We are compatible with the old published standards as well.  */
0101: #define _XOPEN_XPG2     1
0102: #define _XOPEN_XPG3     1
0103: #define _XOPEN_XPG4     1
0104: 
0105: /* The X/Open Unix extensions are available.  */
0106: #define _XOPEN_UNIX     1
0107: 
0108: /* Encryption is present.  */
0109: #define _XOPEN_CRYPT    1
0110: 
0111: /* The enhanced internationalization capabilities according to XPG4.2
0112:    are present.  */
0113: #define _XOPEN_ENH_I18N 1
0114: 
0115: /* The legacy interfaces are also available.  */
0116: #define _XOPEN_LEGACY   1
0117: 
0118: 
0119: /* Get values of POSIX options:
0120: 
0121:    If these symbols are defined, the corresponding features are
0122:    always available.  If not, they may be available sometimes.
0123:    The current values can be obtained with `sysconf'.
0124: 
0125:    _POSIX_JOB_CONTROL           Job control is supported.
0126:    _POSIX_SAVED_IDS             Processes have a saved set-user-ID
0127:                                 and a saved set-group-ID.
0128:    _POSIX_REALTIME_SIGNALS      Real-time, queued signals are supported.
0129:    _POSIX_PRIORITY_SCHEDULING   Priority scheduling is supported.
0130:    _POSIX_TIMERS                POSIX.4 clocks and timers are supported.
0131:    _POSIX_ASYNCHRONOUS_IO       Asynchronous I/O is supported.
0132:    _POSIX_PRIORITIZED_IO        Prioritized asynchronous I/O is supported.
0133:    _POSIX_SYNCHRONIZED_IO       Synchronizing file data is supported.
0134:    _POSIX_FSYNC                 The fsync function is present.
0135:    _POSIX_MAPPED_FILES          Mapping of files to memory is supported.
0136:    _POSIX_MEMLOCK               Locking of all memory is supported.
0137:    _POSIX_MEMLOCK_RANGE         Locking of ranges of memory is supported.
0138:    _POSIX_MEMORY_PROTECTION     Setting of memory protections is supported.
0139:    _POSIX_MESSAGE_PASSING       POSIX.4 message queues are supported.
0140:    _POSIX_SEMAPHORES            POSIX.4 counting semaphores are supported.
0141:    _POSIX_SHARED_MEMORY_OBJECTS POSIX.4 shared memory objects are supported.
0142:    _POSIX_THREADS               POSIX.1c pthreads are supported.
0143:    _POSIX_THREAD_ATTR_STACKADDR Thread stack address attribute option supported.
0144:    _POSIX_THREAD_ATTR_STACKSIZE Thread stack size attribute option supported.
0145:    _POSIX_THREAD_SAFE_FUNCTIONS Thread-safe functions are supported.
0146:    _POSIX_THREAD_PRIORITY_SCHEDULING
0147:                                 POSIX.1c thread execution scheduling supported.
0148:    _POSIX_THREAD_PRIO_INHERIT   Thread priority inheritance option supported.
0149:    _POSIX_THREAD_PRIO_PROTECT   Thread priority protection option supported.
0150:    _POSIX_THREAD_PROCESS_SHARED Process-shared synchronization supported.
0151:    _POSIX_PII                   Protocol-independent interfaces are supported.
0152:    _POSIX_PII_XTI               XTI protocol-indep. interfaces are supported.
0153:    _POSIX_PII_SOCKET            Socket protocol-indep. interfaces are supported.
0154:    _POSIX_PII_INTERNET          Internet family of protocols supported.
0155:    _POSIX_PII_INTERNET_STREAM   Connection-mode Internet protocol supported.
0156:    _POSIX_PII_INTERNET_DGRAM    Connectionless Internet protocol supported.
0157:    _POSIX_PII_OSI               ISO/OSI family of protocols supported.
0158:    _POSIX_PII_OSI_COTS          Connection-mode ISO/OSI service supported.
0159:    _POSIX_PII_OSI_CLTS          Connectionless ISO/OSI service supported.
0160:    _POSIX_POLL                  Implementation supports `poll' function.
0161:    _POSIX_SELECT                Implementation supports `select' and `pselect'.
0162: 
0163:    _XOPEN_REALTIME              X/Open realtime support is available.
0164:    _XOPEN_REALTIME_THREADS      X/Open realtime thread support is available.
0165:    _XOPEN_SHM                   Shared memory interface according to XPG4.2.
0166: 
0167:    _XBS5_ILP32_OFF32            Implementation provides environment with 32-bit
0168:                                 int, long, pointer, and off_t types.
0169:    _XBS5_ILP32_OFFBIG           Implementation provides environment with 32-bit
0170:                                 int, long, and pointer and off_t with at least
0171:                                 64 bits.
0172:    _XBS5_LP64_OFF64             Implementation provides environment with 32-bit
0173:                                 int, and 64-bit long, pointer, and off_t types.
0174:    _XBS5_LPBIG_OFFBIG           Implementation provides environment with at
0175:                                 least 32 bits int and long, pointer, and off_t
0176:                                 with at least 64 bits.
0177: 
0178:    If any of these symbols is defined as -1, the corresponding option is not
0179:    true for any file.  If any is defined as other than -1, the corresponding
0180:    option is true for all files.  If a symbol is not defined at all, the value
0181:    for a specific file can be obtained from `pathconf' and `fpathconf'.
0182: 
0183:    _POSIX_CHOWN_RESTRICTED      Only the super user can use `chown' to change
0184:                                 the owner of a file.  `chown' can only be used
0185:                                 to change the group ID of a file to a group of
0186:                                 which the calling process is a member.
0187:    _POSIX_NO_TRUNC              Pathname components longer than
0188:                                 NAME_MAX generate an error.
0189:    _POSIX_VDISABLE              If defined, if the value of an element of the
0190:                                 `c_cc' member of `struct termios' is
0191:                                 _POSIX_VDISABLE, no character will have the
0192:                                 effect associated with that element.
0193:    _POSIX_SYNC_IO               Synchronous I/O may be performed.
0194:    _POSIX_ASYNC_IO              Asynchronous I/O may be performed.
0195:    _POSIX_PRIO_IO               Prioritized Asynchronous I/O may be performed.
0196: 
0197:    Support for the Large File Support interface is not generally available.
0198:    If it is available the following constants are defined to one.
0199:    _LFS64_LARGEFILE             Low-level I/O supports large files.
0200:    _LFS64_STDIO                 Standard I/O supports large files.
0201:    */
0202: 
0203: #include <bits/posix_opt.h>
0204: 
0205: /* Get the environment definitions from Unix98.  */
0206: #if defined __USE_UNIX98 || defined __USE_XOPEN2K
0207: # include <bits/environments.h>
0208: #endif
0209: 
0210: /* Standard file descriptors.  */
0211: #define STDIN_FILENO    0       /* Standard input.  */
0212: #define STDOUT_FILENO   1       /* Standard output.  */
0213: #define STDERR_FILENO   2       /* Standard error output.  */
0214: 
0215: 
0216: /* All functions that are not declared anywhere else.  */
0217: 
0218: #include <bits/types.h>
0219: 
0220: #ifndef __ssize_t_defined
0221: typedef __ssize_t ssize_t;
0222: # define __ssize_t_defined
0223: #endif
0224: 
0225: #define __need_size_t
0226: #define __need_NULL
0227: #include <stddef.h>
0228: 
0229: #if defined __USE_XOPEN || defined __USE_XOPEN2K
0230: /* The Single Unix specification says that some more types are
0231:    available here.  */
0232: # ifndef __gid_t_defined
0233: typedef __gid_t gid_t;
0234: #  define __gid_t_defined
0235: # endif
0236: 
0237: # ifndef __uid_t_defined
0238: typedef __uid_t uid_t;
0239: #  define __uid_t_defined
0240: # endif
0241: 
0242: # ifndef __off_t_defined
0243: #  ifndef __USE_FILE_OFFSET64
0244: typedef __off_t off_t;
0245: #  else
0246: typedef __off64_t off_t;
0247: #  endif
0248: #  define __off_t_defined
0249: # endif
0250: # if defined __USE_LARGEFILE64 && !defined __off64_t_defined
0251: typedef __off64_t off64_t;
0252: #  define __off64_t_defined
0253: # endif
0254: 
0255: # ifndef __useconds_t_defined
0256: typedef __useconds_t useconds_t;
0257: #  define __useconds_t_defined
0258: # endif
0259: 
0260: # ifndef __pid_t_defined
0261: typedef __pid_t pid_t;
0262: #  define __pid_t_defined
0263: # endif
0264: #endif  /* X/Open */
0265: 
0266: #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
0267: # ifndef __intptr_t_defined
0268: typedef __intptr_t intptr_t;
0269: #  define __intptr_t_defined
0270: # endif
0271: #endif
0272: 
0273: #if defined __USE_BSD || defined __USE_XOPEN
0274: # ifndef __socklen_t_defined
0275: typedef __socklen_t socklen_t;
0276: #  define __socklen_t_defined
0277: # endif
0278: #endif
0279: 
0280: /* Values for the second argument to access.
0281:    These may be OR'd together.  */
0282: #define R_OK    4               /* Test for read permission.  */
0283: #define W_OK    2               /* Test for write permission.  */
0284: #define X_OK    1               /* Test for execute permission.  */
0285: #define F_OK    0               /* Test for existence.  */
0286: 
0287: /* Test for access to NAME using the real UID and real GID.  */
0288: extern int access (__const char *__name, int __type) __THROW __nonnull ((1));
0289: 
0290: #ifdef __USE_GNU
0291: /* Test for access to NAME using the effective UID and GID
0292:    (as normal file operations use).  */
0293: extern int euidaccess (__const char *__name, int __type)
0294:      __THROW __nonnull ((1));
0295: 
0296: /* An alias for `euidaccess', used by some other systems.  */
0297: extern int eaccess (__const char *__name, int __type)
0298:      __THROW __nonnull ((1));
0299: #endif
0300: 
0301: #ifdef __USE_ATFILE
0302: /* Test for access to FILE relative to the directory FD is open on.
0303:    If AT_EACCESS is set in FLAG, then use effective IDs like `eaccess',
0304:    otherwise use real IDs like `access'.  */
0305: extern int faccessat (int __fd, __const char *__file, int __type, int __flag)
0306:      __THROW __nonnull ((2)) __wur;
0307: #endif /* Use GNU.  */
0308: 
0309: 
0310: /* Values for the WHENCE argument to lseek.  */
0311: #ifndef _STDIO_H                /* <stdio.h> has the same definitions.  */
0312: # define SEEK_SET       0       /* Seek from beginning of file.  */
0313: # define SEEK_CUR       1       /* Seek from current position.  */
0314: # define SEEK_END       2       /* Seek from end of file.  */
0315: # ifdef __USE_GNU
0316: #  define SEEK_DATA     3       /* Seek to next data.  */
0317: #  define SEEK_HOLE     4       /* Seek to next hole.  */
0318: # endif
0319: #endif
0320: 
0321: #if defined __USE_BSD && !defined L_SET
0322: /* Old BSD names for the same constants; just for compatibility.  */
0323: # define L_SET          SEEK_SET
0324: # define L_INCR         SEEK_CUR
0325: # define L_XTND         SEEK_END
0326: #endif
0327: 
0328: 
0329: /* Move FD's file position to OFFSET bytes from the
0330:    beginning of the file (if WHENCE is SEEK_SET),
0331:    the current position (if WHENCE is SEEK_CUR),
0332:    or the end of the file (if WHENCE is SEEK_END).
0333:    Return the new file position.  */
0334: #ifndef __USE_FILE_OFFSET64
0335: extern __off_t lseek (int __fd, __off_t __offset, int __whence) __THROW;
0336: #else
0337: # ifdef __REDIRECT_NTH
0338: extern __off64_t __REDIRECT_NTH (lseek,
0339:                                  (int __fd, __off64_t __offset, int __whence),
0340:                                  lseek64);
0341: # else
0342: #  define lseek lseek64
0343: # endif
0344: #endif
0345: #ifdef __USE_LARGEFILE64
0346: extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
0347:      __THROW;
0348: #endif
0349: 
0350: /* Close the file descriptor FD.
0351: 
0352:    This function is a cancellation point and therefore not marked with
0353:    __THROW.  */
0354: extern int close (int __fd);
0355: 
0356: /* Read NBYTES into BUF from FD.  Return the
0357:    number read, -1 for errors or 0 for EOF.
0358: 
0359:    This function is a cancellation point and therefore not marked with
0360:    __THROW.  */
0361: extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __wur;
0362: 
0363: /* Write N bytes of BUF to FD.  Return the number written, or -1.
0364: 
0365:    This function is a cancellation point and therefore not marked with
0366:    __THROW.  */
0367: extern ssize_t write (int __fd, __const void *__buf, size_t __n) __wur;
0368: 
0369: #if defined __USE_UNIX98 || defined __USE_XOPEN2K8
0370: # ifndef __USE_FILE_OFFSET64
0371: /* Read NBYTES into BUF from FD at the given position OFFSET without
0372:    changing the file pointer.  Return the number read, -1 for errors
0373:    or 0 for EOF.
0374: 
0375:    This function is a cancellation point and therefore not marked with
0376:    __THROW.  */
0377: extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
0378:                       __off_t __offset) __wur;
0379: 
0380: /* Write N bytes of BUF to FD at the given position OFFSET without
0381:    changing the file pointer.  Return the number written, or -1.
0382: 
0383:    This function is a cancellation point and therefore not marked with
0384:    __THROW.  */
0385: extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
0386:                        __off_t __offset) __wur;
0387: # else
0388: #  ifdef __REDIRECT
0389: extern ssize_t __REDIRECT (pread, (int __fd, void *__buf, size_t __nbytes,
0390:                                    __off64_t __offset),
0391:                            pread64) __wur;
0392: extern ssize_t __REDIRECT (pwrite, (int __fd, __const void *__buf,
0393:                                     size_t __nbytes, __off64_t __offset),
0394:                            pwrite64) __wur;
0395: #  else
0396: #   define pread pread64
0397: #   define pwrite pwrite64
0398: #  endif
0399: # endif
0400: 
0401: # ifdef __USE_LARGEFILE64
0402: /* Read NBYTES into BUF from FD at the given position OFFSET without
0403:    changing the file pointer.  Return the number read, -1 for errors
0404:    or 0 for EOF.  */
0405: extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
0406:                         __off64_t __offset) __wur;
0407: /* Write N bytes of BUF to FD at the given position OFFSET without
0408:    changing the file pointer.  Return the number written, or -1.  */
0409: extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
0410:                          __off64_t __offset) __wur;
0411: # endif
0412: #endif
0413: 
0414: /* Create a one-way communication channel (pipe).
0415:    If successful, two file descriptors are stored in PIPEDES;
0416:    bytes written on PIPEDES[1] can be read from PIPEDES[0].
0417:    Returns 0 if successful, -1 if not.  */
0418: extern int pipe (int __pipedes[2]) __THROW __wur;
0419: 
0420: #ifdef __USE_GNU
0421: /* Same as pipe but apply flags passed in FLAGS to the new file
0422:    descriptors.  */
0423: extern int pipe2 (int __pipedes[2], int __flags) __THROW __wur;
0424: #endif
0425: 
0426: /* Schedule an alarm.  In SECONDS seconds, the process will get a SIGALRM.
0427:    If SECONDS is zero, any currently scheduled alarm will be cancelled.
0428:    The function returns the number of seconds remaining until the last
0429:    alarm scheduled would have signaled, or zero if there wasn't one.
0430:    There is no return value to indicate an error, but you can set `errno'
0431:    to 0 and check its value after calling `alarm', and this might tell you.
0432:    The signal may come late due to processor scheduling.  */
0433: extern unsigned int alarm (unsigned int __seconds) __THROW;
0434: 
0435: /* Make the process sleep for SECONDS seconds, or until a signal arrives
0436:    and is not ignored.  The function returns the number of seconds less
0437:    than SECONDS which it actually slept (thus zero if it slept the full time).
0438:    If a signal handler does a `longjmp' or modifies the handling of the
0439:    SIGALRM signal while inside `sleep' call, the handling of the SIGALRM
0440:    signal afterwards is undefined.  There is no return value to indicate
0441:    error, but if `sleep' returns SECONDS, it probably didn't work.
0442: 
0443:    This function is a cancellation point and therefore not marked with
0444:    __THROW.  */
0445: extern unsigned int sleep (unsigned int __seconds);
0446: 
0447: #if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) \
0448:     || defined __USE_BSD
0449: /* Set an alarm to go off (generating a SIGALRM signal) in VALUE
0450:    microseconds.  If INTERVAL is nonzero, when the alarm goes off, the
0451:    timer is reset to go off every INTERVAL microseconds thereafter.
0452:    Returns the number of microseconds remaining before the alarm.  */
0453: extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
0454:      __THROW;
0455: 
0456: /* Sleep USECONDS microseconds, or until a signal arrives that is not blocked
0457:    or ignored.
0458: 
0459:    This function is a cancellation point and therefore not marked with
0460:    __THROW.  */
0461: extern int usleep (__useconds_t __useconds);
0462: #endif
0463: 
0464: 
0465: /* Suspend the process until a signal arrives.
0466:    This always returns -1 and sets `errno' to EINTR.
0467: 
0468:    This function is a cancellation point and therefore not marked with
0469:    __THROW.  */
0470: extern int pause (void);
0471: 
0472: 
0473: /* Change the owner and group of FILE.  */
0474: extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
0475:      __THROW __nonnull ((1)) __wur;
0476: 
0477: #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
0478: /* Change the owner and group of the file that FD is open on.  */
0479: extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __THROW __wur;
0480: 
0481: 
0482: /* Change owner and group of FILE, if it is a symbolic
0483:    link the ownership of the symbolic link is changed.  */
0484: extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
0485:      __THROW __nonnull ((1)) __wur;
0486: 
0487: #endif /* Use BSD || X/Open Unix.  */
0488: 
0489: #ifdef __USE_ATFILE
0490: /* Change the owner and group of FILE relative to the directory FD is open
0491:    on.  */
0492: extern int fchownat (int __fd, __const char *__file, __uid_t __owner,
0493:                      __gid_t __group, int __flag)
0494:      __THROW __nonnull ((2)) __wur;
0495: #endif /* Use GNU.  */
0496: 
0497: /* Change the process's working directory to PATH.  */
0498: extern int chdir (__const char *__path) __THROW __nonnull ((1)) __wur;
0499: 
0500: #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
0501: /* Change the process's working directory to the one FD is open on.  */
0502: extern int fchdir (int __fd) __THROW __wur;
0503: #endif
0504: 
0505: /* Get the pathname of the current working directory,
0506:    and put it in SIZE bytes of BUF.  Returns NULL if the
0507:    directory couldn't be determined or SIZE was too small.
0508:    If successful, returns BUF.  In GNU, if BUF is NULL,
0509:    an array is allocated with `malloc'; the array is SIZE
0510:    bytes long, unless SIZE == 0, in which case it is as
0511:    big as necessary.  */
0512: extern char *getcwd (char *__buf, size_t __size) __THROW __wur;
0513: 
0514: #ifdef  __USE_GNU
0515: /* Return a malloc'd string containing the current directory name.
0516:    If the environment variable `PWD' is set, and its value is correct,
0517:    that value is used.  */
0518: extern char *get_current_dir_name (void) __THROW;
0519: #endif
0520: 
0521: #if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) \
0522:     || defined __USE_BSD
0523: /* Put the absolute pathname of the current working directory in BUF.
0524:    If successful, return BUF.  If not, put an error message in
0525:    BUF and return NULL.  BUF should be at least PATH_MAX bytes long.  */
0526: extern char *getwd (char *__buf)
0527:      __THROW __nonnull ((1)) __attribute_deprecated__ __wur;
0528: #endif
0529: 
0530: 
0531: /* Duplicate FD, returning a new file descriptor on the same file.  */
0532: extern int dup (int __fd) __THROW __wur;
0533: 
0534: /* Duplicate FD to FD2, closing FD2 and making it open on the same file.  */
0535: extern int dup2 (int __fd, int __fd2) __THROW;
0536: 
0537: #ifdef __USE_GNU
0538: /* Duplicate FD to FD2, closing FD2 and making it open on the same
0539:    file while setting flags according to FLAGS.  */
0540: extern int dup3 (int __fd, int __fd2, int __flags) __THROW;
0541: #endif
0542: 
0543: /* NULL-terminated array of "NAME=VALUE" environment variables.  */
0544: extern char **__environ;
0545: #ifdef __USE_GNU
0546: extern char **environ;
0547: #endif
0548: 
0549: 
0550: /* Replace the current process, executing PATH with arguments ARGV and
0551:    environment ENVP.  ARGV and ENVP are terminated by NULL pointers.  */
0552: extern int execve (__const char *__path, char *__const __argv[],
0553:                    char *__const __envp[]) __THROW __nonnull ((1, 2));
0554: 
0555: #ifdef __USE_XOPEN2K8
0556: /* Execute the file FD refers to, overlaying the running program image.
0557:    ARGV and ENVP are passed to the new program, as for `execve'.  */
0558: extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[])
0559:      __THROW __nonnull ((2));
0560: #endif
0561: 
0562: 
0563: /* Execute PATH with arguments ARGV and environment from `environ'.  */
0564: extern int execv (__const char *__path, char *__const __argv[])
0565:      __THROW __nonnull ((1, 2));
0566: 
0567: /* Execute PATH with all arguments after PATH until a NULL pointer,
0568:    and the argument after that for environment.  */
0569: extern int execle (__const char *__path, __const char *__arg, ...)
0570:      __THROW __nonnull ((1, 2));
0571: 
0572: /* Execute PATH with all arguments after PATH until
0573:    a NULL pointer and environment from `environ'.  */
0574: extern int execl (__const char *__path, __const char *__arg, ...)
0575:      __THROW __nonnull ((1, 2));
0576: 
0577: /* Execute FILE, searching in the `PATH' environment variable if it contains
0578:    no slashes, with arguments ARGV and environment from `environ'.  */
0579: extern int execvp (__const char *__file, char *__const __argv[])
0580:      __THROW __nonnull ((1, 2));
0581: 
0582: /* Execute FILE, searching in the `PATH' environment variable if
0583:    it contains no slashes, with all arguments after FILE until a
0584:    NULL pointer and environment from `environ'.  */
0585: extern int execlp (__const char *__file, __const char *__arg, ...)
0586:      __THROW __nonnull ((1, 2));
0587: 
0588: #ifdef __USE_GNU
0589: /* Execute FILE, searching in the `PATH' environment variable if it contains
0590:    no slashes, with arguments ARGV and environment from `environ'.  */
0591: extern int execvpe (__const char *__file, char *__const __argv[],
0592:                     char *__const __envp[])
0593:      __THROW __nonnull ((1, 2));
0594: #endif
0595: 
0596: 
0597: #if defined __USE_MISC || defined __USE_XOPEN
0598: /* Add INC to priority of the current process.  */
0599: extern int nice (int __inc) __THROW __wur;
0600: #endif
0601: 
0602: 
0603: /* Terminate program execution with the low-order 8 bits of STATUS.  */
0604: extern void _exit (int __status) __attribute__ ((__noreturn__));
0605: 
0606: 
0607: /* Get the `_PC_*' symbols for the NAME argument to `pathconf' and `fpathconf';
0608:    the `_SC_*' symbols for the NAME argument to `sysconf';
0609:    and the `_CS_*' symbols for the NAME argument to `confstr'.  */
0610: #include <bits/confname.h>
0611: 
0612: /* Get file-specific configuration information about PATH.  */
0613: extern long int pathconf (__const char *__path, int __name)
0614:      __THROW __nonnull ((1));
0615: 
0616: /* Get file-specific configuration about descriptor FD.  */
0617: extern long int fpathconf (int __fd, int __name) __THROW;
0618: 
0619: /* Get the value of the system variable NAME.  */
0620: extern long int sysconf (int __name) __THROW;
0621: 
0622: #ifdef  __USE_POSIX2
0623: /* Get the value of the string-valued system variable NAME.  */
0624: extern size_t confstr (int __name, char *__buf, size_t __len) __THROW;
0625: #endif
0626: 
0627: 
0628: /* Get the process ID of the calling process.  */
0629: extern __pid_t getpid (void) __THROW;
0630: 
0631: /* Get the process ID of the calling process's parent.  */
0632: extern __pid_t getppid (void) __THROW;
0633: 
0634: /* Get the process group ID of the calling process.
0635:    This function is different on old BSD. */
0636: #ifndef __FAVOR_BSD
0637: extern __pid_t getpgrp (void) __THROW;
0638: #else
0639: # ifdef __REDIRECT_NTH
0640: extern __pid_t __REDIRECT_NTH (getpgrp, (__pid_t __pid), __getpgid);
0641: # else
0642: #  define getpgrp __getpgid
0643: # endif
0644: #endif
0645: 
0646: /* Get the process group ID of process PID.  */
0647: extern __pid_t __getpgid (__pid_t __pid) __THROW;
0648: #if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
0649: extern __pid_t getpgid (__pid_t __pid) __THROW;
0650: #endif
0651: 
0652: 
0653: /* Set the process group ID of the process matching PID to PGID.
0654:    If PID is zero, the current process's process group ID is set.
0655:    If PGID is zero, the process ID of the process is used.  */
0656: extern int setpgid (__pid_t __pid, __pid_t __pgid) __THROW;
0657: 
0658: #if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
0659: /* Both System V and BSD have `setpgrp' functions, but with different
0660:    calling conventions.  The BSD function is the same as POSIX.1 `setpgid'
0661:    (above).  The System V function takes no arguments and puts the calling
0662:    process in its on group like `setpgid (0, 0)'.
0663: 
0664:    New programs should always use `setpgid' instead.
0665: 
0666:    The default in GNU is to provide the System V function.  The BSD
0667:    function is available under -D_BSD_SOURCE.  */
0668: 
0669: # ifndef __FAVOR_BSD
0670: 
0671: /* Set the process group ID of the calling process to its own PID.
0672:    This is exactly the same as `setpgid (0, 0)'.  */
0673: extern int setpgrp (void) __THROW;
0674: 
0675: # else
0676: 
0677: /* Another name for `setpgid' (above).  */
0678: #  ifdef __REDIRECT_NTH
0679: extern int __REDIRECT_NTH (setpgrp, (__pid_t __pid, __pid_t __pgrp), setpgid);
0680: #  else
0681: #   define setpgrp setpgid
0682: #  endif
0683: 
0684: # endif /* Favor BSD.  */
0685: #endif  /* Use SVID or BSD.  */
0686: 
0687: /* Create a new session with the calling process as its leader.
0688:    The process group IDs of the session and the calling process
0689:    are set to the process ID of the calling process, which is returned.  */
0690: extern __pid_t setsid (void) __THROW;
0691: 
0692: #if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
0693: /* Return the session ID of the given process.  */
0694: extern __pid_t getsid (__pid_t __pid) __THROW;
0695: #endif
0696: 
0697: /* Get the real user ID of the calling process.  */
0698: extern __uid_t getuid (void) __THROW;
0699: 
0700: /* Get the effective user ID of the calling process.  */
0701: extern __uid_t geteuid (void) __THROW;
0702: 
0703: /* Get the real group ID of the calling process.  */
0704: extern __gid_t getgid (void) __THROW;
0705: 
0706: /* Get the effective group ID of the calling process.  */
0707: extern __gid_t getegid (void) __THROW;
0708: 
0709: /* If SIZE is zero, return the number of supplementary groups
0710:    the calling process is in.  Otherwise, fill in the group IDs
0711:    of its supplementary groups in LIST and return the number written.  */
0712: extern int getgroups (int __size, __gid_t __list[]) __THROW __wur;
0713: 
0714: #ifdef  __USE_GNU
0715: /* Return nonzero iff the calling process is in group GID.  */
0716: extern int group_member (__gid_t __gid) __THROW;
0717: #endif
0718: 
0719: /* Set the user ID of the calling process to UID.
0720:    If the calling process is the super-user, set the real
0721:    and effective user IDs, and the saved set-user-ID to UID;
0722:    if not, the effective user ID is set to UID.  */
0723: extern int setuid (__uid_t __uid) __THROW;
0724: 
0725: #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
0726: /* Set the real user ID of the calling process to RUID,
0727:    and the effective user ID of the calling process to EUID.  */
0728: extern int setreuid (__uid_t __ruid, __uid_t __euid) __THROW;
0729: #endif
0730: 
0731: #if defined __USE_BSD || defined __USE_XOPEN2K
0732: /* Set the effective user ID of the calling process to UID.  */
0733: extern int seteuid (__uid_t __uid) __THROW;
0734: #endif /* Use BSD.  */
0735: 
0736: /* Set the group ID of the calling process to GID.
0737:    If the calling process is the super-user, set the real
0738:    and effective group IDs, and the saved set-group-ID to GID;
0739:    if not, the effective group ID is set to GID.  */
0740: extern int setgid (__gid_t __gid) __THROW;
0741: 
0742: #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
0743: /* Set the real group ID of the calling process to RGID,
0744:    and the effective group ID of the calling process to EGID.  */
0745: extern int setregid (__gid_t __rgid, __gid_t __egid) __THROW;
0746: #endif
0747: 
0748: #if defined __USE_BSD || defined __USE_XOPEN2K
0749: /* Set the effective group ID of the calling process to GID.  */
0750: extern int setegid (__gid_t __gid) __THROW;
0751: #endif /* Use BSD.  */
0752: 
0753: #ifdef __USE_GNU
0754: /* Fetch the real user ID, effective user ID, and saved-set user ID,
0755:    of the calling process.  */
0756: extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid)
0757:      __THROW;
0758: 
0759: /* Fetch the real group ID, effective group ID, and saved-set group ID,
0760:    of the calling process.  */
0761: extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid)
0762:      __THROW;
0763: 
0764: /* Set the real user ID, effective user ID, and saved-set user ID,
0765:    of the calling process to RUID, EUID, and SUID, respectively.  */
0766: extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid)
0767:      __THROW;
0768: 
0769: /* Set the real group ID, effective group ID, and saved-set group ID,
0770:    of the calling process to RGID, EGID, and SGID, respectively.  */
0771: extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
0772:      __THROW;
0773: #endif
0774: 
0775: 
0776: /* Clone the calling process, creating an exact copy.
0777:    Return -1 for errors, 0 to the new process,
0778:    and the process ID of the new process to the old process.  */
0779: extern __pid_t fork (void) __THROWNL;
0780: 
0781: #if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) \
0782:     || defined __USE_BSD
0783: /* Clone the calling process, but without copying the whole address space.
0784:    The calling process is suspended until the new process exits or is
0785:    replaced by a call to `execve'.  Return -1 for errors, 0 to the new process,
0786:    and the process ID of the new process to the old process.  */
0787: extern __pid_t vfork (void) __THROW;
0788: #endif /* Use BSD or XPG < 7. */
0789: 
0790: 
0791: /* Return the pathname of the terminal FD is open on, or NULL on errors.
0792:    The returned storage is good only until the next call to this function.  */
0793: extern char *ttyname (int __fd) __THROW;
0794: 
0795: /* Store at most BUFLEN characters of the pathname of the terminal FD is
0796:    open on in BUF.  Return 0 on success, otherwise an error number.  */
0797: extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
0798:      __THROW __nonnull ((2)) __wur;
0799: 
0800: /* Return 1 if FD is a valid descriptor associated
0801:    with a terminal, zero if not.  */
0802: extern int isatty (int __fd) __THROW;
0803: 
0804: #if defined __USE_BSD \
0805:     || (defined __USE_XOPEN_EXTENDED && !defined __USE_UNIX98)
0806: /* Return the index into the active-logins file (utmp) for
0807:    the controlling terminal.  */
0808: extern int ttyslot (void) __THROW;
0809: #endif
0810: 
0811: 
0812: /* Make a link to FROM named TO.  */
0813: extern int link (__const char *__from, __const char *__to)
0814:      __THROW __nonnull ((1, 2)) __wur;
0815: 
0816: #ifdef __USE_ATFILE
0817: /* Like link but relative paths in TO and FROM are interpreted relative
0818:    to FROMFD and TOFD respectively.  */
0819: extern int linkat (int __fromfd, __const char *__from, int __tofd,
0820:                    __const char *__to, int __flags)
0821:      __THROW __nonnull ((2, 4)) __wur;
0822: #endif
0823: 
0824: #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
0825: /* Make a symbolic link to FROM named TO.  */
0826: extern int symlink (__const char *__from, __const char *__to)
0827:      __THROW __nonnull ((1, 2)) __wur;
0828: 
0829: /* Read the contents of the symbolic link PATH into no more than
0830:    LEN bytes of BUF.  The contents are not null-terminated.
0831:    Returns the number of characters read, or -1 for errors.  */
0832: extern ssize_t readlink (__const char *__restrict __path,
0833:                          char *__restrict __buf, size_t __len)
0834:      __THROW __nonnull ((1, 2)) __wur;
0835: #endif /* Use BSD.  */
0836: 
0837: #ifdef __USE_ATFILE
0838: /* Like symlink but a relative path in TO is interpreted relative to TOFD.  */
0839: extern int symlinkat (__const char *__from, int __tofd,
0840:                       __const char *__to) __THROW __nonnull ((1, 3)) __wur;
0841: 
0842: /* Like readlink but a relative PATH is interpreted relative to FD.  */
0843: extern ssize_t readlinkat (int __fd, __const char *__restrict __path,
0844:                            char *__restrict __buf, size_t __len)
0845:      __THROW __nonnull ((2, 3)) __wur;
0846: #endif
0847: 
0848: /* Remove the link NAME.  */
0849: extern int unlink (__const char *__name) __THROW __nonnull ((1));
0850: 
0851: #ifdef __USE_ATFILE
0852: /* Remove the link NAME relative to FD.  */
0853: extern int unlinkat (int __fd, __const char *__name, int __flag)
0854:      __THROW __nonnull ((2));
0855: #endif
0856: 
0857: /* Remove the directory PATH.  */
0858: extern int rmdir (__const char *__path) __THROW __nonnull ((1));
0859: 
0860: 
0861: /* Return the foreground process group ID of FD.  */
0862: extern __pid_t tcgetpgrp (int __fd) __THROW;
0863: 
0864: /* Set the foreground process group ID of FD set PGRP_ID.  */
0865: extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __THROW;
0866: 
0867: 
0868: /* Return the login name of the user.
0869: 
0870:    This function is a possible cancellation point and therefore not
0871:    marked with __THROW.  */
0872: extern char *getlogin (void);
0873: #if defined __USE_REENTRANT || defined __USE_POSIX199506
0874: /* Return at most NAME_LEN characters of the login name of the user in NAME.
0875:    If it cannot be determined or some other error occurred, return the error
0876:    code.  Otherwise return 0.
0877: 
0878:    This function is a possible cancellation point and therefore not
0879:    marked with __THROW.  */
0880: extern int getlogin_r (char *__name, size_t __name_len) __nonnull ((1));
0881: #endif
0882: 
0883: #ifdef  __USE_BSD
0884: /* Set the login name returned by `getlogin'.  */
0885: extern int setlogin (__const char *__name) __THROW __nonnull ((1));
0886: #endif
0887: 
0888: 
0889: #ifdef  __USE_POSIX2
0890: /* Get definitions and prototypes for functions to process the
0891:    arguments in ARGV (ARGC of them, minus the program name) for
0892:    options given in OPTS.  */
0893: # define __need_getopt
0894: # include <getopt.h>
0895: #endif
0896: 
0897: 
0898: #if defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K
0899: /* Put the name of the current host in no more than LEN bytes of NAME.
0900:    The result is null-terminated if LEN is large enough for the full
0901:    name and the terminator.  */
0902: extern int gethostname (char *__name, size_t __len) __THROW __nonnull ((1));
0903: #endif
0904: 
0905: 
0906: #if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_UNIX98)
0907: /* Set the name of the current host to NAME, which is LEN bytes long.
0908:    This call is restricted to the super-user.  */
0909: extern int sethostname (__const char *__name, size_t __len)
0910:      __THROW __nonnull ((1)) __wur;
0911: 
0912: /* Set the current machine's Internet number to ID.
0913:    This call is restricted to the super-user.  */
0914: extern int sethostid (long int __id) __THROW __wur;
0915: 
0916: 
0917: /* Get and set the NIS (aka YP) domain name, if any.
0918:    Called just like `gethostname' and `sethostname'.
0919:    The NIS domain name is usually the empty string when not using NIS.  */
0920: extern int getdomainname (char *__name, size_t __len)
0921:      __THROW __nonnull ((1)) __wur;
0922: extern int setdomainname (__const char *__name, size_t __len)
0923:      __THROW __nonnull ((1)) __wur;
0924: 
0925: 
0926: /* Revoke access permissions to all processes currently communicating
0927:    with the control terminal, and then send a SIGHUP signal to the process
0928:    group of the control terminal.  */
0929: extern int vhangup (void) __THROW;
0930: 
0931: /* Revoke the access of all descriptors currently open on FILE.  */
0932: extern int revoke (__const char *__file) __THROW __nonnull ((1)) __wur;
0933: 
0934: 
0935: /* Enable statistical profiling, writing samples of the PC into at most
0936:    SIZE bytes of SAMPLE_BUFFER; every processor clock tick while profiling
0937:    is enabled, the system examines the user PC and increments
0938:    SAMPLE_BUFFER[((PC - OFFSET) / 2) * SCALE / 65536].  If SCALE is zero,
0939:    disable profiling.  Returns zero on success, -1 on error.  */
0940: extern int profil (unsigned short int *__sample_buffer, size_t __size,
0941:                    size_t __offset, unsigned int __scale)
0942:      __THROW __nonnull ((1));
0943: 
0944: 
0945: /* Turn accounting on if NAME is an existing file.  The system will then write
0946:    a record for each process as it terminates, to this file.  If NAME is NULL,
0947:    turn accounting off.  This call is restricted to the super-user.  */
0948: extern int acct (__const char *__name) __THROW;
0949: 
0950: 
0951: /* Successive calls return the shells listed in `/etc/shells'.  */
0952: extern char *getusershell (void) __THROW;
0953: extern void endusershell (void) __THROW; /* Discard cached info.  */
0954: extern void setusershell (void) __THROW; /* Rewind and re-read the file.  */
0955: 
0956: 
0957: /* Put the program in the background, and dissociate from the controlling
0958:    terminal.  If NOCHDIR is zero, do `chdir ("/")'.  If NOCLOSE is zero,
0959:    redirects stdin, stdout, and stderr to /dev/null.  */
0960: extern int daemon (int __nochdir, int __noclose) __THROW __wur;
0961: #endif /* Use BSD || X/Open.  */
0962: 
0963: 
0964: #if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
0965: /* Make PATH be the root directory (the starting point for absolute paths).
0966:    This call is restricted to the super-user.  */
0967: extern int chroot (__const char *__path) __THROW __nonnull ((1)) __wur;
0968: 
0969: /* Prompt with PROMPT and read a string from the terminal without echoing.
0970:    Uses /dev/tty if possible; otherwise stderr and stdin.  */
0971: extern char *getpass (__const char *__prompt) __nonnull ((1));
0972: #endif /* Use BSD || X/Open.  */
0973: 
0974: 
0975: #if defined __USE_BSD || defined __USE_XOPEN || defined __USE_XOPEN2K
0976: /* Make all changes done to FD actually appear on disk.
0977: 
0978:    This function is a cancellation point and therefore not marked with
0979:    __THROW.  */
0980: extern int fsync (int __fd);
0981: #endif /* Use BSD || X/Open || Unix98.  */
0982: 
0983: 
0984: #ifdef __USE_GNU
0985: /* Make all changes done to all files on the file system associated
0986:    with FD actually appear on disk.  */
0987: extern int syncfs (int __fd) __THROW;
0988: #endif
0989: 
0990: 
0991: #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
0992: 
0993: /* Return identifier for the current host.  */
0994: extern long int gethostid (void);
0995: 
0996: /* Make all changes done to all files actually appear on disk.  */
0997: extern void sync (void) __THROW;
0998: 
0999: 
1000: # if defined __USE_BSD || !defined __USE_XOPEN2K
1001: /* Return the number of bytes in a page.  This is the system's page size,
1002:    which is not necessarily the same as the hardware page size.  */
1003: extern int getpagesize (void)  __THROW __attribute__ ((__const__));
1004: 
1005: 
1006: /* Return the maximum number of file descriptors
1007:    the current process could possibly have.  */
1008: extern int getdtablesize (void) __THROW;
1009: # endif
1010: 
1011: #endif /* Use BSD || X/Open Unix.  */
1012: 
1013: 
1014: #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
1015: 
1016: /* Truncate FILE to LENGTH bytes.  */
1017: # ifndef __USE_FILE_OFFSET64
1018: extern int truncate (__const char *__file, __off_t __length)
1019:      __THROW __nonnull ((1)) __wur;
1020: # else
1021: #  ifdef __REDIRECT_NTH
1022: extern int __REDIRECT_NTH (truncate,
1023:                            (__const char *__file, __off64_t __length),
1024:                            truncate64) __nonnull ((1)) __wur;
1025: #  else
1026: #   define truncate truncate64
1027: #  endif
1028: # endif
1029: # ifdef __USE_LARGEFILE64
1030: extern int truncate64 (__const char *__file, __off64_t __length)
1031:      __THROW __nonnull ((1)) __wur;
1032: # endif
1033: 
1034: #endif /* Use BSD || X/Open Unix || POSIX 2008.  */
1035: 
1036: #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
1037: 
1038: /* Truncate the file FD is open on to LENGTH bytes.  */
1039: # ifndef __USE_FILE_OFFSET64
1040: extern int ftruncate (int __fd, __off_t __length) __THROW __wur;
1041: # else
1042: #  ifdef __REDIRECT_NTH
1043: extern int __REDIRECT_NTH (ftruncate, (int __fd, __off64_t __length),
1044:                            ftruncate64) __wur;
1045: #  else
1046: #   define ftruncate ftruncate64
1047: #  endif
1048: # endif
1049: # ifdef __USE_LARGEFILE64
1050: extern int ftruncate64 (int __fd, __off64_t __length) __THROW __wur;
1051: # endif
1052: 
1053: #endif /* Use BSD || X/Open Unix || POSIX 2003.  */
1054: 
1055: 
1056: #if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K) \
1057:     || defined __USE_MISC
1058: 
1059: /* Set the end of accessible data space (aka "the break") to ADDR.
1060:    Returns zero on success and -1 for errors (with errno set).  */
1061: extern int brk (void *__addr) __THROW __wur;
1062: 
1063: /* Increase or decrease the end of accessible data space by DELTA bytes.
1064:    If successful, returns the address the previous end of data space
1065:    (i.e. the beginning of the new space, if DELTA > 0);
1066:    returns (void *) -1 for errors (with errno set).  */
1067: extern void *sbrk (intptr_t __delta) __THROW;
1068: #endif
1069: 
1070: 
1071: #ifdef __USE_MISC
1072: /* Invoke `system call' number SYSNO, passing it the remaining arguments.
1073:    This is completely system-dependent, and not often useful.
1074: 
1075:    In Unix, `syscall' sets `errno' for all errors and most calls return -1
1076:    for errors; in many systems you cannot pass arguments or get return
1077:    values for all system calls (`pipe', `fork', and `getppid' typically
1078:    among them).
1079: 
1080:    In Mach, all system calls take normal arguments and always return an
1081:    error code (zero for success).  */
1082: extern long int syscall (long int __sysno, ...) __THROW;
1083: 
1084: #endif  /* Use misc.  */
1085: 
1086: 
1087: #if (defined __USE_MISC || defined __USE_XOPEN_EXTENDED) && !defined F_LOCK
1088: /* NOTE: These declarations also appear in <fcntl.h>; be sure to keep both
1089:    files consistent.  Some systems have them there and some here, and some
1090:    software depends on the macros being defined without including both.  */
1091: 
1092: /* `lockf' is a simpler interface to the locking facilities of `fcntl'.
1093:    LEN is always relative to the current file position.
1094:    The CMD argument is one of the following.
1095: 
1096:    This function is a cancellation point and therefore not marked with
1097:    __THROW.  */
1098: 
1099: # define F_ULOCK 0      /* Unlock a previously locked region.  */
1100: # define F_LOCK  1      /* Lock a region for exclusive use.  */
1101: # define F_TLOCK 2      /* Test and lock a region for exclusive use.  */
1102: # define F_TEST  3      /* Test a region for other processes locks.  */
1103: 
1104: # ifndef __USE_FILE_OFFSET64
1105: extern int lockf (int __fd, int __cmd, __off_t __len) __wur;
1106: # else
1107: #  ifdef __REDIRECT
1108: extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len),
1109:                        lockf64) __wur;
1110: #  else
1111: #   define lockf lockf64
1112: #  endif
1113: # endif
1114: # ifdef __USE_LARGEFILE64
1115: extern int lockf64 (int __fd, int __cmd, __off64_t __len) __wur;
1116: # endif
1117: #endif /* Use misc and F_LOCK not already defined.  */
1118: 
1119: 
1120: #ifdef __USE_GNU
1121: 
1122: /* Evaluate EXPRESSION, and repeat as long as it returns -1 with `errno'
1123:    set to EINTR.  */
1124: 
1125: # define TEMP_FAILURE_RETRY(expression) \
1126:   (__extension__                                                              \
1127:     ({ long int __result;                                                     \
1128:        do __result = (long int) (expression);                                 \
1129:        while (__result == -1L && errno == EINTR);                             \
1130:        __result; }))
1131: #endif
1132: 
1133: #if defined __USE_POSIX199309 || defined __USE_UNIX98
1134: /* Synchronize at least the data part of a file with the underlying
1135:    media.  */
1136: extern int fdatasync (int __fildes);
1137: #endif /* Use POSIX199309 */
1138: 
1139: 
1140: /* XPG4.2 specifies that prototypes for the encryption functions must
1141:    be defined here.  */
1142: #ifdef  __USE_XOPEN
1143: /* Encrypt at most 8 characters from KEY using salt to perturb DES.  */
1144: extern char *crypt (__const char *__key, __const char *__salt)
1145:      __THROW __nonnull ((1, 2));
1146: 
1147: /* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt
1148:    block in place.  */
1149: extern void encrypt (char *__libc_block, int __edflag) __THROW __nonnull ((1));
1150: 
1151: 
1152: /* Swab pairs bytes in the first N bytes of the area pointed to by
1153:    FROM and copy the result to TO.  The value of TO must not be in the
1154:    range [FROM - N + 1, FROM - 1].  If N is odd the first byte in FROM
1155:    is without partner.  */
1156: extern void swab (__const void *__restrict __from, void *__restrict __to,
1157:                   ssize_t __n) __THROW __nonnull ((1, 2));
1158: #endif
1159: 
1160: 
1161: /* The Single Unix specification demands this prototype to be here.
1162:    It is also found in <stdio.h>.  */
1163: #if defined __USE_XOPEN || defined __USE_XOPEN2K8
1164: /* Return the name of the controlling terminal.  */
1165: extern char *ctermid (char *__s) __THROW;
1166: #endif
1167: 
1168: 
1169: /* Define some macros helping to catch buffer overflows.  */
1170: #if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
1171: # include <bits/unistd.h>
1172: #endif
1173: 
1174: __END_DECLS
1175: 
1176: #endif /* unistd.h  */
1177: 


for client 3.143.0.157
© Andrew Scott 2006 - 2024,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/