1 /* $NetBSD: unistd.h,v 1.20 2002/06/30 09:45:40 bjh21 Exp $ */ 2 3 /* 4 * Copyright (c) 1989, 1993 5 * The Regents of the University of California. All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 3. All advertising materials mentioning features or use of this software 16 * must display the following acknowledgement: 17 * This product includes software developed by the University of 18 * California, Berkeley and its contributors. 19 * 4. Neither the name of the University nor the names of its contributors 20 * may be used to endorse or promote products derived from this software 21 * without specific prior written permission. 22 * 23 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 24 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 26 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 * 35 * @(#)unistd.h 8.2 (Berkeley) 1/7/94 36 */ 37 38 #ifndef _SYS_UNISTD_H_ 39 #define _SYS_UNISTD_H_ 40 41 #include <sys/featuretest.h> 42 43 /* compile-time symbolic constants */ 44 #define _POSIX_JOB_CONTROL /* implementation supports job control */ 45 46 /* 47 * According to POSIX 1003.1: 48 * "The saved set-user-ID capability allows a program to regain the 49 * effective user ID established at the last exec call." 50 * However, the setuid/setgid function as specified by POSIX 1003.1 does 51 * not allow changing the effective ID from the super-user without also 52 * changed the saved ID, so it is impossible to get super-user privileges 53 * back later. Instead we provide this feature independent of the current 54 * effective ID through the seteuid/setegid function. In addition, we do 55 * not use the saved ID as specified by POSIX 1003.1 in setuid/setgid, 56 * because this would make it impossible for a set-user-ID executable 57 * owned by a user other than the super-user to permanently revoke its 58 * extra privileges. 59 */ 60 #ifdef _NOT_AVAILABLE 61 #define _POSIX_SAVED_IDS /* saved set-user-ID and set-group-ID */ 62 #endif 63 64 #define _POSIX_VERSION 199009L 65 #define _POSIX2_VERSION 199212L 66 67 /* execution-time symbolic constants */ 68 /* chown requires appropriate privileges */ 69 #define _POSIX_CHOWN_RESTRICTED 1 70 /* too-long path components generate errors */ 71 #define _POSIX_NO_TRUNC 1 72 /* may disable terminal special characters */ 73 #define _POSIX_VDISABLE ((unsigned char)'\377') 74 /* file synchronization is available */ 75 #define _POSIX_FSYNC 1 76 /* synchronized I/O is available */ 77 #define _POSIX_SYNCHRONIZED_IO 1 78 /* memory mapped files */ 79 #define _POSIX_MAPPED_FILES 1 80 /* memory locking of whole address space */ 81 #define _POSIX_MEMLOCK 1 82 /* memory locking address ranges */ 83 #define _POSIX_MEMLOCK_RANGE 1 84 /* memory access protections */ 85 #define _POSIX_MEMORY_PROTECTION 1 86 /* monotonic clock */ 87 #define _POSIX_MONOTONIC_CLOCK 200112L 88 89 90 /* access function */ 91 #define F_OK 0 /* test for existence of file */ 92 #define X_OK 0x01 /* test for execute or search permission */ 93 #define W_OK 0x02 /* test for write permission */ 94 #define R_OK 0x04 /* test for read permission */ 95 96 /* whence values for lseek(2) */ 97 #define SEEK_SET 0 /* set file offset to offset */ 98 #define SEEK_CUR 1 /* set file offset to current plus offset */ 99 #define SEEK_END 2 /* set file offset to EOF plus offset */ 100 101 #if !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE) 102 /* whence values for lseek(2); renamed by POSIX 1003.1 */ 103 #define L_SET SEEK_SET 104 #define L_INCR SEEK_CUR 105 #define L_XTND SEEK_END 106 #endif 107 108 /* configurable pathname variables */ 109 #define _PC_LINK_MAX 1 110 #define _PC_MAX_CANON 2 111 #define _PC_MAX_INPUT 3 112 #define _PC_NAME_MAX 4 113 #define _PC_PATH_MAX 5 114 #define _PC_PIPE_BUF 6 115 #define _PC_CHOWN_RESTRICTED 7 116 #define _PC_NO_TRUNC 8 117 #define _PC_VDISABLE 9 118 #define _PC_SYNC_IO 10 119 #define _PC_FILESIZEBITS 11 120 121 /* configurable system variables */ 122 #define _SC_ARG_MAX 1 123 #define _SC_CHILD_MAX 2 124 #define _O_SC_CLK_TCK 3 /* Old version, always 100 */ 125 #define _SC_NGROUPS_MAX 4 126 #define _SC_OPEN_MAX 5 127 #define _SC_JOB_CONTROL 6 128 #define _SC_SAVED_IDS 7 129 #define _SC_VERSION 8 130 #define _SC_BC_BASE_MAX 9 131 #define _SC_BC_DIM_MAX 10 132 #define _SC_BC_SCALE_MAX 11 133 #define _SC_BC_STRING_MAX 12 134 #define _SC_COLL_WEIGHTS_MAX 13 135 #define _SC_EXPR_NEST_MAX 14 136 #define _SC_LINE_MAX 15 137 #define _SC_RE_DUP_MAX 16 138 #define _SC_2_VERSION 17 139 #define _SC_2_C_BIND 18 140 #define _SC_2_C_DEV 19 141 #define _SC_2_CHAR_TERM 20 142 #define _SC_2_FORT_DEV 21 143 #define _SC_2_FORT_RUN 22 144 #define _SC_2_LOCALEDEF 23 145 #define _SC_2_SW_DEV 24 146 #define _SC_2_UPE 25 147 #define _SC_STREAM_MAX 26 148 #define _SC_TZNAME_MAX 27 149 #define _SC_PAGESIZE 28 150 #define _SC_PAGE_SIZE _SC_PAGESIZE /* 1170 compatibility */ 151 #define _SC_FSYNC 29 152 #define _SC_XOPEN_SHM 30 153 #define _SC_SYNCHRONIZED_IO 31 154 #define _SC_IOV_MAX 32 155 #define _SC_MAPPED_FILES 33 156 #define _SC_MEMLOCK 34 157 #define _SC_MEMLOCK_RANGE 35 158 #define _SC_MEMORY_PROTECTION 36 159 #define _SC_LOGIN_NAME_MAX 37 160 #define _SC_MONOTONIC_CLOCK 38 161 #define _SC_CLK_TCK 39 /* New, variable version */ 162 163 /* configurable system strings */ 164 #define _CS_PATH 1 165 166 #endif /* !_SYS_UNISTD_H_ */ 167