/usr/include/unistd.h


    1 /*	Copyright (c) 1988 AT&T	*/
    2 /*	  All Rights Reserved  	*/
    3 
    4 /*	THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T	*/
    5 /*	The copyright notice above does not evidence any   	*/
    6 /*	actual or intended publication of such source code.	*/
    7 
    8 /*
    9  * Copyright (c) 1996-1999 by Sun Microsystems, Inc.
   10  * All rights reserved.
   11  */
   12 
   13 #ifndef _UNISTD_H
   14 #define	_UNISTD_H
   15 
   16 #pragma ident	"@(#)unistd.h	1.58	99/11/11 SMI"	/* SVr4.0 1.26	*/
   17 
   18 #include <sys/feature_tests.h>
   19 
   20 #include <sys/types.h>
   21 #include <sys/unistd.h>
   22 
   23 #ifdef	__cplusplus
   24 extern "C" {
   25 #endif
   26 
   27 /* Symbolic constants for the "access" routine: */
   28 #define	R_OK	4	/* Test for Read permission */
   29 #define	W_OK	2	/* Test for Write permission */
   30 #define	X_OK	1	/* Test for eXecute permission */
   31 #define	F_OK	0	/* Test for existence of File */
   32 
   33 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
   34 	defined(_XPG4_2) || defined(__EXTENSIONS__)
   35 #define	F_ULOCK	0	/* Unlock a previously locked region */
   36 #define	F_LOCK	1	/* Lock a region for exclusive use */
   37 #define	F_TLOCK	2	/* Test and lock a region for exclusive use */
   38 #define	F_TEST	3	/* Test a region for other processes locks */
   39 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
   40 
   41 /* Symbolic constants for the "lseek" routine: */
   42 
   43 #ifndef	SEEK_SET
   44 #define	SEEK_SET	0	/* Set file pointer to "offset" */
   45 #endif
   46 
   47 #ifndef	SEEK_CUR
   48 #define	SEEK_CUR	1	/* Set file pointer to current plus "offset" */
   49 #endif
   50 
   51 #ifndef	SEEK_END
   52 #define	SEEK_END	2	/* Set file pointer to EOF plus "offset" */
   53 #endif
   54 
   55 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
   56 	defined(__EXTENSIONS__)
   57 /* Path names: */
   58 #define	GF_PATH	"/etc/group"	/* Path name of the "group" file */
   59 #define	PF_PATH	"/etc/passwd"	/* Path name of the "passwd" file */
   60 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
   61 
   62 /*
   63  * compile-time symbolic constants,
   64  * Support does not mean the feature is enabled.
   65  * Use pathconf/sysconf to obtain actual configuration value.
   66  */
   67 #define	_POSIX_ASYNC_IO			1
   68 #define	_POSIX_ASYNCHRONOUS_IO		1
   69 #define	_POSIX_FSYNC			1
   70 #define	_POSIX_JOB_CONTROL		1
   71 #define	_POSIX_MAPPED_FILES		1
   72 #define	_POSIX_MEMLOCK			1
   73 #define	_POSIX_MEMLOCK_RANGE		1
   74 #define	_POSIX_MEMORY_PROTECTION	1
   75 #define	_POSIX_MESSAGE_PASSING		1
   76 #define	_POSIX_PRIORITY_SCHEDULING	1
   77 #define	_POSIX_REALTIME_SIGNALS		1
   78 #define	_POSIX_SAVED_IDS		1
   79 #define	_POSIX_SEMAPHORES		1
   80 #define	_POSIX_SHARED_MEMORY_OBJECTS	1
   81 #define	_POSIX_SYNC_IO			1
   82 #define	_POSIX_SYNCHRONIZED_IO		1
   83 #define	_POSIX_TIMERS			1
   84 /*
   85  * POSIX.4a compile-time symbolic constants.
   86  */
   87 #define	_POSIX_THREAD_SAFE_FUNCTIONS	1
   88 #define	_POSIX_THREADS			1
   89 #define	_POSIX_THREAD_ATTR_STACKADDR	1
   90 #define	_POSIX_THREAD_ATTR_STACKSIZE	1
   91 #define	_POSIX_THREAD_PROCESS_SHARED	1
   92 #define	_POSIX_THREAD_PRIORITY_SCHEDULING	1
   93 
   94 /*
   95  * Support for the POSIX.1 mutex protocol attribute. For realtime applications
   96  * which need mutexes to support priority inheritance/ceiling.
   97  */
   98 #define	_POSIX_THREAD_PRIO_INHERIT	1
   99 #define	_POSIX_THREAD_PRIO_PROTECT	1
  100 
  101 #ifndef _POSIX_VDISABLE
  102 #define	_POSIX_VDISABLE		0
  103 #endif
  104 
  105 #ifndef NULL
  106 #if defined(_LP64) && !defined(__cplusplus)
  107 #define	NULL	0L
  108 #else
  109 #define	NULL	0
  110 #endif
  111 #endif
  112 
  113 #define	STDIN_FILENO	0
  114 #define	STDOUT_FILENO	1
  115 #define	STDERR_FILENO	2
  116 
  117 /*
  118  * Large File Summit-related announcement macros.  The system supports both
  119  * the additional and transitional Large File Summit interfaces.  (The final
  120  * two macros provide a finer granularity breakdown of _LFS64_LARGEFILE.)
  121  */
  122 #define	_LFS_LARGEFILE		1
  123 #define	_LFS64_LARGEFILE	1
  124 #define	_LFS64_STDIO		1
  125 #define	_LFS64_ASYNCHRONOUS_IO	1
  126 
  127 /* large file compilation environment setup */
  128 #if !defined(_LP64) && _FILE_OFFSET_BITS == 64
  129 #ifdef	__PRAGMA_REDEFINE_EXTNAME
  130 #pragma redefine_extname	ftruncate	ftruncate64
  131 #pragma redefine_extname	lseek		lseek64
  132 #pragma redefine_extname	pread		pread64
  133 #pragma redefine_extname	pwrite		pwrite64
  134 #pragma redefine_extname	truncate	truncate64
  135 #pragma redefine_extname	lockf		lockf64
  136 #pragma	redefine_extname	tell		tell64
  137 #else	/* __PRAGMA_REDEFINE_EXTNAME */
  138 #define	ftruncate			ftruncate64
  139 #define	lseek				lseek64
  140 #define	pread				pread64
  141 #define	pwrite				pwrite64
  142 #define	truncate			truncate64
  143 #define	lockf				lockf64
  144 #define	tell				tell64
  145 #endif	/* __PRAGMA_REDEFINE_EXTNAME */
  146 #endif	/* !_LP64 && _FILE_OFFSET_BITS == 64 */
  147 
  148 /* In the LP64 compilation environment, the APIs are already large file */
  149 #if defined(_LP64) && defined(_LARGEFILE64_SOURCE)
  150 #ifdef	__PRAGMA_REDEFINE_EXTNAME
  151 #pragma redefine_extname	ftruncate64	ftruncate
  152 #pragma redefine_extname	lseek64		lseek
  153 #pragma redefine_extname	pread64		pread
  154 #pragma redefine_extname	pwrite64	pwrite
  155 #pragma redefine_extname	truncate64	truncate
  156 #pragma redefine_extname	lockf64		lockf
  157 #pragma redefine_extname	tell64		tell
  158 #else	/* __PRAGMA_REDEFINE_EXTNAME */
  159 #define	ftruncate64			ftruncate
  160 #define	lseek64				lseek
  161 #define	pread64				pread
  162 #define	pwrite64			pwrite
  163 #define	truncate64			truncate
  164 #define	lockf64				lockf
  165 #define	tell64				tell
  166 #endif	/* __PRAGMA_REDEFINE_EXTNAME */
  167 #endif	/* _LP64 && _LARGEFILE64_SOURCE */
  168 
  169 #if defined(__STDC__)
  170 
  171 extern int access(const char *, int);
  172 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  173 	defined(__EXTENSIONS__)
  174 extern int acct(const char *);
  175 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  176 extern unsigned alarm(unsigned);
  177 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  178 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  179 extern int brk(void *);
  180 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  181 extern int chdir(const char *);
  182 extern int chown(const char *, uid_t, gid_t);
  183 #if (!defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)) || \
  184 	defined(__EXTENSIONS__)
  185 extern int chroot(const char *);
  186 #endif /* (!defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE))... */
  187 extern int close(int);
  188 #if (defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4)) || \
  189 	defined(__EXTENSIONS__)
  190 extern size_t confstr(int, char *, size_t);
  191 extern char *crypt(const char *, const char *);
  192 #endif /* (defined(XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4))... */
  193 #if !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \
  194 	defined(__EXTENSIONS__)
  195 extern char *ctermid(char *);
  196 #endif /* (!defined(_POSIX_C_SOURCE) ... */
  197 #ifdef _REENTRANT
  198 extern char *ctermid_r(char *);
  199 #endif /* _REENTRANT */
  200 extern char *cuserid(char *);
  201 extern int dup(int);
  202 extern int dup2(int, int);
  203 #if (defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4)) || \
  204 	defined(__EXTENSIONS__)
  205 extern void encrypt(char *, int);
  206 #endif /* (defined(XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4))... */
  207 extern int execl(const char *, const char *, ...);
  208 extern int execle(const char *, const char *, ...);
  209 extern int execlp(const char *, const char *, ...);
  210 extern int execv(const char *, char *const *);
  211 extern int execve(const char *, char *const *, char *const *);
  212 extern int execvp(const char *, char *const *);
  213 extern void _exit(int);
  214 /*
  215  * The following fattach prototype is duplicated in <stropts.h>. The
  216  * duplication is necessitated by XPG4.2 which requires the prototype
  217  * be defined in <stropts.h>.
  218  */
  219 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  220 	defined(__EXTENSIONS__)
  221 extern int fattach(int, const char *);
  222 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  223 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  224 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  225 extern int fchdir(int);
  226 extern int fchown(int, uid_t, gid_t);
  227 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  228 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  229 	defined(__EXTENSIONS__)
  230 extern int fchroot(int);
  231 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  232 #if !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE) || \
  233 	(_POSIX_C_SOURCE > 2) || defined(__EXTENSIONS__)
  234 extern int fdatasync(int);
  235 #endif /* (!defined(_POSIX_C_SOURCE) && ! defined(_XOPEN_SOURCE))... */
  236 /*
  237  * The following fdetach prototype is duplicated in <stropts.h>. The
  238  * duplication is necessitated by XPG4.2 which requires the prototype
  239  * be defined in <stropts.h>.
  240  */
  241 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  242 	defined(__EXTENSIONS__)
  243 extern int fdetach(const char *);
  244 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  245 extern pid_t fork(void);
  246 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  247 	defined(__EXTENSIONS__)
  248 extern pid_t fork1(void);
  249 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  250 extern long fpathconf(int, int);
  251 #if !defined(_POSIX_C_SOURCE) || (_POSIX_C_SOURCE > 2) || \
  252 	defined(__EXTENSIONS__)
  253 extern int fsync(int);
  254 #endif /* !defined(_POSIX_C_SOURCE) || (_POSIX_C_SOURCE > 2)... */
  255 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  256 	(defined(_LARGEFILE_SOURCE) && _FILE_OFFSET_BITS == 64) || \
  257 	(_POSIX_C_SOURCE > 2) || defined(_XPG4_2) || defined(__EXTENSIONS__)
  258 extern int ftruncate(int, off_t);
  259 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  260 extern char *getcwd(char *, size_t);
  261 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  262 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  263 extern int getdtablesize(void);
  264 #endif
  265 extern gid_t getegid(void);
  266 extern uid_t geteuid(void);
  267 extern gid_t getgid(void);
  268 extern int getgroups(int, gid_t *);
  269 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  270 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  271 extern long gethostid(void);
  272 #endif
  273 #if defined(_XPG4_2)
  274 extern int gethostname(char *, size_t);
  275 #elif  defined(__EXTENSIONS__) || \
  276 	(!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))
  277 extern int gethostname(char *, int);
  278 #endif
  279 extern char *getlogin(void);
  280 #if (defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4)) || \
  281 	defined(__EXTENSIONS__)
  282 extern int  getopt(int, char *const *, const char *);
  283 extern char *optarg;
  284 extern int  opterr, optind, optopt;
  285 extern char *getpass(const char *);
  286 #endif /* (defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4))... */
  287 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  288 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  289 extern int getpagesize(void);
  290 extern pid_t getpgid(pid_t);
  291 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  292 extern pid_t getpid(void);
  293 extern pid_t getppid(void);
  294 extern pid_t getpgrp(void);
  295 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  296 	defined(__EXTENSIONS__)
  297 char *gettxt(const char *, const char *);
  298 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  299 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  300 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  301 extern pid_t getsid(pid_t);
  302 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  303 extern uid_t getuid(void);
  304 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  305 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  306 extern char *getwd(char *);
  307 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  308 /*
  309  * The following ioctl prototype is duplicated in <stropts.h>. The
  310  * duplication is necessitated by XPG4.2 which requires the prototype
  311  * be defined in <stropts.h>.
  312  */
  313 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  314 	defined(__EXTENSIONS__)
  315 extern int ioctl(int, int, ...);
  316 #endif
  317 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  318 	defined(__EXTENSIONS__)
  319 extern int isaexec(const char *, char *const *, char *const *);
  320 #endif
  321 extern int isatty(int);
  322 extern int link(const char *, const char *);
  323 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  324 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  325 extern int lchown(const char *, uid_t, gid_t);
  326 #endif
  327 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  328 	defined(_XPG4_2) || defined(__EXTENSIONS__) || \
  329 	(defined(_LARGEFILE_SOURCE) && _FILE_OFFSET_BITS == 64)
  330 extern int lockf(int, int, off_t);
  331 #endif
  332 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  333 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  334 extern int readlink(const char *, char *, size_t);
  335 #endif
  336 extern off_t lseek(int, off_t, int);
  337 #if (!defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)) || \
  338 	defined(__EXTENSIONS__)
  339 extern int nice(int);
  340 #endif /* (!defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE))... */
  341 extern long pathconf(const char *, int);
  342 extern int pause(void);
  343 extern int pipe(int *);
  344 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  345 	defined(__EXTENSIONS__)
  346 extern offset_t llseek(int, offset_t, int);
  347 #endif
  348 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  349 	(defined(_LARGEFILE_SOURCE) && _FILE_OFFSET_BITS == 64) || \
  350 	defined(__EXTENSIONS__)
  351 extern off_t tell(int);
  352 #endif
  353 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  354 	defined(__EXTENSIONS__)
  355 extern int mincore(caddr_t, size_t, char *);
  356 #endif
  357 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  358 	(defined(_LARGEFILE_SOURCE) && _FILE_OFFSET_BITS == 64) || \
  359 	defined(_XPG5) || defined(__EXTENSIONS__)
  360 extern ssize_t pread(int, void *, size_t, off_t);
  361 #endif
  362 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  363 	defined(__EXTENSIONS__)
  364 extern void profil(unsigned short *, size_t, unsigned long, unsigned int);
  365 #endif
  366 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  367 	(_POSIX_C_SOURCE > 2) || defined(__EXTENSIONS__)
  368 extern int pthread_atfork(void (*) (void), void (*) (void), void (*) (void));
  369 #endif
  370 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  371 	defined(__EXTENSIONS__)
  372 extern long ptrace(int, pid_t, long, long);
  373 #endif
  374 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  375 	(defined(_LARGEFILE_SOURCE) && _FILE_OFFSET_BITS == 64) || \
  376 	defined(_XPG5) || defined(__EXTENSIONS__)
  377 extern ssize_t pwrite(int, const void *, size_t, off_t);
  378 #endif
  379 extern ssize_t read(int, void *, size_t);
  380 #if (!defined(_POSIX_C_SOURCE) && (_XOPEN_VERSION - 0 < 4)) || \
  381 	defined(__EXTENSIONS__)
  382 extern int rename(const char *, const char *);
  383 #endif /* (!defined(_POSIX_C_SOURCE) && (_XOPEN_VERSION - 0 < 4))... */
  384 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  385 	defined(__EXTENSIONS__)
  386 extern int resolvepath(const char *, char *, size_t);
  387 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  388 extern int rmdir(const char *);
  389 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  390 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  391 extern void *sbrk(intptr_t);
  392 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  393 extern int setgid(gid_t);
  394 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  395 	defined(__EXTENSIONS__)
  396 extern int setegid(gid_t);
  397 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  398 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  399 	defined(__EXTENSIONS__)
  400 extern int setgroups(int, const gid_t *);
  401 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  402 extern int setpgid(pid_t, pid_t);
  403 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  404 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  405 extern pid_t setpgrp(void);
  406 extern int setregid(gid_t, gid_t);
  407 extern int setreuid(uid_t, uid_t);
  408 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  409 extern pid_t setsid(void);
  410 extern int setuid(uid_t);
  411 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  412 	defined(__EXTENSIONS__)
  413 extern int seteuid(uid_t);
  414 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  415 extern unsigned sleep(unsigned);
  416 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  417 	defined(__EXTENSIONS__)
  418 extern int stime(const time_t *);
  419 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  420 #if defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4)
  421 /* __EXTENSIONS__ makes the SVID Third Edition prototype in stdlib.h visible */
  422 extern void swab(const void *, void *, ssize_t);
  423 #endif /* defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4) */
  424 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  425 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  426 extern int symlink(const char *, const char *);
  427 extern void sync(void);
  428 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  429 extern long sysconf(int);
  430 #if defined(_XPG5)
  431 #ifdef __PRAGMA_REDEFINE_EXTNAME
  432 #pragma redefine_extname sysconf __sysconf_xpg5
  433 #else /* __PRAGMA_REDEFINE_EXTNAME */
  434 extern long __sysconf_xpg5(int);
  435 #define	sysconf __sysconf_xpg5
  436 #endif  /* __PRAGMA_REDEFINE_EXTNAME */
  437 #endif /* defined(_XPG5) */
  438 extern pid_t tcgetpgrp(int);
  439 extern int tcsetpgrp(int, pid_t);
  440 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  441 	defined(__EXTENSIONS__)
  442 extern off_t tell(int);
  443 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  444 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  445 	(defined(_LARGEFILE_SOURCE) && _FILE_OFFSET_BITS == 64) || \
  446 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  447 extern int truncate(const char *, off_t);
  448 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  449 extern char *ttyname(int);
  450 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  451 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  452 extern useconds_t ualarm(useconds_t, useconds_t);
  453 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  454 extern int unlink(const char *);
  455 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  456 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  457 extern int usleep(useconds_t);
  458 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  459 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  460 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  461 extern pid_t vfork(void);
  462 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  463 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  464 	defined(__EXTENSIONS__)
  465 extern void vhangup(void);
  466 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  467 extern ssize_t write(int, const void *, size_t);
  468 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  469 	defined(__EXTENSIONS__)
  470 extern void yield(void);
  471 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  472 
  473 /* transitional large file interface versions */
  474 #if	defined(_LARGEFILE64_SOURCE) && !((_FILE_OFFSET_BITS == 64) && \
  475 	    !defined(__PRAGMA_REDEFINE_EXTNAME))
  476 extern int ftruncate64(int, off64_t);
  477 extern off64_t lseek64(int, off64_t, int);
  478 extern ssize_t	pread64(int, void *, size_t, off64_t);
  479 extern ssize_t	pwrite64(int, const void *, size_t, off64_t);
  480 extern off64_t	tell64(int);
  481 extern int	truncate64(const char *, off64_t);
  482 extern int	lockf64(int, int, off64_t);
  483 #endif	/* _LARGEFILE64_SOURCE */
  484 
  485 #else  /* __STDC__ */
  486 
  487 extern int access();
  488 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  489 	defined(__EXTENSIONS__)
  490 extern int acct();
  491 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  492 extern unsigned alarm();
  493 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  494 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  495 extern int brk();
  496 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  497 extern int chdir();
  498 extern int chown();
  499 #if (!defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)) || \
  500 	defined(__EXTENSIONS__)
  501 extern int chroot();
  502 #endif /* (!defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE))... */
  503 extern int close();
  504 #if (defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4)) || \
  505 	defined(__EXTENSIONS__)
  506 extern size_t confstr();
  507 extern char *crypt();
  508 #endif /* (defined(XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4))... */
  509 #if !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \
  510 	defined(__EXTENSIONS__)
  511 extern char *ctermid();
  512 #endif /* (!defined(_POSIX_C_SOURCE) ... */
  513 #ifdef _REENTRANT
  514 extern char *ctermid_r();
  515 #endif /* _REENTRANT */
  516 extern char *cuserid();
  517 extern int dup();
  518 extern int dup2();
  519 #if (defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4)) || \
  520 	defined(__EXTENSIONS__)
  521 extern void encrypt();
  522 #endif /* (defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4))... */
  523 extern int execl();
  524 extern int execle();
  525 extern int execlp();
  526 extern int execv();
  527 extern int execve();
  528 extern int execvp();
  529 extern void _exit();
  530 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  531 	defined(__EXTENSIONS__)
  532 extern int fattach();
  533 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  534 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  535 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  536 extern int fchdir();
  537 extern int fchown();
  538 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) ... */
  539 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  540 	defined(__EXTENSIONS__)
  541 extern int fchroot();
  542 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  543 #if !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE) || \
  544 	(_POSIX_C_SOURCE > 2) || defined(__EXTENSIONS__)
  545 extern int fdatasync();
  546 #endif /* (!defined(_POSIX_C_SOURCE) && ! defined(_XOPEN_SOURCE))... */
  547 #if !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)
  548 extern int fdetach();
  549 #endif /* !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE) */
  550 extern pid_t fork();
  551 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  552 	defined(__EXTENSIONS__)
  553 extern pid_t fork1();
  554 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  555 extern long fpathconf();
  556 #if !defined(_POSIX_C_SOURCE) || (_POSIX_C_SOURCE > 2) || \
  557 	defined(__EXTENSIONS__)
  558 extern int fsync();
  559 #endif /* !defined(_POSIX_C_SOURCE) || (_POSIX_C_SOURCE > 2)... */
  560 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  561 	(defined(_LARGEFILE_SOURCE) && _FILE_OFFSET_BITS == 64) || \
  562 	(_POSIX_C_SOURCE > 2) || defined(_XPG4_2) || defined(__EXTENSIONS__)
  563 extern int ftruncate();
  564 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  565 extern char *getcwd();
  566 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  567 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  568 extern int getdtablesize();
  569 #endif
  570 extern gid_t getegid();
  571 extern uid_t geteuid();
  572 extern gid_t getgid();
  573 extern int getgroups();
  574 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  575 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  576 extern long gethostid();
  577 #endif
  578 extern char *getlogin();
  579 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  580 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  581 #if (defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4)) || \
  582 	defined(__EXTENSIONS__)
  583 extern int  getopt();
  584 extern char *optarg;
  585 extern int  opterr, optind, optopt;
  586 extern char *getpass();
  587 #endif /* (defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4))... */
  588 extern int getpagesize();
  589 extern pid_t getpgid();
  590 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  591 extern pid_t getpid();
  592 extern pid_t getppid();
  593 extern pid_t getpgrp();
  594 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  595 	defined(__EXTENSIONS__)
  596 char *gettxt();
  597 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  598 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  599 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  600 extern pid_t getsid();
  601 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  602 extern uid_t getuid();
  603 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  604 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  605 extern char *getwd();
  606 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  607 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  608 	defined(__EXTENSIONS__)
  609 extern int ioctl();
  610 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  611 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  612 	defined(__EXTENSIONS__)
  613 extern int isaexec();
  614 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  615 extern int isatty();
  616 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  617 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  618 extern int lchown();
  619 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  620 extern int link();
  621 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  622 	defined(__EXTENSIONS__)
  623 extern offset_t llseek();
  624 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  625 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  626 	defined(_XPG4_2) || defined(__EXTENSIONS__) || \
  627 	(defined(_LARGEFILE_SOURCE) && _FILE_OFFSET_BITS == 64)
  628 extern int lockf();
  629 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  630 extern off_t lseek();
  631 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  632 	defined(__EXTENSIONS__)
  633 extern int mincore();
  634 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  635 #if (!defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)) || \
  636 	defined(__EXTENSIONS__)
  637 extern int nice();
  638 #endif /* (!defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE))... */
  639 extern long pathconf();
  640 extern int pause();
  641 extern int pipe();
  642 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  643 	(defined(_LARGEFILE_SOURCE) && _FILE_OFFSET_BITS == 64) || \
  644 	defined(_XPG5) || defined(__EXTENSIONS__)
  645 extern ssize_t pread();
  646 #endif
  647 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  648 	defined(__EXTENSIONS__)
  649 extern void profil();
  650 extern long ptrace();
  651 #endif
  652 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  653 	(_POSIX_C_SOURCE > 2) || defined(__EXTENSIONS__)
  654 extern int pthread_atfork();
  655 #endif
  656 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  657 	(defined(_LARGEFILE_SOURCE) && _FILE_OFFSET_BITS == 64) || \
  658 	defined(_XPG5) || defined(__EXTENSIONS__)
  659 extern ssize_t pwrite();
  660 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  661 extern ssize_t read();
  662 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  663 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  664 extern int readlink();
  665 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  666 #if (!defined(_POSIX_C_SOURCE) && (_XOPEN_VERSION - 0 < 4)) || \
  667 	defined(__EXTENSIONS__)
  668 extern int rename();
  669 #endif /* (!defined(_POSIX_C_SOURCE) && (_XOPEN_VERSION - 0 < 4))... */
  670 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  671 	defined(__EXTENSIONS__)
  672 extern int resolvepath();
  673 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  674 extern int rmdir();
  675 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  676 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  677 extern void *sbrk();
  678 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  679 extern int setgid();
  680 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  681 	defined(__EXTENSIONS__)
  682 extern int setegid();
  683 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  684 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  685 	defined(__EXTENSIONS__)
  686 extern int setgroups();
  687 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  688 extern int setpgid();
  689 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  690 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  691 extern pid_t setpgrp();
  692 extern int setregid();
  693 extern int setreuid();
  694 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  695 extern pid_t setsid();
  696 extern int setuid();
  697 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  698 	defined(__EXTENSIONS__)
  699 extern int seteuid();
  700 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  701 extern unsigned sleep();
  702 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  703 	defined(__EXTENSIONS__)
  704 extern int stime();
  705 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  706 #if defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4)
  707 /* __EXTENSIONS__ makes the SVID Third Edition prototype in stdlib.h visible */
  708 extern void swab();
  709 #endif /* defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4) */
  710 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  711 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  712 extern int symlink();
  713 extern void sync();
  714 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  715 extern long sysconf();
  716 #if defined(_XPG5)
  717 #ifdef __PRAGMA_REDEFINE_EXTNAME
  718 #pragma redefine_extname sysconf __sysconf_xpg5
  719 #else /* __PRAGMA_REDEFINE_EXTNAME */
  720 extern long __sysconf_xpg5();
  721 #define	sysconf __sysconf_xpg5
  722 #endif  /* __PRAGMA_REDEFINE_EXTNAME */
  723 #endif	/* defined(_XPG5) */
  724 extern pid_t tcgetpgrp();
  725 extern int tcsetpgrp();
  726 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  727 	(defined(_LARGEFILE_SOURCE) && _FILE_OFFSET_BITS == 64) || \
  728 	defined(__EXTENSIONS__)
  729 extern off_t tell();
  730 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  731 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  732 	(defined(_LARGEFILE_SOURCE) && _FILE_OFFSET_BITS == 64) || \
  733 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  734 extern int truncate();
  735 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  736 extern char *ttyname();
  737 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  738 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  739 extern useconds_t ualarm();
  740 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  741 extern int unlink();
  742 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  743 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  744 extern int usleep();
  745 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  746 #if !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE) || \
  747 	defined(_XPG4_2) || defined(__EXTENSIONS__)
  748 extern pid_t vfork();
  749 #endif /* !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE) */
  750 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  751 	defined(__EXTENSIONS__)
  752 extern void vhangup();
  753 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) ... */
  754 extern ssize_t write();
  755 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  756 	defined(__EXTENSIONS__)
  757 extern void yield();
  758 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  759 
  760 /* transitional large file interface versions */
  761 #if	defined(_LARGEFILE64_SOURCE) && !((_FILE_OFFSET_BITS == 64) && \
  762 	    !defined(__PRAGMA_REDEFINE_EXTNAME))
  763 extern int ftruncate64();
  764 extern off64_t lseek64();
  765 extern ssize_t pread64();
  766 extern ssize_t pwrite64();
  767 extern off64_t tell64();
  768 extern int truncate64();
  769 extern int lockf64();
  770 #endif	/* _LARGEFILE64_SOURCE */
  771 
  772 #endif /* __STDC__ */
  773 
  774 /*
  775  * This atrocity is necessary on sparc because registers modified
  776  * by the child get propagated back to the parent via the window
  777  * save/restore mechanism.
  778  */
  779 #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
  780 	defined(__EXTENSIONS__)
  781 #if defined(__sparc)
  782 #pragma unknown_control_flow(vfork)
  783 #endif
  784 #endif /* (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE))... */
  785 
  786 /*
  787  * getlogin_r() & ttyname_r() prototypes are defined here.
  788  */
  789 
  790 /*
  791  * Previous releases of Solaris, starting at 2.3, provided definitions of
  792  * various functions as specified in POSIX.1c, Draft 6.  For some of these
  793  * functions, the final POSIX 1003.1c standard had a different number of
  794  * arguments and return values.
  795  *
  796  * The following segment of this header provides support for the standard
  797  * interfaces while supporting applications written under earlier
  798  * releases.  The application defines appropriate values of the feature
  799  * test macros _POSIX_C_SOURCE and _POSIX_PTHREAD_SEMANTICS to indicate
  800  * whether it was written to expect the Draft 6 or standard versions of
  801  * these interfaces, before including this header.  This header then
  802  * provides a mapping from the source version of the interface to an
  803  * appropriate binary interface.  Such mappings permit an application
  804  * to be built from libraries and objects which have mixed expectations
  805  * of the definitions of these functions.
  806  *
  807  * For applications using the Draft 6 definitions, the binary symbol is
  808  * the same as the source symbol, and no explicit mapping is needed.  For
  809  * the standard interface, the function func() is mapped to the binary
  810  * symbol _posix_func().  The preferred mechanism for the remapping is a
  811  * compiler #pragma.  If the compiler does not provide such a #pragma, the
  812  * header file defines a static function func() which calls the
  813  * _posix_func() version; this is required if the application needs to
  814  * take the address of func().
  815  *
  816  * NOTE: Support for the Draft 6 definitions is provided for compatibility
  817  * only.  New applications/libraries should use the standard definitions.
  818  */
  819 
  820 #if	defined(__EXTENSIONS__) || defined(_REENTRANT) || \
  821 	(_POSIX_C_SOURCE - 0 >= 199506L) || defined(_POSIX_PTHREAD_SEMANTICS)
  822 
  823 #if	defined(__STDC__)
  824 
  825 #if	(_POSIX_C_SOURCE - 0 >= 199506L) || defined(_POSIX_PTHREAD_SEMANTICS)
  826 
  827 #ifdef __PRAGMA_REDEFINE_EXTNAME
  828 extern int getlogin_r(char *, int);
  829 extern int ttyname_r(int, char *, size_t);
  830 #pragma redefine_extname getlogin_r __posix_getlogin_r
  831 #pragma redefine_extname ttyname_r __posix_ttyname_r
  832 #else  /* __PRAGMA_REDEFINE_EXTNAME */
  833 
  834 static int
  835 getlogin_r(char *__name, int __len)
  836 {
  837 	extern int __posix_getlogin_r(char *, int);
  838 	return (__posix_getlogin_r(__name, __len));
  839 }
  840 static int
  841 ttyname_r(int __fildes, char *__buf, size_t __size)
  842 {
  843 	extern int __posix_ttyname_r(int, char *, size_t);
  844 	return (__posix_ttyname_r(__fildes, __buf, __size));
  845 }
  846 #endif /* __PRAGMA_REDEFINE_EXTNAME */
  847 
  848 #else  /* (_POSIX_C_SOURCE - 0 >= 199506L) || ... */
  849 
  850 extern char *getlogin_r(char *, int);
  851 extern char *ttyname_r(int, char *, int);
  852 
  853 #endif /* (_POSIX_C_SOURCE - 0 >= 199506L) || ... */
  854 
  855 #else  /* __STDC__ */
  856 
  857 #if (_POSIX_C_SOURCE - 0 >= 199506L) || defined(_POSIX_PTHREAD_SEMANTICS)
  858 
  859 #ifdef __PRAGMA_REDEFINE_EXTNAME
  860 extern int getlogin_r();
  861 extern int ttyname_r();
  862 #pragma redefine_extname getlogin_r __posix_getlogin_r
  863 #pragma redefine_extname ttyname_r __posix_ttyname_r
  864 #else  /* __PRAGMA_REDEFINE_EXTNAME */
  865 
  866 static int
  867 getlogin_r(__name, __len)
  868 	char *__name;
  869 	int __len;
  870 {
  871 	extern int __posix_getlogin_r();
  872 	return (__posix_getlogin_r(__name, __len));
  873 }
  874 static int
  875 ttyname_r(__fildes, __buf, __size)
  876 	int __fildes;
  877 	char *__buf;
  878 	size_t __size;
  879 {
  880 	extern int __posix_ttyname_r();
  881 	return (__posix_ttyname_r(__fildes, __buf, __size));
  882 }
  883 #endif /* __PRAGMA_REDEFINE_EXTNAME */
  884 
  885 #else  /* (_POSIX_C_SOURCE - 0 >= 199506L) || ... */
  886 
  887 extern char *getlogin_r();
  888 extern char *ttyname_r();
  889 
  890 #endif /* (_POSIX_C_SOURCE - 0 >= 199506L) || ... */
  891 
  892 #endif /* __STDC__ */
  893 
  894 #endif /* defined(__EXTENSIONS__) || (__STDC__ == 0 ... */
  895 
  896 #ifdef	__cplusplus
  897 }
  898 #endif
  899 
  900 #endif /* _UNISTD_H */