|
- /*
- * stdlib.h
- *
- * Definitions for common types, variables, and functions.
- */
-
- #ifndef _STDLIB_H_
- #define _STDLIB_H_
-
- #include <machine/ieeefp.h>
- #include "_ansi.h"
-
- #define __need_size_t
- #define __need_wchar_t
- #define __need_NULL
- #include <stddef.h>
-
- #include <sys/reent.h>
- #include <sys/cdefs.h>
- #include <machine/stdlib.h>
- #ifndef __STRICT_ANSI__
- #include <alloca.h>
- #endif
-
- #ifdef __CYGWIN__
- #include <cygwin/stdlib.h>
- #endif
-
- #if __GNU_VISIBLE
- #include <sys/_locale.h>
- #endif
-
- _BEGIN_STD_C
-
- typedef struct
- {
- int quot; /* quotient */
- int rem; /* remainder */
- } div_t;
-
- typedef struct
- {
- long quot; /* quotient */
- long rem; /* remainder */
- } ldiv_t;
-
- #if __ISO_C_VISIBLE >= 1999
- typedef struct
- {
- long long int quot; /* quotient */
- long long int rem; /* remainder */
- } lldiv_t;
- #endif
-
- #ifndef __compar_fn_t_defined
- #define __compar_fn_t_defined
- typedef int (*__compar_fn_t) (const void *, const void *);
- #endif
-
- #define EXIT_FAILURE 1
- #define EXIT_SUCCESS 0
-
- #define RAND_MAX __RAND_MAX
-
- int __locale_mb_cur_max (void);
-
- #define MB_CUR_MAX __locale_mb_cur_max()
-
- void abort (void) _ATTRIBUTE ((__noreturn__));
- int abs (int);
- #if __BSD_VISIBLE
- __uint32_t arc4random (void);
- __uint32_t arc4random_uniform (__uint32_t);
- void arc4random_buf (void *, size_t);
- #endif
- int atexit (void (*__func)(void));
- double atof (const char *__nptr);
- #if __MISC_VISIBLE
- float atoff (const char *__nptr);
- #endif
- int atoi (const char *__nptr);
- int _atoi_r (struct _reent *, const char *__nptr);
- long atol (const char *__nptr);
- long _atol_r (struct _reent *, const char *__nptr);
- void * bsearch (const void *__key,
- const void *__base,
- size_t __nmemb,
- size_t __size,
- __compar_fn_t _compar);
- void *calloc(size_t, size_t) __malloc_like __result_use_check
- __alloc_size2(1, 2) _NOTHROW;
- div_t div (int __numer, int __denom);
- void exit (int __status) _ATTRIBUTE ((__noreturn__));
- void free (void *) _NOTHROW;
- char * getenv (const char *__string);
- char * _getenv_r (struct _reent *, const char *__string);
- #if __GNU_VISIBLE
- char * secure_getenv (const char *__string);
- #endif
- char * _findenv (const char *, int *);
- char * _findenv_r (struct _reent *, const char *, int *);
- #if __POSIX_VISIBLE >= 200809
- extern char *suboptarg; /* getsubopt(3) external variable */
- int getsubopt (char **, char * const *, char **);
- #endif
- long labs (long);
- ldiv_t ldiv (long __numer, long __denom);
- void *malloc(size_t) __malloc_like __result_use_check __alloc_size(1) _NOTHROW;
- int mblen (const char *, size_t);
- int _mblen_r (struct _reent *, const char *, size_t, _mbstate_t *);
- int mbtowc (wchar_t *__restrict, const char *__restrict, size_t);
- int _mbtowc_r (struct _reent *, wchar_t *__restrict, const char *__restrict, size_t, _mbstate_t *);
- int wctomb (char *, wchar_t);
- int _wctomb_r (struct _reent *, char *, wchar_t, _mbstate_t *);
- size_t mbstowcs (wchar_t *__restrict, const char *__restrict, size_t);
- size_t _mbstowcs_r (struct _reent *, wchar_t *__restrict, const char *__restrict, size_t, _mbstate_t *);
- size_t wcstombs (char *__restrict, const wchar_t *__restrict, size_t);
- size_t _wcstombs_r (struct _reent *, char *__restrict, const wchar_t *__restrict, size_t, _mbstate_t *);
- #ifndef _REENT_ONLY
- #if __BSD_VISIBLE || __POSIX_VISIBLE >= 200809
- char * mkdtemp (char *);
- #endif
- #if __GNU_VISIBLE
- int mkostemp (char *, int);
- int mkostemps (char *, int, int);
- #endif
- #if __MISC_VISIBLE || __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 4
- int mkstemp (char *);
- #endif
- #if __MISC_VISIBLE
- int mkstemps (char *, int);
- #endif
- #if __BSD_VISIBLE || (__XSI_VISIBLE >= 4 && __POSIX_VISIBLE < 200112)
- char * mktemp (char *) _ATTRIBUTE ((__deprecated__("the use of `mktemp' is dangerous; use `mkstemp' instead")));
- #endif
- #endif /* !_REENT_ONLY */
- char * _mkdtemp_r (struct _reent *, char *);
- int _mkostemp_r (struct _reent *, char *, int);
- int _mkostemps_r (struct _reent *, char *, int, int);
- int _mkstemp_r (struct _reent *, char *);
- int _mkstemps_r (struct _reent *, char *, int);
- char * _mktemp_r (struct _reent *, char *) _ATTRIBUTE ((__deprecated__("the use of `mktemp' is dangerous; use `mkstemp' instead")));
- void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t _compar);
- int rand (void);
- void *realloc(void *, size_t) __result_use_check __alloc_size(2) _NOTHROW;
- #if __BSD_VISIBLE
- void *reallocarray(void *, size_t, size_t) __result_use_check __alloc_size2(2, 3);
- void *reallocf(void *, size_t) __result_use_check __alloc_size(2);
- #endif
- #if __BSD_VISIBLE || __XSI_VISIBLE >= 4
- char * realpath (const char *__restrict path, char *__restrict resolved_path);
- #endif
- #if __BSD_VISIBLE
- int rpmatch (const char *response);
- #endif
- #if __XSI_VISIBLE
- void setkey (const char *__key);
- #endif
- void srand (unsigned __seed);
- double strtod (const char *__restrict __n, char **__restrict __end_PTR);
- double _strtod_r (struct _reent *,const char *__restrict __n, char **__restrict __end_PTR);
- #if __ISO_C_VISIBLE >= 1999
- float strtof (const char *__restrict __n, char **__restrict __end_PTR);
- #endif
- #if __MISC_VISIBLE
- /* the following strtodf interface is deprecated...use strtof instead */
- # ifndef strtodf
- # define strtodf strtof
- # endif
- #endif
- long strtol (const char *__restrict __n, char **__restrict __end_PTR, int __base);
- long _strtol_r (struct _reent *,const char *__restrict __n, char **__restrict __end_PTR, int __base);
- unsigned long strtoul (const char *__restrict __n, char **__restrict __end_PTR, int __base);
- unsigned long _strtoul_r (struct _reent *,const char *__restrict __n, char **__restrict __end_PTR, int __base);
-
- #if __GNU_VISIBLE
- double strtod_l (const char *__restrict, char **__restrict, locale_t);
- float strtof_l (const char *__restrict, char **__restrict, locale_t);
- #ifdef _HAVE_LONG_DOUBLE
- extern long double strtold_l (const char *__restrict, char **__restrict,
- locale_t);
- #endif /* _HAVE_LONG_DOUBLE */
- long strtol_l (const char *__restrict, char **__restrict, int, locale_t);
- unsigned long strtoul_l (const char *__restrict, char **__restrict, int,
- locale_t __loc);
- long long strtoll_l (const char *__restrict, char **__restrict, int, locale_t);
- unsigned long long strtoull_l (const char *__restrict, char **__restrict, int,
- locale_t __loc);
- #endif
-
- int system (const char *__string);
-
- #if __SVID_VISIBLE || __XSI_VISIBLE >= 4
- long a64l (const char *__input);
- char * l64a (long __input);
- char * _l64a_r (struct _reent *,long __input);
- #endif
- #if __MISC_VISIBLE
- int on_exit (void (*__func)(int, void *),void *__arg);
- #endif
- #if __ISO_C_VISIBLE >= 1999
- void _Exit (int __status) _ATTRIBUTE ((__noreturn__));
- #endif
- #if __SVID_VISIBLE || __XSI_VISIBLE
- int putenv (char *__string);
- #endif
- int _putenv_r (struct _reent *, char *__string);
- void * _reallocf_r (struct _reent *, void *, size_t);
- #if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112
- int setenv (const char *__string, const char *__value, int __overwrite);
- #endif
- int _setenv_r (struct _reent *, const char *__string, const char *__value, int __overwrite);
-
- #if __XSI_VISIBLE >= 4 && __POSIX_VISIBLE < 200112
- char * gcvt (double,int,char *);
- char * gcvtf (float,int,char *);
- char * fcvt (double,int,int *,int *);
- char * fcvtf (float,int,int *,int *);
- char * ecvt (double,int,int *,int *);
- char * ecvtbuf (double, int, int*, int*, char *);
- char * fcvtbuf (double, int, int*, int*, char *);
- char * ecvtf (float,int,int *,int *);
- #endif
- char * __itoa (int, char *, int);
- char * __utoa (unsigned, char *, int);
- #if __MISC_VISIBLE
- char * itoa (int, char *, int);
- char * utoa (unsigned, char *, int);
- #endif
- #if __POSIX_VISIBLE
- int rand_r (unsigned *__seed);
- #endif
-
- #if __SVID_VISIBLE || __XSI_VISIBLE
- double drand48 (void);
- double _drand48_r (struct _reent *);
- double erand48 (unsigned short [3]);
- double _erand48_r (struct _reent *, unsigned short [3]);
- long jrand48 (unsigned short [3]);
- long _jrand48_r (struct _reent *, unsigned short [3]);
- void lcong48 (unsigned short [7]);
- void _lcong48_r (struct _reent *, unsigned short [7]);
- long lrand48 (void);
- long _lrand48_r (struct _reent *);
- long mrand48 (void);
- long _mrand48_r (struct _reent *);
- long nrand48 (unsigned short [3]);
- long _nrand48_r (struct _reent *, unsigned short [3]);
- unsigned short *
- seed48 (unsigned short [3]);
- unsigned short *
- _seed48_r (struct _reent *, unsigned short [3]);
- void srand48 (long);
- void _srand48_r (struct _reent *, long);
- #endif /* __SVID_VISIBLE || __XSI_VISIBLE */
- #if __SVID_VISIBLE || __XSI_VISIBLE >= 4 || __BSD_VISIBLE
- char * initstate (unsigned, char *, size_t);
- long random (void);
- char * setstate (char *);
- void srandom (unsigned);
- #endif
- #if __ISO_C_VISIBLE >= 1999
- long long atoll (const char *__nptr);
- #endif
- long long _atoll_r (struct _reent *, const char *__nptr);
- #if __ISO_C_VISIBLE >= 1999
- long long llabs (long long);
- lldiv_t lldiv (long long __numer, long long __denom);
- long long strtoll (const char *__restrict __n, char **__restrict __end_PTR, int __base);
- #endif
- long long _strtoll_r (struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base);
- #if __ISO_C_VISIBLE >= 1999
- unsigned long long strtoull (const char *__restrict __n, char **__restrict __end_PTR, int __base);
- #endif
- unsigned long long _strtoull_r (struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base);
-
- #ifndef __CYGWIN__
- #if __MISC_VISIBLE
- void cfree (void *);
- #endif
- #if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112
- int unsetenv (const char *__string);
- #endif
- int _unsetenv_r (struct _reent *, const char *__string);
- #endif /* !__CYGWIN__ */
-
- #if __POSIX_VISIBLE >= 200112
- int posix_memalign (void **, size_t, size_t) __nonnull((1))
- __result_use_check;
- #endif
-
- char * _dtoa_r (struct _reent *, double, int, int, int *, int*, char**);
- #ifndef __CYGWIN__
- void * _malloc_r (struct _reent *, size_t) _NOTHROW;
- void * _calloc_r (struct _reent *, size_t, size_t) _NOTHROW;
- void _free_r (struct _reent *, void *) _NOTHROW;
- void * _realloc_r (struct _reent *, void *, size_t) _NOTHROW;
- void _mstats_r (struct _reent *, char *);
- #endif
- int _system_r (struct _reent *, const char *);
-
- void __eprintf (const char *, const char *, unsigned int, const char *);
-
- /* There are two common qsort_r variants. If you request
- _BSD_SOURCE, you get the BSD version; otherwise you get the GNU
- version. We want that #undef qsort_r will still let you
- invoke the underlying function, but that requires gcc support. */
- #if __GNU_VISIBLE
- void qsort_r (void *__base, size_t __nmemb, size_t __size, int (*_compar)(const void *, const void *, void *), void *__thunk);
- #elif __BSD_VISIBLE
- # ifdef __GNUC__
- void qsort_r (void *__base, size_t __nmemb, size_t __size, void *__thunk, int (*_compar)(void *, const void *, const void *))
- __asm__ (__ASMNAME ("__bsd_qsort_r"));
- # else
- void __bsd_qsort_r (void *__base, size_t __nmemb, size_t __size, void *__thunk, int (*_compar)(void *, const void *, const void *));
- # define qsort_r __bsd_qsort_r
- # endif
- #endif
-
- /* On platforms where long double equals double. */
- #ifdef _HAVE_LONG_DOUBLE
- extern long double _strtold_r (struct _reent *, const char *__restrict, char **__restrict);
- #if __ISO_C_VISIBLE >= 1999
- extern long double strtold (const char *__restrict, char **__restrict);
- #endif
- #endif /* _HAVE_LONG_DOUBLE */
-
- /*
- * If we're in a mode greater than C99, expose C11 functions.
- */
- #if __ISO_C_VISIBLE >= 2011
- void * aligned_alloc(size_t, size_t) __malloc_like __alloc_align(1)
- __alloc_size(2) __result_use_check;
- int at_quick_exit(void (*)(void));
- _Noreturn void
- quick_exit(int);
- #endif /* __ISO_C_VISIBLE >= 2011 */
-
- _END_STD_C
-
- #if __SSP_FORTIFY_LEVEL > 0
- #include <ssp/stdlib.h>
- #endif
-
- #endif /* _STDLIB_H_ */
|