346 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			346 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C
		
	
	
	
| /*
 | |
|  * 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_ */
 |