summary refs log tree commit diff
path: root/posix/unistd.h
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1996-11-06 04:24:40 +0000
committerUlrich Drepper <drepper@redhat.com>1996-11-06 04:24:40 +0000
commit2c6fe0bd3b270fc644dd4c773f2d47b93f404efe (patch)
treea578bcc93bbeaafacb6012213c458e33b7907528 /posix/unistd.h
parentf5311448f83eada5c5cabf55aae2619dcb1869c0 (diff)
downloadglibc-2c6fe0bd3b270fc644dd4c773f2d47b93f404efe.tar.gz
glibc-2c6fe0bd3b270fc644dd4c773f2d47b93f404efe.tar.xz
glibc-2c6fe0bd3b270fc644dd4c773f2d47b93f404efe.zip
update from main archive 961105 cvs/libc-961106
Wed Nov  6 04:30:26 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/syscalls.list: Add weak alias llseek for
	_llseek syscall.  Reported by Andy Sewell <puck@pookhill.demon.co.uk>.

	* string/argz.h: Don't protect by __USE_GNU.

Tue Nov  5 23:38:28 1996  Ulrich Drepper  <drepper@cygnus.com>

	* Lots of files: Update and reformat copyright.

	* Makefile (headers): Add xopen_lim.h.

	* catgets/nl_types.h: Move __BEGIN_DECLS before definition of nl_catd.

	* grp/grp.h: Define setgrent, getgrent, endgrent, and getgrent_r
	if __USE_XOPEN_EXTENDED is defined.
	* pwd/pwd.h: Define setpwent, getpwent, endpwent, and getpwent_r
	if __USE_XOPEN_EXTENDED is defined.

	* io/Makefile (routines): Add lchown.

	* io/sys/poll.h: Add definition of POLLWRNORM.

	* io/sys/stat.h: Declare lstat, fchmod, mknod when
	__USE_XOPEN_EXTENDED is defined.

	* libio/Makefile (routines): Add obprintf.
	* libio/obprintf.c: New file.
	* libio/iolibio.h: Add prototypes for _IO_obstack_vprintf and
	_IO_obstack_printf.
	* libio/libio.h: Fix typo.
	* libio/stdio.h: Declare tempnam if __USE_XOPEN_EXTENDED is defined.
	Add prototypes for obstack_vprintf and obstack_printf.

	* manual/creature.texi: Describe _XOPEN_SOURCE macro.
	* manual/intro.texi: Add reference to NSS chapter.
	* manual/libc.texinfo: Update UPDATED.
	Comment out `@printindex cp'.  It works again.
	* manual/memory.texi: Add description for obstack_ptr_grow,
	obstack_int_grow, obstack_ptr_grow_fast, and obstack_int_grow_fast.
	* manual/nss.texi: Add a few @cindex entries and change NSS_STATUS_*
	index entries to @vindex.
	* manual/users.texi: Correct @cindex entry for Netgroup.

	* math/mathcalls.h: Use __USE_XOPEN and __USE_XOPEN_EXTENDED to
	make declarations visible for X/Open sources.

	* misc/search.h: Declare insque/remque only is __USE_SVID or
	__USE_XOPEN_EXTENDED is defined.

	* misc/sys/uio.h (readv, writev): Change return value from int to
	ssize_t.

	* posix/Makefile (headers): Add re_comp.h.
	* posix/re_comp.h: New file.  XPG interface to regex functions.

	* posix/getconf.c: Add all names from XPG4.2.
	* posix/posix1_lim.h: Increase minimum values for _POSIX_CHILD_MAX
	and _POSIX_OPEN_MAX to minimums from XPG4.2.
	* sysdeps/generic/confname.h: Add all _SC_* names from XPG4.2.
	* sysdeps/posix/sysconf.c: Handle new _SC_* values.
	* sysdeps/stub/sysconf.c: Likewise.

	* posix/unistd.h: Add declaration of ualarm and lchown.  Declare
	usleep, fchown, fchdir, nice, getpgid, setsid, getsid, setreuid,
	setregid, vfork, ttyslot, symlink, readlink, gethostid, truncate,
	ftruncate, getdtablesize, brk, sbrk, lockf when
	__USE_XOPEN_EXTENDED is defined.

	* posix/sys/wait.h: Declare wait3 if __USE_XOPEN_EXTENDED is defined.

	* shadow/shadow.h: Define SHADOW using _PATH_SHADOW.
	* sysdeps/generic/paths.h: Define _PATH_SHADOW.
	* sysdeps/unix/sysv/linux/paths.h: Likewise.

	* signal/signal.h: Declare killpg, sigstack and sigaltstack when
	__USE_XOPEN_EXTENDED is defined.

	* stdio/stdio.h: Declare tempnam when __USE_XOPEN is defined.

	* stdlib/stdlib.h: Make rand48 functions available when __USE_XOPEN
	is defined.
	Likewise for valloc, putenv, realpath, [efg]cvt*, and getsubopt
	functions.

	* string/string.h: Make memccpy, strdup, bcmp, bcopy, bzero, index,
	and rindex available when __USE_XOPEN_EXTENDED is defined.

	* sysdeps/mach/getpagesize.c: De-ANSI-fy.  Change return type to int.
	* sysdeps/posix/getpagesize.c: Likewise.
	* sysdeps/stub/getpagesize.c: Likewise.
	* sysdeps/unix/getpagesize.c: Likewise.

	* time/africa: Update from tzdata1996l.
	* time/asia: Likewise.
	* time/australia: Likewise.
	* time/europe: Likewise.
	* time/northamerica: Likewise.
	* time/pacificnew: Likewise.
	* time/southamerica: Likewise.
	* time/tzfile.h: Update from tzcode1996m.

	* time/time.h: Declare strptime if __USE_XOPEN.
	Declare daylight and timezone also if __USE_XOPEN.

	* time/sys/time.h: Remove declaration of ualarm.

	* wctype/wctype.h: Just reference ISO C standard.

Tue Nov  5 01:26:32 1996  Richard Henderson  <rth@tamu.edu>

	* crypt/Makefile: Add crypt routines to libc as well iff
	$(crypt-in-libc) is set.  Do this for temporary binary compatibility
	on existing Linux/Alpha installations.

	* stdlib/div.c, sysdeps/generic/div.c: Move file to .../generic/.
	* stdlib/ldiv.c, sysdeps/generic/ldiv.c: Likewise.
	* stdlib/lldiv.c, sysdeps/generic/lldiv.c: Likewise.
	* sysdeps/alpha/Makefile (divrem): Add divlu, dviqu, remlu, and
	remqu.
	* sysdeps/alpha/div.S: New file.
	* sysdeps/alpha/ldiv.S: New file.
	* sysdeps/alpha/lldiv.S: New file.
	* sysdeps/alpha/divrem.h: Merge signed and unsigned division.
	Take pointers from Linus and tighten the inner loops a bit.
	* sysdeps/alpha/divl.S: Change defines for merged routines.
	* sysdeps/alpha/divq.S: Likewise.
	* sysdeps/alpha/reml.S: Likewise.
	* sysdeps/alpha/remq.S: Likewise.
	* sysdeps/alpha/divlu.S: Remove file.
	* sysdeps/alpha/divqu.S: Likewise.
	* sysdeps/alpha/remlu.S: Likewise.
	* sysdeps/alpha/remqu.S: Likewise.

	* sysdeps/alpha/bsd-_setjmp.S: If PROF, call _mcount.
	* sysdeps/alpha/bsd-setjmp.S: Likewise.
	* sysdeps/alpha/bzero.S: Likewise.
	* sysdeps/alpha/ffs.S: Likewise.
	* sysdeps/alpha/htonl.S: Likewise.
	* sysdeps/alpha/htons.S: Likewise.
	* sysdeps/alpha/memchr.S: Likewise.
	* sysdeps/alpha/memset.S: Likewise.
	* sysdeps/alpha/s_copysign.S: Likewise.
	* sysdeps/alpha/s_fabs.S: Likewise.
	* sysdeps/alpha/setjmp.S: Likewise.
	* sysdeps/alpha/stpcpy.S: Likewise.
	* sysdeps/alpha/stpncpy.S: Likewise.
	* sysdeps/alpha/strcat.S: Likewise.
	* sysdeps/alpha/strchr.S: Likewise.
	* sysdeps/alpha/strcpy.S: Likewise.
	* sysdeps/alpha/strlen.S: Likewise.
	* sysdeps/alpha/strncat.S: Likewise.
	* sysdeps/alpha/strncpy.S: Likewise.
	* sysdeps/alpha/strrchr.S: Likewise.
	* sysdeps/alpha/udiv_qrnnd.S: Likewise.  Fix private labels.
	Convert two small jumps to use conditional moves.
	* sysdeps/unix/alpha/sysdep.h: Compress all __STDC__ nastiness.
	(PSEUDO): If PROF, call _mcount.
	* sysdeps/unix/sysv/linux/alpha/brk.S: If PROF, call _mcount.
	* sysdeps/unix/sysv/linux/alpha/clone.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/llseek.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/sigsuspend.S: Likewise.
	* sysdeps/unix/sysv/linux/alpha/syscall.S: Likewise.

	* sysdeps/alpha/memcpy.S: New file.  Odd layout because it should
	eventually contain memmove as well.
	* sysdeps/alpha/strcmp.S: New file.
	* sysdeps/alpha/strncmp.S: New file.
	* sysdeps/alpha/w_sqrt.S: New file.

Tue Nov  5 18:06:06 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/mach/hurd/ttyname_r.c: Use `size_t' for len variable.

Tue Nov  5 12:09:29 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdep/generic/sysdep.h: Define END only if not yet defined.
	* sysdep/unix/sysdep.h: Define PSEUDO_END only if not yet defined.
	Reported by Thomas Bushnell, n/BSG.

Mon Nov  4 22:46:53 1996  Ulrich Drepper  <drepper@cygnus.com>

	* manual/users.texi (Netgroup Data): Remove { } around @cindex.

Mon Nov  4 19:07:05 1996  Ulrich Drepper  <drepper@cygnus.com>

	* malloc/calloc.c: Check for overflow before trying to allocate
	memory.  Proposed by Neil Matthews <nm@adv.sbc.sony.co.jp>.

Fri Nov  1 18:18:32 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* manual/llio.texi (Operating Modes): Add missing arguments to
	@deftypevr in O_NONBLOCK description.

	* manual/time.texi (Time Zone Functions): Enclose type name in
	braces in description of tzname.  FIXME: this does not yet work
	correctly in info.

Sun Nov  3 17:29:06 1996  Ulrich Drepper  <drepper@cygnus.com>

	* features.h: Add X/Open macros.
	* posix/unistd.h: Define X/Open macros.
	* sysdeps/generic/confname.h: Add _SC_XOPEN_XCU_VERSION,
	_SC_XOPEN_UNIX, _SC_XOPEN_CRYPT, _SC_XOPEN_ENH_I18N,
	_SC_XOPEN_SHM, _SC_2_CHAR_TERM, _SC_2_C_VERSION, and _SC_2_UPE.
	* sysdeps/posix/sysconf.c: Handle new constants.
	* sysdeps/stub/sysconf.c: Likewise.
	* sysdeps/unix/sysv/linux/posix_opt.h: Add definition of _XOPEN_SHM.

	* catgets/catgets.c (catopen): Set errno to ENOMEM when
	we run out of memory.
	(catgets): Set errno to EBADF when catalog handle is invalid.
	Set errno to ENOMSG when translation is not available.
	(catclose): Set errno to EBADF when catalog handle is invalid.

	* ctype/ctype.h: Declare isascii and toascii when __USE_XOPEN.
	Likewise for _toupper and _tolower.

	* manual/arith.texi: Document strtoq, strtoll, strtouq, strtoull,
	strtof, and strtold.
	* manual/math.texi: Document HUGE_VALf and HUGE_VALl.
	* manual/stdio.h: Document ' flag for numeric formats of scanf.
	* manual/users.texi: Document that cuserid shouldn't be used.

	* misc/Makefile (routines): Add dirname.
	(headers): Add libgen.h.
	(tests): Add tst-dirname.
	* misc/dirname.c: New file.
	* misc/libgen.h: New file.
	* misc/tst-dirname.c: New file.

	* misc/search.h: Parameter of hcreate must be of type size_t.
	* misc/hsearch.c: Likewise.
	* misc/hsearch_r.c: Likewise for hcreate_r.
	* misc/search.h: Parameters of insque and remque must be `void *'.
	* misc/insremque.c: Likewise.

	* posix/unistd.h: Move declarations of mktemp and mkstemp to...
	* stdlib/stdlib.h: ...here.
	* posix/unistd.h [__USE_XOPEN]: Add prototypes for crypt, setkey,
	encrypt, and swab.

	* stdio-common/printf-parse.h (struct printf_spec): Add pa_wchar
	and pa_wstring.
	(parse_one_spec): Remove Linux compatibility code.
	Recognize %C and %S formats.
	* stdio-common/printf.h: Add PA_WCHAR and PA_WSTRING.
	* stdio-common/vfprintf.c: Add implementation of %C and %S format.
	* stdio-common/vfscanf.c: Likewise for scanf.

	* stdlib/l64a.c: Return value for 0 must be the empty string.
	* stdlib/stdlib.h: Declare reentrant function from rand49 family
	only if __USE_REENTRANT.
	Declare rand48 functions also if __USE_XOPEN.

	* stdlib/strtol.c: Return 0 and set errno to EINVAL when BASE is
	not a legal value.
	Return 0 and set errno to EINVAL when strou* sees negativ number.
	* stdlib/tst-strtol.c: De-ANSI-fy.
	Change expected results for test of unsigned function and negative
	input.

	* string/stratcliff.c: Prevent warnings.
	* string.h: Move declaration of swab to <unistd.h>.
	* string/swab.c: De-ANSI-fy.

	* sysdeps/posix/cuserid.c: Implement using getpwuid_r.
	* sysdeps/posix/mkstemp.c: Include <stdlib.h> for prototype.
	* sysdeps/posix/mktemp.c: Likewise.
	* sysdeps/stub/mkstemp.c: Likewise.
	* sysdeps/stub/mktemp.c: Likewise.

	* sysvipc/sys/ipc.h: Prototypes of ftok have to be of types `const
 	char *' and `int'.
	* sysvipc/ftok.c: Likewise.  Make sure only lower 8 bits of
 	PROJ_ID are used.

Sun Nov  3 03:21:28 1996  Heiko Schroeder  <Heiko.Schroeder@post.rwth-aachen.de>

	* locale/programs/ld-numeric.c (numeric_output): Compute idx[0]
	correctly.

Sat Nov  2 17:44:32 1996  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/posix/cuserid.c: Use reentrant functions.
	* manual/users.texi: Tell that cuserid is marked to be withdrawn in
	XPG4.2.

Sat Nov  2 14:26:37 1996  Ulrich Drepper  <drepper@cygnus.com>

	Linus said he will make sure no system call will return a value
	in -1 ... -4095 as a valid result.
	* sysdeps/unix/sysv/linux/i386/sysdep.h: Correct test for error.
	* sysdeps/unix/sysv/linux/i386/syscall.S: Likewise.
	* sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/m68k/syscall.S: Likewise.

Sat Nov  2 16:54:49 1996  NIIBE Yutaka  <gniibe@mri.co.jp>

	* sysdeps/stub/lockfile.c [!USE_IN_LIBIO]: Define weak alias for
	__funlockfile, not a circular alias.
	Define __IO_ftrylockfile if USE_IN_LIBIO and __ftrylockfile if not,
	not vice versa.

	* sysdeps/unix/sysv/linux/i386/sysdep.S (__errno_location): Make
	it a weak symbol.
	* sysdeps/unix/sysv/linux/m68k/sysdep.S (__errno_location): Likewise.


	Likewise.

	* crypt/Makefile (rpath-link): Extend search path to current directory.
Diffstat (limited to 'posix/unistd.h')
-rw-r--r--posix/unistd.h193
1 files changed, 124 insertions, 69 deletions
diff --git a/posix/unistd.h b/posix/unistd.h
index e9754e1208..2b967bf706 100644
--- a/posix/unistd.h
+++ b/posix/unistd.h
@@ -1,20 +1,20 @@
 /* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+   This file is part of the GNU C Library.
 
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
 
-The GNU C Library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Library General Public License for more details.
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
 
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 /*
  *	POSIX Standard: 2.10 Symbolic Constants		<unistd.h>
@@ -28,7 +28,7 @@ Cambridge, MA 02139, USA.  */
 __BEGIN_DECLS
 
 /* These may be used to determine what facilities are present at compile time.
-   Their values can be obtained at run time from sysconf.  */
+   Their values can be obtained at run time from `sysconf'.  */
 
 /* POSIX Standard approved as IEEE Std 1003.1 as of August, 1988 and
    extended by P1003.1b (aka POSIX.4).  */
@@ -58,6 +58,24 @@ __BEGIN_DECLS
 /* Library is conformant to X/Open version 4.  */
 #define _XOPEN_VERSION	4
 
+/* Commands and utilities from XPG4 are available.  */
+#define _XOPEN_XCU_VERSION	4
+
+/* We are compatible with the old published standards as well.  */
+#define _XOPEN_XPG2	1
+#define _XOPEN_XPG3	1
+#define _XOPEN_XPG4	1
+
+/* The X/Open Unix extensions are available.  */
+#define _XOPEN_UNIX	1
+
+/* Encryption is present.  */
+#define	_XOPEN_CRYPT	1
+
+/* The enchanced internationalization capabilities accoring to XPG4.2
+   are present.  */
+#define	_XOPEN_ENH_I18N	1
+
 
 /* Get values of POSIX options:
 
@@ -94,6 +112,8 @@ __BEGIN_DECLS
    _POSIX_POLL			Implementation supports `poll' function.
    _POSIX_SELECT		Implementation supports `select' and `pselect'.
 
+   _XOPEN_SHM			Shared memory interface according to XPG4.2.
+
    If any of these symbols is defined as -1, the corresponding option is not
    true for any file.  If any is defined as other than -1, the corresponding
    option is true for all files.  If a symbol is not defined at all, the value
@@ -217,7 +237,14 @@ extern unsigned int alarm __P ((unsigned int __seconds));
    error, but if `sleep' returns SECONDS, it probably didn't work.  */
 extern unsigned int sleep __P ((unsigned int __seconds));
 
-#ifdef __USE_BSD
+#if defined(__USE_BSD) || defined(__USE_XOPEN_EXTENDED)
+/* Set an alarm to go off (generating a SIGALRM signal) in VALUE
+   microseconds.  If INTERVAL is nonzero, when the alarm goes off, the
+   timer is reset to go off every INTERVAL microseconds thereafter.
+   Returns the number of microseconds remaining before the alarm.  */
+extern unsigned int ualarm __P ((unsigned int __value,
+				 unsigned int __interval));
+
 /* Sleep USECONDS microseconds, or until a signal arrives that is not blocked
    or ignored.  Return value is not necessarily useful.  */
 extern unsigned int usleep __P ((unsigned int __useconds));
@@ -235,19 +262,28 @@ extern int __chown __P ((__const char *__file,
 extern int chown __P ((__const char *__file,
 		       __uid_t __owner, __gid_t __group));
 
-#ifdef	__USE_BSD
+#if defined(__USE_BSD) || defined(__USE_XOPEN_EXTENDED)
 /* Change the owner and group of the file that FD is open on.  */
 extern int __fchown __P ((int __fd,
 			  __uid_t __owner, __gid_t __group));
 extern int fchown __P ((int __fd,
 			__uid_t __owner, __gid_t __group));
-#endif /* Use BSD.  */
+
+
+/* Change owner and group of FILE, if it is a symbolic
+   link the ownership of the symbolic link is changed.  */
+extern int __lchown __P ((__const char *__file, __uid_t __owner,
+			  __gid_t __group));
+extern int lchown __P ((__const char *__file, __uid_t __owner,
+			__gid_t __group));
+
+#endif /* Use BSD || X/Open Unix.  */
 
 /* Change the process's working directory to PATH.  */
 extern int __chdir __P ((__const char *__path));
 extern int chdir __P ((__const char *__path));
 
-#ifdef __USE_BSD
+#if defined(__USE_BSD) || defined(__USE_XOPEN_EXTENDED)
 /* Change the process's working directory to the one FD is open on.  */
 extern int fchdir __P ((int __fd));
 #endif
@@ -279,7 +315,7 @@ char *__canonicalize_directory_name_internal __P ((__const char *__thisdir,
 						   size_t __size));
 #endif
 
-#ifdef	__USE_BSD
+#if defined(__USE_BSD) || defined(__USE_XOPEN_EXTENDED)
 /* Put the absolute pathname of the current working directory in BUF.
    If successful, return BUF.  If not, put an error message in
    BUF and return NULL.  BUF should be at least PATH_MAX bytes long.  */
@@ -337,7 +373,7 @@ extern int execvp __P ((__const char *__file, char *__const __argv[]));
 extern int execlp __P ((__const char *__file, __const char *__arg, ...));
 
 
-#ifdef __USE_MISC
+#if defined(__USE_MISC) || defined(__USE_XOPEN)
 /* Add INC to priority of the current process.  */
 extern int nice __P ((int __inc));
 #endif
@@ -388,11 +424,11 @@ extern int setpgid __P ((__pid_t __pid, __pid_t __pgid));
 
 /* Get the process group ID of process PID.  */
 extern __pid_t __getpgid __P ((__pid_t __pid));
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN_EXTENDED
 extern __pid_t getpgid __P ((__pid_t __pid));
 #endif
 
-#if defined (__USE_SVID) || defined (__USE_BSD)
+#if defined(__USE_SVID) || defined(__USE_BSD) || defined(__USE_XOPEN_EXTENDED)
 /* Both System V and BSD have `setpgrp' functions, but with different
    calling conventions.  The BSD function is the same as POSIX.1 `setpgid'
    (above).  The System V function takes no arguments and puts the calling
@@ -423,7 +459,7 @@ extern int setpgrp __P ((__pid_t __pid, __pid_t __pgrp));
 extern __pid_t __setsid __P ((void));
 extern __pid_t setsid __P ((void));
 
-#ifdef __USE_GNU
+#ifdef __USE_XOPEN_EXTENDED
 /* Return the session ID of the given process.  */
 extern __pid_t getsid __P ((__pid_t __pid));
 #endif
@@ -463,12 +499,14 @@ extern int group_member __P ((__gid_t __gid));
 extern int __setuid __P ((__uid_t __uid));
 extern int setuid __P ((__uid_t __uid));
 
-#ifdef	__USE_BSD
+#if defined(__USE_BSD) || defined(__USE_XOPEN_EXTENDED)
 /* Set the real user ID of the calling process to RUID,
    and the effective user ID of the calling process to EUID.  */
 extern int __setreuid __P ((__uid_t __ruid, __uid_t __euid));
 extern int setreuid __P ((__uid_t __ruid, __uid_t __euid));
+#endif
 
+#ifdef	__USE_BSD
 /* Set the effective user ID of the calling process to UID.  */
 extern int seteuid __P ((__uid_t __uid));
 #endif /* Use BSD.  */
@@ -480,12 +518,14 @@ extern int seteuid __P ((__uid_t __uid));
 extern int __setgid __P ((__gid_t __gid));
 extern int setgid __P ((__gid_t __gid));
 
-#ifdef	__USE_BSD
+#if defined(__USE_BSD) || defined(__USE_XOPEN_EXTENDED)
 /* Set the real group ID of the calling process to RGID,
    and the effective group ID of the calling process to EGID.  */
 extern int __setregid __P ((__gid_t __rgid, __gid_t __egid));
 extern int setregid __P ((__gid_t __rgid, __gid_t __egid));
+#endif
 
+#ifdef __USE_BSD
 /* Set the effective group ID of the calling process to GID.  */
 extern int setegid __P ((__gid_t __gid));
 #endif /* Use BSD.  */
@@ -497,7 +537,7 @@ extern int setegid __P ((__gid_t __gid));
 extern __pid_t __fork __P ((void));
 extern __pid_t fork __P ((void));
 
-#ifdef	__USE_BSD
+#if defined(__USE_BSD) || defined(__USE_XOPEN_EXTENDED)
 /* Clone the calling process, but without copying the whole address space.
    The the calling process is suspended until the the new process exits or is
    replaced by a call to `execve'.  Return -1 for errors, 0 to the new process,
@@ -522,7 +562,7 @@ extern int ttyname_r __P ((int __fd, char *__buf, size_t __buflen));
 extern int __isatty __P ((int __fd));
 extern int isatty __P ((int __fd));
 
-#ifdef __USE_BSD
+#if defined(__USE_BSD) || defined(__USE_XOPEN_EXTENDED)
 /* Return the index into the active-logins file (utmp) for
    the controlling terminal.  */
 extern int ttyslot __P ((void));
@@ -533,7 +573,7 @@ extern int ttyslot __P ((void));
 extern int __link __P ((__const char *__from, __const char *__to));
 extern int link __P ((__const char *__from, __const char *__to));
 
-#ifdef	__USE_BSD
+#if defined(__USE_BSD) || defined(__USE_XOPEN_EXTENDED)
 /* Make a symbolic link to FROM named TO.  */
 extern int __symlink __P ((__const char *__from, __const char *__to));
 extern int symlink __P ((__const char *__from, __const char *__to));
@@ -611,7 +651,7 @@ extern char *optarg;
 #endif
 
 
-#ifdef	__USE_BSD
+#if defined(__USE_BSD) || defined (__USE_XOPEN)
 
 /* Put the name of the current host in no more than LEN bytes of NAME.
    The result is null-terminated if LEN is large enough for the full
@@ -623,9 +663,6 @@ extern int gethostname __P ((char *__name, size_t __len));
    This call is restricted to the super-user.  */
 extern int sethostname __P ((__const char *__name, size_t __len));
 
-/* Return the current machine's Internet number.  */
-extern long int gethostid __P ((void));
-
 /* Set the current machine's Internet number to ID.
    This call is restricted to the super-user.  */
 extern int sethostid __P ((long int __id));
@@ -638,31 +675,9 @@ extern int getdomainname __P ((char *__name, size_t __len));
 extern int setdomainname __P ((__const char *__name, size_t __len));
 
 
-/* Return the number of bytes in a page.  This is the system's page size,
-   which is not necessarily the same as the hardware page size.  */
-extern size_t __getpagesize __P ((void));
-extern size_t getpagesize __P ((void));
-
-
-/* Return the maximum number of file descriptors
-   the current process could possibly have.  */
-extern int __getdtablesize __P ((void));
-extern int getdtablesize __P ((void));
-
-
-/* Truncate FILE to LENGTH bytes.  */
-extern int truncate __P ((__const char *__file, __off_t __length));
-
-/* Truncate the file FD is open on to LENGTH bytes.  */
-extern int ftruncate __P ((int __fd, __off_t __length));
-
-
 /* Make all changes done to FD actually appear on disk.  */
 extern int fsync __P ((int __fd));
 
-/* Make all changes done to all files actually appear on disk.  */
-extern int sync __P ((void));
-
 
 /* Revoke access permissions to all processes currently communicating
    with the control terminal, and then send a SIGHUP signal to the process
@@ -707,24 +722,40 @@ extern char *getpass __P ((__const char *__prompt));
    redirects stdin, stdout, and stderr to /dev/null.  */
 extern int daemon __P ((int __nochdir, int __noclose));
 
-#endif /* Use BSD.  */
+#endif /* Use BSD || X/Open.  */
 
 
-#ifdef __USE_MISC
+#if defined(__USE_BSD) || defined(__USE_XOPEN_EXTENDED)
+
+/* Return the current machine's Internet number.  */
+extern long int gethostid __P ((void));
 
-/* Generate a unique temporary file name from TEMPLATE.
-   The last six characters of TEMPLATE must be "XXXXXX";
-   they are replaced with a string that makes the file name unique.
-   Returns TEMPLATE, or a null pointer if it cannot get a unique file name.  */
-extern char *mktemp __P ((char *__template));
+/* Make all changes done to all files actually appear on disk.  */
+extern int sync __P ((void));
 
-/* Generate a unique temporary file name from TEMPLATE.
-   The last six characters of TEMPLATE must be "XXXXXX";
-   they are replaced with a string that makes the filename unique.
-   Returns a file descriptor open on the file for reading and writing,
-   or -1 if it cannot create a uniquely-named file.  */
-extern int mkstemp __P ((char *__template));
 
+/* Return the number of bytes in a page.  This is the system's page size,
+   which is not necessarily the same as the hardware page size.  */
+extern int __getpagesize __P ((void));
+extern int getpagesize __P ((void));
+
+
+/* Truncate FILE to LENGTH bytes.  */
+extern int truncate __P ((__const char *__file, __off_t __length));
+
+/* Truncate the file FD is open on to LENGTH bytes.  */
+extern int ftruncate __P ((int __fd, __off_t __length));
+
+
+/* Return the maximum number of file descriptors
+   the current process could possibly have.  */
+extern int __getdtablesize __P ((void));
+extern int getdtablesize __P ((void));
+
+#endif /* Use BSD || X/Open Unix.  */
+
+
+#if defined(__USE_MISC) || defined(__USE_XOPEN_EXTENDED)
 
 /* Set the end of accessible data space (aka "the break") to ADDR.
    Returns zero on success and -1 for errors (with errno set).  */
@@ -740,8 +771,10 @@ extern int brk __P ((__ptr_t __addr));
    returns (void *) -1 for errors (with errno set).  */
 extern __ptr_t __sbrk __P ((ptrdiff_t __delta));
 extern __ptr_t sbrk __P ((ptrdiff_t __delta));
+#endif
 
 
+#ifdef __USE_MISC
 /* Invoke `system call' number SYSNO, passing it the remaining arguments.
    This is completely system-dependent, and not often useful.
 
@@ -757,7 +790,8 @@ extern long int syscall __P ((long int __sysno, ...));
 #endif	/* Use misc.  */
 
 
-#if defined (__USE_MISC) && !defined (F_LOCK)
+#if (defined (__USE_MISC) || defined (__USE_XOPEN_EXTENDED)) \
+    && !defined (F_LOCK)
 /* NOTE: These declarations also appear in <fcntl.h>; be sure to keep both
    files consistent.  Some systems have them there and some here, and some
    software depends on the macros being defined without including both.  */
@@ -792,7 +826,6 @@ extern int lockf __P ((int __fd, int __cmd, __off_t __len));
    differ from its real IDs, or it is otherwise indicated that extra
    security should be used.  When this is set the dynamic linker ignores
    the various environment variables that normally affect it.  */
-
 extern int __libc_enable_secure;
 
 #endif
@@ -803,6 +836,28 @@ extern int __libc_enable_secure;
 extern int fdatasync __P ((int __fildes));
 #endif /* Use POSIX */
 
+
+/* XPG4.2 specifies that prototypes for the encryption functions must
+   be defined here.  */
+#ifdef	__USE_XOPEN
+/* Encrypt at most 8 characters from KEY using salt to perturb DES.  */
+extern char *crypt __P ((__const char *__key, __const char *__salt));
+
+/* Setup DES tables according KEY.  */
+extern void setkey __P ((__const char *__key));
+
+/* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt
+   block in place.  */
+extern void encrypt __P ((char *__block, int __edflag));
+
+
+/* Swab pairs bytes in the first N bytes of the area pointed to by
+   FROM and copy the result to TO.  The value of TO must not be in the
+   range [FROM - N + 1, FROM - 1].  If N is odd the first byte in FROM
+   is without partner.  */
+extern void swab __P ((__const char *__from, char *__to, ssize_t __n));
+#endif
+
 __END_DECLS
 
 #endif /* unistd.h  */