This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
* ISO C99 Standard: 7.20 General utilities <stdlib.h>
*/
#ifndef _STDLIB_H
#include <features.h>
#define __need_size_t
#ifndef __need_malloc_and_calloc
# define __need_wchar_t
# define __need_NULL
#endif
#include <stddef.h>
#include <stdint.h>
__BEGIN_DECLS
#ifndef __need_malloc_and_calloc
#define _STDLIB_H 1
#if defined __USE_XOPEN && !defined _SYS_WAIT_H
# include <bits/waitflags.h>
# include <bits/waitstatus.h>
# ifdef __USE_BSD
as well as POSIX.1 use of `int' for the status word. */
# if defined __GNUC__ && !defined __cplusplus
# define __WAIT_INT(status) \
(__extension__ ({ union { __typeof(status) __in; int __i; } __u; \
__u.__in = (status); __u.__i; }))
# else
# define __WAIT_INT(status) (*(int *) &(status))
# endif
causes redeclarations with ether `int *' or `union wait *' to be
allowed without complaint. __WAIT_STATUS_DEFN is the type used in
the actual function definitions. */
# if !defined __GNUC__ || __GNUC__ < 2 || defined __cplusplus
# define __WAIT_STATUS void *
# define __WAIT_STATUS_DEFN void *
# else
typedef union
{
union wait *__uptr;
int *__iptr;
} __WAIT_STATUS __attribute__ ((__transparent_union__));
# define __WAIT_STATUS_DEFN int *
# endif
# else
# define __WAIT_INT(status) (status)
# define __WAIT_STATUS int *
# define __WAIT_STATUS_DEFN int *
# endif
# define WEXITSTATUS(status) __WEXITSTATUS(__WAIT_INT(status))
# define WTERMSIG(status) __WTERMSIG(__WAIT_INT(status))
# define WSTOPSIG(status) __WSTOPSIG(__WAIT_INT(status))
# define WIFEXITED(status) __WIFEXITED(__WAIT_INT(status))
# define WIFSIGNALED(status) __WIFSIGNALED(__WAIT_INT(status))
# define WIFSTOPPED(status) __WIFSTOPPED(__WAIT_INT(status))
#endif
__BEGIN_NAMESPACE_STD
typedef struct
{
int quot;
int rem;
} div_t;
#ifndef __ldiv_t_defined
typedef struct
{
long int quot;
long int rem;
} ldiv_t;
# define __ldiv_t_defined 1
#endif
__END_NAMESPACE_STD
#if defined __USE_ISOC99 && !defined __lldiv_t_defined
__BEGIN_NAMESPACE_C99
__extension__ typedef struct
{
long long int quot;
long long int rem;
} lldiv_t;
# define __lldiv_t_defined 1
__END_NAMESPACE_C99
#endif
#define RAND_MAX 2147483647
Changes from this to the outside world should be done in `_exit'. */
#define EXIT_FAILURE 1 /* Failing exit status. */
#define EXIT_SUCCESS 0 /* Successful exit status. */
#define MB_CUR_MAX (__ctype_get_mb_cur_max ())
extern unsigned short __ctype_get_mb_cur_max(void);
__BEGIN_NAMESPACE_STD
extern double atof (__const char *__nptr) __THROW __attribute_pure__;
extern int atoi (__const char *__nptr) __THROW __attribute_pure__;
extern long int atol (__const char *__nptr) __THROW __attribute_pure__;
__END_NAMESPACE_STD
#if defined __USE_ISOC99 || (defined __GLIBC_HAVE_LONG_LONG && defined __USE_MISC)
__BEGIN_NAMESPACE_C99
__extension__ extern long long int atoll (__const char *__nptr)
__THROW __attribute_pure__;
__END_NAMESPACE_C99
#endif
__BEGIN_NAMESPACE_STD
extern double strtod (__const char *__restrict __nptr,
char **__restrict __endptr) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_ISOC99
__BEGIN_NAMESPACE_C99
extern float strtof (__const char *__restrict __nptr,
char **__restrict __endptr) __THROW;
extern long double strtold (__const char *__restrict __nptr,
char **__restrict __endptr) __THROW;
__END_NAMESPACE_C99
#endif
__BEGIN_NAMESPACE_STD
extern long int strtol (__const char *__restrict __nptr,
char **__restrict __endptr, int __base) __THROW;
extern unsigned long int strtoul (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__THROW;
__END_NAMESPACE_C99
#if defined __GLIBC_HAVE_LONG_LONG && defined __USE_BSD
__extension__
extern long long int strtoq (__const char *__restrict __nptr,
char **__restrict __endptr, int __base) __THROW;
__extension__
extern unsigned long long int strtouq (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__THROW;
#endif
#if defined __USE_ISOC99 || (defined __GLIBC_HAVE_LONG_LONG && defined __USE_MISC)
__BEGIN_NAMESPACE_C99
__extension__
extern long long int strtoll (__const char *__restrict __nptr,
char **__restrict __endptr, int __base) __THROW;
__extension__
extern unsigned long long int strtoull (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__THROW;
__END_NAMESPACE_C99
#endif
#ifdef __USE_GNU
thought out. Many applications will need to process its data using
information from several different locales. Another application is
the implementation of the internationalization handling in the
upcoming ISO C++ standard library. To support this another set of
the functions using locale data exist which have an additional
argument.
Attention: all these functions are *not* standardized in any form.
This is a proof-of-concept implementation. */
(almost) opaque type for the user level programs. */
# include <xlocale.h>
use as an additional parameter. */
extern long int strtol_l (__const char *__restrict __nptr,
char **__restrict __endptr, int __base,
__locale_t __loc) __THROW;
extern unsigned long int strtoul_l (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base, __locale_t __loc) __THROW;
__extension__
extern long long int strtoll_l (__const char *__restrict __nptr,
char **__restrict __endptr, int __base,
__locale_t __loc) __THROW;
__extension__
extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base, __locale_t __loc)
__THROW;
extern double strtod_l (__const char *__restrict __nptr,
char **__restrict __endptr, __locale_t __loc)
__THROW;
extern float strtof_l (__const char *__restrict __nptr,
char **__restrict __endptr, __locale_t __loc) __THROW;
extern long double strtold_l (__const char *__restrict __nptr,
char **__restrict __endptr,
__locale_t __loc) __THROW;
#endif
saying whether or not to parse locale-dependent number grouping. */
extern double __strtod_internal (__const char *__restrict __nptr,
char **__restrict __endptr, int __group)
__THROW;
extern float __strtof_internal (__const char *__restrict __nptr,
char **__restrict __endptr, int __group)
__THROW;
extern long double __strtold_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __group) __THROW;
#ifndef __strtol_internal_defined
extern long int __strtol_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base, int __group) __THROW;
# define __strtol_internal_defined 1
#endif
#ifndef __strtoul_internal_defined
extern unsigned long int __strtoul_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base, int __group) __THROW;
# define __strtoul_internal_defined 1
#endif
#if defined __GNUC__ || defined __USE_ISOC99
# ifndef __strtoll_internal_defined
__extension__
extern long long int __strtoll_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base, int __group) __THROW;
# define __strtoll_internal_defined 1
# endif
# ifndef __strtoull_internal_defined
__extension__
extern unsigned long long int __strtoull_internal (__const char *
__restrict __nptr,
char **__restrict __endptr,
int __base, int __group)
__THROW;
# define __strtoull_internal_defined 1
# endif
#endif
#ifdef __USE_EXTERN_INLINES
__BEGIN_NAMESPACE_STD
__extern_inline double
strtod (__const char *__restrict __nptr, char **__restrict __endptr) __THROW
{
return __strtod_internal (__nptr, __endptr, 0);
}
__extern_inline long int
strtol (__const char *__restrict __nptr, char **__restrict __endptr,
int __base) __THROW
{
return __strtol_internal (__nptr, __endptr, __base, 0);
}
__extern_inline unsigned long int
strtoul (__const char *__restrict __nptr, char **__restrict __endptr,
int __base) __THROW
{
return __strtoul_internal (__nptr, __endptr, __base, 0);
}
__END_NAMESPACE_STD
# ifdef __USE_ISOC99
__BEGIN_NAMESPACE_C99
__extern_inline float
strtof (__const char *__restrict __nptr, char **__restrict __endptr) __THROW
{
return __strtof_internal (__nptr, __endptr, 0);
}
__extern_inline long double
strtold (__const char *__restrict __nptr, char **__restrict __endptr) __THROW
{
return __strtold_internal (__nptr, __endptr, 0);
}
__END_NAMESPACE_C99
# endif
# ifdef __USE_BSD
__extension__ __extern_inline long long int
strtoq (__const char *__restrict __nptr, char **__restrict __endptr,
int __base) __THROW
{
return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ __extern_inline unsigned long long int
strtouq (__const char *__restrict __nptr, char **__restrict __endptr,
int __base) __THROW
{
return __strtoull_internal (__nptr, __endptr, __base, 0);
}
# endif
# if defined __USE_MISC || defined __USE_ISOC99
__BEGIN_NAMESPACE_C99
__extension__ __extern_inline long long int
strtoll (__const char *__restrict __nptr, char **__restrict __endptr,
int __base) __THROW
{
return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ __extern_inline unsigned long long int
strtoull (__const char * __restrict __nptr, char **__restrict __endptr,
int __base) __THROW
{
return __strtoull_internal (__nptr, __endptr, __base, 0);
}
__END_NAMESPACE_C99
# endif
__BEGIN_NAMESPACE_STD
__extern_inline double
atof (__const char *__nptr) __THROW
{
return strtod (__nptr, (char **) NULL);
}
__extern_inline int
atoi (__const char *__nptr) __THROW
{
return (int) strtol (__nptr, (char **) NULL, 10);
}
__extern_inline long int
atol (__const char *__nptr) __THROW
{
return strtol (__nptr, (char **) NULL, 10);
}
__END_NAMESPACE_STD
# if defined __USE_MISC || defined __USE_ISOC99
__BEGIN_NAMESPACE_C99
__extension__ __extern_inline long long int
atoll (__const char *__nptr) __THROW
{
return strtoll (__nptr, (char **) NULL, 10);
}
__END_NAMESPACE_C99
# endif
#endif
#if defined __USE_SVID || defined __USE_XOPEN_EXTENDED
digit first. Returns a pointer to static storage overwritten by the
next call. */
extern char *l64a (long int __n) __THROW;
extern long int a64l (__const char *__s) __THROW __attribute_pure__;
#endif
#if defined __USE_SVID || defined __USE_XOPEN_EXTENDED || defined __USE_BSD
# include <sys/types.h>
`initstate' and `setstate' functions are those from BSD Unices.
The `rand' and `srand' functions are required by the ANSI standard.
We provide both interfaces to the same random number generator. */
extern long int random (void) __THROW;
extern void srandom (unsigned int __seed) __THROW;
of length STATELEN, and seed it with SEED. Optimal lengths are 8, 16,
32, 64, 128 and 256, the bigger the better; values less than 8 will
cause an error and values greater than 256 will be rounded down. */
extern char *initstate (unsigned int __seed, char *__statebuf,
size_t __statelen) __THROW;
which should have been previously initialized by `initstate'. */
extern char *setstate (char *__statebuf) __THROW;
# ifdef __USE_MISC
These functions all use the following data structure to contain
state, rather than global state variables. */
struct random_data
{
int32_t *fptr;
int32_t *rptr;
int32_t *state;
int rand_type;
int rand_deg;
int rand_sep;
int32_t *end_ptr;
};
extern int random_r (struct random_data *__restrict __buf,
int32_t *__restrict __result) __THROW;
extern int srandom_r (unsigned int __seed, struct random_data *__buf) __THROW;
extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
size_t __statelen,
struct random_data *__restrict __buf) __THROW;
extern int setstate_r (char *__restrict __statebuf,
struct random_data *__restrict __buf) __THROW;
# endif
#endif
__BEGIN_NAMESPACE_STD
extern int rand (void) __THROW;
extern void srand (unsigned int __seed) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_POSIX
extern int rand_r (unsigned int *__seed) __THROW;
#endif
#if defined __USE_SVID || defined __USE_XOPEN
extern double drand48 (void) __THROW;
extern double erand48 (unsigned short int __xsubi[3]) __THROW;
extern long int lrand48 (void) __THROW;
extern long int nrand48 (unsigned short int __xsubi[3]) __THROW;
extern long int mrand48 (void) __THROW;
extern long int jrand48 (unsigned short int __xsubi[3]) __THROW;
extern void srand48 (long int __seedval) __THROW;
extern unsigned short int *seed48 (unsigned short int __seed16v[3]) __THROW;
extern void lcong48 (unsigned short int __param[7]) __THROW;
# ifdef __USE_MISC
type is to be regarded as opaque. It's only exported because users
have to allocate objects of this type. */
struct drand48_data
{
unsigned short int __x[3];
unsigned short int __old_x[3];
unsigned short int __c;
unsigned short int __init;
unsigned long long int __a;
};
extern int drand48_r (struct drand48_data *__restrict __buffer,
double *__restrict __result) __THROW;
extern int erand48_r (unsigned short int __xsubi[3],
struct drand48_data *__restrict __buffer,
double *__restrict __result) __THROW;
extern int lrand48_r (struct drand48_data *__restrict __buffer,
long int *__restrict __result) __THROW;
extern int nrand48_r (unsigned short int __xsubi[3],
struct drand48_data *__restrict __buffer,
long int *__restrict __result) __THROW;
extern int mrand48_r (struct drand48_data *__restrict __buffer,
long int *__restrict __result) __THROW;
extern int jrand48_r (unsigned short int __xsubi[3],
struct drand48_data *__restrict __buffer,
long int *__restrict __result) __THROW;
extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
__THROW;
extern int seed48_r (unsigned short int __seed16v[3],
struct drand48_data *__buffer) __THROW;
extern int lcong48_r (unsigned short int __param[7],
struct drand48_data *__buffer) __THROW;
# endif
#endif
#endif
#ifndef __malloc_and_calloc_defined
# define __malloc_and_calloc_defined
__BEGIN_NAMESPACE_STD
extern void *malloc (size_t __size) __THROW __attribute_malloc__;
extern void *calloc (size_t __nmemb, size_t __size)
__THROW __attribute_malloc__;
__END_NAMESPACE_STD
#endif
#ifndef __need_malloc_and_calloc
__BEGIN_NAMESPACE_STD
in PTR, making the new block SIZE bytes long. */
extern void *realloc (void *__ptr, size_t __size) __THROW __attribute_malloc__;
extern void free (void *__ptr) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_MISC
extern void cfree (void *__ptr) __THROW;
#endif
#if defined __USE_GNU || defined __USE_BSD || defined __USE_MISC
# include <alloca.h>
#endif
#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
extern void *valloc (size_t __size) __THROW __attribute_malloc__;
#endif
#ifdef __USE_XOPEN2K
extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
__THROW __attribute_malloc__;
#endif
__BEGIN_NAMESPACE_STD
extern void abort (void) __THROW __attribute__ ((__noreturn__));
extern int atexit (void (*__func) (void)) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_MISC
given to `exit' and the given argument. */
extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
__THROW;
#endif
__BEGIN_NAMESPACE_STD
in the reverse of the order in which they were registered
perform stdio cleanup, and terminate program execution with STATUS. */
extern void exit (int __status) __THROW __attribute__ ((__noreturn__));
__END_NAMESPACE_STD
#ifdef __USE_ISOC99
__BEGIN_NAMESPACE_C99
functions registered with `atexit' or `on_exit'. */
extern void _Exit (int __status) __THROW __attribute__ ((__noreturn__));
__END_NAMESPACE_C99
#endif
__BEGIN_NAMESPACE_STD
extern char *getenv (__const char *__name) __THROW;
__END_NAMESPACE_STD
programs is running with SUID or SGID enabled. */
extern char *__secure_getenv (__const char *__name) __THROW;
#if defined __USE_SVID || defined __USE_XOPEN
If there is no `=', remove NAME from the environment. */
extern int putenv (char *__string) __THROW;
#endif
#if defined __USE_BSD || defined __USE_XOPEN2K
If REPLACE is nonzero, overwrite an existing value. */
extern int setenv (__const char *__name, __const char *__value, int __replace)
__THROW;
extern int unsetenv (__const char *__name) __THROW;
#endif
#ifdef __USE_MISC
never made it. Nevertheless the POSIX.9 standard (POSIX bindings
for Fortran 77) requires this function. */
extern int clearenv (void) __THROW;
#endif
#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
The last six characters of TEMPLATE must be "XXXXXX";
they are replaced with a string that makes the file name unique.
Returns TEMPLATE, or a null pointer if it cannot get a unique file name. */
extern char *mktemp (char *__template) __THROW;
The last six characters of TEMPLATE must be "XXXXXX";
they are replaced with a string that makes the filename unique.
Returns a file descriptor open on the file for reading and writing,
or -1 if it cannot create a uniquely-named file. */
# ifndef __USE_FILE_OFFSET64
extern int mkstemp (char *__template) __THROW;
# else
# ifdef __REDIRECT
extern int __REDIRECT (mkstemp, (char *__template) __THROW, mkstemp64);
# else
# define mkstemp mkstemp64
# endif
# endif
# ifdef __USE_LARGEFILE64
extern int mkstemp64 (char *__template) __THROW;
# endif
#endif
#ifdef __USE_BSD
The last six characters of TEMPLATE must be "XXXXXX";
they are replaced with a string that makes the directory name unique.
Returns TEMPLATE, or a null pointer if it cannot get a unique name.
The directory is created mode 700. */
extern char *mkdtemp (char *__template) __THROW;
#endif
__BEGIN_NAMESPACE_STD
extern int system (__const char *__command) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_GNU
named file. The last file name component need not exist, and may be a
symlink to a nonexistent file. */
extern char *canonicalize_file_name (__const char *__name) __THROW;
#endif
#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
component need not exist, and may be a symlink to a nonexistent file.
If RESOLVED is null, the result is malloc'd; otherwise, if the canonical
name is PATH_MAX chars or more, returns null with `errno' set to
ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars, returns the
name in RESOLVED. */
extern char *realpath (__const char *__restrict __name,
char *__restrict __resolved) __THROW;
#endif
#ifndef __COMPAR_FN_T
# define __COMPAR_FN_T
typedef int (*__compar_fn_t) (__const void *, __const void *);
# ifdef __USE_GNU
typedef __compar_fn_t comparison_fn_t;
# endif
#endif
__BEGIN_NAMESPACE_STD
of SIZE bytes each, using COMPAR to perform the comparisons. */
extern void *bsearch (__const void *__key, __const void *__base,
size_t __nmemb, size_t __size, __compar_fn_t __compar);
using COMPAR to perform the comparisons. */
extern void qsort (void *__base, size_t __nmemb, size_t __size,
__compar_fn_t __compar);
extern int abs (int __x) __THROW __attribute__ ((__const__));
extern long int labs (long int __x) __THROW __attribute__ ((__const__));
__END_NAMESPACE_STD
#ifdef __USE_ISOC99
__extension__ extern long long int llabs (long long int __x)
__THROW __attribute__ ((__const__));
#endif
__BEGIN_NAMESPACE_STD
of the value of NUMER over DENOM. */
extern div_t div (int __numer, int __denom)
__THROW __attribute__ ((__const__));
extern ldiv_t ldiv (long int __numer, long int __denom)
__THROW __attribute__ ((__const__));
__END_NAMESPACE_STD
#ifdef __USE_ISOC99
__BEGIN_NAMESPACE_C99
__extension__ extern lldiv_t lldiv (long long int __numer,
long long int __denom)
__THROW __attribute__ ((__const__));
__END_NAMESPACE_C99
#endif
#if defined __USE_SVID || defined __USE_XOPEN_EXTENDED
valid only until another call to the same function. */
this. Set *DECPT with the position of the decimal character and *SIGN
with the sign of the number. */
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign) __THROW;
with the position of the decimal character and *SIGN with the sign of
the number. */
extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign) __THROW;
Otherwise use exponential representation. The resulting string will
be written to BUF. */
extern char *gcvt (double __value, int __ndigit, char *__buf) __THROW;
# ifdef __USE_MISC
extern char *qecvt (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign) __THROW;
extern char *qfcvt (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign) __THROW;
extern char *qgcvt (long double __value, int __ndigit, char *__buf) __THROW;
buffers. */
extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign, char *__restrict __buf,
size_t __len) __THROW;
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign, char *__restrict __buf,
size_t __len) __THROW;
extern int qecvt_r (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign,
char *__restrict __buf, size_t __len) __THROW;
extern int qfcvt_r (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign,
char *__restrict __buf, size_t __len) __THROW;
# endif
#endif
__BEGIN_NAMESPACE_STD
in S, which is no longer than N. */
extern int mblen (__const char *__s, size_t __n) __THROW;
putting its `wchar_t' representation in *PWC. */
extern int mbtowc (wchar_t *__restrict __pwc,
__const char *__restrict __s, size_t __n) __THROW;
by WCHAR in S, returning its length. */
extern int wctomb (char *__s, wchar_t __wchar) __THROW;
extern size_t mbstowcs (wchar_t *__restrict __pwcs,
__const char *__restrict __s, size_t __n) __THROW;
extern size_t wcstombs (char *__restrict __s,
__const wchar_t *__restrict __pwcs, size_t __n)
__THROW;
__END_NAMESPACE_STD
#ifdef __USE_SVID
or negative response expression as specified by the LC_MESSAGES category
in the program's current locale. Returns 1 if affirmative, 0 if
negative, and -1 if not matching. */
extern int rpmatch (__const char *__response) __THROW;
#endif
#ifdef __USE_XOPEN_EXTENDED
strings in TOKENS. If found return index and set *VALUEP to
optional value introduced by an equal sign. If the suboption is
not part of TOKENS return in *VALUEP beginning of unknown
suboption. On exit *OPTIONP is set to the beginning of the next
token or at the terminating NUL character. */
extern int getsubopt (char **__restrict __optionp,
char *__const *__restrict __tokens,
char **__restrict __valuep) __THROW;
#endif
#ifdef __USE_XOPEN
extern void setkey (__const char *__key) __THROW;
#endif
#ifdef __USE_XOPEN2K
extern int posix_openpt (int __oflag) __THROW;
#endif
#ifdef __USE_XOPEN
perform an operation on the associated slave: */
extern int grantpt (int __fd) __THROW;
Call after grantpt(). */
extern int unlockpt (int __fd) __THROW;
the master FD is open on, or NULL on errors.
The returned storage is good until the next call to this function. */
extern char *ptsname (int __fd) __THROW;
#endif
#ifdef __USE_GNU
terminal associated with the master FD is open on in BUF.
Return 0 on success, otherwise an error number. */
extern int ptsname_r (int __fd, char *__buf, size_t __buflen) __THROW;
extern int getpt (void) __THROW;
#endif
#ifdef __USE_BSD
NELEM elements of LOADAVG. Return the number written (never more than
three, but may be less than NELEM), or -1 if an error occurred. */
extern int getloadavg (double __loadavg[], int __nelem) __THROW;
#endif
#endif
#undef __need_malloc_and_calloc
__END_DECLS
#endif