unistd.h revision 183390
190075Sobrien/*-
2169689Skan * Copyright (c) 1991, 1993, 1994
3169689Skan *	The Regents of the University of California.  All rights reserved.
4169689Skan *
590075Sobrien * Redistribution and use in source and binary forms, with or without
690075Sobrien * modification, are permitted provided that the following conditions
7132718Skan * are met:
890075Sobrien * 1. Redistributions of source code must retain the above copyright
9132718Skan *    notice, this list of conditions and the following disclaimer.
10132718Skan * 2. Redistributions in binary form must reproduce the above copyright
11132718Skan *    notice, this list of conditions and the following disclaimer in the
12132718Skan *    documentation and/or other materials provided with the distribution.
1390075Sobrien * 3. All advertising materials mentioning features or use of this software
14132718Skan *    must display the following acknowledgement:
15132718Skan *	This product includes software developed by the University of
16132718Skan *	California, Berkeley and its contributors.
17132718Skan * 4. Neither the name of the University nor the names of its contributors
1890075Sobrien *    may be used to endorse or promote products derived from this software
19132718Skan *    without specific prior written permission.
20132718Skan *
21169689Skan * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22169689Skan * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2390075Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2490075Sobrien * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2590075Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26132718Skan * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27132718Skan * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2890075Sobrien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2990075Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
3090075Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3190075Sobrien * SUCH DAMAGE.
3290075Sobrien *
3390075Sobrien *	@(#)unistd.h	8.12 (Berkeley) 4/27/95
3490075Sobrien * $FreeBSD: head/include/unistd.h 183390 2008-09-26 19:23:22Z peter $
3590075Sobrien */
3690075Sobrien
3790075Sobrien#ifndef _UNISTD_H_
3890075Sobrien#define	_UNISTD_H_
3990075Sobrien
4090075Sobrien#include <sys/cdefs.h>
4190075Sobrien#include <sys/types.h>			/* XXX adds too much pollution. */
4290075Sobrien#include <sys/unistd.h>
4390075Sobrien#include <sys/_null.h>
4490075Sobrien#include <sys/_types.h>
4590075Sobrien
4690075Sobrien#ifndef _GID_T_DECLARED
4790075Sobrientypedef	__gid_t		gid_t;
4890075Sobrien#define	_GID_T_DECLARED
4990075Sobrien#endif
5090075Sobrien
5190075Sobrien#ifndef _OFF_T_DECLARED
5290075Sobrientypedef	__off_t		off_t;
5390075Sobrien#define	_OFF_T_DECLARED
54132718Skan#endif
55132718Skan
56169689Skan#ifndef _PID_T_DECLARED
57169689Skantypedef	__pid_t		pid_t;
58169689Skan#define	_PID_T_DECLARED
59169689Skan#endif
60132718Skan
61132718Skan#ifndef _SIZE_T_DECLARED
62132718Skantypedef	__size_t	size_t;
63169689Skan#define	_SIZE_T_DECLARED
64169689Skan#endif
65169689Skan
6690075Sobrien#ifndef _SSIZE_T_DECLARED
6790075Sobrientypedef	__ssize_t	ssize_t;
6890075Sobrien#define	_SSIZE_T_DECLARED
6990075Sobrien#endif
7090075Sobrien
7190075Sobrien#ifndef _UID_T_DECLARED
7290075Sobrientypedef	__uid_t		uid_t;
7390075Sobrien#define	_UID_T_DECLARED
74132718Skan#endif
75132718Skan
76132718Skan#ifndef _USECONDS_T_DECLARED
77132718Skantypedef	__useconds_t	useconds_t;
78132718Skan#define	_USECONDS_T_DECLARED
79132718Skan#endif
80132718Skan
81132718Skan#define	 STDIN_FILENO	0	/* standard input file descriptor */
82132718Skan#define	STDOUT_FILENO	1	/* standard output file descriptor */
83132718Skan#define	STDERR_FILENO	2	/* standard error file descriptor */
84169689Skan
85169689Skan#if __XSI_VISIBLE || __POSIX_VISIBLE >= 200112
86132718Skan#define	F_ULOCK		0	/* unlock locked section */
87132718Skan#define	F_LOCK		1	/* lock a section for exclusive use */
88132718Skan#define	F_TLOCK		2	/* test and lock a section for exclusive use */
89132718Skan#define	F_TEST		3	/* test a section for locks by other procs */
90132718Skan#endif
91132718Skan
92132718Skan/*
93132718Skan * POSIX options and option groups we unconditionally do or don't
94132718Skan * implement.  This list includes those options which are exclusively
95132718Skan * implemented (or not) in user mode.  Please keep this list in
96132718Skan * alphabetical order.
97132718Skan *
98132718Skan * Anything which is defined as zero below **must** have an
99132718Skan * implementation for the corresponding sysconf() which is able to
100132718Skan * determine conclusively whether or not the feature is supported.
101132718Skan * Anything which is defined as other than -1 below **must** have
102132718Skan * complete headers, types, and function declarations as specified by
103132718Skan * the POSIX standard; however, if the relevant sysconf() function
104132718Skan * returns -1, the functions may be stubbed out.
105132718Skan */
106132718Skan#define	_POSIX_BARRIERS			200112L
107132718Skan#define	_POSIX_READER_WRITER_LOCKS	200112L
108132718Skan#define	_POSIX_REGEXP			1
109132718Skan#define	_POSIX_SHELL			1
110132718Skan#define	_POSIX_SPAWN			200112L
111132718Skan#define	_POSIX_SPIN_LOCKS		200112L
112132718Skan#define	_POSIX_THREAD_ATTR_STACKADDR	200112L
113132718Skan#define	_POSIX_THREAD_ATTR_STACKSIZE	200112L
114169689Skan#define	_POSIX_THREAD_CPUTIME		200112L
115169689Skan#define	_POSIX_THREAD_PRIO_INHERIT	200112L
116169689Skan#define	_POSIX_THREAD_PRIO_PROTECT	200112L
117169689Skan#define	_POSIX_THREAD_PRIORITY_SCHEDULING 200112L
118169689Skan#define	_POSIX_THREAD_PROCESS_SHARED	-1
119169689Skan#define	_POSIX_THREAD_SAFE_FUNCTIONS	-1
120169689Skan#define	_POSIX_THREAD_SPORADIC_SERVER	-1
121169689Skan#define	_POSIX_THREADS			200112L
122169689Skan#define	_POSIX_TRACE			-1
123169689Skan#define	_POSIX_TRACE_EVENT_FILTER	-1
124169689Skan#define	_POSIX_TRACE_INHERIT		-1
125169689Skan#define	_POSIX_TRACE_LOG		-1
126169689Skan#define	_POSIX2_C_BIND			200112L	/* mandatory */
127169689Skan#define	_POSIX2_C_DEV			-1 /* need c99 utility */
128169689Skan#define	_POSIX2_CHAR_TERM		1
129169689Skan#define	_POSIX2_FORT_DEV		-1 /* need fort77 utility */
130169689Skan#define	_POSIX2_FORT_RUN		200112L
13190075Sobrien#define	_POSIX2_LOCALEDEF		-1
13290075Sobrien#define	_POSIX2_PBS			-1
13390075Sobrien#define	_POSIX2_PBS_ACCOUNTING		-1
13490075Sobrien#define	_POSIX2_PBS_CHECKPOINT		-1
13590075Sobrien#define	_POSIX2_PBS_LOCATE		-1
13690075Sobrien#define	_POSIX2_PBS_MESSAGE		-1
13790075Sobrien#define	_POSIX2_PBS_TRACK		-1
13890075Sobrien#define	_POSIX2_SW_DEV			-1 /* XXX ??? */
13990075Sobrien#define	_POSIX2_UPE			200112L
14090075Sobrien#define	_V6_ILP32_OFF32			-1
14190075Sobrien#define	_V6_ILP32_OFFBIG		0
142132718Skan#define	_V6_LP64_OFF64			0
143132718Skan#define	_V6_LPBIG_OFFBIG		-1
144132718Skan
145132718Skan#if __XSI_VISIBLE
146132718Skan#define	_XOPEN_CRYPT			-1 /* XXX ??? */
147132718Skan#define	_XOPEN_ENH_I18N			-1 /* mandatory in XSI */
148132718Skan#define	_XOPEN_LEGACY			-1
149132718Skan#define	_XOPEN_REALTIME			-1
150132718Skan#define	_XOPEN_REALTIME_THREADS		-1
151132718Skan#define	_XOPEN_UNIX			-1
152132718Skan#endif
153132718Skan
154132718Skan/* Define the POSIX.2 version we target for compliance. */
155132718Skan#define	_POSIX2_VERSION		199212L
156169689Skan
157169689Skan/*
158169689Skan * POSIX-style system configuration variable accessors (for the
159169689Skan * sysconf function).  The kernel does not directly implement the
16090075Sobrien * sysconf() interface; rather, a C library stub translates references
16190075Sobrien * to sysconf() into calls to sysctl() using a giant switch statement.
162169689Skan * Those that are marked `user' are implemented entirely in the C
163169689Skan * library and never query the kernel.  pathconf() is implemented
164169689Skan * directly by the kernel so those are not defined here.
165169689Skan */
16690075Sobrien#define	_SC_ARG_MAX		 1
16790075Sobrien#define	_SC_CHILD_MAX		 2
168117395Skan#define	_SC_CLK_TCK		 3
169117395Skan#define	_SC_NGROUPS_MAX		 4
170117395Skan#define	_SC_OPEN_MAX		 5
171132718Skan#define	_SC_JOB_CONTROL		 6
172132718Skan#define	_SC_SAVED_IDS		 7
173132718Skan#define	_SC_VERSION		 8
174169689Skan#define	_SC_BC_BASE_MAX		 9 /* user */
175169689Skan#define	_SC_BC_DIM_MAX		10 /* user */
176132718Skan#define	_SC_BC_SCALE_MAX	11 /* user */
177117395Skan#define	_SC_BC_STRING_MAX	12 /* user */
178132718Skan#define	_SC_COLL_WEIGHTS_MAX	13 /* user */
17990075Sobrien#define	_SC_EXPR_NEST_MAX	14 /* user */
18090075Sobrien#define	_SC_LINE_MAX		15 /* user */
18190075Sobrien#define	_SC_RE_DUP_MAX		16 /* user */
18290075Sobrien#define	_SC_2_VERSION		17 /* user */
18390075Sobrien#define	_SC_2_C_BIND		18 /* user */
18490075Sobrien#define	_SC_2_C_DEV		19 /* user */
18590075Sobrien#define	_SC_2_CHAR_TERM		20 /* user */
18690075Sobrien#define	_SC_2_FORT_DEV		21 /* user */
18790075Sobrien#define	_SC_2_FORT_RUN		22 /* user */
18890075Sobrien#define	_SC_2_LOCALEDEF		23 /* user */
18990075Sobrien#define	_SC_2_SW_DEV		24 /* user */
19090075Sobrien#define	_SC_2_UPE		25 /* user */
191132718Skan#define	_SC_STREAM_MAX		26 /* user */
19290075Sobrien#define	_SC_TZNAME_MAX		27 /* user */
19390075Sobrien
19490075Sobrien#if __POSIX_VISIBLE >= 199309
19590075Sobrien#define	_SC_ASYNCHRONOUS_IO	28
19690075Sobrien#define	_SC_MAPPED_FILES	29
19790075Sobrien#define	_SC_MEMLOCK		30
19890075Sobrien#define	_SC_MEMLOCK_RANGE	31
19990075Sobrien#define	_SC_MEMORY_PROTECTION	32
20090075Sobrien#define	_SC_MESSAGE_PASSING	33
20190075Sobrien#define	_SC_PRIORITIZED_IO	34
20290075Sobrien#define	_SC_PRIORITY_SCHEDULING	35
203132718Skan#define	_SC_REALTIME_SIGNALS	36
204132718Skan#define	_SC_SEMAPHORES		37
205132718Skan#define	_SC_FSYNC		38
206132718Skan#define	_SC_SHARED_MEMORY_OBJECTS 39
20790075Sobrien#define	_SC_SYNCHRONIZED_IO	40
20890075Sobrien#define	_SC_TIMERS		41
20990075Sobrien#define	_SC_AIO_LISTIO_MAX	42
210169689Skan#define	_SC_AIO_MAX		43
211169689Skan#define	_SC_AIO_PRIO_DELTA_MAX	44
21290075Sobrien#define	_SC_DELAYTIMER_MAX	45
21390075Sobrien#define	_SC_MQ_OPEN_MAX		46
21490075Sobrien#define	_SC_PAGESIZE		47
21590075Sobrien#define	_SC_RTSIG_MAX		48
21690075Sobrien#define	_SC_SEM_NSEMS_MAX	49
21790075Sobrien#define	_SC_SEM_VALUE_MAX	50
218169689Skan#define	_SC_SIGQUEUE_MAX	51
219169689Skan#define	_SC_TIMER_MAX		52
220132718Skan#endif
221169689Skan
222146895Skan#if __POSIX_VISIBLE >= 200112
223169689Skan#define	_SC_2_PBS		59 /* user */
224169689Skan#define	_SC_2_PBS_ACCOUNTING	60 /* user */
225146895Skan#define	_SC_2_PBS_CHECKPOINT	61 /* user */
226117395Skan#define	_SC_2_PBS_LOCATE	62 /* user */
227117395Skan#define	_SC_2_PBS_MESSAGE	63 /* user */
228117395Skan#define	_SC_2_PBS_TRACK		64 /* user */
229117395Skan#define	_SC_ADVISORY_INFO	65
230117395Skan#define	_SC_BARRIERS		66 /* user */
231117395Skan#define	_SC_CLOCK_SELECTION	67
232117395Skan#define	_SC_CPUTIME		68
233117395Skan#define	_SC_FILE_LOCKING	69
23490075Sobrien#define	_SC_GETGR_R_SIZE_MAX	70 /* user */
23590075Sobrien#define	_SC_GETPW_R_SIZE_MAX	71 /* user */
23690075Sobrien#define	_SC_HOST_NAME_MAX	72
23790075Sobrien#define	_SC_LOGIN_NAME_MAX	73
238169689Skan#define	_SC_MONOTONIC_CLOCK	74
239169689Skan#define	_SC_MQ_PRIO_MAX		75
240169689Skan#define	_SC_READER_WRITER_LOCKS	76 /* user */
241169689Skan#define	_SC_REGEXP		77 /* user */
242169689Skan#define	_SC_SHELL		78 /* user */
24390075Sobrien#define	_SC_SPAWN		79 /* user */
244132718Skan#define	_SC_SPIN_LOCKS		80 /* user */
245132718Skan#define	_SC_SPORADIC_SERVER	81
246132718Skan#define	_SC_THREAD_ATTR_STACKADDR 82 /* user */
247132718Skan#define	_SC_THREAD_ATTR_STACKSIZE 83 /* user */
248169689Skan#define	_SC_THREAD_CPUTIME	84 /* user */
249169689Skan#define	_SC_THREAD_DESTRUCTOR_ITERATIONS 85 /* user */
250169689Skan#define	_SC_THREAD_KEYS_MAX	86 /* user */
251169689Skan#define	_SC_THREAD_PRIO_INHERIT	87 /* user */
252169689Skan#define	_SC_THREAD_PRIO_PROTECT	88 /* user */
253169689Skan#define	_SC_THREAD_PRIORITY_SCHEDULING 89 /* user */
254169689Skan#define	_SC_THREAD_PROCESS_SHARED 90 /* user */
255169689Skan#define	_SC_THREAD_SAFE_FUNCTIONS 91 /* user */
256169689Skan#define	_SC_THREAD_SPORADIC_SERVER 92 /* user */
257169689Skan#define	_SC_THREAD_STACK_MIN	93 /* user */
258169689Skan#define	_SC_THREAD_THREADS_MAX	94 /* user */
259169689Skan#define	_SC_TIMEOUTS		95 /* user */
260117395Skan#define	_SC_THREADS		96 /* user */
261117395Skan#define	_SC_TRACE		97 /* user */
262117395Skan#define	_SC_TRACE_EVENT_FILTER	98 /* user */
263117395Skan#define	_SC_TRACE_INHERIT	99 /* user */
264117395Skan#define	_SC_TRACE_LOG		100 /* user */
265117395Skan#define	_SC_TTY_NAME_MAX	101 /* user */
266117395Skan#define	_SC_TYPED_MEMORY_OBJECTS 102
267117395Skan#define	_SC_V6_ILP32_OFF32	103 /* user */
268117395Skan#define	_SC_V6_ILP32_OFFBIG	104 /* user */
269117395Skan#define	_SC_V6_LP64_OFF64	105 /* user */
270169689Skan#define	_SC_V6_LPBIG_OFFBIG	106 /* user */
271169689Skan#define	_SC_IPV6		118
272117395Skan#define	_SC_RAW_SOCKETS		119
273169689Skan#define	_SC_SYMLOOP_MAX		120
274169689Skan#endif
275169689Skan
276169689Skan#if __XSI_VISIBLE
277169689Skan#define	_SC_ATEXIT_MAX		107 /* user */
278169689Skan#define	_SC_IOV_MAX		56
279169689Skan#define	_SC_PAGE_SIZE		_SC_PAGESIZE
280169689Skan#define	_SC_XOPEN_CRYPT		108 /* user */
281169689Skan#define	_SC_XOPEN_ENH_I18N	109 /* user */
282169689Skan#define	_SC_XOPEN_LEGACY	110 /* user */
283169689Skan#define	_SC_XOPEN_REALTIME	111
284169689Skan#define	_SC_XOPEN_REALTIME_THREADS 112
285169689Skan#define	_SC_XOPEN_SHM		113
286169689Skan#define	_SC_XOPEN_STREAMS	114
287169689Skan#define	_SC_XOPEN_UNIX		115
288169689Skan#define	_SC_XOPEN_VERSION	116
289169689Skan#define	_SC_XOPEN_XCU_VERSION	117 /* user */
290169689Skan#endif
291169689Skan
292169689Skan#if __BSD_VISIBLE
293169689Skan#define	_SC_NPROCESSORS_CONF	57
294169689Skan#define	_SC_NPROCESSORS_ONLN	58
295169689Skan#endif
296169689Skan
297169689Skan/* Extensions found in Solaris and Linux. */
298169689Skan#define	_SC_PHYS_PAGES		121
299169689Skan
300169689Skan/* Keys for the confstr(3) function. */
301169689Skan#if __POSIX_VISIBLE >= 199209
302169689Skan#define	_CS_PATH		1	/* default value of PATH */
303169689Skan#endif
304169689Skan
305169689Skan#if __POSIX_VISIBLE >= 200112
306169689Skan#define	_CS_POSIX_V6_ILP32_OFF32_CFLAGS		2
307169689Skan#define	_CS_POSIX_V6_ILP32_OFF32_LDFLAGS	3
308169689Skan#define	_CS_POSIX_V6_ILP32_OFF32_LIBS		4
309169689Skan#define	_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS	5
310169689Skan#define	_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS	6
311169689Skan#define	_CS_POSIX_V6_ILP32_OFFBIG_LIBS		7
312169689Skan#define	_CS_POSIX_V6_LP64_OFF64_CFLAGS		8
313169689Skan#define	_CS_POSIX_V6_LP64_OFF64_LDFLAGS		9
314169689Skan#define	_CS_POSIX_V6_LP64_OFF64_LIBS		10
315169689Skan#define	_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS	11
316169689Skan#define	_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS	12
317169689Skan#define	_CS_POSIX_V6_LPBIG_OFFBIG_LIBS		13
318169689Skan#define	_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS	14
319169689Skan#endif
320169689Skan
321169689Skan__BEGIN_DECLS
322169689Skan/* 1003.1-1990 */
323169689Skanvoid	 _exit(int) __dead2;
324169689Skanint	 access(const char *, int);
325169689Skanunsigned int	 alarm(unsigned int);
326169689Skanint	 chdir(const char *);
327169689Skanint	 chown(const char *, uid_t, gid_t);
328169689Skanint	 close(int);
329169689Skanint	 dup(int);
330169689Skanint	 dup2(int, int);
331169689Skanint	 eaccess(const char *, int);
332169689Skanint	 execl(const char *, const char *, ...);
333169689Skanint	 execle(const char *, const char *, ...);
334169689Skanint	 execlp(const char *, const char *, ...);
335169689Skanint	 execv(const char *, char * const *);
336169689Skanint	 execve(const char *, char * const *, char * const *);
337169689Skanint	 execvp(const char *, char * const *);
338169689Skanpid_t	 fork(void);
339169689Skanlong	 fpathconf(int, int);
340169689Skanchar	*getcwd(char *, size_t);
341169689Skangid_t	 getegid(void);
342169689Skanuid_t	 geteuid(void);
343169689Skangid_t	 getgid(void);
344169689Skanint	 getgroups(int, gid_t []);
345169689Skanchar	*getlogin(void);
346169689Skanpid_t	 getpgrp(void);
347169689Skanpid_t	 getpid(void);
348169689Skanpid_t	 getppid(void);
349169689Skanuid_t	 getuid(void);
350169689Skanint	 isatty(int);
351169689Skanint	 link(const char *, const char *);
352169689Skan#ifndef _LSEEK_DECLARED
353169689Skan#define	_LSEEK_DECLARED
354169689Skanoff_t	 lseek(int, off_t, int);
355169689Skan#endif
356169689Skanlong	 pathconf(const char *, int);
357169689Skanint	 pause(void);
358169689Skanint	 pipe(int *);
359169689Skanssize_t	 read(int, void *, size_t);
360169689Skanint	 rmdir(const char *);
361169689Skanint	 setgid(gid_t);
362169689Skanint	 setpgid(pid_t, pid_t);
363169689Skanvoid	 setproctitle(const char *_fmt, ...) __printf0like(1, 2);
364169689Skanpid_t	 setsid(void);
365169689Skanint	 setuid(uid_t);
366169689Skanunsigned int	 sleep(unsigned int);
367169689Skanlong	 sysconf(int);
368169689Skanpid_t	 tcgetpgrp(int);
369169689Skanint	 tcsetpgrp(int, pid_t);
370169689Skanchar	*ttyname(int);
371169689Skanint	ttyname_r(int, char *, size_t);
372169689Skanint	 unlink(const char *);
373169689Skanssize_t	 write(int, const void *, size_t);
374169689Skan
375169689Skan/* 1003.2-1992 */
376169689Skan#if __POSIX_VISIBLE >= 199209 || __XSI_VISIBLE
377169689Skansize_t	 confstr(int, char *, size_t);
378169689Skan#ifndef _GETOPT_DECLARED
379169689Skan#define	_GETOPT_DECLARED
380169689Skanint	 getopt(int, char * const [], const char *);
381169689Skan
382169689Skanextern char *optarg;			/* getopt(3) external variables */
383169689Skanextern int optind, opterr, optopt;
384169689Skan#endif /* _GETOPT_DECLARED */
385169689Skan#endif
386169689Skan
387169689Skan/* ISO/IEC 9945-1: 1996 */
388169689Skan#if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE
389169689Skanint	 fsync(int);
390169689Skan
391169689Skan/*
392169689Skan * ftruncate() was in the POSIX Realtime Extension (it's used for shared
393169689Skan * memory), but truncate() was not.
394169689Skan */
395169689Skan#ifndef _FTRUNCATE_DECLARED
396169689Skan#define	_FTRUNCATE_DECLARED
397169689Skanint	 ftruncate(int, off_t);
398169689Skan#endif
399169689Skan#endif
400169689Skan
401169689Skan#if __POSIX_VISIBLE >= 199506
402169689Skanint	 getlogin_r(char *, int);
403169689Skan#endif
404169689Skan
405169689Skan/* 1003.1-2001 */
406169689Skan#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE
407169689Skanint	 fchown(int, uid_t, gid_t);
408169689Skanssize_t	 readlink(const char * __restrict, char * __restrict, size_t);
409169689Skan#endif
410169689Skan#if __POSIX_VISIBLE >= 200112
411169689Skanint	 gethostname(char *, size_t);
412169689Skanint	 setegid(gid_t);
413169689Skanint	 seteuid(uid_t);
414169689Skan#endif
415169689Skan
416169689Skan/*
417169689Skan * symlink() was originally in POSIX.1a, which was withdrawn after
418169689Skan * being overtaken by events (1003.1-2001).  It was in XPG4.2, and of
419169689Skan * course has been in BSD since 4.2.
420169689Skan */
421169689Skan#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 402 || __BSD_VISIBLE
422169689Skanint	 symlink(const char * __restrict, const char * __restrict);
423169689Skan#endif
424169689Skan
425169689Skan/* X/Open System Interfaces */
426169689Skan#if __XSI_VISIBLE
427169689Skanchar	*crypt(const char *, const char *);
428169689Skan/* char	*ctermid(char *); */		/* XXX ??? */
429169689Skanint	 encrypt(char *, int);
430169689Skanint	 fchdir(int);
431169689Skanlong	 gethostid(void);
432169689Skanint	 getpgid(pid_t _pid);
433169689Skanint	 getsid(pid_t _pid);
434169689Skanchar	*getwd(char *);			/* LEGACY: obsoleted by getcwd() */
435169689Skanint	 lchown(const char *, uid_t, gid_t);
436169689Skanint	 lockf(int, int, off_t);
437169689Skanint	 nice(int);
438169689Skanssize_t	 pread(int, void *, size_t, off_t);
439169689Skanssize_t	 pwrite(int, const void *, size_t, off_t);
440169689Skanint	 setpgrp(pid_t _pid, pid_t _pgrp); /* obsoleted by setpgid() */
441169689Skanint	 setregid(gid_t, gid_t);
442169689Skanint	 setreuid(uid_t, uid_t);
443169689Skan
444169689Skan#ifndef _SWAB_DECLARED
445169689Skan#define _SWAB_DECLARED
446169689Skanvoid	 swab(const void * __restrict, void * __restrict, ssize_t);
447169689Skan#endif /* _SWAB_DECLARED */
448169689Skan
449169689Skanvoid	 sync(void);
450169689Skanuseconds_t	 ualarm(useconds_t, useconds_t);
451169689Skanint	 usleep(useconds_t);
452169689Skanpid_t	 vfork(void);
453169689Skan
454169689Skan/* See comment at ftruncate() above. */
455169689Skan#ifndef _TRUNCATE_DECLARED
456169689Skan#define	_TRUNCATE_DECLARED
457169689Skanint	 truncate(const char *, off_t);
458169689Skan#endif
459169689Skan#endif /* __XSI_VISIBLE */
460169689Skan
461169689Skan#if __XSI_VISIBLE <= 500 || __BSD_VISIBLE
462169689Skanint	 brk(const void *);
463169689Skanint	 chroot(const char *);
464169689Skanint	 getdtablesize(void);
465169689Skanint	 getpagesize(void) __pure2;
466169689Skanchar	*getpass(const char *);
467169689Skanvoid	*sbrk(intptr_t);
468169689Skan#endif
469169689Skan
470169689Skan#if __BSD_VISIBLE
471169689Skanstruct timeval;				/* select(2) */
472169689Skanint	 acct(const char *);
473169689Skanint	 async_daemon(void);
474169689Skanint	 check_utility_compat(const char *);
475169689Skanconst char *
476169689Skan	 crypt_get_format(void);
477169689Skanint	 crypt_set_format(const char *);
478169689Skanint	 des_cipher(const char *, char *, long, int);
479169689Skanint	 des_setkey(const char *key);
480169689Skanvoid	 endusershell(void);
481169689Skanint	 exect(const char *, char * const *, char * const *);
482169689Skanint	 execvP(const char *, const char *, char * const *);
483169689Skanint	 feature_present(const char *);
484169689Skanchar	*fflagstostr(u_long);
485169689Skanint	 getdomainname(char *, int);
486169689Skanint	 getgrouplist(const char *, gid_t, gid_t *, int *);
487169689Skanmode_t	 getmode(const void *, mode_t);
488169689Skanint	 getosreldate(void);
489169689Skanint	 getpeereid(int, uid_t *, gid_t *);
490169689Skanint	 getresgid(gid_t *, gid_t *, gid_t *);
491169689Skanint	 getresuid(uid_t *, uid_t *, uid_t *);
492169689Skanchar	*getusershell(void);
493169689Skanint	 initgroups(const char *, gid_t);
494169689Skanint	 iruserok(unsigned long, int, const char *, const char *);
495169689Skanint	 iruserok_sa(const void *, int, int, const char *, const char *);
496169689Skanint	 issetugid(void);
497169689Skanchar	*mkdtemp(char *);
498169689Skan#ifndef	_MKNOD_DECLARED
499169689Skanint	 mknod(const char *, mode_t, dev_t);
500169689Skan#define	_MKNOD_DECLARED
501169689Skan#endif
502169689Skan#ifndef _MKSTEMP_DECLARED
503169689Skanint	 mkstemp(char *);
504169689Skan#define	_MKSTEMP_DECLARED
505169689Skan#endif
506169689Skanint	 mkstemps(char *, int);
507169689Skan#ifndef _MKTEMP_DECLARED
508169689Skanchar	*mktemp(char *);
509169689Skan#define	_MKTEMP_DECLARED
510169689Skan#endif
511169689Skanint	 nfssvc(int, void *);
512169689Skanint	 profil(char *, size_t, vm_offset_t, int);
513169689Skanint	 rcmd(char **, int, const char *, const char *, const char *, int *);
514169689Skanint	 rcmd_af(char **, int, const char *,
515169689Skan		const char *, const char *, int *, int);
516169689Skanint	 rcmdsh(char **, int, const char *,
517169689Skan		const char *, const char *, const char *);
518169689Skanchar	*re_comp(const char *);
519169689Skanint	 re_exec(const char *);
520169689Skanint	 reboot(int);
521169689Skanint	 revoke(const char *);
522169689Skanpid_t	 rfork(int);
523169689Skanpid_t	 rfork_thread(int, void *, int (*)(void *), void *);
524169689Skanint	 rresvport(int *);
525169689Skanint	 rresvport_af(int *, int);
526169689Skanint	 ruserok(const char *, int, const char *, const char *);
527169689Skan#if __BSD_VISIBLE
528169689Skan#ifndef _SELECT_DECLARED
529169689Skan#define	_SELECT_DECLARED
530169689Skanint	 select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
531169689Skan#endif
532169689Skan#endif
533169689Skanint	 setdomainname(const char *, int);
534169689Skanint	 setgroups(int, const gid_t *);
535169689Skanvoid	 sethostid(long);
536169689Skanint	 sethostname(const char *, int);
537169689Skan#ifndef _SETKEY_DECLARED
538169689Skanint	 setkey(const char *);
539169689Skan#define	_SETKEY_DECLARED
540169689Skan#endif
541169689Skanint	 setlogin(const char *);
542169689Skanvoid	*setmode(const char *);
543169689Skanint	 setresgid(gid_t, gid_t, gid_t);
544169689Skanint	 setresuid(uid_t, uid_t, uid_t);
545169689Skanint	 setrgid(gid_t);
546169689Skanint	 setruid(uid_t);
547169689Skanvoid	 setusershell(void);
548169689Skanint	 strtofflags(char **, u_long *, u_long *);
549169689Skanint	 swapon(const char *);
550169689Skanint	 swapoff(const char *);
551169689Skanint	 syscall(int, ...);
552169689Skanoff_t	 __syscall(quad_t, ...);
553169689Skanint	 ttyslot(void);
554169689Skanint	 undelete(const char *);
555169689Skanint	 unwhiteout(const char *);
556169689Skanvoid	*valloc(size_t);			/* obsoleted by malloc() */
557169689Skan
558169689Skan#ifndef _OPTRESET_DECLARED
559169689Skan#define	_OPTRESET_DECLARED
560169689Skanextern int optreset;			/* getopt(3) external variable */
561169689Skan#endif
562169689Skan#endif /* __BSD_VISIBLE */
563169689Skan
564169689Skan#if __BSD_VISIBLE
565169689Skanint	faccessat(int, const char *, int, int);
566169689Skanint	fchmodat(int, const char *, mode_t, int);
567169689Skanint	fchownat(int, const char *, uid_t, gid_t, int);
568169689Skanint	fexecve(int, char *const [], char *const []);
569169689Skanint	linkat(int, const char *, int, const char *, int);
570169689Skanssize_t	readlinkat(int, const char * __restrict, char * __restrict, size_t);
571169689Skanint	symlinkat(const char *, int, const char *);
572169689Skanint	unlinkat(int, const char *, int);
573169689Skan#endif /* __BSD_VISIBLE */
574169689Skan__END_DECLS
575169689Skan
576132718Skan#endif /* !_UNISTD_H_ */
577169689Skan