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 
    19 
    20 #include 
    21 #include 
    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 . The
    216  * duplication is necessitated by XPG4.2 which requires the prototype
    217  * be defined in .
    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 . The
    238  * duplication is necessitated by XPG4.2 which requires the prototype
    239  * be defined in .
    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 . The
    310  * duplication is necessitated by XPG4.2 which requires the prototype
    311  * be defined in .
    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 */