unistd.h revision 103929
1163953Srrs/*-
2185694Srrs * Copyright (c) 1991, 1993, 1994
3235828Stuexen *	The Regents of the University of California.  All rights reserved.
4235828Stuexen *
5163953Srrs * Redistribution and use in source and binary forms, with or without
6163953Srrs * modification, are permitted provided that the following conditions
7163953Srrs * are met:
8163953Srrs * 1. Redistributions of source code must retain the above copyright
9163953Srrs *    notice, this list of conditions and the following disclaimer.
10228653Stuexen * 2. Redistributions in binary form must reproduce the above copyright
11163953Srrs *    notice, this list of conditions and the following disclaimer in the
12163953Srrs *    documentation and/or other materials provided with the distribution.
13163953Srrs * 3. All advertising materials mentioning features or use of this software
14228653Stuexen *    must display the following acknowledgement:
15163953Srrs *	This product includes software developed by the University of
16163953Srrs *	California, Berkeley and its contributors.
17163953Srrs * 4. Neither the name of the University nor the names of its contributors
18163953Srrs *    may be used to endorse or promote products derived from this software
19163953Srrs *    without specific prior written permission.
20163953Srrs *
21163953Srrs * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22163953Srrs * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23163953Srrs * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24163953Srrs * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25163953Srrs * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26163953Srrs * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27163953Srrs * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28163953Srrs * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29163953Srrs * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30163953Srrs * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31163953Srrs * SUCH DAMAGE.
32163953Srrs *
33163953Srrs *	@(#)unistd.h	8.12 (Berkeley) 4/27/95
34163953Srrs * $FreeBSD: head/include/unistd.h 103929 2002-09-25 01:58:56Z wollman $
35163953Srrs */
36235828Stuexen
37235828Stuexen#ifndef _UNISTD_H_
38163953Srrs#define	_UNISTD_H_
39267724Stuexen
40179157Srrs#include <sys/cdefs.h>
41267724Stuexen#include <sys/types.h>			/* XXX adds too much pollution. */
42267724Stuexen#include <sys/unistd.h>
43167598Srrs#include <sys/_types.h>
44167598Srrs
45163953Srrs#ifndef _GID_T_DECLARED
46167598Srrstypedef	__gid_t		gid_t;
47168299Srrs#define	_GID_T_DECLARED
48167598Srrs#endif
49167598Srrs
50167598Srrs#ifndef _SIZE_T_DECLARED
51167598Srrstypedef	__size_t	size_t;
52168299Srrs#define	_SIZE_T_DECLARED
53168299Srrs#endif
54167598Srrs
55167598Srrs#ifndef _SSIZE_T_DECLARED
56167598Srrstypedef	__ssize_t	ssize_t;
57168299Srrs#define	_SSIZE_T_DECLARED
58168299Srrs#endif
59168299Srrs
60168299Srrs#ifndef _UID_T_DECLARED
61167598Srrstypedef	__uid_t_	uid_t;
62168299Srrs#define	_UID_T_DECLARED
63167598Srrs#endif
64171990Srrs
65171990Srrs/*
66171990Srrs * XXX missing type definitions for off_t, pid_t and useconds_t.
67171990Srrs */
68171990Srrs
69294157Stuexen#define	 STDIN_FILENO	0	/* standard input file descriptor */
70294157Stuexen#define	STDOUT_FILENO	1	/* standard output file descriptor */
71167598Srrs#define	STDERR_FILENO	2	/* standard error file descriptor */
72167598Srrs
73167598Srrs#ifndef NULL
74170056Srrs#define	NULL		0	/* null pointer constant */
75170181Srrs#endif
76170056Srrs
77167598Srrs#if __XSI_VISIBLE || __POSIX_VISIBLE >= 200112
78167598Srrs#define	F_ULOCK		0	/* unlock locked section */
79167598Srrs#define	F_LOCK		1	/* lock a section for exclusive use */
80167598Srrs#define	F_TLOCK		2	/* test and lock a section for exclusive use */
81167598Srrs#define	F_TEST		3	/* test a section for locks by other procs */
82163953Srrs#endif
83163953Srrs
84163953Srrs/*
85163953Srrs * POSIX options and option groups we unconditionally do or don't
86167598Srrs * implement.  This list includes those options which are exclusively
87167598Srrs * implemented (or not) in user mode.  Please keep this list in
88199866Stuexen * alphabetical order.
89167598Srrs *
90218211Srrs * Anything which is defined as zero below **must** have an
91167598Srrs * implementation for the corresponding sysconf() which is able to
92218211Srrs * determine conclusively whether or not the feature is supported.
93167598Srrs * Anything which is defined as other than -1 below **must** have
94167598Srrs * complete headers, types, and function declarations as specified by
95167598Srrs * the POSIX standard; however, if the relevant sysconf() function
96167598Srrs * returns -1, the functions may be stubbed out.
97167598Srrs */
98171477Srrs#define	_POSIX_BARRIERS			-1
99171477Srrs#define	_POSIX_READER_WRITER_LOCKS	200112L
100171477Srrs#define	_POSIX_REGEXP			1
101171477Srrs#define	_POSIX_SHELL			1
102171440Srrs#define	_POSIX_SPAWN			-1
103171440Srrs#define	_POSIX_SPIN_LOCKS		-1
104171440Srrs#define	_POSIX_THREAD_ATTR_STACKADDR	200112L
105171440Srrs#define	_POSIX_THREAD_ATTR_STACKSIZE	200112L
106171440Srrs#define	_POSIX_THREAD_CPUTIME		-1
107163953Srrs#define	_POSIX_THREAD_PRIO_INHERIT	200112L
108163953Srrs#define	_POSIX_THREAD_PRIO_PROTECT	200112L
109163953Srrs#define	_POSIX_THREAD_PRIORITY_SCHEDULING 200112L
110163953Srrs#define	_POSIX_THREAD_PROCESS_SHARED	-1
111163953Srrs#define	_POSIX_THREAD_SAFE_FUNCTIONS	-1
112163953Srrs#define	_POSIX_THREAD_SPORADIC_SERVER	-1
113163953Srrs#define	_POSIX_THREADS			200112L
114163953Srrs#define	_POSIX_TRACE			-1
115163953Srrs#define	_POSIX_TRACE_EVENT_FILTER	-1
116163953Srrs#define	_POSIX_TRACE_INHERIT		-1
117163953Srrs#define	_POSIX_TRACE_LOG		-1
118163953Srrs#define	_POSIX2_C_BIND			200112L	/* mandatory */
119163953Srrs#define	_POSIX2_C_DEV			-1 /* need c99 utility */
120163953Srrs#define	_POSIX2_CHAR_TERM		1
121163953Srrs#define	_POSIX2_FORT_DEV		-1 /* need fort77 utility */
122163953Srrs#define	_POSIX2_FORT_RUN		200112L
123163953Srrs#define	_POSIX2_LOCALEDEF		-1
124163953Srrs#define	_POSIX2_PBS			-1
125163953Srrs#define	_POSIX2_PBS_ACCOUNTING		-1
126163953Srrs#define	_POSIX2_PBS_CHECKPOINT		-1
127163953Srrs#define	_POSIX2_PBS_LOCATE		-1
128163953Srrs#define	_POSIX2_PBS_MESSAGE		-1
129163953Srrs#define	_POSIX2_PBS_TRACK		-1
130163953Srrs#define	_POSIX2_SW_DEV			-1 /* XXX ??? */
131163953Srrs#define	_POSIX2_UPE			200112L
132163953Srrs#define	_V6_ILP32_OFF32			-1
133163953Srrs#define	_V6_ILP32_OFFBIG		0
134163953Srrs#define	_V6_LP64_OFF64			0
135163953Srrs#define	_V6_LPBIG_OFFBIG		-1
136163953Srrs
137163953Srrs#if __XSI_VISIBLE
138163953Srrs#define	_XOPEN_CRYPT			-1 /* XXX ??? */
139163953Srrs#define	_XOPEN_ENH_I18N			-1 /* mandatory in XSI */
140163953Srrs#define	_XOPEN_LEGACY			-1
141163953Srrs#define	_XOPEN_REALTIME			-1
142163953Srrs#define	_XOPEN_REALTIME_THREADS		-1
143163953Srrs#define	_XOPEN_UNIX			-1
144163953Srrs#endif
145163953Srrs
146163953Srrs/* Define the versions we target for compliance. */
147163953Srrs#define	_POSIX_VERSION		200112L
148163953Srrs#define	_POSIX2_VERSION		199212L
149163953Srrs
150163953Srrs/*
151163953Srrs * POSIX-style system configuration variable accessors (for the
152163953Srrs * sysconf function).  The kernel does not directly implement the
153163953Srrs * sysconf() interface; rather, a C library stub translates references
154163953Srrs * to sysconf() into calls to sysctl() using a giant switch statement.
155163953Srrs * Those that are marked `user' are implemented entirely in the C
156163953Srrs * library and never query the kernel.  pathconf() is implemented
157163953Srrs * directly by the kernel so those are not defined here.
158163953Srrs */
159163953Srrs#define	_SC_ARG_MAX		 1
160163953Srrs#define	_SC_CHILD_MAX		 2
161163953Srrs#define	_SC_CLK_TCK		 3
162163953Srrs#define	_SC_NGROUPS_MAX		 4
163163953Srrs#define	_SC_OPEN_MAX		 5
164163953Srrs#define	_SC_JOB_CONTROL		 6
165163953Srrs#define	_SC_SAVED_IDS		 7
166163953Srrs#define	_SC_VERSION		 8
167163953Srrs#define	_SC_BC_BASE_MAX		 9 /* user */
168163953Srrs#define	_SC_BC_DIM_MAX		10 /* user */
169163953Srrs#define	_SC_BC_SCALE_MAX	11 /* user */
170163953Srrs#define	_SC_BC_STRING_MAX	12 /* user */
171163953Srrs#define	_SC_COLL_WEIGHTS_MAX	13 /* user */
172163953Srrs#define	_SC_EXPR_NEST_MAX	14 /* user */
173163953Srrs#define	_SC_LINE_MAX		15 /* user */
174163953Srrs#define	_SC_RE_DUP_MAX		16 /* user */
175163953Srrs#define	_SC_2_VERSION		17 /* user */
176163953Srrs#define	_SC_2_C_BIND		18 /* user */
177163953Srrs#define	_SC_2_C_DEV		19 /* user */
178163953Srrs#define	_SC_2_CHAR_TERM		20 /* user */
179163953Srrs#define	_SC_2_FORT_DEV		21 /* user */
180163953Srrs#define	_SC_2_FORT_RUN		22 /* user */
181163953Srrs#define	_SC_2_LOCALEDEF		23 /* user */
182163953Srrs#define	_SC_2_SW_DEV		24 /* user */
183163953Srrs#define	_SC_2_UPE		25 /* user */
184163953Srrs#define	_SC_STREAM_MAX		26 /* user */
185163953Srrs#define	_SC_TZNAME_MAX		27 /* user */
186163953Srrs
187163953Srrs#if __POSIX_VISIBLE >= 199309
188163953Srrs#define	_SC_ASYNCHRONOUS_IO	28
189163953Srrs#define	_SC_MAPPED_FILES	29
190163953Srrs#define	_SC_MEMLOCK		30
191163953Srrs#define	_SC_MEMLOCK_RANGE	31
192163953Srrs#define	_SC_MEMORY_PROTECTION	32
193163953Srrs#define	_SC_MESSAGE_PASSING	33
194163953Srrs#define	_SC_PRIORITIZED_IO	34
195163953Srrs#define	_SC_PRIORITY_SCHEDULING	35
196163953Srrs#define	_SC_REALTIME_SIGNALS	36
197163953Srrs#define	_SC_SEMAPHORES		37
198163953Srrs#define	_SC_FSYNC		38
199163953Srrs#define	_SC_SHARED_MEMORY_OBJECTS 39
200178197Srrs#define	_SC_SYNCHRONIZED_IO	40
201178197Srrs#define	_SC_TIMERS		41
202178197Srrs#define	_SC_AIO_LISTIO_MAX	42
203178197Srrs#define	_SC_AIO_MAX		43
204178197Srrs#define	_SC_AIO_PRIO_DELTA_MAX	44
205178197Srrs#define	_SC_DELAYTIMER_MAX	45
206178197Srrs#define	_SC_MQ_OPEN_MAX		46
207178197Srrs#define	_SC_PAGESIZE		47
208178197Srrs#define	_SC_RTSIG_MAX		48
209178197Srrs#define	_SC_SEM_NSEMS_MAX	49
210178197Srrs#define	_SC_SEM_VALUE_MAX	50
211178197Srrs#define	_SC_SIGQUEUE_MAX	51
212178197Srrs#define	_SC_TIMER_MAX		52
213178197Srrs#endif
214178197Srrs
215178197Srrs#if __POSIX_VISIBLE >= 200112
216178197Srrs#define	_SC_2_PBS		59 /* user */
217178197Srrs#define	_SC_2_PBS_ACCOUNTING	60 /* user */
218178197Srrs#define	_SC_2_PBS_CHECKPOINT	61 /* user */
219178197Srrs#define	_SC_2_PBS_LOCATE	62 /* user */
220178197Srrs#define	_SC_2_PBS_MESSAGE	63 /* user */
221178197Srrs#define	_SC_2_PBS_TRACK		64 /* user */
222178197Srrs#define	_SC_ADVISORY_INFO	65
223178197Srrs#define	_SC_BARRIERS		66 /* user */
224178197Srrs#define	_SC_CLOCK_SELECTION	67
225178197Srrs#define	_SC_CPUTIME		68
226178197Srrs#define	_SC_FILE_LOCKING	69
227178197Srrs#define	_SC_GETGR_R_SIZE_MAX	70 /* user */
228189371Srrs#define	_SC_GETPW_R_SIZE_MAX	71 /* user */
229189790Srrs#define	_SC_HOST_NAME_MAX	72
230189790Srrs#define	_SC_LOGIN_NAME_MAX	73
231163953Srrs#define	_SC_MONOTONIC_CLOCK	74
232170744Srrs#define	_SC_MQ_PRIO_MAX		75
233170744Srrs#define	_SC_READER_WRITER_LOCKS	76 /* user */
234170744Srrs#define	_SC_REGEXP		77 /* user */
235170744Srrs#define	_SC_SHELL		78 /* user */
236163953Srrs#define	_SC_SPAWN		79 /* user */
237170744Srrs#define	_SC_SPIN_LOCKS		80 /* user */
238170744Srrs#define	_SC_SPORADIC_SERVER	81
239163953Srrs#define	_SC_THREAD_ATTR_STACKADDR 82 /* user */
240171943Srrs#define	_SC_THREAD_ATTR_STACKSIZE 83 /* user */
241163953Srrs#define	_SC_THREAD_CPUTIME	84 /* user */
242163953Srrs#define	_SC_THREAD_DESTRUCTOR_ITERATIONS 85 /* user */
243163953Srrs#define	_SC_THREAD_KEYS_MAX	86 /* user */
244163953Srrs#define	_SC_THREAD_PRIO_INHERIT	87 /* user */
245163953Srrs#define	_SC_THREAD_PRIO_PROTECT	88 /* user */
246163953Srrs#define	_SC_THREAD_PRIORITY_SCHEDULING 89 /* user */
247163953Srrs#define	_SC_THREAD_PROCESS_SHARED 90 /* user */
248163953Srrs#define	_SC_THREAD_SAFE_FUNCTIONS 91 /* user */
249163953Srrs#define	_SC_THREAD_SPORADIC_SERVER 92 /* user */
250163953Srrs#define	_SC_THREAD_STACK_MIN	93 /* user */
251163953Srrs#define	_SC_THREAD_THREADS_MAX	94 /* user */
252163953Srrs#define	_SC_TIMEOUTS		95 /* user */
253163953Srrs#define	_SC_THREADS		96 /* user */
254163953Srrs#define	_SC_TRACE		97 /* user */
255163953Srrs#define	_SC_TRACE_EVENT_FILTER	98 /* user */
256163953Srrs#define	_SC_TRACE_INHERIT	99 /* user */
257163953Srrs#define	_SC_TRACE_LOG		100 /* user */
258163953Srrs#define	_SC_TTY_NAME_MAX	101 /* user */
259170744Srrs#define	_SC_TYPED_MEMORY_OBJECTS 102
260170744Srrs#define	_SC_V6_ILP32_OFF32	103 /* user */
261163953Srrs#define	_SC_V6_ILP32_OFFBIG	104 /* user */
262170744Srrs#define	_SC_V6_LP64_OFF64	105 /* user */
263163953Srrs#define	_SC_V6_LPBIG_OFFBIG	106 /* user */
264163953Srrs#endif
265163953Srrs
266163953Srrs#if __XSI_VISIBLE
267163953Srrs#define	_SC_ATEXIT_MAX		107 /* user */
268163953Srrs#define	_SC_IOV_MAX		56
269163953Srrs#define	_SC_PAGE_SIZE		_SC_PAGESIZE
270163953Srrs#define	_SC_XOPEN_CRYPT		108 /* user */
271163953Srrs#define	_SC_XOPEN_ENH_I18N	109 /* user */
272179157Srrs#define	_SC_XOPEN_LEGACY	110 /* user */
273179157Srrs#define	_SC_XOPEN_REALTIME	111
274179157Srrs#define	_SC_XOPEN_REALTIME_THREADS 112
275163953Srrs#define	_SC_XOPEN_SHM		113
276163953Srrs#define	_SC_XOPEN_STREAMS	114
277163953Srrs#define	_SC_XOPEN_UNIX		115
278163953Srrs#define	_SC_XOPEN_VERSION	116
279163953Srrs#define	_SC_XOPEN_XCU_VERSION	117 /* user */
280163953Srrs#endif
281163953Srrs
282163953Srrs#if __BSD_VISIBLE
283163953Srrs#define	_SC_NPROCESSORS_CONF	57
284163953Srrs#define	_SC_NPROCESSORS_ONLN	58
285163953Srrs#endif
286163953Srrs
287163953Srrs/* Keys for the confstr(3) function. */
288163953Srrs#if __POSIX_VISIBLE >= 199209
289163953Srrs#define	_CS_PATH		1	/* default value of PATH */
290163953Srrs#endif
291163953Srrs
292163953Srrs#if __POSIX_VISIBLE >= 200112
293163953Srrs#define	_CS_POSIX_V6_ILP32_OFF32_CFLAGS		2
294163953Srrs#define	_CS_POSIX_V6_ILP32_OFF32_LDFLAGS	3
295163953Srrs#define	_CS_POSIX_V6_ILP32_OFF32_LIBS		4
296163953Srrs#define	_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS	5
297163953Srrs#define	_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS	6
298163953Srrs#define	_CS_POSIX_V6_ILP32_OFFBIG_LIBS		7
299163953Srrs#define	_CS_POSIX_V6_LP64_OFF64_CFLAGS		8
300163953Srrs#define	_CS_POSIX_V6_LP64_OFF64_LDFLAGS		9
301163953Srrs#define	_CS_POSIX_V6_LP64_OFF64_LIBS		10
302163953Srrs#define	_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS	11
303163953Srrs#define	_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS	12
304163953Srrs#define	_CS_POSIX_V6_LPBIG_OFFBIG_LIBS		13
305163953Srrs#define	_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS	14
306163953Srrs#endif
307163953Srrs
308163953Srrs__BEGIN_DECLS
309163953Srrs/* 1003.1-1990 */
310163953Srrsvoid	 _exit(int) __dead2;
311163953Srrsint	 access(const char *, int);
312163953Srrsunsigned int	 alarm(unsigned int);
313163953Srrsint	 chdir(const char *);
314163953Srrsint	 chown(const char *, uid_t, gid_t);
315163953Srrsint	 close(int);
316163953Srrsint	 dup(int);
317163953Srrsint	 dup2(int, int);
318163953Srrsint	 eaccess(const char *, int);
319163953Srrsint	 execl(const char *, const char *, ...);
320163953Srrsint	 execle(const char *, const char *, ...);
321163953Srrsint	 execlp(const char *, const char *, ...);
322163953Srrsint	 execv(const char *, char * const *);
323163953Srrsint	 execve(const char *, char * const *, char * const *);
324163953Srrsint	 execvp(const char *, char * const *);
325163953Srrspid_t	 fork(void);
326163953Srrslong	 fpathconf(int, int);
327163953Srrschar	*getcwd(char *, size_t);
328163953Srrsgid_t	 getegid(void);
329163953Srrsuid_t	 geteuid(void);
330163953Srrsgid_t	 getgid(void);
331163953Srrsint	 getgroups(int, gid_t []);
332163953Srrschar	*getlogin(void);
333163953Srrspid_t	 getpgrp(void);
334163953Srrspid_t	 getpid(void);
335217913Stuexenpid_t	 getppid(void);
336235557Stuexenuid_t	 getuid(void);
337218186Srrsint	 isatty(int);
338218186Srrsint	 link(const char *, const char *);
339218186Srrs#ifndef _LSEEK_DECLARED
340218186Srrs#define	_LSEEK_DECLARED
341218186Srrsoff_t	 lseek(int, off_t, int);
342218186Srrs#endif
343219397Srrslong	 pathconf(const char *, int);
344219397Srrsint	 pause(void);
345218186Srrsint	 pipe(int *);
346218186Srrsssize_t	 read(int, void *, size_t);
347163953Srrsint	 rmdir(const char *);
348163953Srrsint	 setgid(gid_t);
349163953Srrsint	 setpgid(pid_t, pid_t);
350163953Srrsvoid	 setproctitle(const char *_fmt, ...) __printf0like(1, 2);
351163953Srrspid_t	 setsid(void);
352163953Srrsint	 setuid(uid_t);
353163953Srrsunsigned int	 sleep(unsigned int);
354163953Srrslong	 sysconf(int);
355163953Srrspid_t	 tcgetpgrp(int);
356163953Srrsint	 tcsetpgrp(int, pid_t);
357163953Srrschar	*ttyname(int);
358163953Srrsint	 unlink(const char *);
359163953Srrsssize_t	 write(int, const void *, size_t);
360243157Stuexen
361163953Srrs/* 1003.2-1992 */
362163953Srrs#if __POSIX_VISIBLE >= 199209
363163953Srrssize_t	 confstr(int, char *, size_t);
364163953Srrsint	 getopt(int, char * const [], const char *);
365163953Srrs
366163953Srrsextern char *optarg;			/* getopt(3) external variables */
367163953Srrsextern int optind, opterr, optopt;
368163953Srrs#endif
369163953Srrs
370163953Srrs/* ISO/IEC 9945-1: 1996 */
371163953Srrs#if __POSIX_VISIBLE >= 199506
372163953Srrsint	 fsync(int);
373163953Srrs
374163953Srrs/*
375163953Srrs * ftruncate() was in the POSIX Realtime Extension (it's used for shared
376163953Srrs * memory), but truncate() was not.
377164205Srrs */
378167598Srrs#ifndef _FTRUNCATE_DECLARED
379171990Srrs#define	_FTRUNCATE_DECLARED
380228391Stuexenint	 ftruncate(int, off_t);
381228391Stuexen#endif
382163953Srrs
383163953Srrsint	 getlogin_r(char *, int);
384163953Srrs#endif
385228907Stuexen
386163953Srrs/* 1003.1-2001 */
387163953Srrs#if __POSIX_VISIBLE >= 200112
388163953Srrsint	 fchown(int, uid_t, gid_t);
389163953Srrsint	 gethostname(char *, int /* socklen_t */);
390163953Srrsint	 setegid(gid_t);
391163953Srrsint	 seteuid(uid_t);
392163953Srrs#endif
393163953Srrs
394163953Srrs/*
395163953Srrs * symlink() was originally in POSIX.1a, which was withdrawn after
396163953Srrs * being overtaken by events (1003.1-2001).  It was in XPG4.2, and of
397163953Srrs * course has been in BSD since 4.2.
398163953Srrs */
399163953Srrs#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 402 || __BSD_VISIBLE
400163953Srrsint	 symlink(const char * __restrict, const char * __restrict);
401163953Srrs#endif
402188854Srrs
403163953Srrs/* X/Open System Interfaces */
404163953Srrs#if __XSI_VISIBLE
405163953Srrschar	*crypt(const char *, const char *);
406163953Srrs/* char	*ctermid(char *); */		/* XXX ??? */
407233660Srrsint	 encrypt(char *, int);
408233660Srrsint	 fchdir(int);
409163953Srrsint	 getpgid(pid_t _pid);
410163953Srrsint	 getsid(pid_t _pid);
411163953Srrschar	*getwd(char *);			/* LEGACY: obsoleted by getcwd() */
412163953Srrsint	 lchown(const char *, uid_t, gid_t);
413163953Srrsint	 lockf(int, int, off_t);
414163953Srrsint	 nice(int);
415163953Srrsssize_t	 pread(int, void *, size_t, off_t);
416163953Srrsssize_t	 pwrite(int, const void *, size_t, off_t);
417218129Srrsint	 setpgrp(pid_t _pid, pid_t _pgrp); /* obsoleted by setpgid() */
418163953Srrsint	 setregid(gid_t, gid_t);
419163953Srrsint	 setreuid(uid_t, uid_t);
420163953Srrs/* void	 swab(const void * __restrict, void * __restrict, ssize_t); */
421163953Srrsvoid	 sync(void);
422163953Srrsunsigned int	 ualarm(unsigned int, unsigned int);
423163953Srrsint	 usleep(unsigned int);
424163953Srrspid_t	 vfork(void);
425163953Srrs
426163953Srrs/* See comment at ftruncate() above. */
427163953Srrs#ifndef _TRUNCATE_DECLARED
428163953Srrs#define	_TRUNCATE_DECLARED
429163953Srrsint	 truncate(const char *, off_t);
430163953Srrs#endif
431163953Srrs#endif /* __XSI_VISIBLE */
432163953Srrs
433163953Srrs#if __BSD_VISIBLE
434163953Srrsstruct timeval;				/* select(2) */
435163953Srrsint	 acct(const char *);
436163953Srrsint	 async_daemon(void);
437163953Srrsint	 brk(const void *);
438163953Srrsint	 chroot(const char *);
439163953Srrsconst char *
440163953Srrs	 crypt_get_format(void);
441163953Srrsint	 crypt_set_format(const char *);
442163953Srrsint	 des_cipher(const char *, char *, long, int);
443163953Srrsint	 des_setkey(const char *key);
444163953Srrsvoid	 endusershell(void);
445185694Srrsint	 exect(const char *, char * const *, char * const *);
446185694Srrschar	*fflagstostr(u_long);
447185694Srrsint	 getdomainname(char *, int);
448163953Srrsint	 getdtablesize(void);
449163953Srrsint	 getgrouplist(const char *, gid_t, gid_t *, int *);
450163953Srrslong	 gethostid(void);
451163953Srrsmode_t	 getmode(const void *, mode_t);
452163953Srrsint	 getpagesize(void) __pure2;
453163953Srrschar	*getpass(const char *);
454163953Srrsint	 getpeereid(int, uid_t *, gid_t *);
455163953Srrsint	 getresgid(gid_t *, gid_t *, gid_t *);
456163953Srrsint	 getresuid(uid_t *, uid_t *, uid_t *);
457163953Srrschar	*getusershell(void);
458163953Srrsint	 initgroups(const char *, gid_t);
459163953Srrsint	 iruserok(unsigned long, int, const char *, const char *);
460163953Srrsint	 iruserok_sa(const void *, int, int, const char *, const char *);
461163953Srrsint	 issetugid(void);
462163953Srrschar	*mkdtemp(char *);
463294149Stuexenint	 mknod(const char *, mode_t, dev_t);
464163953Srrs#ifndef _MKSTEMP_DECLARED
465163953Srrsint	 mkstemp(char *);
466163953Srrs#define	_MKSTEMP_DECLARED
467163953Srrs#endif
468163953Srrsint	 mkstemps(char *, int);
469163953Srrs#ifndef _MKTEMP_DECLARED
470163953Srrschar	*mktemp(char *);
471163953Srrs#define	_MKTEMP_DECLARED
472163953Srrs#endif
473163953Srrsint	 nfsclnt(int, void *);
474163953Srrsint	 nfssvc(int, void *);
475163953Srrsint	 profil(char *, size_t, vm_offset_t, int);
476163953Srrsint	 rcmd(char **, int, const char *, const char *, const char *, int *);
477171745Srrsint	 rcmd_af(char **, int, const char *,
478207924Srrs		const char *, const char *, int *, int);
479163953Srrsint	 rcmdsh(char **, int, const char *,
480163953Srrs		const char *, const char *, const char *);
481163953Srrschar	*re_comp(const char *);
482171943Srrsint	 re_exec(const char *);
483172703Srrsint	 readlink(const char *, char *, int);
484172703Srrsint	 reboot(int);
485163953Srrsint	 revoke(const char *);
486163953Srrspid_t	 rfork(int);
487163953Srrspid_t	 rfork_thread(int, void *, int (*)(void *), void *);
488225635Stuexenint	 rresvport(int *);
489163953Srrsint	 rresvport_af(int *, int);
490163953Srrsint	 ruserok(const char *, int, const char *, const char *);
491163953Srrsvoid	*sbrk(intptr_t);
492163953Srrs#if __BSD_VISIBLE
493163953Srrs#ifndef _SELECT_DECLARED
494167598Srrs#define	_SELECT_DECLARED
495171440Srrsint	 select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
496217635Srrs#endif
497163953Srrs#endif
498163953Srrsint	 setdomainname(const char *, int);
499163953Srrsint	 setgroups(int, const gid_t *);
500163953Srrsvoid	 sethostid(long);
501163953Srrsint	 sethostname(const char *, int);
502163953Srrs#ifndef _SETKEY_DECLARED
503163953Srrsint	 setkey(const char *);
504163953Srrs#define	_SETKEY_DECLARED
505163953Srrs#endif
506163953Srrsint	 setlogin(const char *);
507163953Srrsvoid	*setmode(const char *);
508169655Srrsint	 setresgid(gid_t, gid_t, gid_t);
509169655Srrsint	 setresuid(uid_t, uid_t, uid_t);
510163953Srrsint	 setrgid(gid_t);
511163953Srrsint	 setruid(uid_t);
512163953Srrsvoid	 setusershell(void);
513163953Srrsint	 strtofflags(char **, u_long *, u_long *);
514163953Srrsint	 swapon(const char *);
515163953Srrsint	 syscall(int, ...);
516163953Srrsoff_t	 __syscall(quad_t, ...);
517163953Srrsint	 ttyslot(void);
518206137Stuexenint	 undelete(const char *);
519163953Srrsint	 unwhiteout(const char *);
520163953Srrsvoid	*valloc(size_t);			/* obsoleted by malloc() */
521163953Srrs
522163953Srrsextern char *suboptarg;			/* getsubopt(3) external variable */
523163953Srrs#ifndef _GETSUBOPT_DECLARED
524163953Srrsint	 getsubopt(char **, char * const *, char **);
525163953Srrs#define	_GETSUBOPT_DECLARED
526163953Srrs#endif
527163953Srrsextern int optreset;			/* getopt(3) external variable */
528163953Srrs#endif /* __BSD_VISIBLE */
529163953Srrs__END_DECLS
530163953Srrs
531163953Srrs#endif /* !_UNISTD_H_ */
532163953Srrs