File: /usr/include/sys/unistd.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       1: /*
       2:  * Copyright (c) 2000-2013 Apple Inc. All rights reserved.
       3:  *
       4:  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
       5:  * 
       6:  * This file contains Original Code and/or Modifications of Original Code
       7:  * as defined in and that are subject to the Apple Public Source License
       8:  * Version 2.0 (the 'License'). You may not use this file except in
       9:  * compliance with the License. The rights granted to you under the License
      10:  * may not be used to create, or enable the creation or redistribution of,
      11:  * unlawful or unlicensed copies of an Apple operating system, or to
      12:  * circumvent, violate, or enable the circumvention or violation of, any
      13:  * terms of an Apple operating system software license agreement.
      14:  * 
      15:  * Please obtain a copy of the License at
      16:  * http://www.opensource.apple.com/apsl/ and read it before using this file.
      17:  * 
      18:  * The Original Code and all software distributed under the License are
      19:  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
      20:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
      21:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
      22:  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
      23:  * Please see the License for the specific language governing rights and
      24:  * limitations under the License.
      25:  * 
      26:  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
      27:  */
      28: /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
      29: /*
      30:  * Copyright (c) 1989, 1993
      31:  *    The Regents of the University of California.  All rights reserved.
      32:  *
      33:  * Redistribution and use in source and binary forms, with or without
      34:  * modification, are permitted provided that the following conditions
      35:  * are met:
      36:  * 1. Redistributions of source code must retain the above copyright
      37:  *    notice, this list of conditions and the following disclaimer.
      38:  * 2. Redistributions in binary form must reproduce the above copyright
      39:  *    notice, this list of conditions and the following disclaimer in the
      40:  *    documentation and/or other materials provided with the distribution.
      41:  * 3. All advertising materials mentioning features or use of this software
      42:  *    must display the following acknowledgement:
      43:  *    This product includes software developed by the University of
      44:  *    California, Berkeley and its contributors.
      45:  * 4. Neither the name of the University nor the names of its contributors
      46:  *    may be used to endorse or promote products derived from this software
      47:  *    without specific prior written permission.
      48:  *
      49:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
      50:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      51:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      52:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
      53:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
      54:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
      55:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
      56:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
      57:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
      58:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
      59:  * SUCH DAMAGE.
      60:  *
      61:  *    @(#)unistd.h    8.2 (Berkeley) 1/7/94
      62:  */
      63: 
      64: #ifndef _SYS_UNISTD_H_
      65: #define    _SYS_UNISTD_H_
      66: 
      67: #include <sys/cdefs.h>
      68: 
      69: /*
      70:  * Although we have saved user/group IDs, we do not use them in setuid
      71:  * as described in POSIX 1003.1, because the feature does not work for
      72:  * root.  We use the saved IDs in seteuid/setegid, which are not currently
      73:  * part of the POSIX 1003.1 specification.
      74:  */
      75: #ifdef    _NOT_AVAILABLE
      76: #define    _POSIX_SAVED_IDS    /* saved set-user-ID and set-group-ID */
      77: #endif
      78: 
      79: #define    _POSIX_VERSION        200112L
      80: #define    _POSIX2_VERSION        200112L
      81: 
      82: /* execution-time symbolic constants */
      83:                 /* may disable terminal special characters */
      84: #include <sys/_types/_posix_vdisable.h>
      85: 
      86: #define _POSIX_THREAD_KEYS_MAX 128
      87: 
      88: /* access function */
      89: #define    F_OK        0    /* test for existence of file */
      90: #define    X_OK        (1<<0)    /* test for execute or search permission */
      91: #define    W_OK        (1<<1)    /* test for write permission */
      92: #define    R_OK        (1<<2)    /* test for read permission */
      93: 
      94: #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
      95: /*
      96:  * Extended access functions.
      97:  * Note that we depend on these matching the definitions in sys/kauth.h,
      98:  * but with the bits shifted left by 8.
      99:  */
     100: #define _READ_OK    (1<<9)    /* read file data / read directory */
     101: #define _WRITE_OK    (1<<10)    /* write file data / add file to directory */
     102: #define _EXECUTE_OK    (1<<11) /* execute file / search in directory*/
     103: #define _DELETE_OK    (1<<12)    /* delete file / delete directory */
     104: #define _APPEND_OK    (1<<13)    /* append to file / add subdirectory to directory */
     105: #define _RMFILE_OK    (1<<14)    /* - / remove file from directory */
     106: #define _RATTR_OK    (1<<15)    /* read basic attributes */
     107: #define _WATTR_OK    (1<<16)    /* write basic attributes */
     108: #define _REXT_OK    (1<<17)    /* read extended attributes */
     109: #define _WEXT_OK    (1<<18)    /* write extended attributes */
     110: #define _RPERM_OK    (1<<19)    /* read permissions */
     111: #define _WPERM_OK    (1<<20)    /* write permissions */
     112: #define _CHOWN_OK    (1<<21)    /* change ownership */
     113: 
     114: #define _ACCESS_EXTENDED_MASK (_READ_OK | _WRITE_OK | _EXECUTE_OK | \
     115:                 _DELETE_OK | _APPEND_OK | \
     116:                 _RMFILE_OK | _REXT_OK | \
     117:                 _WEXT_OK | _RATTR_OK | _WATTR_OK | _RPERM_OK | \
     118:                 _WPERM_OK | _CHOWN_OK)
     119: #endif
     120: 
     121: /* whence values for lseek(2) */
     122: #include <sys/_types/_seek_set.h>
     123: 
     124: #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
     125: /* whence values for lseek(2); renamed by POSIX 1003.1 */
     126: #define    L_SET        SEEK_SET
     127: #define    L_INCR        SEEK_CUR
     128: #define    L_XTND        SEEK_END
     129: #endif
     130: 
     131: #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
     132: struct accessx_descriptor {
     133:     unsigned int ad_name_offset;
     134:     int ad_flags;
     135:     int ad_pad[2];
     136: };
     137: #define ACCESSX_MAX_DESCRIPTORS    100
     138: #define ACCESSX_MAX_TABLESIZE    (16 * 1024)
     139: #endif
     140: 
     141: /* configurable pathname variables */
     142: #define    _PC_LINK_MAX         1
     143: #define    _PC_MAX_CANON         2
     144: #define    _PC_MAX_INPUT         3
     145: #define    _PC_NAME_MAX         4
     146: #define    _PC_PATH_MAX         5
     147: #define    _PC_PIPE_BUF         6
     148: #define    _PC_CHOWN_RESTRICTED     7
     149: #define    _PC_NO_TRUNC         8
     150: #define    _PC_VDISABLE         9
     151: 
     152: #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
     153: #define    _PC_NAME_CHARS_MAX     10
     154: #define    _PC_CASE_SENSITIVE         11
     155: #define    _PC_CASE_PRESERVING         12
     156: #define _PC_EXTENDED_SECURITY_NP        13
     157: #define _PC_AUTH_OPAQUE_NP      14
     158: #endif
     159: 
     160: #define    _PC_2_SYMLINKS        15    /* Symlink supported in directory */
     161: #define    _PC_ALLOC_SIZE_MIN    16    /* Minimum storage actually allocated */
     162: #define    _PC_ASYNC_IO        17    /* Async I/O [AIO] supported? */
     163: #define    _PC_FILESIZEBITS    18    /* # of bits to represent file size */
     164: #define    _PC_PRIO_IO        19    /* Priority I/O [PIO] supported? */
     165: #define    _PC_REC_INCR_XFER_SIZE    20    /* Recommended increment for next two */
     166: #define    _PC_REC_MAX_XFER_SIZE    21    /* Recommended max file transfer size */
     167: #define    _PC_REC_MIN_XFER_SIZE    22    /* Recommended min file transfer size */
     168: #define    _PC_REC_XFER_ALIGN    23    /* Recommended buffer alignment */
     169: #define    _PC_SYMLINK_MAX        24    /* Max # of bytes in symlink name */
     170: #define    _PC_SYNC_IO        25    /* Sync I/O [SIO] supported? */
     171: #define _PC_XATTR_SIZE_BITS     26    /* # of bits to represent maximum xattr size */
     172: 
     173: /* configurable system strings */
     174: #define    _CS_PATH         1
     175: 
     176: #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
     177: 
     178: #include <machine/_types.h>
     179: #include <sys/_types/_size_t.h>
     180: #include <_types/_uint64_t.h>
     181: #include <Availability.h>
     182: 
     183: __BEGIN_DECLS
     184: 
     185: int getattrlistbulk(int, void *, void *, size_t, uint64_t) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
     186: 
     187: __END_DECLS
     188: 
     189: #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
     190: 
     191: #if __DARWIN_C_LEVEL >= 200809L
     192: 
     193: #include <machine/_types.h>
     194: #include <sys/_types/_size_t.h>
     195: #include <sys/_types/_ssize_t.h>
     196: #include <sys/_types.h>
     197: #include <sys/_types/_uid_t.h>
     198: #include <sys/_types/_gid_t.h>
     199: #include <Availability.h>
     200: 
     201: __BEGIN_DECLS
     202: 
     203: int    faccessat(int, const char *, int, int) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
     204: int    fchownat(int, const char *, uid_t, gid_t, int)    __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
     205: int    linkat(int, const char *, int, const char *, int)    __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
     206: ssize_t readlinkat(int, const char *, char *, size_t)    __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
     207: int    symlinkat(const char *, int, const char *) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
     208: int    unlinkat(int, const char *, int) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
     209: int    getattrlistat(int, const char *, void *, void *, size_t, unsigned long) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
     210: 
     211: __END_DECLS
     212: 
     213: #endif /* __DARWIN_C_LEVEL >= 200809L */
     214: 
     215: #endif /* !_SYS_UNISTD_H_ */
     216: