OSDN Git Service

netdb.h: partial update, adding some __USE_MISC/__USE_GNU guards
[uclinux-h8/uClibc.git] / include / unistd.h
1 /* Copyright (C) 1991-2002,2003,2004,2005,2006 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3
4    The GNU C Library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Lesser General Public
6    License as published by the Free Software Foundation; either
7    version 2.1 of the License, or (at your option) any later version.
8
9    The GNU C Library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Lesser General Public License for more details.
13
14    You should have received a copy of the GNU Lesser General Public
15    License along with the GNU C Library; if not, write to the Free
16    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17    02111-1307 USA.  */
18
19 /*
20  *      POSIX Standard: 2.10 Symbolic Constants         <unistd.h>
21  */
22
23 #ifndef _UNISTD_H
24 #define _UNISTD_H       1
25
26 #include <features.h>
27
28 __BEGIN_DECLS
29
30 /* These may be used to determine what facilities are present at compile time.
31    Their values can be obtained at run time from `sysconf'.  */
32
33 /* POSIX Standard approved as ISO/IEC 9945-1 as of December 2001.  */
34 #define _POSIX_VERSION  200112L
35
36 /* These are not #ifdef __USE_POSIX2 because they are
37    in the theoretically application-owned namespace.  */
38
39 /* The utilities on GNU systems also correspond to this version.  */
40 #define _POSIX2_VERSION 200112L
41
42 /* If defined, the implementation supports the
43    C Language Bindings Option.  */
44 #define _POSIX2_C_BIND  200112L
45
46 /* If defined, the implementation supports the
47    C Language Development Utilities Option.  */
48 #define _POSIX2_C_DEV   200112L
49
50 /* If defined, the implementation supports the
51    Software Development Utilities Option.  */
52 #define _POSIX2_SW_DEV  200112L
53
54 #if 0 /* uClibc does not provide the utility */
55 /* If defined, the implementation supports the
56    creation of locales with the localedef utility.  */
57 #define _POSIX2_LOCALEDEF       200112L
58 #endif
59
60 /* X/Open version number to which the library conforms.  It is selectable.  */
61 #ifdef __USE_UNIX98
62 # define _XOPEN_VERSION 500
63 #else
64 # define _XOPEN_VERSION 4
65 #endif
66
67 /* Commands and utilities from XPG4 are available.  */
68 #define _XOPEN_XCU_VERSION      4
69
70 /* We are compatible with the old published standards as well.  */
71 #define _XOPEN_XPG2     1
72 #define _XOPEN_XPG3     1
73 #define _XOPEN_XPG4     1
74
75 /* The X/Open Unix extensions are available.  */
76 #define _XOPEN_UNIX     1
77
78 /* Encryption is present.  */
79 #define _XOPEN_CRYPT    1
80
81 /* The enhanced internationalization capabilities according to XPG4.2
82    are present.  */
83 #define _XOPEN_ENH_I18N 1
84
85 /* The legacy interfaces are also available.  */
86 #define _XOPEN_LEGACY   1
87
88
89 /* Get values of POSIX options:
90
91    If these symbols are defined, the corresponding features are
92    always available.  If not, they may be available sometimes.
93    The current values can be obtained with `sysconf'.
94
95    _POSIX_JOB_CONTROL           Job control is supported.
96    _POSIX_SAVED_IDS             Processes have a saved set-user-ID
97                                 and a saved set-group-ID.
98    _POSIX_REALTIME_SIGNALS      Real-time, queued signals are supported.
99    _POSIX_PRIORITY_SCHEDULING   Priority scheduling is supported.
100    _POSIX_TIMERS                POSIX.4 clocks and timers are supported.
101    _POSIX_ASYNCHRONOUS_IO       Asynchronous I/O is supported.
102    _POSIX_PRIORITIZED_IO        Prioritized asynchronous I/O is supported.
103    _POSIX_SYNCHRONIZED_IO       Synchronizing file data is supported.
104    _POSIX_FSYNC                 The fsync function is present.
105    _POSIX_MAPPED_FILES          Mapping of files to memory is supported.
106    _POSIX_MEMLOCK               Locking of all memory is supported.
107    _POSIX_MEMLOCK_RANGE         Locking of ranges of memory is supported.
108    _POSIX_MEMORY_PROTECTION     Setting of memory protections is supported.
109    _POSIX_MESSAGE_PASSING       POSIX.4 message queues are supported.
110    _POSIX_SEMAPHORES            POSIX.4 counting semaphores are supported.
111    _POSIX_SHARED_MEMORY_OBJECTS POSIX.4 shared memory objects are supported.
112    _POSIX_THREADS               POSIX.1c pthreads are supported.
113    _POSIX_THREAD_ATTR_STACKADDR Thread stack address attribute option supported.
114    _POSIX_THREAD_ATTR_STACKSIZE Thread stack size attribute option supported.
115    _POSIX_THREAD_SAFE_FUNCTIONS Thread-safe functions are supported.
116    _POSIX_THREAD_PRIORITY_SCHEDULING
117                                 POSIX.1c thread execution scheduling supported.
118    _POSIX_THREAD_PRIO_INHERIT   Thread priority inheritance option supported.
119    _POSIX_THREAD_PRIO_PROTECT   Thread priority protection option supported.
120    _POSIX_THREAD_PROCESS_SHARED Process-shared synchronization supported.
121    _POSIX_PII                   Protocol-independent interfaces are supported.
122    _POSIX_PII_XTI               XTI protocol-indep. interfaces are supported.
123    _POSIX_PII_SOCKET            Socket protocol-indep. interfaces are supported.
124    _POSIX_PII_INTERNET          Internet family of protocols supported.
125    _POSIX_PII_INTERNET_STREAM   Connection-mode Internet protocol supported.
126    _POSIX_PII_INTERNET_DGRAM    Connectionless Internet protocol supported.
127    _POSIX_PII_OSI               ISO/OSI family of protocols supported.
128    _POSIX_PII_OSI_COTS          Connection-mode ISO/OSI service supported.
129    _POSIX_PII_OSI_CLTS          Connectionless ISO/OSI service supported.
130    _POSIX_POLL                  Implementation supports `poll' function.
131    _POSIX_SELECT                Implementation supports `select' and `pselect'.
132
133    _XOPEN_REALTIME              X/Open realtime support is available.
134    _XOPEN_REALTIME_THREADS      X/Open realtime thread support is available.
135    _XOPEN_SHM                   Shared memory interface according to XPG4.2.
136
137    _XBS5_ILP32_OFF32            Implementation provides environment with 32-bit
138                                 int, long, pointer, and off_t types.
139    _XBS5_ILP32_OFFBIG           Implementation provides environment with 32-bit
140                                 int, long, and pointer and off_t with at least
141                                 64 bits.
142    _XBS5_LP64_OFF64             Implementation provides environment with 32-bit
143                                 int, and 64-bit long, pointer, and off_t types.
144    _XBS5_LPBIG_OFFBIG           Implementation provides environment with at
145                                 least 32 bits int and long, pointer, and off_t
146                                 with at least 64 bits.
147
148    If any of these symbols is defined as -1, the corresponding option is not
149    true for any file.  If any is defined as other than -1, the corresponding
150    option is true for all files.  If a symbol is not defined at all, the value
151    for a specific file can be obtained from `pathconf' and `fpathconf'.
152
153    _POSIX_CHOWN_RESTRICTED      Only the super user can use `chown' to change
154                                 the owner of a file.  `chown' can only be used
155                                 to change the group ID of a file to a group of
156                                 which the calling process is a member.
157    _POSIX_NO_TRUNC              Pathname components longer than
158                                 NAME_MAX generate an error.
159    _POSIX_VDISABLE              If defined, if the value of an element of the
160                                 `c_cc' member of `struct termios' is
161                                 _POSIX_VDISABLE, no character will have the
162                                 effect associated with that element.
163    _POSIX_SYNC_IO               Synchronous I/O may be performed.
164    _POSIX_ASYNC_IO              Asynchronous I/O may be performed.
165    _POSIX_PRIO_IO               Prioritized Asynchronous I/O may be performed.
166
167    Support for the Large File Support interface is not generally available.
168    If it is available the following constants are defined to one.
169    _LFS64_LARGEFILE             Low-level I/O supports large files.
170    _LFS64_STDIO                 Standard I/O supports large files.
171    */
172
173 #include <bits/posix_opt.h>
174 #include <bits/uClibc_posix_opt.h>
175
176 /* Get the environment definitions from Unix98.  */
177 #ifdef __USE_UNIX98
178 # include <bits/environments.h>
179 #endif
180
181 /* Standard file descriptors.  */
182 #define STDIN_FILENO    0       /* Standard input.  */
183 #define STDOUT_FILENO   1       /* Standard output.  */
184 #define STDERR_FILENO   2       /* Standard error output.  */
185
186
187 /* All functions that are not declared anywhere else.  */
188
189 #include <bits/types.h>
190
191 #ifndef __ssize_t_defined
192 typedef __ssize_t ssize_t;
193 # define __ssize_t_defined
194 #endif
195
196 #define __need_size_t
197 #define __need_NULL
198 #include <stddef.h>
199
200 #if defined __USE_XOPEN || defined __USE_XOPEN2K
201 /* The Single Unix specification says that some more types are
202    available here.  */
203 # ifndef __gid_t_defined
204 typedef __gid_t gid_t;
205 #  define __gid_t_defined
206 # endif
207
208 # ifndef __uid_t_defined
209 typedef __uid_t uid_t;
210 #  define __uid_t_defined
211 # endif
212
213 # ifndef __off_t_defined
214 #  ifndef __USE_FILE_OFFSET64
215 typedef __off_t off_t;
216 #  else
217 typedef __off64_t off_t;
218 #  endif
219 #  define __off_t_defined
220 # endif
221 # if defined __USE_LARGEFILE64 && !defined __off64_t_defined
222 typedef __off64_t off64_t;
223 #  define __off64_t_defined
224 # endif
225
226 # ifndef __useconds_t_defined
227 typedef __useconds_t useconds_t;
228 #  define __useconds_t_defined
229 # endif
230
231 # ifndef __pid_t_defined
232 typedef __pid_t pid_t;
233 #  define __pid_t_defined
234 # endif
235 #endif  /* X/Open */
236
237 #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
238 # ifndef __intptr_t_defined
239 typedef __intptr_t intptr_t;
240 #  define __intptr_t_defined
241 # endif
242 #endif
243
244 #if defined __USE_BSD || defined __USE_XOPEN
245 # ifndef __socklen_t_defined
246 typedef __socklen_t socklen_t;
247 #  define __socklen_t_defined
248 # endif
249 #endif
250
251 /* Values for the second argument to access.
252    These may be OR'd together.  */
253 #define R_OK    4               /* Test for read permission.  */
254 #define W_OK    2               /* Test for write permission.  */
255 #define X_OK    1               /* Test for execute permission.  */
256 #define F_OK    0               /* Test for existence.  */
257
258 /* Test for access to NAME using the real UID and real GID.  */
259 extern int access (__const char *__name, int __type) __THROW __nonnull ((1));
260
261 #if 0 /*def __USE_GNU*/
262 /* Test for access to NAME using the effective UID and GID
263    (as normal file operations use).  */
264 extern int euidaccess (__const char *__name, int __type)
265      __THROW __nonnull ((1));
266
267 /* An alias for `euidaccess', used by some other systems.  */
268 extern int eaccess (__const char *__name, int __type)
269      __THROW __nonnull ((1));
270 #endif
271
272 #ifdef __USE_ATFILE
273 /* Test for access to FILE relative to the directory FD is open on.
274    If AT_EACCESS is set in FLAG, then use effective IDs like `eaccess',
275    otherwise use real IDs like `access'.  */
276 extern int faccessat (int __fd, __const char *__file, int __type, int __flag)
277      __THROW __nonnull ((2)) __wur;
278 #endif /* Use GNU.  */
279
280
281 /* Values for the WHENCE argument to lseek.  */
282 #ifndef _STDIO_H                /* <stdio.h> has the same definitions.  */
283 # define SEEK_SET       0       /* Seek from beginning of file.  */
284 # define SEEK_CUR       1       /* Seek from current position.  */
285 # define SEEK_END       2       /* Seek from end of file.  */
286 #endif
287
288 #if defined __USE_BSD && !defined L_SET
289 /* Old BSD names for the same constants; just for compatibility.  */
290 # define L_SET          SEEK_SET
291 # define L_INCR         SEEK_CUR
292 # define L_XTND         SEEK_END
293 #endif
294
295
296 /* Move FD's file position to OFFSET bytes from the
297    beginning of the file (if WHENCE is SEEK_SET),
298    the current position (if WHENCE is SEEK_CUR),
299    or the end of the file (if WHENCE is SEEK_END).
300    Return the new file position.  */
301 #ifndef __USE_FILE_OFFSET64
302 extern __off_t lseek (int __fd, __off_t __offset, int __whence) __THROW;
303 libc_hidden_proto(lseek)
304 #else
305 # ifdef __REDIRECT_NTH
306 extern __off64_t __REDIRECT_NTH (lseek,
307                                  (int __fd, __off64_t __offset, int __whence),
308                                  lseek64);
309 # else
310 #  define lseek lseek64
311 # endif
312 #endif
313 #ifdef __USE_LARGEFILE64
314 extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
315      __THROW;
316 libc_hidden_proto(lseek64)
317 #endif
318
319 /* Close the file descriptor FD.
320
321    This function is a cancellation point and therefore not marked with
322    __THROW.  */
323 extern int close (int __fd);
324 libc_hidden_proto(close)
325
326 /* Read NBYTES into BUF from FD.  Return the
327    number read, -1 for errors or 0 for EOF.
328
329    This function is a cancellation point and therefore not marked with
330    __THROW.  */
331 extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __wur;
332 libc_hidden_proto(read)
333
334 /* Write N bytes of BUF to FD.  Return the number written, or -1.
335
336    This function is a cancellation point and therefore not marked with
337    __THROW.  */
338 extern ssize_t write (int __fd, __const void *__buf, size_t __n) __wur;
339 libc_hidden_proto(write)
340
341 #ifdef __USE_UNIX98
342 # ifndef __USE_FILE_OFFSET64
343 /* Read NBYTES into BUF from FD at the given position OFFSET without
344    changing the file pointer.  Return the number read, -1 for errors
345    or 0 for EOF.
346
347    This function is a cancellation point and therefore not marked with
348    __THROW.  */
349 extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
350                       __off_t __offset) __wur;
351
352 /* Write N bytes of BUF to FD at the given position OFFSET without
353    changing the file pointer.  Return the number written, or -1.
354
355    This function is a cancellation point and therefore not marked with
356    __THROW.  */
357 extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
358                        __off_t __offset) __wur;
359 # else
360 #  ifdef __REDIRECT
361 extern ssize_t __REDIRECT (pread, (int __fd, void *__buf, size_t __nbytes,
362                                    __off64_t __offset),
363                            pread64) __wur;
364 extern ssize_t __REDIRECT (pwrite, (int __fd, __const void *__buf,
365                                     size_t __nbytes, __off64_t __offset),
366                            pwrite64) __wur;
367 #  else
368 #   define pread pread64
369 #   define pwrite pwrite64
370 #  endif
371 # endif
372
373 # ifdef __USE_LARGEFILE64
374 /* Read NBYTES into BUF from FD at the given position OFFSET without
375    changing the file pointer.  Return the number read, -1 for errors
376    or 0 for EOF.  */
377 extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
378                         __off64_t __offset) __wur;
379 /* Write N bytes of BUF to FD at the given position OFFSET without
380    changing the file pointer.  Return the number written, or -1.  */
381 extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
382                          __off64_t __offset) __wur;
383 # endif
384 #endif
385
386 /* Create a one-way communication channel (pipe).
387    If successful, two file descriptors are stored in PIPEDES;
388    bytes written on PIPEDES[1] can be read from PIPEDES[0].
389    Returns 0 if successful, -1 if not.  */
390 extern int pipe (int __pipedes[2]) __THROW __wur;
391 libc_hidden_proto(pipe)
392
393 #if defined __UCLIBC_LINUX_SPECIFIC__ && defined __USE_GNU
394 /* Same as pipe but apply flags passed in FLAGS to the new file
395    descriptors.  */
396 extern int pipe2 (int __pipedes[2], int __flags) __THROW __wur;
397 libc_hidden_proto(pipe2)
398 #endif
399
400 /* Schedule an alarm.  In SECONDS seconds, the process will get a SIGALRM.
401    If SECONDS is zero, any currently scheduled alarm will be cancelled.
402    The function returns the number of seconds remaining until the last
403    alarm scheduled would have signaled, or zero if there wasn't one.
404    There is no return value to indicate an error, but you can set `errno'
405    to 0 and check its value after calling `alarm', and this might tell you.
406    The signal may come late due to processor scheduling.  */
407 extern unsigned int alarm (unsigned int __seconds) __THROW;
408 libc_hidden_proto(alarm)
409
410 /* Make the process sleep for SECONDS seconds, or until a signal arrives
411    and is not ignored.  The function returns the number of seconds less
412    than SECONDS which it actually slept (thus zero if it slept the full time).
413    If a signal handler does a `longjmp' or modifies the handling of the
414    SIGALRM signal while inside `sleep' call, the handling of the SIGALRM
415    signal afterwards is undefined.  There is no return value to indicate
416    error, but if `sleep' returns SECONDS, it probably didn't work.
417
418    This function is a cancellation point and therefore not marked with
419    __THROW.  */
420 extern unsigned int sleep (unsigned int __seconds);
421 libc_hidden_proto(sleep)
422
423 #if (defined __USE_BSD || defined __USE_XOPEN_EXTENDED) \
424         && defined __UCLIBC_SUSV3_LEGACY__
425 /* Set an alarm to go off (generating a SIGALRM signal) in VALUE
426    microseconds.  If INTERVAL is nonzero, when the alarm goes off, the
427    timer is reset to go off every INTERVAL microseconds thereafter.
428    Returns the number of microseconds remaining before the alarm.  */
429 extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
430      __THROW;
431
432 /* Sleep USECONDS microseconds, or until a signal arrives that is not blocked
433    or ignored.
434
435    This function is a cancellation point and therefore not marked with
436    __THROW.  */
437 extern int usleep (__useconds_t __useconds);
438 #endif
439
440
441 /* Suspend the process until a signal arrives.
442    This always returns -1 and sets `errno' to EINTR.
443
444    This function is a cancellation point and therefore not marked with
445    __THROW.  */
446 extern int pause (void);
447
448
449 /* Change the owner and group of FILE.  */
450 extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
451      __THROW __nonnull ((1)) __wur;
452 libc_hidden_proto(chown)
453
454 #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
455 /* Change the owner and group of the file that FD is open on.  */
456 extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __THROW __wur;
457
458
459 /* Change owner and group of FILE, if it is a symbolic
460    link the ownership of the symbolic link is changed.  */
461 extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
462      __THROW __nonnull ((1)) __wur;
463
464 #endif /* Use BSD || X/Open Unix.  */
465
466 #ifdef __USE_ATFILE
467 /* Change the owner and group of FILE relative to the directory FD is open
468    on.  */
469 extern int fchownat (int __fd, __const char *__file, __uid_t __owner,
470                      __gid_t __group, int __flag)
471      __THROW __nonnull ((2)) __wur;
472 #endif /* Use GNU.  */
473
474 /* Change the process's working directory to PATH.  */
475 extern int chdir (__const char *__path) __THROW __nonnull ((1)) __wur;
476 libc_hidden_proto(chdir)
477
478 #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
479 /* Change the process's working directory to the one FD is open on.  */
480 extern int fchdir (int __fd) __THROW __wur;
481 libc_hidden_proto(fchdir)
482 #endif
483
484 /* Get the pathname of the current working directory,
485    and put it in SIZE bytes of BUF.  Returns NULL if the
486    directory couldn't be determined or SIZE was too small.
487    If successful, returns BUF.  In GNU, if BUF is NULL,
488    an array is allocated with `malloc'; the array is SIZE
489    bytes long, unless SIZE == 0, in which case it is as
490    big as necessary.  */
491 extern char *getcwd (char *__buf, size_t __size) __THROW __wur;
492 libc_hidden_proto(getcwd)
493
494 #ifdef  __USE_GNU
495 /* Return a malloc'd string containing the current directory name.
496    If the environment variable `PWD' is set, and its value is correct,
497    that value is used.  */
498 extern char *get_current_dir_name (void) __THROW;
499 #endif
500
501 #if 0 /*defined __USE_BSD || defined __USE_XOPEN_EXTENDED*/
502 /* Put the absolute pathname of the current working directory in BUF.
503    If successful, return BUF.  If not, put an error message in
504    BUF and return NULL.  BUF should be at least PATH_MAX bytes long.  */
505 extern char *getwd (char *__buf)
506      __THROW __nonnull ((1)) __attribute_deprecated__ __wur;
507 #endif
508
509
510 /* Duplicate FD, returning a new file descriptor on the same file.  */
511 extern int dup (int __fd) __THROW __wur;
512
513 /* Duplicate FD to FD2, closing FD2 and making it open on the same file.  */
514 extern int dup2 (int __fd, int __fd2) __THROW;
515 libc_hidden_proto(dup2)
516
517 /* NULL-terminated array of "NAME=VALUE" environment variables.  */
518 extern char **__environ;
519 #ifdef __USE_GNU
520 extern char **environ;
521 #endif
522
523
524 /* Replace the current process, executing PATH with arguments ARGV and
525    environment ENVP.  ARGV and ENVP are terminated by NULL pointers.  */
526 extern int execve (__const char *__path, char *__const __argv[],
527                    char *__const __envp[]) __THROW __nonnull ((1));
528 libc_hidden_proto(execve)
529
530 #if 0 /*def __USE_GNU*/
531 /* Execute the file FD refers to, overlaying the running program image.
532    ARGV and ENVP are passed to the new program, as for `execve'.  */
533 extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[])
534      __THROW;
535 #endif
536
537
538 /* Execute PATH with arguments ARGV and environment from `environ'.  */
539 extern int execv (__const char *__path, char *__const __argv[])
540      __THROW __nonnull ((1));
541 libc_hidden_proto(execv)
542
543 /* Execute PATH with all arguments after PATH until a NULL pointer,
544    and the argument after that for environment.  */
545 extern int execle (__const char *__path, __const char *__arg, ...)
546      __THROW __nonnull ((1));
547 libc_hidden_proto(execle)
548
549 /* Execute PATH with all arguments after PATH until
550    a NULL pointer and environment from `environ'.  */
551 extern int execl (__const char *__path, __const char *__arg, ...)
552      __THROW __nonnull ((1));
553 libc_hidden_proto(execl)
554
555 /* Execute FILE, searching in the `PATH' environment variable if it contains
556    no slashes, with arguments ARGV and environment from `environ'.  */
557 extern int execvp (__const char *__file, char *__const __argv[])
558      __THROW __nonnull ((1));
559 libc_hidden_proto(execvp)
560
561 /* Execute FILE, searching in the `PATH' environment variable if
562    it contains no slashes, with all arguments after FILE until a
563    NULL pointer and environment from `environ'.  */
564 extern int execlp (__const char *__file, __const char *__arg, ...)
565      __THROW __nonnull ((1));
566 libc_hidden_proto(execlp)
567
568
569 #if defined __USE_MISC || defined __USE_XOPEN
570 /* Add INC to priority of the current process.  */
571 extern int nice (int __inc) __THROW __wur;
572 #endif
573
574
575 /* Terminate program execution with the low-order 8 bits of STATUS.  */
576 extern void _exit (int __status) __attribute__ ((__noreturn__));
577 libc_hidden_proto(_exit)
578
579
580 /* Get the `_PC_*' symbols for the NAME argument to `pathconf' and `fpathconf';
581    the `_SC_*' symbols for the NAME argument to `sysconf';
582    and the `_CS_*' symbols for the NAME argument to `confstr'.  */
583 #include <bits/confname.h>
584
585 /* Get file-specific configuration information about PATH.  */
586 extern long int pathconf (__const char *__path, int __name)
587      __THROW __nonnull ((1));
588
589 /* Get file-specific configuration about descriptor FD.  */
590 extern long int fpathconf (int __fd, int __name) __THROW;
591
592 /* Get the value of the system variable NAME.  */
593 extern long int sysconf (int __name) __THROW;
594 libc_hidden_proto(sysconf)
595
596 #ifdef  __USE_POSIX2
597 /* Get the value of the string-valued system variable NAME.  */
598 extern size_t confstr (int __name, char *__buf, size_t __len) __THROW;
599 #endif
600
601
602 /* Get the process ID of the calling process.  */
603 extern __pid_t getpid (void) __THROW;
604 libc_hidden_proto(getpid)
605
606 /* Get the process ID of the calling process's parent.  */
607 extern __pid_t getppid (void) __THROW;
608
609 /* Get the process group ID of the calling process.
610    This function is different on old BSD. */
611 #ifndef __FAVOR_BSD
612 extern __pid_t getpgrp (void) __THROW;
613 #else
614 # ifdef __REDIRECT_NTH
615 extern __pid_t __REDIRECT_NTH (getpgrp, (__pid_t __pid), __getpgid);
616 # else
617 #  define getpgrp __getpgid
618 # endif
619 #endif
620
621 /* Get the process group ID of process PID.  */
622 extern __pid_t __getpgid (__pid_t __pid) __THROW;
623 #ifdef __USE_XOPEN_EXTENDED
624 extern __pid_t getpgid (__pid_t __pid) __THROW;
625 #endif
626
627
628 /* Set the process group ID of the process matching PID to PGID.
629    If PID is zero, the current process's process group ID is set.
630    If PGID is zero, the process ID of the process is used.  */
631 extern int setpgid (__pid_t __pid, __pid_t __pgid) __THROW;
632 libc_hidden_proto(setpgid)
633
634 #if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
635 /* Both System V and BSD have `setpgrp' functions, but with different
636    calling conventions.  The BSD function is the same as POSIX.1 `setpgid'
637    (above).  The System V function takes no arguments and puts the calling
638    process in its on group like `setpgid (0, 0)'.
639
640    New programs should always use `setpgid' instead.
641
642    The default in GNU is to provide the System V function.  The BSD
643    function is available under -D_BSD_SOURCE.  */
644
645 # ifndef __FAVOR_BSD
646
647 /* Set the process group ID of the calling process to its own PID.
648    This is exactly the same as `setpgid (0, 0)'.  */
649 extern int setpgrp (void) __THROW;
650
651 # else
652
653 /* Another name for `setpgid' (above).  */
654 #  ifdef __REDIRECT_NTH
655 extern int __REDIRECT_NTH (setpgrp, (__pid_t __pid, __pid_t __pgrp), setpgid);
656 #  else
657 #   define setpgrp setpgid
658 #  endif
659
660 # endif /* Favor BSD.  */
661 #endif  /* Use SVID or BSD.  */
662
663 /* Create a new session with the calling process as its leader.
664    The process group IDs of the session and the calling process
665    are set to the process ID of the calling process, which is returned.  */
666 extern __pid_t setsid (void) __THROW;
667 libc_hidden_proto(setsid)
668
669 #ifdef __USE_XOPEN_EXTENDED
670 /* Return the session ID of the given process.  */
671 extern __pid_t getsid (__pid_t __pid) __THROW;
672 libc_hidden_proto(getsid)
673 #endif
674
675 /* Get the real user ID of the calling process.  */
676 extern __uid_t getuid (void) __THROW;
677 libc_hidden_proto(getuid)
678
679 /* Get the effective user ID of the calling process.  */
680 extern __uid_t geteuid (void) __THROW;
681 libc_hidden_proto(geteuid)
682
683 /* Get the real group ID of the calling process.  */
684 extern __gid_t getgid (void) __THROW;
685 libc_hidden_proto(getgid)
686
687 /* Get the effective group ID of the calling process.  */
688 extern __gid_t getegid (void) __THROW;
689 libc_hidden_proto(getegid)
690
691 /* If SIZE is zero, return the number of supplementary groups
692    the calling process is in.  Otherwise, fill in the group IDs
693    of its supplementary groups in LIST and return the number written.  */
694 extern int getgroups (int __size, __gid_t __list[]) __THROW __wur;
695 libc_hidden_proto(getgroups)
696
697 #if 0 /*def     __USE_GNU*/
698 /* Return nonzero iff the calling process is in group GID.  */
699 extern int group_member (__gid_t __gid) __THROW;
700 #endif
701
702 /* Set the user ID of the calling process to UID.
703    If the calling process is the super-user, set the real
704    and effective user IDs, and the saved set-user-ID to UID;
705    if not, the effective user ID is set to UID.  */
706 extern int setuid (__uid_t __uid) __THROW;
707
708 #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
709 /* Set the real user ID of the calling process to RUID,
710    and the effective user ID of the calling process to EUID.  */
711 extern int setreuid (__uid_t __ruid, __uid_t __euid) __THROW;
712 libc_hidden_proto(setreuid)
713 #endif
714
715 #if defined __USE_BSD || defined __USE_XOPEN2K
716 /* Set the effective user ID of the calling process to UID.  */
717 extern int seteuid (__uid_t __uid) __THROW;
718 libc_hidden_proto(seteuid)
719 #endif /* Use BSD.  */
720
721 /* Set the group ID of the calling process to GID.
722    If the calling process is the super-user, set the real
723    and effective group IDs, and the saved set-group-ID to GID;
724    if not, the effective group ID is set to GID.  */
725 extern int setgid (__gid_t __gid) __THROW;
726
727 #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
728 /* Set the real group ID of the calling process to RGID,
729    and the effective group ID of the calling process to EGID.  */
730 extern int setregid (__gid_t __rgid, __gid_t __egid) __THROW;
731 libc_hidden_proto(setregid)
732 #endif
733
734 #if defined __USE_BSD || defined __USE_XOPEN2K
735 /* Set the effective group ID of the calling process to GID.  */
736 extern int setegid (__gid_t __gid) __THROW;
737 #endif /* Use BSD.  */
738
739 #ifdef __USE_GNU
740 /* Fetch the real user ID, effective user ID, and saved-set user ID,
741    of the calling process.  */
742 extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid)
743      __THROW;
744
745 /* Fetch the real group ID, effective group ID, and saved-set group ID,
746    of the calling process.  */
747 extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid)
748      __THROW;
749
750 #if defined __UCLIBC_LINUX_SPECIFIC__
751 /* Set the real user ID, effective user ID, and saved-set user ID,
752    of the calling process to RUID, EUID, and SUID, respectively.  */
753 extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid)
754      __THROW;
755 libc_hidden_proto(setresuid)
756 #endif
757
758 /* Set the real group ID, effective group ID, and saved-set group ID,
759    of the calling process to RGID, EGID, and SGID, respectively.  */
760 extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
761      __THROW;
762 libc_hidden_proto(setresgid)
763 #endif
764
765
766 #if defined __UCLIBC_HAS_STUBS__ || defined __ARCH_USE_MMU__
767 /* Clone the calling process, creating an exact copy.
768    Return -1 for errors, 0 to the new process,
769    and the process ID of the new process to the old process.  */
770 extern __pid_t fork (void) __THROW;
771 # ifdef _LIBC
772 extern __typeof(fork) __libc_fork;
773 libc_hidden_proto(fork)
774 # endif
775 #endif
776
777 #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
778 /* Clone the calling process, but without copying the whole address space.
779    The calling process is suspended until the new process exits or is
780    replaced by a call to `execve'.  Return -1 for errors, 0 to the new process,
781    and the process ID of the new process to the old process.  */
782 extern __pid_t vfork (void) __THROW;
783 libc_hidden_proto(vfork)
784 #endif /* Use BSD. */
785
786 /* Special exit function which only terminates the current thread.  */
787 extern void __exit_thread (int val) __attribute__ ((__noreturn__));
788
789 /* Return the pathname of the terminal FD is open on, or NULL on errors.
790    The returned storage is good only until the next call to this function.  */
791 extern char *ttyname (int __fd) __THROW;
792
793 /* Store at most BUFLEN characters of the pathname of the terminal FD is
794    open on in BUF.  Return 0 on success, otherwise an error number.  */
795 extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
796      __THROW __nonnull ((2)) __wur;
797 libc_hidden_proto(ttyname_r)
798
799 /* Return 1 if FD is a valid descriptor associated
800    with a terminal, zero if not.  */
801 extern int isatty (int __fd) __THROW;
802 libc_hidden_proto(isatty)
803
804
805 #if 0 /*defined __USE_BSD \
806     || (defined __USE_XOPEN_EXTENDED && !defined __USE_UNIX98)*/
807 /* Return the index into the active-logins file (utmp) for
808    the controlling terminal.  */
809 extern int ttyslot (void) __THROW;
810 #endif
811
812
813 /* Make a link to FROM named TO.  */
814 extern int link (__const char *__from, __const char *__to)
815      __THROW __nonnull ((1, 2)) __wur;
816
817 #ifdef __USE_ATFILE
818 /* Like link but relative paths in TO and FROM are interpreted relative
819    to FROMFD and TOFD respectively.  */
820 extern int linkat (int __fromfd, __const char *__from, int __tofd,
821                    __const char *__to, int __flags)
822      __THROW __nonnull ((2, 4)) __wur;
823 #endif
824
825 #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
826 /* Make a symbolic link to FROM named TO.  */
827 extern int symlink (__const char *__from, __const char *__to)
828      __THROW __nonnull ((1, 2)) __wur;
829
830 /* Read the contents of the symbolic link PATH into no more than
831    LEN bytes of BUF.  The contents are not null-terminated.
832    Returns the number of characters read, or -1 for errors.  */
833 extern ssize_t readlink (__const char *__restrict __path,
834                          char *__restrict __buf, size_t __len)
835      __THROW __nonnull ((1, 2)) __wur;
836 libc_hidden_proto(readlink)
837 #endif /* Use BSD.  */
838
839 #ifdef __USE_ATFILE
840 /* Like symlink but a relative path in TO is interpreted relative to TOFD.  */
841 extern int symlinkat (__const char *__from, int __tofd,
842                       __const char *__to) __THROW __nonnull ((1, 3)) __wur;
843
844 /* Like readlink but a relative PATH is interpreted relative to FD.  */
845 extern ssize_t readlinkat (int __fd, __const char *__restrict __path,
846                            char *__restrict __buf, size_t __len)
847      __THROW __nonnull ((2, 3)) __wur;
848 #endif
849
850 /* Remove the link NAME.  */
851 extern int unlink (__const char *__name) __THROW __nonnull ((1));
852 libc_hidden_proto(unlink)
853
854 #ifdef __USE_ATFILE
855 /* Remove the link NAME relative to FD.  */
856 extern int unlinkat (int __fd, __const char *__name, int __flag)
857      __THROW __nonnull ((2));
858 #endif
859
860 /* Remove the directory PATH.  */
861 extern int rmdir (__const char *__path) __THROW __nonnull ((1));
862 libc_hidden_proto(rmdir)
863
864
865 /* Return the foreground process group ID of FD.  */
866 extern __pid_t tcgetpgrp (int __fd) __THROW;
867 libc_hidden_proto(tcgetpgrp)
868
869 /* Set the foreground process group ID of FD set PGRP_ID.  */
870 extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __THROW;
871
872
873 /* Return the login name of the user.
874
875    This function is a possible cancellation points and therefore not
876    marked with __THROW.  */
877 extern char *getlogin (void);
878 libc_hidden_proto(getlogin)
879 #if defined __USE_REENTRANT || defined __USE_POSIX199506
880 /* Return at most NAME_LEN characters of the login name of the user in NAME.
881    If it cannot be determined or some other error occurred, return the error
882    code.  Otherwise return 0.
883
884    This function is a possible cancellation points and therefore not
885    marked with __THROW.  */
886 extern int getlogin_r (char *__name, size_t __name_len) __nonnull ((1));
887 #endif
888
889 #if 0 /*def     __USE_BSD*/
890 /* Set the login name returned by `getlogin'.  */
891 extern int setlogin (__const char *__name) __THROW __nonnull ((1));
892 #endif
893
894
895 #ifdef  __USE_POSIX2
896 /* Get definitions and prototypes for functions to process the
897    arguments in ARGV (ARGC of them, minus the program name) for
898    options given in OPTS.  */
899 # define __need_getopt
900 /* keep this for uClibc in bits/, we need it when GNU_GETOPT is disabled */
901 # include <bits/getopt.h>
902 #endif
903
904
905 #if defined __USE_BSD || defined __USE_UNIX98
906 /* Put the name of the current host in no more than LEN bytes of NAME.
907    The result is null-terminated if LEN is large enough for the full
908    name and the terminator.  */
909 extern int gethostname (char *__name, size_t __len) __THROW __nonnull ((1));
910 libc_hidden_proto(gethostname)
911 #endif
912
913
914 #if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_UNIX98)
915 /* Set the name of the current host to NAME, which is LEN bytes long.
916    This call is restricted to the super-user.  */
917 extern int sethostname (__const char *__name, size_t __len)
918      __THROW __nonnull ((1)) __wur;
919
920 /* Set the current machine's Internet number to ID.
921    This call is restricted to the super-user.  */
922 extern int sethostid (long int __id) __THROW __wur;
923
924 #if defined __UCLIBC_BSD_SPECIFIC__ || defined _LIBC
925 /* Get and set the NIS (aka YP) domain name, if any.
926    Called just like `gethostname' and `sethostname'.
927    The NIS domain name is usually the empty string when not using NIS.  */
928 extern int getdomainname (char *__name, size_t __len)
929      __THROW __nonnull ((1)) __wur;
930 libc_hidden_proto(getdomainname)
931 #endif
932 #if defined __UCLIBC_BSD_SPECIFIC__
933 extern int setdomainname (__const char *__name, size_t __len)
934      __THROW __nonnull ((1)) __wur;
935 #endif
936
937 #if defined __UCLIBC_LINUX_SPECIFIC__
938 /* Revoke access permissions to all processes currently communicating
939    with the control terminal, and then send a SIGHUP signal to the process
940    group of the control terminal.  */
941 extern int vhangup (void) __THROW;
942 #endif
943
944 #if 0
945 /* Revoke the access of all descriptors currently open on FILE.  */
946 extern int revoke (__const char *__file) __THROW __nonnull ((1)) __wur;
947
948
949 /* Enable statistical profiling, writing samples of the PC into at most
950    SIZE bytes of SAMPLE_BUFFER; every processor clock tick while profiling
951    is enabled, the system examines the user PC and increments
952    SAMPLE_BUFFER[((PC - OFFSET) / 2) * SCALE / 65536].  If SCALE is zero,
953    disable profiling.  Returns zero on success, -1 on error.  */
954 extern int profil (unsigned short int *__sample_buffer, size_t __size,
955                    size_t __offset, unsigned int __scale)
956      __THROW __nonnull ((1));
957 #endif
958
959
960 /* Turn accounting on if NAME is an existing file.  The system will then write
961    a record for each process as it terminates, to this file.  If NAME is NULL,
962    turn accounting off.  This call is restricted to the super-user.  */
963 extern int acct (__const char *__name) __THROW;
964
965
966 /* Successive calls return the shells listed in `/etc/shells'.  */
967 extern char *getusershell (void) __THROW;
968 extern void endusershell (void) __THROW; /* Discard cached info.  */
969 libc_hidden_proto(endusershell)
970 extern void setusershell (void) __THROW; /* Rewind and re-read the file.  */
971 libc_hidden_proto(setusershell)
972
973
974 /* Put the program in the background, and dissociate from the controlling
975    terminal.  If NOCHDIR is zero, do `chdir ("/")'.  If NOCLOSE is zero,
976    redirects stdin, stdout, and stderr to /dev/null.  */
977 extern int daemon (int __nochdir, int __noclose) __THROW __wur;
978 #endif /* Use BSD || X/Open.  */
979
980
981 #if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
982 /* Make PATH be the root directory (the starting point for absolute paths).
983    This call is restricted to the super-user.  */
984 extern int chroot (__const char *__path) __THROW __nonnull ((1)) __wur;
985
986 /* Prompt with PROMPT and read a string from the terminal without echoing.
987    Uses /dev/tty if possible; otherwise stderr and stdin.  */
988 extern char *getpass (__const char *__prompt) __nonnull ((1));
989 #endif /* Use BSD || X/Open.  */
990
991
992 #if defined __USE_BSD || defined __USE_XOPEN
993 /* Make all changes done to FD actually appear on disk.
994
995    This function is a cancellation point and therefore not marked with
996    __THROW.  */
997 extern int fsync (int __fd);
998 #endif /* Use BSD || X/Open.  */
999
1000
1001 #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
1002
1003 /* Return identifier for the current host.  */
1004 extern long int gethostid (void);
1005
1006 /* Make all changes done to all files actually appear on disk.  */
1007 extern void sync (void) __THROW;
1008
1009
1010 /* Return the number of bytes in a page.  This is the system's page size,
1011    which is not necessarily the same as the hardware page size.  */
1012 extern int getpagesize (void)  __THROW __attribute__ ((__const__));
1013 libc_hidden_proto(getpagesize)
1014
1015
1016 /* Return the maximum number of file descriptors
1017    the current process could possibly have.  */
1018 extern int getdtablesize (void) __THROW;
1019 libc_hidden_proto(getdtablesize)
1020
1021
1022 /* Truncate FILE to LENGTH bytes.  */
1023 # ifndef __USE_FILE_OFFSET64
1024 extern int truncate (__const char *__file, __off_t __length)
1025      __THROW __nonnull ((1)) __wur;
1026 libc_hidden_proto(truncate)
1027 # else
1028 #  ifdef __REDIRECT_NTH
1029 extern int __REDIRECT_NTH (truncate,
1030                            (__const char *__file, __off64_t __length),
1031                            truncate64) __nonnull ((1)) __wur;
1032 #  else
1033 #   define truncate truncate64
1034 #  endif
1035 # endif
1036 # ifdef __USE_LARGEFILE64
1037 extern int truncate64 (__const char *__file, __off64_t __length)
1038      __THROW __nonnull ((1)) __wur;
1039 # endif
1040
1041 #endif /* Use BSD || X/Open Unix.  */
1042
1043 #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
1044
1045 /* Truncate the file FD is open on to LENGTH bytes.  */
1046 # ifndef __USE_FILE_OFFSET64
1047 extern int ftruncate (int __fd, __off_t __length) __THROW __wur;
1048 libc_hidden_proto(ftruncate)
1049 # else
1050 #  ifdef __REDIRECT_NTH
1051 extern int __REDIRECT_NTH (ftruncate, (int __fd, __off64_t __length),
1052                            ftruncate64) __wur;
1053 #  else
1054 #   define ftruncate ftruncate64
1055 #  endif
1056 # endif
1057 # ifdef __USE_LARGEFILE64
1058 extern int ftruncate64 (int __fd, __off64_t __length) __THROW __wur;
1059 libc_hidden_proto(ftruncate64)
1060 # endif
1061
1062 #endif /* Use BSD || X/Open Unix || POSIX 2003.  */
1063
1064
1065 #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
1066
1067 /* Set the end of accessible data space (aka "the break") to ADDR.
1068    Returns zero on success and -1 for errors (with errno set).  */
1069 extern int brk (void *__addr) __THROW __wur;
1070 libc_hidden_proto(brk)
1071
1072 /* Increase or decrease the end of accessible data space by DELTA bytes.
1073    If successful, returns the address the previous end of data space
1074    (i.e. the beginning of the new space, if DELTA > 0);
1075    returns (void *) -1 for errors (with errno set).  */
1076 extern void *sbrk (intptr_t __delta) __THROW;
1077 libc_hidden_proto(sbrk)
1078 #endif
1079
1080
1081 #ifdef __USE_MISC
1082 /* Invoke `system call' number SYSNO, passing it the remaining arguments.
1083    This is completely system-dependent, and not often useful.
1084
1085    In Unix, `syscall' sets `errno' for all errors and most calls return -1
1086    for errors; in many systems you cannot pass arguments or get return
1087    values for all system calls (`pipe', `fork', and `getppid' typically
1088    among them).
1089
1090    In Mach, all system calls take normal arguments and always return an
1091    error code (zero for success).  */
1092 extern long int syscall (long int __sysno, ...) __THROW;
1093
1094 #endif  /* Use misc.  */
1095
1096
1097 #if (defined __USE_MISC || defined __USE_XOPEN_EXTENDED) && !defined F_LOCK
1098 /* NOTE: These declarations also appear in <fcntl.h>; be sure to keep both
1099    files consistent.  Some systems have them there and some here, and some
1100    software depends on the macros being defined without including both.  */
1101
1102 /* `lockf' is a simpler interface to the locking facilities of `fcntl'.
1103    LEN is always relative to the current file position.
1104    The CMD argument is one of the following.
1105
1106    This function is a cancellation point and therefore not marked with
1107    __THROW.  */
1108
1109 # define F_ULOCK 0      /* Unlock a previously locked region.  */
1110 # define F_LOCK  1      /* Lock a region for exclusive use.  */
1111 # define F_TLOCK 2      /* Test and lock a region for exclusive use.  */
1112 # define F_TEST  3      /* Test a region for other processes locks.  */
1113
1114 # ifndef __USE_FILE_OFFSET64
1115 extern int lockf (int __fd, int __cmd, __off_t __len) __wur;
1116 libc_hidden_proto(lockf)
1117 # else
1118 #  ifdef __REDIRECT
1119 extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len),
1120                        lockf64) __wur;
1121 #  else
1122 #   define lockf lockf64
1123 #  endif
1124 # endif
1125 # ifdef __USE_LARGEFILE64
1126 extern int lockf64 (int __fd, int __cmd, __off64_t __len) __wur;
1127 # endif
1128 #endif /* Use misc and F_LOCK not already defined.  */
1129
1130
1131 #ifdef __USE_GNU
1132
1133 /* Evaluate EXPRESSION, and repeat as long as it returns -1 with `errno'
1134    set to EINTR.  */
1135
1136 # define TEMP_FAILURE_RETRY(expression) \
1137   (__extension__                                                              \
1138     ({ long int __result;                                                     \
1139        do __result = (long int) (expression);                                 \
1140        while (__result == -1L && errno == EINTR);                             \
1141        __result; }))
1142 #endif
1143
1144 #if (defined __USE_POSIX199309 || defined __USE_UNIX98) \
1145         && defined __UCLIBC_HAS_REALTIME__
1146 /* Synchronize at least the data part of a file with the underlying
1147    media.  */
1148 extern int fdatasync (int __fildes) __THROW;
1149 #endif /* Use POSIX199309 */
1150
1151
1152 /* XPG4.2 specifies that prototypes for the encryption functions must
1153    be defined here.  */
1154 #ifdef  __USE_XOPEN
1155 # if defined __UCLIBC_HAS_CRYPT__
1156 /* Encrypt at most 8 characters from KEY using salt to perturb DES.  */
1157 extern char *crypt (__const char *__key, __const char *__salt)
1158      __THROW __nonnull ((1, 2));
1159
1160 /* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt
1161    block in place.  */
1162 extern void encrypt (char *__block, int __edflag) __THROW __nonnull ((1));
1163 # endif /* __UCLIBC_HAS_CRYPT__ */
1164
1165
1166 /* Swab pairs bytes in the first N bytes of the area pointed to by
1167    FROM and copy the result to TO.  The value of TO must not be in the
1168    range [FROM - N + 1, FROM - 1].  If N is odd the first byte in FROM
1169    is without partner.  */
1170 extern void swab (__const void *__restrict __from, void *__restrict __to,
1171                   ssize_t __n) __THROW __nonnull ((1, 2));
1172 #endif
1173
1174
1175 /* The Single Unix specification demands this prototype to be here.
1176    It is also found in <stdio.h>.  */
1177 #ifdef __USE_XOPEN
1178 /* Return the name of the controlling terminal.  */
1179 extern char *ctermid (char *__s) __THROW;
1180 #endif
1181
1182
1183 /* Define some macros helping to catch buffer overflows.  */
1184 #if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus
1185 # include <bits/unistd.h>
1186 #endif
1187
1188 __END_DECLS
1189
1190
1191 #ifdef _LIBC
1192 #ifndef smallint_type /* if arch didn't override it in bits/wordsize.h */
1193 #define smallint_type int
1194 #endif
1195 typedef signed smallint_type smallint;
1196 typedef unsigned smallint_type smalluint;
1197 #endif
1198
1199
1200 #endif /* unistd.h  */