unistd.h revision 179947
11553Srgrimes/*- 21553Srgrimes * Copyright (c) 1991, 1993, 1994 31553Srgrimes * The Regents of the University of California. All rights reserved. 41553Srgrimes * 51553Srgrimes * Redistribution and use in source and binary forms, with or without 61553Srgrimes * modification, are permitted provided that the following conditions 71553Srgrimes * are met: 81553Srgrimes * 1. Redistributions of source code must retain the above copyright 91553Srgrimes * notice, this list of conditions and the following disclaimer. 101553Srgrimes * 2. Redistributions in binary form must reproduce the above copyright 111553Srgrimes * notice, this list of conditions and the following disclaimer in the 121553Srgrimes * documentation and/or other materials provided with the distribution. 131553Srgrimes * 3. All advertising materials mentioning features or use of this software 141553Srgrimes * must display the following acknowledgement: 151553Srgrimes * This product includes software developed by the University of 161553Srgrimes * California, Berkeley and its contributors. 171553Srgrimes * 4. Neither the name of the University nor the names of its contributors 181553Srgrimes * may be used to endorse or promote products derived from this software 191553Srgrimes * without specific prior written permission. 201553Srgrimes * 211553Srgrimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 221553Srgrimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 231553Srgrimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 241553Srgrimes * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 251553Srgrimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 261553Srgrimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 271553Srgrimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 281553Srgrimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 291553Srgrimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 301553Srgrimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3129451Scharnier * SUCH DAMAGE. 321553Srgrimes * 331553Srgrimes * @(#)unistd.h 8.12 (Berkeley) 4/27/95 341553Srgrimes * $FreeBSD: head/include/unistd.h 179947 2008-06-23 05:22:06Z ed $ 351553Srgrimes */ 361553Srgrimes 3729451Scharnier#ifndef _UNISTD_H_ 381553Srgrimes#define _UNISTD_H_ 3929451Scharnier 4029451Scharnier#include <sys/cdefs.h> 4150479Speter#include <sys/types.h> /* XXX adds too much pollution. */ 421553Srgrimes#include <sys/unistd.h> 431553Srgrimes#include <sys/_null.h> 441553Srgrimes#include <sys/_types.h> 451553Srgrimes 46169507Swkoszek#ifndef _GID_T_DECLARED 471553Srgrimestypedef __gid_t gid_t; 4813400Speter#define _GID_T_DECLARED 4952653Smarcel#endif 50169507Swkoszek 51169507Swkoszek#ifndef _OFF_T_DECLARED 521553Srgrimestypedef __off_t off_t; 5313400Speter#define _OFF_T_DECLARED 5429451Scharnier#endif 55169512Swkoszek 5613400Speter#ifndef _PID_T_DECLARED 5729451Scharniertypedef __pid_t pid_t; 5871784Speter#define _PID_T_DECLARED 5916073Sphk#endif 601553Srgrimes 61148916Sobrien#ifndef _SIZE_T_DECLARED 621553Srgrimestypedef __size_t size_t; 636631Sjkh#define _SIZE_T_DECLARED 646631Sjkh#endif 656631Sjkh 666631Sjkh#ifndef _SSIZE_T_DECLARED 676631Sjkhtypedef __ssize_t ssize_t; 686631Sjkh#define _SSIZE_T_DECLARED 696631Sjkh#endif 706631Sjkh 7179013Simp#ifndef _UID_T_DECLARED 7252653Smarceltypedef __uid_t uid_t; 7345744Speter#define _UID_T_DECLARED 7452653Smarcel#endif 7552653Smarcel 7652653Smarcel#ifndef _USECONDS_T_DECLARED 7745744Spetertypedef __useconds_t useconds_t; 7845744Speter#define _USECONDS_T_DECLARED 79151744Sjhb#endif 80169507Swkoszek 811553Srgrimes#define STDIN_FILENO 0 /* standard input file descriptor */ 82169507Swkoszek#define STDOUT_FILENO 1 /* standard output file descriptor */ 83169507Swkoszek#define STDERR_FILENO 2 /* standard error file descriptor */ 84169507Swkoszek 85169507Swkoszek#if __XSI_VISIBLE || __POSIX_VISIBLE >= 200112 86169507Swkoszek#define F_ULOCK 0 /* unlock locked section */ 87169507Swkoszek#define F_LOCK 1 /* lock a section for exclusive use */ 8861640Speter#define F_TLOCK 2 /* test and lock a section for exclusive use */ 8961640Speter#define F_TEST 3 /* test a section for locks by other procs */ 9061640Speter#endif 9171866Speter 92169507Swkoszek/* 93207260Simp * POSIX options and option groups we unconditionally do or don't 94235789Sbapt * implement. This list includes those options which are exclusively 9529451Scharnier * implemented (or not) in user mode. Please keep this list in 9671866Speter * alphabetical order. 9771866Speter * 9871866Speter * Anything which is defined as zero below **must** have an 9971866Speter * implementation for the corresponding sysconf() which is able to 10071866Speter * determine conclusively whether or not the feature is supported. 1011553Srgrimes * Anything which is defined as other than -1 below **must** have 1021553Srgrimes * complete headers, types, and function declarations as specified by 1031553Srgrimes * the POSIX standard; however, if the relevant sysconf() function 1041553Srgrimes * returns -1, the functions may be stubbed out. 10529451Scharnier */ 10661640Speter#define _POSIX_BARRIERS 200112L 1071553Srgrimes#define _POSIX_READER_WRITER_LOCKS 200112L 1081553Srgrimes#define _POSIX_REGEXP 1 1091553Srgrimes#define _POSIX_SHELL 1 11052653Smarcel#define _POSIX_SPAWN -1 1111553Srgrimes#define _POSIX_SPIN_LOCKS 200112L 112169507Swkoszek#define _POSIX_THREAD_ATTR_STACKADDR 200112L 113264325Sasomers#define _POSIX_THREAD_ATTR_STACKSIZE 200112L 114209969Snwhitehorn#define _POSIX_THREAD_CPUTIME 200112L 1151553Srgrimes#define _POSIX_THREAD_PRIO_INHERIT 200112L 116209969Snwhitehorn#define _POSIX_THREAD_PRIO_PROTECT 200112L 117169507Swkoszek#define _POSIX_THREAD_PRIORITY_SCHEDULING 200112L 118264325Sasomers#define _POSIX_THREAD_PROCESS_SHARED -1 119264325Sasomers#define _POSIX_THREAD_SAFE_FUNCTIONS -1 1201553Srgrimes#define _POSIX_THREAD_SPORADIC_SERVER -1 121169507Swkoszek#define _POSIX_THREADS 200112L 122169507Swkoszek#define _POSIX_TRACE -1 123169507Swkoszek#define _POSIX_TRACE_EVENT_FILTER -1 124264325Sasomers#define _POSIX_TRACE_INHERIT -1 125264325Sasomers#define _POSIX_TRACE_LOG -1 126264325Sasomers#define _POSIX2_C_BIND 200112L /* mandatory */ 127264325Sasomers#define _POSIX2_C_DEV -1 /* need c99 utility */ 128264325Sasomers#define _POSIX2_CHAR_TERM 1 129264325Sasomers#define _POSIX2_FORT_DEV -1 /* need fort77 utility */ 130264325Sasomers#define _POSIX2_FORT_RUN 200112L 131264325Sasomers#define _POSIX2_LOCALEDEF -1 132209969Snwhitehorn#define _POSIX2_PBS -1 133209969Snwhitehorn#define _POSIX2_PBS_ACCOUNTING -1 134209969Snwhitehorn#define _POSIX2_PBS_CHECKPOINT -1 13552653Smarcel#define _POSIX2_PBS_LOCATE -1 13652653Smarcel#define _POSIX2_PBS_MESSAGE -1 13769004Simp#define _POSIX2_PBS_TRACK -1 13852653Smarcel#define _POSIX2_SW_DEV -1 /* XXX ??? */ 139205880Sru#define _POSIX2_UPE 200112L 14052653Smarcel#define _V6_ILP32_OFF32 -1 1411553Srgrimes#define _V6_ILP32_OFFBIG 0 14245579Sgrog#define _V6_LP64_OFF64 0 1431553Srgrimes#define _V6_LPBIG_OFFBIG -1 1441553Srgrimes 1451553Srgrimes#if __XSI_VISIBLE 1461553Srgrimes#define _XOPEN_CRYPT -1 /* XXX ??? */ 147169507Swkoszek#define _XOPEN_ENH_I18N -1 /* mandatory in XSI */ 148169507Swkoszek#define _XOPEN_LEGACY -1 149169507Swkoszek#define _XOPEN_REALTIME -1 150169507Swkoszek#define _XOPEN_REALTIME_THREADS -1 151169507Swkoszek#define _XOPEN_UNIX -1 152169507Swkoszek#endif 1531553Srgrimes 1541553Srgrimes/* Define the POSIX.2 version we target for compliance. */ 15529451Scharnier#define _POSIX2_VERSION 199212L 1561553Srgrimes 1571553Srgrimes/* 1581553Srgrimes * POSIX-style system configuration variable accessors (for the 1591553Srgrimes * sysconf function). The kernel does not directly implement the 160169507Swkoszek * sysconf() interface; rather, a C library stub translates references 161169507Swkoszek * to sysconf() into calls to sysctl() using a giant switch statement. 162169507Swkoszek * Those that are marked `user' are implemented entirely in the C 163169507Swkoszek * library and never query the kernel. pathconf() is implemented 164169507Swkoszek * directly by the kernel so those are not defined here. 16529451Scharnier */ 16629451Scharnier#define _SC_ARG_MAX 1 1671553Srgrimes#define _SC_CHILD_MAX 2 168151744Sjhb#define _SC_CLK_TCK 3 169178085Simp#define _SC_NGROUPS_MAX 4 170178085Simp#define _SC_OPEN_MAX 5 171169647Simp#define _SC_JOB_CONTROL 6 172169647Simp#define _SC_SAVED_IDS 7 173169647Simp#define _SC_VERSION 8 174169647Simp#define _SC_BC_BASE_MAX 9 /* user */ 175169647Simp#define _SC_BC_DIM_MAX 10 /* user */ 176169647Simp#define _SC_BC_SCALE_MAX 11 /* user */ 177169647Simp#define _SC_BC_STRING_MAX 12 /* user */ 178169647Simp#define _SC_COLL_WEIGHTS_MAX 13 /* user */ 17952653Smarcel#define _SC_EXPR_NEST_MAX 14 /* user */ 18052653Smarcel#define _SC_LINE_MAX 15 /* user */ 18152653Smarcel#define _SC_RE_DUP_MAX 16 /* user */ 18252653Smarcel#define _SC_2_VERSION 17 /* user */ 18352653Smarcel#define _SC_2_C_BIND 18 /* user */ 18452653Smarcel#define _SC_2_C_DEV 19 /* user */ 18569004Simp#define _SC_2_CHAR_TERM 20 /* user */ 18669004Simp#define _SC_2_FORT_DEV 21 /* user */ 18752653Smarcel#define _SC_2_FORT_RUN 22 /* user */ 18852653Smarcel#define _SC_2_LOCALEDEF 23 /* user */ 189169507Swkoszek#define _SC_2_SW_DEV 24 /* user */ 190169507Swkoszek#define _SC_2_UPE 25 /* user */ 191169507Swkoszek#define _SC_STREAM_MAX 26 /* user */ 192169507Swkoszek#define _SC_TZNAME_MAX 27 /* user */ 193169507Swkoszek 194110895Sru#if __POSIX_VISIBLE >= 199309 195129073Scognet#define _SC_ASYNCHRONOUS_IO 28 196129073Scognet#define _SC_MAPPED_FILES 29 197163638Simp#define _SC_MEMLOCK 30 1981553Srgrimes#define _SC_MEMLOCK_RANGE 31 1991553Srgrimes#define _SC_MEMORY_PROTECTION 32 200153888Sru#define _SC_MESSAGE_PASSING 33 201153888Sru#define _SC_PRIORITIZED_IO 34 202153888Sru#define _SC_PRIORITY_SCHEDULING 35 203153888Sru#define _SC_REALTIME_SIGNALS 36 20472000Speter#define _SC_SEMAPHORES 37 20545775Speter#define _SC_FSYNC 38 2061553Srgrimes#define _SC_SHARED_MEMORY_OBJECTS 39 2071553Srgrimes#define _SC_SYNCHRONIZED_IO 40 208153888Sru#define _SC_TIMERS 41 209153888Sru#define _SC_AIO_LISTIO_MAX 42 210153888Sru#define _SC_AIO_MAX 43 211153888Sru#define _SC_AIO_PRIO_DELTA_MAX 44 212153888Sru#define _SC_DELAYTIMER_MAX 45 213153888Sru#define _SC_MQ_OPEN_MAX 46 214153888Sru#define _SC_PAGESIZE 47 215153888Sru#define _SC_RTSIG_MAX 48 216207260Simp#define _SC_SEM_NSEMS_MAX 49 217153888Sru#define _SC_SEM_VALUE_MAX 50 218209969Snwhitehorn#define _SC_SIGQUEUE_MAX 51 219209969Snwhitehorn#define _SC_TIMER_MAX 52 220209969Snwhitehorn#endif 221209969Snwhitehorn 222209969Snwhitehorn#if __POSIX_VISIBLE >= 200112 223209969Snwhitehorn#define _SC_2_PBS 59 /* user */ 224209969Snwhitehorn#define _SC_2_PBS_ACCOUNTING 60 /* user */ 225209969Snwhitehorn#define _SC_2_PBS_CHECKPOINT 61 /* user */ 226209969Snwhitehorn#define _SC_2_PBS_LOCATE 62 /* user */ 227209969Snwhitehorn#define _SC_2_PBS_MESSAGE 63 /* user */ 228209969Snwhitehorn#define _SC_2_PBS_TRACK 64 /* user */ 229209969Snwhitehorn#define _SC_ADVISORY_INFO 65 230209969Snwhitehorn#define _SC_BARRIERS 66 /* user */ 231169507Swkoszek#define _SC_CLOCK_SELECTION 67 23212772Speter#define _SC_CPUTIME 68 2331553Srgrimes#define _SC_FILE_LOCKING 69 234153888Sru#define _SC_GETGR_R_SIZE_MAX 70 /* user */ 235153888Sru#define _SC_GETPW_R_SIZE_MAX 71 /* user */ 2361553Srgrimes#define _SC_HOST_NAME_MAX 72 23771866Speter#define _SC_LOGIN_NAME_MAX 73 2388248Sjkh#define _SC_MONOTONIC_CLOCK 74 239154338Sflz#define _SC_MQ_PRIO_MAX 75 2401553Srgrimes#define _SC_READER_WRITER_LOCKS 76 /* user */ 2411553Srgrimes#define _SC_REGEXP 77 /* user */ 2421553Srgrimes#define _SC_SHELL 78 /* user */ 24352653Smarcel#define _SC_SPAWN 79 /* user */ 24452653Smarcel#define _SC_SPIN_LOCKS 80 /* user */ 24552653Smarcel#define _SC_SPORADIC_SERVER 81 24652653Smarcel#define _SC_THREAD_ATTR_STACKADDR 82 /* user */ 24752653Smarcel#define _SC_THREAD_ATTR_STACKSIZE 83 /* user */ 24829451Scharnier#define _SC_THREAD_CPUTIME 84 /* user */ 24961640Speter#define _SC_THREAD_DESTRUCTOR_ITERATIONS 85 /* user */ 25052653Smarcel#define _SC_THREAD_KEYS_MAX 86 /* user */ 251175163Semaste#define _SC_THREAD_PRIO_INHERIT 87 /* user */ 252175163Semaste#define _SC_THREAD_PRIO_PROTECT 88 /* user */ 253175163Semaste#define _SC_THREAD_PRIORITY_SCHEDULING 89 /* user */ 25452653Smarcel#define _SC_THREAD_PROCESS_SHARED 90 /* user */ 25570673Speter#define _SC_THREAD_SAFE_FUNCTIONS 91 /* user */ 256205880Sru#define _SC_THREAD_SPORADIC_SERVER 92 /* user */ 257175163Semaste#define _SC_THREAD_STACK_MIN 93 /* user */ 258175163Semaste#define _SC_THREAD_THREADS_MAX 94 /* user */ 259175163Semaste#define _SC_TIMEOUTS 95 /* user */ 260175163Semaste#define _SC_THREADS 96 /* user */ 261175163Semaste#define _SC_TRACE 97 /* user */ 262175163Semaste#define _SC_TRACE_EVENT_FILTER 98 /* user */ 263175163Semaste#define _SC_TRACE_INHERIT 99 /* user */ 264175163Semaste#define _SC_TRACE_LOG 100 /* user */ 265175163Semaste#define _SC_TTY_NAME_MAX 101 /* user */ 266175163Semaste#define _SC_TYPED_MEMORY_OBJECTS 102 267175163Semaste#define _SC_V6_ILP32_OFF32 103 /* user */ 268175163Semaste#define _SC_V6_ILP32_OFFBIG 104 /* user */ 269175163Semaste#define _SC_V6_LP64_OFF64 105 /* user */ 270175163Semaste#define _SC_V6_LPBIG_OFFBIG 106 /* user */ 271175163Semaste#define _SC_IPV6 118 27252653Smarcel#define _SC_RAW_SOCKETS 119 27352653Smarcel#define _SC_SYMLOOP_MAX 120 27452653Smarcel#endif 27561640Speter 27629451Scharnier#if __XSI_VISIBLE 277144352Simp#define _SC_ATEXIT_MAX 107 /* user */ 278209969Snwhitehorn#define _SC_IOV_MAX 56 279169507Swkoszek#define _SC_PAGE_SIZE _SC_PAGESIZE 280169507Swkoszek#define _SC_XOPEN_CRYPT 108 /* user */ 28129451Scharnier#define _SC_XOPEN_ENH_I18N 109 /* user */ 28229451Scharnier#define _SC_XOPEN_LEGACY 110 /* user */ 2831553Srgrimes#define _SC_XOPEN_REALTIME 111 2841553Srgrimes#define _SC_XOPEN_REALTIME_THREADS 112 2851553Srgrimes#define _SC_XOPEN_SHM 113 2861553Srgrimes#define _SC_XOPEN_STREAMS 114 2871553Srgrimes#define _SC_XOPEN_UNIX 115 2881553Srgrimes#define _SC_XOPEN_VERSION 116 2891553Srgrimes#define _SC_XOPEN_XCU_VERSION 117 /* user */ 29061640Speter#endif 2911553Srgrimes 2921553Srgrimes#if __BSD_VISIBLE 29361640Speter#define _SC_NPROCESSORS_CONF 57 29461640Speter#define _SC_NPROCESSORS_ONLN 58 2954571Sgibbs#endif 2961553Srgrimes 2974571Sgibbs/* Extensions found in Solaris and Linux. */ 2981553Srgrimes#define _SC_PHYS_PAGES 121 2991553Srgrimes 3001553Srgrimes/* Keys for the confstr(3) function. */ 3011553Srgrimes#if __POSIX_VISIBLE >= 199209 3021553Srgrimes#define _CS_PATH 1 /* default value of PATH */ 3034571Sgibbs#endif 3044571Sgibbs 3054571Sgibbs#if __POSIX_VISIBLE >= 200112 3064571Sgibbs#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS 2 30745775Speter#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS 3 3084571Sgibbs#define _CS_POSIX_V6_ILP32_OFF32_LIBS 4 3094571Sgibbs#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS 5 3104571Sgibbs#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS 6 3114571Sgibbs#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS 7 3124571Sgibbs#define _CS_POSIX_V6_LP64_OFF64_CFLAGS 8 3134571Sgibbs#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS 9 31445775Speter#define _CS_POSIX_V6_LP64_OFF64_LIBS 10 3151553Srgrimes#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS 11 3161553Srgrimes#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS 12 317276280Sian#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS 13 318276280Sian#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS 14 319276280Sian#endif 320276280Sian 321276280Sian__BEGIN_DECLS 3221553Srgrimes/* 1003.1-1990 */ 3231553Srgrimesvoid _exit(int) __dead2; 3241553Srgrimesint access(const char *, int); 3251553Srgrimesunsigned int alarm(unsigned int); 3261553Srgrimesint chdir(const char *); 3271553Srgrimesint chown(const char *, uid_t, gid_t); 3281553Srgrimesint close(int); 3291553Srgrimesint dup(int); 3301553Srgrimesint dup2(int, int); 3311553Srgrimesint eaccess(const char *, int); 3321553Srgrimesint execl(const char *, const char *, ...); 3331553Srgrimesint execle(const char *, const char *, ...); 3341553Srgrimesint execlp(const char *, const char *, ...); 3351553Srgrimesint execv(const char *, char * const *); 3361553Srgrimesint execve(const char *, char * const *, char * const *); 3371553Srgrimesint execvp(const char *, char * const *); 3381553Srgrimespid_t fork(void); 3391553Srgrimeslong fpathconf(int, int); 34061640Speterchar *getcwd(char *, size_t); 3411553Srgrimesgid_t getegid(void); 3421553Srgrimesuid_t geteuid(void); 34361640Spetergid_t getgid(void); 34461640Speterint getgroups(int, gid_t []); 3454571Sgibbschar *getlogin(void); 3461553Srgrimespid_t getpgrp(void); 3474571Sgibbspid_t getpid(void); 3481553Srgrimespid_t getppid(void); 3491553Srgrimesuid_t getuid(void); 3501553Srgrimesint isatty(int); 3511553Srgrimesint link(const char *, const char *); 3521553Srgrimes#ifndef _LSEEK_DECLARED 3534571Sgibbs#define _LSEEK_DECLARED 3544571Sgibbsoff_t lseek(int, off_t, int); 3554571Sgibbs#endif 3564571Sgibbslong pathconf(const char *, int); 35745775Speterint pause(void); 3584571Sgibbsint pipe(int *); 3594571Sgibbsssize_t read(int, void *, size_t); 3604571Sgibbsint rmdir(const char *); 3614571Sgibbsint setgid(gid_t); 3624571Sgibbsint setpgid(pid_t, pid_t); 3634571Sgibbsvoid setproctitle(const char *_fmt, ...) __printf0like(1, 2); 36445775Speterpid_t setsid(void); 3651553Srgrimesint setuid(uid_t); 3661553Srgrimesunsigned int sleep(unsigned int); 36761640Speterlong sysconf(int); 3681553Srgrimespid_t tcgetpgrp(int); 369248777Sjkimint tcsetpgrp(int, pid_t); 3701553Srgrimeschar *ttyname(int); 371248777Sjkimint ttyname_r(int, char *, size_t); 3721553Srgrimesint unlink(const char *); 373248777Sjkimssize_t write(int, const void *, size_t); 3741553Srgrimes 3751553Srgrimes/* 1003.2-1992 */ 3761553Srgrimes#if __POSIX_VISIBLE >= 199209 || __XSI_VISIBLE 3771553Srgrimessize_t confstr(int, char *, size_t); 3781553Srgrimes#ifndef _GETOPT_DECLARED 379248777Sjkim#define _GETOPT_DECLARED 380248777Sjkimint getopt(int, char * const [], const char *); 381248777Sjkim 382248777Sjkimextern char *optarg; /* getopt(3) external variables */ 383248777Sjkimextern int optind, opterr, optopt; 384248777Sjkim#endif /* _GETOPT_DECLARED */ 3851553Srgrimes#endif 386248777Sjkim 3871553Srgrimes/* ISO/IEC 9945-1: 1996 */ 3881553Srgrimes#if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE 3891553Srgrimesint fsync(int); 3901553Srgrimes 3911553Srgrimes/* 3921553Srgrimes * ftruncate() was in the POSIX Realtime Extension (it's used for shared 3931553Srgrimes * memory), but truncate() was not. 3941553Srgrimes */ 3951553Srgrimes#ifndef _FTRUNCATE_DECLARED 3961553Srgrimes#define _FTRUNCATE_DECLARED 3971553Srgrimesint ftruncate(int, off_t); 3981553Srgrimes#endif 3991553Srgrimes#endif 4001553Srgrimes 4011553Srgrimes#if __POSIX_VISIBLE >= 199506 4021553Srgrimesint getlogin_r(char *, int); 4031553Srgrimes#endif 4041553Srgrimes 4051553Srgrimes/* 1003.1-2001 */ 4061553Srgrimes#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE 4071553Srgrimesint fchown(int, uid_t, gid_t); 40872684Speterssize_t readlink(const char * __restrict, char * __restrict, size_t); 4091553Srgrimes#endif 41069004Simp#if __POSIX_VISIBLE >= 200112 4111553Srgrimesint gethostname(char *, size_t); 41269004Simpint setegid(gid_t); 41369004Simpint seteuid(uid_t); 41469004Simp#endif 41569004Simp 4161553Srgrimes/* 4171553Srgrimes * symlink() was originally in POSIX.1a, which was withdrawn after 41813400Speter * being overtaken by events (1003.1-2001). It was in XPG4.2, and of 419169507Swkoszek * course has been in BSD since 4.2. 420169507Swkoszek */ 421169507Swkoszek#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 402 || __BSD_VISIBLE 422169507Swkoszekint symlink(const char * __restrict, const char * __restrict); 42345744Speter#endif 424169507Swkoszek 425169507Swkoszek/* X/Open System Interfaces */ 426169507Swkoszek#if __XSI_VISIBLE 427169507Swkoszekchar *crypt(const char *, const char *); 428169507Swkoszek/* char *ctermid(char *); */ /* XXX ??? */ 429169507Swkoszekint encrypt(char *, int); 430169512Swkoszekint fchdir(int); 431169507Swkoszeklong gethostid(void); 432169507Swkoszekint getpgid(pid_t _pid); 433169507Swkoszekint getsid(pid_t _pid); 434169507Swkoszekchar *getwd(char *); /* LEGACY: obsoleted by getcwd() */ 435169507Swkoszekint lchown(const char *, uid_t, gid_t); 436169507Swkoszekint lockf(int, int, off_t); 437169507Swkoszekint nice(int); 438169507Swkoszekssize_t pread(int, void *, size_t, off_t); 439169507Swkoszekssize_t pwrite(int, const void *, size_t, off_t); 440169507Swkoszekint setpgrp(pid_t _pid, pid_t _pgrp); /* obsoleted by setpgid() */ 441169507Swkoszekint setregid(gid_t, gid_t); 442169507Swkoszekint setreuid(uid_t, uid_t); 443169507Swkoszek 444169507Swkoszek#ifndef _SWAB_DECLARED 445169507Swkoszek#define _SWAB_DECLARED 446169507Swkoszekvoid swab(const void * __restrict, void * __restrict, ssize_t); 447169512Swkoszek#endif /* _SWAB_DECLARED */ 448169512Swkoszek 449169512Swkoszekvoid sync(void); 450169512Swkoszekuseconds_t ualarm(useconds_t, useconds_t); 451169512Swkoszekint usleep(useconds_t); 452169512Swkoszekpid_t vfork(void); 453169512Swkoszek 454169512Swkoszek/* See comment at ftruncate() above. */ 455169512Swkoszek#ifndef _TRUNCATE_DECLARED 456169512Swkoszek#define _TRUNCATE_DECLARED 457169507Swkoszekint truncate(const char *, off_t); 458169507Swkoszek#endif 459169507Swkoszek#endif /* __XSI_VISIBLE */ 460169507Swkoszek 461169507Swkoszek#if __XSI_VISIBLE <= 500 || __BSD_VISIBLE 462169507Swkoszekint brk(const void *); 463169507Swkoszekint chroot(const char *); 464169507Swkoszekint getdtablesize(void); 465169507Swkoszekint getpagesize(void) __pure2; 466169507Swkoszekchar *getpass(const char *); 467169507Swkoszekvoid *sbrk(intptr_t); 468169507Swkoszek#endif 469169507Swkoszek 470169507Swkoszek#if __BSD_VISIBLE 471169507Swkoszekstruct timeval; /* select(2) */ 472169507Swkoszekint acct(const char *); 473169507Swkoszekint async_daemon(void); 474169507Swkoszekint check_utility_compat(const char *); 475169507Swkoszekconst char * 476169507Swkoszek crypt_get_format(void); 477169507Swkoszekint crypt_set_format(const char *); 478169507Swkoszekint des_cipher(const char *, char *, long, int); 479188280Swkoszekint des_setkey(const char *key); 480188280Swkoszekvoid endusershell(void); 481188280Swkoszekint exect(const char *, char * const *, char * const *); 482188280Swkoszekint execvP(const char *, const char *, char * const *); 483188280Swkoszekint feature_present(const char *); 484169507Swkoszekchar *fflagstostr(u_long); 485169507Swkoszekint getdomainname(char *, int); 486169507Swkoszekint getgrouplist(const char *, gid_t, gid_t *, int *); 487169507Swkoszekmode_t getmode(const void *, mode_t); 488169507Swkoszekint getpeereid(int, uid_t *, gid_t *); 489169507Swkoszekint getresgid(gid_t *, gid_t *, gid_t *); 490169507Swkoszekint getresuid(uid_t *, uid_t *, uid_t *); 491169507Swkoszekchar *getusershell(void); 492169507Swkoszekint initgroups(const char *, gid_t); 493169507Swkoszekint iruserok(unsigned long, int, const char *, const char *); 494169507Swkoszekint iruserok_sa(const void *, int, int, const char *, const char *); 495169507Swkoszekint issetugid(void); 496169507Swkoszekchar *mkdtemp(char *); 497169507Swkoszek#ifndef _MKNOD_DECLARED 498169507Swkoszekint mknod(const char *, mode_t, dev_t); 499169507Swkoszek#define _MKNOD_DECLARED 500169507Swkoszek#endif 501169507Swkoszek#ifndef _MKSTEMP_DECLARED 502169507Swkoszekint mkstemp(char *); 50361640Speter#define _MKSTEMP_DECLARED 50416239Sjkh#endif 505169507Swkoszekint mkstemps(char *, int); 506169507Swkoszek#ifndef _MKTEMP_DECLARED 50716239Sjkhchar *mktemp(char *); 508169507Swkoszek#define _MKTEMP_DECLARED 509169507Swkoszek#endif 510169507Swkoszekint nfssvc(int, void *); 511169507Swkoszekint profil(char *, size_t, vm_offset_t, int); 512169507Swkoszekint rcmd(char **, int, const char *, const char *, const char *, int *); 51352098Speterint rcmd_af(char **, int, const char *, 51429451Scharnier const char *, const char *, int *, int); 515169507Swkoszekint rcmdsh(char **, int, const char *, 516169507Swkoszek const char *, const char *, const char *); 517169507Swkoszekchar *re_comp(const char *); 518169507Swkoszekint re_exec(const char *); 519169507Swkoszekint reboot(int); 520169507Swkoszekint revoke(const char *); 521169507Swkoszekpid_t rfork(int); 522169507Swkoszekpid_t rfork_thread(int, void *, int (*)(void *), void *); 52316239Sjkhint rresvport(int *); 524169507Swkoszekint rresvport_af(int *, int); 525169507Swkoszekint ruserok(const char *, int, const char *, const char *); 526205880Sru#if __BSD_VISIBLE 527169507Swkoszek#ifndef _SELECT_DECLARED 528169507Swkoszek#define _SELECT_DECLARED 529169507Swkoszekint select(int, fd_set *, fd_set *, fd_set *, struct timeval *); 530169507Swkoszek#endif 531169507Swkoszek#endif 532169507Swkoszekint setdomainname(const char *, int); 533169507Swkoszekint setgroups(int, const gid_t *); 534169507Swkoszekvoid sethostid(long); 535169507Swkoszekint sethostname(const char *, int); 536169507Swkoszek#ifndef _SETKEY_DECLARED 537169507Swkoszekint setkey(const char *); 538169507Swkoszek#define _SETKEY_DECLARED 53916239Sjkh#endif 54020940Speterint setlogin(const char *); 541169507Swkoszekvoid *setmode(const char *); 54216239Sjkhint setresgid(gid_t, gid_t, gid_t); 54316239Sjkhint setresuid(uid_t, uid_t, uid_t); 54413400Speterint setrgid(gid_t); 54513400Speterint setruid(uid_t); 54613400Spetervoid setusershell(void); 54713400Speterint strtofflags(char **, u_long *, u_long *); 54813400Speterint swapon(const char *); 54913400Speterint swapoff(const char *); 55013400Speterint syscall(int, ...); 55113400Speteroff_t __syscall(quad_t, ...); 55213400Speterint ttyslot(void); 55313400Speterint undelete(const char *); 55413400Speterint unwhiteout(const char *); 55513400Spetervoid *valloc(size_t); /* obsoleted by malloc() */ 55613400Speter 55713400Speter#ifndef _OPTRESET_DECLARED 55813400Speter#define _OPTRESET_DECLARED 55913400Speterextern int optreset; /* getopt(3) external variable */ 56013400Speter#endif 56113400Speter#endif /* __BSD_VISIBLE */ 56213400Speter 56313400Speter#if __BSD_VISIBLE 56413400Speterint faccessat(int, const char *, int, int); 56513400Speterint fchmodat(int, const char *, mode_t, int); 56613400Speterint fchownat(int, const char *, uid_t, gid_t, int); 56713400Speterint fexecve(int, char *const [], char *const []); 56813400Speterint linkat(int, const char *, int, const char *, int); 56913400Speterssize_t readlinkat(int, const char * __restrict, char * __restrict, size_t); 57013400Speterint symlinkat(const char *, int, const char *); 57113400Speterint unlinkat(int, const char *, int); 57213400Speter#endif /* __BSD_VISIBLE */ 57313400Speter__END_DECLS 57413400Speter 57513400Speter#endif /* !_UNISTD_H_ */ 57613400Speter