2000-02-18 03:39:52 +08:00
|
|
|
/*
|
|
|
|
* stdlib.h
|
|
|
|
*
|
|
|
|
* Definitions for common types, variables, and functions.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _STDLIB_H_
|
|
|
|
#define _STDLIB_H_
|
|
|
|
|
2009-04-16 Ken Werner <ken.werner@de.ibm.com>
* libm/libm.texinfo: Add long double function support chapter.
* libc/include/machine/ieeefp.h: Add _LDBL_EQ_DBL define.
* libc/include/stdlib.h: Include <machine/ieeefp.h>.
(strtold, wcstold): Declare.
* libc/stdlib/strtold.c: New File.
* libc/stdlib/wcstold.c: Likewise.
* libc/configure.in: Add long double check.
* libc/configure: Regenerate.
* libc/stdlib/Makefile.am: Add strtold.c and wcstold.c.
* libc/stdlib/Makefile.in: Regenerate.
* libc/include/math.h (atanl, cosl, sinl, tanl, tanhl): Declare.
(frexpl, modfl, ceill, fabsl, floorl, log1pl, expm1l, acosl): Ditto.
(asinl, atan2l, coshl, sinhl, expl, ldexpl, logl, log10l, powl): Ditto.
(sqrtl, fmodl, hypotl, copysignl, nanl, ilogbl, asinhl, cbrt): Ditto.
(nextafterl, rintl, scalbnl, exp2l, scalblnl, tgammal): Ditto.
(nearbyintl, lrintl, llrintl, roundl, lroundl, llround): Ditto.
(llroundl, truncl, remquol, fdiml, fmaxl, fminl, fmal, acoshl): Ditto.
(atanhl, remainderl, lgammal, erfl, erfcl): Ditto.
* libm/common/atanl.c: New File.
* libm/common/cosl.c: Likewise.
* libm/common/sinl.c: Likewise.
* libm/common/modfl.c: Likewise.
* libm/common/frexpl.c: Likewise.
* libm/common/tanhl.c: Likewise.
* libm/common/tanl.c: Likewise.
* libm/common/expm1l.c: Likewise.
* libm/common/log1pl.c: Likewise.
* libm/common/ceill.c: Likewise.
* libm/common/fabsl.c: Likewise.
* libm/common/floorl.c: Likewise.
* libm/common/acosl.c: Likewise.
* libm/common/asinl.c: Likewise.
* libm/common/atan2l.c: Likewise.
* libm/common/coshl.c: Likewise.
* libm/common/expl.c: Likewise.
* libm/common/fmodl.c: Likewise.
* libm/common/hypotl.c: Likewise.
* libm/common/ldexpl.c: Likewise.
* libm/common/log10l.c: Likewise.
* libm/common/logl.c: Likewise.
* libm/common/powl.c: Likewise.
* libm/common/sqrtl.c: Likewise.
* libm/common/copysignl.c: Likewise.
* libm/common/ilogbl.c: Likewise.
* libm/common/nanl.c: Likewise.
* libm/common/cbrtl.c: Likewise.
* libm/common/asinhl.c: Likewise.
* libm/common/nextafterl.c: Likewise.
* libm/common/rintl.c: Likewise.
* libm/common/scalbnl.c: Likewise.
* libm/common/exp2l.c: Likewise.
* libm/common/fdiml.c: Likewise.
* libm/common/fmal.c: Likewise.
* libm/common/fmaxl.c: Likewise.
* libm/common/fminl.c: Likewise.
* libm/common/lrintl.c: Likewise.
* libm/common/lroundl.c: Likewise.
* libm/common/nearbyintl.c: Likewise.
* libm/common/remquol.c: Likewise.
* libm/common/roundl.c: Likewise.
* libm/common/scalblnl.c: Likewise.
* libm/common/truncl.c: Likewise.
* libm/common/acoshl.c: Likewise.
* libm/common/atanhl.c: Likewise.
* libm/common/erfcl.c: Likewise.
* libm/common/erfl.c: Likewise.
* libm/common/lgammal.c: Likewise.
* libm/common/remainderl.c: Likewise.
* libm/common/tgammal.c: Likewise.
* libm/common/sinhl.c: Likewise.
* libm/common/llroundl.c: Likewise.
* libm/configure.in: Add long double check.
* libm/configure: Regenerate.
* libm/common/Makefile.am: Add new files.
* libm/common/Makefile.in: Regenerate.
2009-04-17 02:24:35 +08:00
|
|
|
#include <machine/ieeefp.h>
|
2000-02-18 03:39:52 +08:00
|
|
|
#include "_ansi.h"
|
|
|
|
|
|
|
|
#define __need_size_t
|
|
|
|
#define __need_wchar_t
|
2012-11-01 19:51:12 +08:00
|
|
|
#define __need_NULL
|
2000-02-18 03:39:52 +08:00
|
|
|
#include <stddef.h>
|
|
|
|
|
|
|
|
#include <sys/reent.h>
|
2014-12-15 20:58:19 +08:00
|
|
|
#include <sys/cdefs.h>
|
2002-04-20 03:16:22 +08:00
|
|
|
#include <machine/stdlib.h>
|
2001-11-14 18:25:35 +08:00
|
|
|
#ifndef __STRICT_ANSI__
|
|
|
|
#include <alloca.h>
|
|
|
|
#endif
|
|
|
|
|
2005-12-06 06:15:21 +08:00
|
|
|
#ifdef __CYGWIN__
|
|
|
|
#include <cygwin/stdlib.h>
|
|
|
|
#endif
|
|
|
|
|
2002-06-28 07:58:38 +08:00
|
|
|
_BEGIN_STD_C
|
|
|
|
|
2000-02-18 03:39:52 +08:00
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
int quot; /* quotient */
|
|
|
|
int rem; /* remainder */
|
|
|
|
} div_t;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
long quot; /* quotient */
|
|
|
|
long rem; /* remainder */
|
|
|
|
} ldiv_t;
|
|
|
|
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __ISO_C_VISIBLE >= 1999
|
2003-11-28 03:47:19 +08:00
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
long long int quot; /* quotient */
|
|
|
|
long long int rem; /* remainder */
|
|
|
|
} lldiv_t;
|
|
|
|
#endif
|
|
|
|
|
2013-09-08 15:11:33 +08:00
|
|
|
#ifndef __compar_fn_t_defined
|
|
|
|
#define __compar_fn_t_defined
|
|
|
|
typedef int (*__compar_fn_t) (const _PTR, const _PTR);
|
|
|
|
#endif
|
|
|
|
|
2000-02-18 03:39:52 +08:00
|
|
|
#define EXIT_FAILURE 1
|
|
|
|
#define EXIT_SUCCESS 0
|
|
|
|
|
2000-06-09 09:13:36 +08:00
|
|
|
#define RAND_MAX __RAND_MAX
|
2000-02-18 03:39:52 +08:00
|
|
|
|
2010-04-28 17:59:37 +08:00
|
|
|
int _EXFUN(__locale_mb_cur_max,(_VOID));
|
2000-02-18 03:39:52 +08:00
|
|
|
|
2010-04-28 17:59:37 +08:00
|
|
|
#define MB_CUR_MAX __locale_mb_cur_max()
|
2000-02-18 03:39:52 +08:00
|
|
|
|
2014-08-01 23:44:51 +08:00
|
|
|
_VOID _EXFUN(abort,(_VOID) _ATTRIBUTE ((__noreturn__)));
|
2000-02-18 03:39:52 +08:00
|
|
|
int _EXFUN(abs,(int));
|
2016-03-18 18:49:28 +08:00
|
|
|
#if __BSD_VISIBLE
|
|
|
|
__uint32_t _EXFUN(arc4random, (void));
|
|
|
|
__uint32_t _EXFUN(arc4random_uniform, (__uint32_t));
|
|
|
|
void _EXFUN(arc4random_buf, (void *, size_t));
|
|
|
|
#endif
|
2000-02-18 03:39:52 +08:00
|
|
|
int _EXFUN(atexit,(_VOID (*__func)(_VOID)));
|
|
|
|
double _EXFUN(atof,(const char *__nptr));
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __MISC_VISIBLE
|
2000-02-18 03:39:52 +08:00
|
|
|
float _EXFUN(atoff,(const char *__nptr));
|
|
|
|
#endif
|
|
|
|
int _EXFUN(atoi,(const char *__nptr));
|
2003-11-28 04:54:12 +08:00
|
|
|
int _EXFUN(_atoi_r,(struct _reent *, const char *__nptr));
|
2000-02-18 03:39:52 +08:00
|
|
|
long _EXFUN(atol,(const char *__nptr));
|
2003-11-28 04:15:47 +08:00
|
|
|
long _EXFUN(_atol_r,(struct _reent *, const char *__nptr));
|
2000-02-18 03:39:52 +08:00
|
|
|
_PTR _EXFUN(bsearch,(const _PTR __key,
|
|
|
|
const _PTR __base,
|
|
|
|
size_t __nmemb,
|
|
|
|
size_t __size,
|
2013-09-08 15:11:33 +08:00
|
|
|
__compar_fn_t _compar));
|
2009-04-22 02:24:59 +08:00
|
|
|
_PTR _EXFUN_NOTHROW(calloc,(size_t __nmemb, size_t __size));
|
2000-02-18 03:39:52 +08:00
|
|
|
div_t _EXFUN(div,(int __numer, int __denom));
|
2014-08-01 23:44:51 +08:00
|
|
|
_VOID _EXFUN(exit,(int __status) _ATTRIBUTE ((__noreturn__)));
|
2009-04-22 02:24:59 +08:00
|
|
|
_VOID _EXFUN_NOTHROW(free,(_PTR));
|
2000-02-18 03:39:52 +08:00
|
|
|
char * _EXFUN(getenv,(const char *__string));
|
|
|
|
char * _EXFUN(_getenv_r,(struct _reent *, const char *__string));
|
|
|
|
char * _EXFUN(_findenv,(_CONST char *, int *));
|
|
|
|
char * _EXFUN(_findenv_r,(struct _reent *, _CONST char *, int *));
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __POSIX_VISIBLE >= 200809
|
2009-12-22 21:07:24 +08:00
|
|
|
extern char *suboptarg; /* getsubopt(3) external variable */
|
|
|
|
int _EXFUN(getsubopt,(char **, char * const *, char **));
|
|
|
|
#endif
|
2000-02-18 03:39:52 +08:00
|
|
|
long _EXFUN(labs,(long));
|
|
|
|
ldiv_t _EXFUN(ldiv,(long __numer, long __denom));
|
2009-04-22 02:24:59 +08:00
|
|
|
_PTR _EXFUN_NOTHROW(malloc,(size_t __size));
|
2000-02-18 03:39:52 +08:00
|
|
|
int _EXFUN(mblen,(const char *, size_t));
|
2002-08-23 09:56:05 +08:00
|
|
|
int _EXFUN(_mblen_r,(struct _reent *, const char *, size_t, _mbstate_t *));
|
2013-11-18 Sahil Patnayakuni <sahilp@oarcorp.com>
* libc/include/stdlib.h, libc/stdlib/mbstowcs.c,
libc/stdlib/mbstowcs_r.c, libc/stdlib/mbtowc.c,
libc/stdlib/mbtowc_r.c, libc/stdlib/strtod.c,
libc/stdlib/strtol.c, libc/stdlib/strtold.c,
libc/stdlib/strtoll.c, libc/stdlib/strtoll_r.c,
libc/stdlib/strtoul.c, libc/stdlib/strtoull.c,
libc/stdlib/strtoull_r.c, libc/stdlib/wcstombs.c,
libc/stdlib/wcstombs_r.c: Add restrict keyword.
2013-11-19 01:26:52 +08:00
|
|
|
int _EXFUN(mbtowc,(wchar_t *__restrict, const char *__restrict, size_t));
|
|
|
|
int _EXFUN(_mbtowc_r,(struct _reent *, wchar_t *__restrict, const char *__restrict, size_t, _mbstate_t *));
|
2000-02-18 03:39:52 +08:00
|
|
|
int _EXFUN(wctomb,(char *, wchar_t));
|
2002-08-23 09:56:05 +08:00
|
|
|
int _EXFUN(_wctomb_r,(struct _reent *, char *, wchar_t, _mbstate_t *));
|
2013-11-18 Sahil Patnayakuni <sahilp@oarcorp.com>
* libc/include/stdlib.h, libc/stdlib/mbstowcs.c,
libc/stdlib/mbstowcs_r.c, libc/stdlib/mbtowc.c,
libc/stdlib/mbtowc_r.c, libc/stdlib/strtod.c,
libc/stdlib/strtol.c, libc/stdlib/strtold.c,
libc/stdlib/strtoll.c, libc/stdlib/strtoll_r.c,
libc/stdlib/strtoul.c, libc/stdlib/strtoull.c,
libc/stdlib/strtoull_r.c, libc/stdlib/wcstombs.c,
libc/stdlib/wcstombs_r.c: Add restrict keyword.
2013-11-19 01:26:52 +08:00
|
|
|
size_t _EXFUN(mbstowcs,(wchar_t *__restrict, const char *__restrict, size_t));
|
|
|
|
size_t _EXFUN(_mbstowcs_r,(struct _reent *, wchar_t *__restrict, const char *__restrict, size_t, _mbstate_t *));
|
|
|
|
size_t _EXFUN(wcstombs,(char *__restrict, const wchar_t *__restrict, size_t));
|
|
|
|
size_t _EXFUN(_wcstombs_r,(struct _reent *, char *__restrict, const wchar_t *__restrict, size_t, _mbstate_t *));
|
2000-12-06 19:02:28 +08:00
|
|
|
#ifndef _REENT_ONLY
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200809
|
2009-07-03 20:03:25 +08:00
|
|
|
char * _EXFUN(mkdtemp,(char *));
|
2016-03-15 05:55:26 +08:00
|
|
|
#endif
|
|
|
|
#if __GNU_VISIBLE
|
2010-07-20 02:21:11 +08:00
|
|
|
int _EXFUN(mkostemp,(char *, int));
|
|
|
|
int _EXFUN(mkostemps,(char *, int, int));
|
2016-03-15 05:55:26 +08:00
|
|
|
#endif
|
|
|
|
#if __MISC_VISIBLE || __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 4
|
2009-07-03 20:03:25 +08:00
|
|
|
int _EXFUN(mkstemp,(char *));
|
2016-03-15 05:55:26 +08:00
|
|
|
#endif
|
|
|
|
#if __MISC_VISIBLE
|
2009-07-03 20:03:25 +08:00
|
|
|
int _EXFUN(mkstemps,(char *, int));
|
2016-03-15 05:55:26 +08:00
|
|
|
#endif
|
|
|
|
#if __BSD_VISIBLE || (__XSI_VISIBLE >= 4 && __POSIX_VISIBLE < 200112)
|
2015-11-06 18:05:09 +08:00
|
|
|
char * _EXFUN(mktemp,(char *) _ATTRIBUTE ((__deprecated__("the use of `mktemp' is dangerous; use `mkstemp' instead"))));
|
2000-12-06 19:02:28 +08:00
|
|
|
#endif
|
2016-03-15 05:55:26 +08:00
|
|
|
#endif /* !_REENT_ONLY */
|
2009-07-03 20:03:25 +08:00
|
|
|
char * _EXFUN(_mkdtemp_r, (struct _reent *, char *));
|
2010-07-20 02:21:11 +08:00
|
|
|
int _EXFUN(_mkostemp_r, (struct _reent *, char *, int));
|
|
|
|
int _EXFUN(_mkostemps_r, (struct _reent *, char *, int, int));
|
2009-03-14 20:17:19 +08:00
|
|
|
int _EXFUN(_mkstemp_r, (struct _reent *, char *));
|
2009-07-03 20:03:25 +08:00
|
|
|
int _EXFUN(_mkstemps_r, (struct _reent *, char *, int));
|
2015-11-06 18:05:09 +08:00
|
|
|
char * _EXFUN(_mktemp_r, (struct _reent *, char *) _ATTRIBUTE ((__deprecated__("the use of `mktemp' is dangerous; use `mkstemp' instead"))));
|
2013-09-08 15:11:33 +08:00
|
|
|
_VOID _EXFUN(qsort,(_PTR __base, size_t __nmemb, size_t __size, __compar_fn_t _compar));
|
2000-02-18 03:39:52 +08:00
|
|
|
int _EXFUN(rand,(_VOID));
|
2009-04-22 02:24:59 +08:00
|
|
|
_PTR _EXFUN_NOTHROW(realloc,(_PTR __r, size_t __size));
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __BSD_VISIBLE
|
2008-11-20 04:56:22 +08:00
|
|
|
_PTR _EXFUN(reallocf,(_PTR __r, size_t __size));
|
2016-03-15 05:55:26 +08:00
|
|
|
#endif
|
|
|
|
#if __BSD_VISIBLE || __XSI_VISIBLE >= 4
|
2013-11-20 17:46:39 +08:00
|
|
|
char * _EXFUN(realpath, (const char *__restrict path, char *__restrict resolved_path));
|
2016-03-15 05:55:26 +08:00
|
|
|
#endif
|
|
|
|
#if __BSD_VISIBLE
|
2015-11-18 01:53:00 +08:00
|
|
|
int _EXFUN(rpmatch, (const char *response));
|
2008-11-20 04:56:22 +08:00
|
|
|
#endif
|
2000-02-18 03:39:52 +08:00
|
|
|
_VOID _EXFUN(srand,(unsigned __seed));
|
2013-11-18 Sahil Patnayakuni <sahilp@oarcorp.com>
* libc/include/stdlib.h, libc/stdlib/mbstowcs.c,
libc/stdlib/mbstowcs_r.c, libc/stdlib/mbtowc.c,
libc/stdlib/mbtowc_r.c, libc/stdlib/strtod.c,
libc/stdlib/strtol.c, libc/stdlib/strtold.c,
libc/stdlib/strtoll.c, libc/stdlib/strtoll_r.c,
libc/stdlib/strtoul.c, libc/stdlib/strtoull.c,
libc/stdlib/strtoull_r.c, libc/stdlib/wcstombs.c,
libc/stdlib/wcstombs_r.c: Add restrict keyword.
2013-11-19 01:26:52 +08:00
|
|
|
double _EXFUN(strtod,(const char *__restrict __n, char **__restrict __end_PTR));
|
|
|
|
double _EXFUN(_strtod_r,(struct _reent *,const char *__restrict __n, char **__restrict __end_PTR));
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __ISO_C_VISIBLE >= 1999
|
2013-11-18 Sahil Patnayakuni <sahilp@oarcorp.com>
* libc/include/stdlib.h, libc/stdlib/mbstowcs.c,
libc/stdlib/mbstowcs_r.c, libc/stdlib/mbtowc.c,
libc/stdlib/mbtowc_r.c, libc/stdlib/strtod.c,
libc/stdlib/strtol.c, libc/stdlib/strtold.c,
libc/stdlib/strtoll.c, libc/stdlib/strtoll_r.c,
libc/stdlib/strtoul.c, libc/stdlib/strtoull.c,
libc/stdlib/strtoull_r.c, libc/stdlib/wcstombs.c,
libc/stdlib/wcstombs_r.c: Add restrict keyword.
2013-11-19 01:26:52 +08:00
|
|
|
float _EXFUN(strtof,(const char *__restrict __n, char **__restrict __end_PTR));
|
2012-10-22 23:15:21 +08:00
|
|
|
#endif
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __MISC_VISIBLE
|
2002-12-07 02:58:51 +08:00
|
|
|
/* the following strtodf interface is deprecated...use strtof instead */
|
2016-03-15 05:55:26 +08:00
|
|
|
# ifndef strtodf
|
2002-12-07 02:58:51 +08:00
|
|
|
# define strtodf strtof
|
|
|
|
# endif
|
2000-02-18 03:39:52 +08:00
|
|
|
#endif
|
2013-11-18 Sahil Patnayakuni <sahilp@oarcorp.com>
* libc/include/stdlib.h, libc/stdlib/mbstowcs.c,
libc/stdlib/mbstowcs_r.c, libc/stdlib/mbtowc.c,
libc/stdlib/mbtowc_r.c, libc/stdlib/strtod.c,
libc/stdlib/strtol.c, libc/stdlib/strtold.c,
libc/stdlib/strtoll.c, libc/stdlib/strtoll_r.c,
libc/stdlib/strtoul.c, libc/stdlib/strtoull.c,
libc/stdlib/strtoull_r.c, libc/stdlib/wcstombs.c,
libc/stdlib/wcstombs_r.c: Add restrict keyword.
2013-11-19 01:26:52 +08:00
|
|
|
long _EXFUN(strtol,(const char *__restrict __n, char **__restrict __end_PTR, int __base));
|
|
|
|
long _EXFUN(_strtol_r,(struct _reent *,const char *__restrict __n, char **__restrict __end_PTR, int __base));
|
|
|
|
unsigned long _EXFUN(strtoul,(const char *__restrict __n, char **__restrict __end_PTR, int __base));
|
|
|
|
unsigned long _EXFUN(_strtoul_r,(struct _reent *,const char *__restrict __n, char **__restrict __end_PTR, int __base));
|
2001-10-02 02:05:11 +08:00
|
|
|
|
2000-02-18 03:39:52 +08:00
|
|
|
int _EXFUN(system,(const char *__string));
|
|
|
|
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __SVID_VISIBLE || __XSI_VISIBLE >= 4
|
2002-05-07 04:50:32 +08:00
|
|
|
long _EXFUN(a64l,(const char *__input));
|
|
|
|
char * _EXFUN(l64a,(long __input));
|
|
|
|
char * _EXFUN(_l64a_r,(struct _reent *,long __input));
|
2016-03-15 05:55:26 +08:00
|
|
|
#endif
|
|
|
|
#if __MISC_VISIBLE
|
2002-05-16 06:58:10 +08:00
|
|
|
int _EXFUN(on_exit,(_VOID (*__func)(int, _PTR),_PTR __arg));
|
2016-03-15 05:55:26 +08:00
|
|
|
#endif
|
|
|
|
#if __ISO_C_VISIBLE >= 1999
|
2014-08-01 23:44:51 +08:00
|
|
|
_VOID _EXFUN(_Exit,(int __status) _ATTRIBUTE ((__noreturn__)));
|
2014-10-10 22:43:19 +08:00
|
|
|
#endif
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __SVID_VISIBLE || __XSI_VISIBLE
|
2004-11-25 06:34:15 +08:00
|
|
|
int _EXFUN(putenv,(char *__string));
|
2016-03-15 05:55:26 +08:00
|
|
|
#endif
|
2004-11-25 06:34:15 +08:00
|
|
|
int _EXFUN(_putenv_r,(struct _reent *, char *__string));
|
2008-11-20 04:56:22 +08:00
|
|
|
_PTR _EXFUN(_reallocf_r,(struct _reent *, _PTR, size_t));
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112
|
2000-02-18 03:39:52 +08:00
|
|
|
int _EXFUN(setenv,(const char *__string, const char *__value, int __overwrite));
|
2016-03-15 05:55:26 +08:00
|
|
|
#endif
|
2000-02-18 03:39:52 +08:00
|
|
|
int _EXFUN(_setenv_r,(struct _reent *, const char *__string, const char *__value, int __overwrite));
|
|
|
|
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __XSI_VISIBLE >= 4 && __POSIX_VISIBLE < 200112
|
2000-02-18 03:39:52 +08:00
|
|
|
char * _EXFUN(gcvt,(double,int,char *));
|
|
|
|
char * _EXFUN(gcvtf,(float,int,char *));
|
|
|
|
char * _EXFUN(fcvt,(double,int,int *,int *));
|
|
|
|
char * _EXFUN(fcvtf,(float,int,int *,int *));
|
|
|
|
char * _EXFUN(ecvt,(double,int,int *,int *));
|
|
|
|
char * _EXFUN(ecvtbuf,(double, int, int*, int*, char *));
|
|
|
|
char * _EXFUN(fcvtbuf,(double, int, int*, int*, char *));
|
|
|
|
char * _EXFUN(ecvtf,(float,int,int *,int *));
|
2014-12-16 18:55:17 +08:00
|
|
|
#endif
|
|
|
|
char * _EXFUN(__itoa,(int, char *, int));
|
|
|
|
char * _EXFUN(__utoa,(unsigned, char *, int));
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __MISC_VISIBLE
|
2014-12-16 18:55:17 +08:00
|
|
|
char * _EXFUN(itoa,(int, char *, int));
|
|
|
|
char * _EXFUN(utoa,(unsigned, char *, int));
|
2016-03-15 05:55:26 +08:00
|
|
|
#endif
|
|
|
|
#if __POSIX_VISIBLE
|
2000-02-18 03:39:52 +08:00
|
|
|
int _EXFUN(rand_r,(unsigned *__seed));
|
2016-03-15 05:55:26 +08:00
|
|
|
#endif
|
2000-02-18 03:39:52 +08:00
|
|
|
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __SVID_VISIBLE || __XSI_VISIBLE
|
2001-02-14 Kazuhiro Fujieda <fujieda@jaist.ac.jp>
* libc/include/stdlib.h: Add declarations of rand48 functions and
their reentrant versions.
* libc/include/sys/reent.h: Move macros from rand48.h. Add
struct _rand48 for shared parameters of rand48 functions.
(struct _reent): Add a variable _r48 of struct _rand48.
(_REENT_INIT): Add _r48 initialization.
* libc/stdlib/Makefile.am (lib_a_SOURCES): Add rand48 functions.
(CHEWOUT_FILES): Add rand48.def.
* libc/stdlib/Makefile.am: Add dependencies for rand48 functions.
* libc/stdlib/Makefile.in: Regenerated.
* libc/stdlib/drand48.c (drand48, _drand48_r): Derived from the
NetBSD C library.
* libc/stdlib/erand48.c (erand48, _erand48_r): Ditto.
* libc/stdlib/jrand48.c (jrand48, _jrand48_r): Ditto.
* libc/stdlib/lcong48.c (lcong48, _lcong48_r): Ditto.
* libc/stdlib/lrand48.c (lrand48, _lrand48_r): Ditto.
* libc/stdlib/mrand48.c (mrand48, _mrand48_r): Ditto.
* libc/stdlib/nrand48.c (nrand48, _nrand48_r): Ditto.
* libc/stdlib/seed48.c (seed48, _seed48_r): Ditto.
* libc/stdlib/srand48.c (srand48, _srand48_r): Ditto.
* libc/stdlib/rand48.c (__dorand48): Ditto.
* libc/stdlib/rand48.h: Ditto, and modify declarations of global
parameters into macros referring them in the reentrant structure.
2001-02-15 10:04:55 +08:00
|
|
|
double _EXFUN(drand48,(_VOID));
|
|
|
|
double _EXFUN(_drand48_r,(struct _reent *));
|
|
|
|
double _EXFUN(erand48,(unsigned short [3]));
|
|
|
|
double _EXFUN(_erand48_r,(struct _reent *, unsigned short [3]));
|
|
|
|
long _EXFUN(jrand48,(unsigned short [3]));
|
|
|
|
long _EXFUN(_jrand48_r,(struct _reent *, unsigned short [3]));
|
|
|
|
_VOID _EXFUN(lcong48,(unsigned short [7]));
|
|
|
|
_VOID _EXFUN(_lcong48_r,(struct _reent *, unsigned short [7]));
|
|
|
|
long _EXFUN(lrand48,(_VOID));
|
|
|
|
long _EXFUN(_lrand48_r,(struct _reent *));
|
|
|
|
long _EXFUN(mrand48,(_VOID));
|
|
|
|
long _EXFUN(_mrand48_r,(struct _reent *));
|
|
|
|
long _EXFUN(nrand48,(unsigned short [3]));
|
|
|
|
long _EXFUN(_nrand48_r,(struct _reent *, unsigned short [3]));
|
|
|
|
unsigned short *
|
|
|
|
_EXFUN(seed48,(unsigned short [3]));
|
|
|
|
unsigned short *
|
|
|
|
_EXFUN(_seed48_r,(struct _reent *, unsigned short [3]));
|
|
|
|
_VOID _EXFUN(srand48,(long));
|
|
|
|
_VOID _EXFUN(_srand48_r,(struct _reent *, long));
|
2016-03-15 05:55:26 +08:00
|
|
|
#endif /* __SVID_VISIBLE || __XSI_VISIBLE */
|
2016-03-23 06:50:48 +08:00
|
|
|
#if __SVID_VISIBLE || __XSI_VISIBLE >= 4 || __BSD_VISIBLE
|
|
|
|
char * _EXFUN(initstate,(unsigned, char *, size_t));
|
|
|
|
long _EXFUN(random,(_VOID));
|
|
|
|
char * _EXFUN(setstate,(char *));
|
|
|
|
_VOID _EXFUN(srandom,(unsigned));
|
|
|
|
#endif
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __ISO_C_VISIBLE >= 1999
|
2003-11-28 03:47:19 +08:00
|
|
|
long long _EXFUN(atoll,(const char *__nptr));
|
2014-10-10 22:43:19 +08:00
|
|
|
#endif
|
2003-11-28 04:15:47 +08:00
|
|
|
long long _EXFUN(_atoll_r,(struct _reent *, const char *__nptr));
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __ISO_C_VISIBLE >= 1999
|
2003-11-28 03:47:19 +08:00
|
|
|
long long _EXFUN(llabs,(long long));
|
|
|
|
lldiv_t _EXFUN(lldiv,(long long __numer, long long __denom));
|
2013-11-18 Sahil Patnayakuni <sahilp@oarcorp.com>
* libc/include/stdlib.h, libc/stdlib/mbstowcs.c,
libc/stdlib/mbstowcs_r.c, libc/stdlib/mbtowc.c,
libc/stdlib/mbtowc_r.c, libc/stdlib/strtod.c,
libc/stdlib/strtol.c, libc/stdlib/strtold.c,
libc/stdlib/strtoll.c, libc/stdlib/strtoll_r.c,
libc/stdlib/strtoul.c, libc/stdlib/strtoull.c,
libc/stdlib/strtoull_r.c, libc/stdlib/wcstombs.c,
libc/stdlib/wcstombs_r.c: Add restrict keyword.
2013-11-19 01:26:52 +08:00
|
|
|
long long _EXFUN(strtoll,(const char *__restrict __n, char **__restrict __end_PTR, int __base));
|
2012-10-22 23:15:21 +08:00
|
|
|
#endif
|
2013-11-18 Sahil Patnayakuni <sahilp@oarcorp.com>
* libc/include/stdlib.h, libc/stdlib/mbstowcs.c,
libc/stdlib/mbstowcs_r.c, libc/stdlib/mbtowc.c,
libc/stdlib/mbtowc_r.c, libc/stdlib/strtod.c,
libc/stdlib/strtol.c, libc/stdlib/strtold.c,
libc/stdlib/strtoll.c, libc/stdlib/strtoll_r.c,
libc/stdlib/strtoul.c, libc/stdlib/strtoull.c,
libc/stdlib/strtoull_r.c, libc/stdlib/wcstombs.c,
libc/stdlib/wcstombs_r.c: Add restrict keyword.
2013-11-19 01:26:52 +08:00
|
|
|
long long _EXFUN(_strtoll_r,(struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base));
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __ISO_C_VISIBLE >= 1999
|
2013-11-18 Sahil Patnayakuni <sahilp@oarcorp.com>
* libc/include/stdlib.h, libc/stdlib/mbstowcs.c,
libc/stdlib/mbstowcs_r.c, libc/stdlib/mbtowc.c,
libc/stdlib/mbtowc_r.c, libc/stdlib/strtod.c,
libc/stdlib/strtol.c, libc/stdlib/strtold.c,
libc/stdlib/strtoll.c, libc/stdlib/strtoll_r.c,
libc/stdlib/strtoul.c, libc/stdlib/strtoull.c,
libc/stdlib/strtoull_r.c, libc/stdlib/wcstombs.c,
libc/stdlib/wcstombs_r.c: Add restrict keyword.
2013-11-19 01:26:52 +08:00
|
|
|
unsigned long long _EXFUN(strtoull,(const char *__restrict __n, char **__restrict __end_PTR, int __base));
|
2012-10-22 23:15:21 +08:00
|
|
|
#endif
|
2013-11-18 Sahil Patnayakuni <sahilp@oarcorp.com>
* libc/include/stdlib.h, libc/stdlib/mbstowcs.c,
libc/stdlib/mbstowcs_r.c, libc/stdlib/mbtowc.c,
libc/stdlib/mbtowc_r.c, libc/stdlib/strtod.c,
libc/stdlib/strtol.c, libc/stdlib/strtold.c,
libc/stdlib/strtoll.c, libc/stdlib/strtoll_r.c,
libc/stdlib/strtoul.c, libc/stdlib/strtoull.c,
libc/stdlib/strtoull_r.c, libc/stdlib/wcstombs.c,
libc/stdlib/wcstombs_r.c: Add restrict keyword.
2013-11-19 01:26:52 +08:00
|
|
|
unsigned long long _EXFUN(_strtoull_r,(struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base));
|
2001-02-14 Kazuhiro Fujieda <fujieda@jaist.ac.jp>
* libc/include/stdlib.h: Add declarations of rand48 functions and
their reentrant versions.
* libc/include/sys/reent.h: Move macros from rand48.h. Add
struct _rand48 for shared parameters of rand48 functions.
(struct _reent): Add a variable _r48 of struct _rand48.
(_REENT_INIT): Add _r48 initialization.
* libc/stdlib/Makefile.am (lib_a_SOURCES): Add rand48 functions.
(CHEWOUT_FILES): Add rand48.def.
* libc/stdlib/Makefile.am: Add dependencies for rand48 functions.
* libc/stdlib/Makefile.in: Regenerated.
* libc/stdlib/drand48.c (drand48, _drand48_r): Derived from the
NetBSD C library.
* libc/stdlib/erand48.c (erand48, _erand48_r): Ditto.
* libc/stdlib/jrand48.c (jrand48, _jrand48_r): Ditto.
* libc/stdlib/lcong48.c (lcong48, _lcong48_r): Ditto.
* libc/stdlib/lrand48.c (lrand48, _lrand48_r): Ditto.
* libc/stdlib/mrand48.c (mrand48, _mrand48_r): Ditto.
* libc/stdlib/nrand48.c (nrand48, _nrand48_r): Ditto.
* libc/stdlib/seed48.c (seed48, _seed48_r): Ditto.
* libc/stdlib/srand48.c (srand48, _srand48_r): Ditto.
* libc/stdlib/rand48.c (__dorand48): Ditto.
* libc/stdlib/rand48.h: Ditto, and modify declarations of global
parameters into macros referring them in the reentrant structure.
2001-02-15 10:04:55 +08:00
|
|
|
|
2000-10-30 09:08:58 +08:00
|
|
|
#ifndef __CYGWIN__
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __MISC_VISIBLE
|
2000-10-30 09:08:58 +08:00
|
|
|
_VOID _EXFUN(cfree,(_PTR));
|
2016-03-15 05:55:26 +08:00
|
|
|
#endif
|
|
|
|
#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112
|
2008-09-25 09:23:08 +08:00
|
|
|
int _EXFUN(unsetenv,(const char *__string));
|
2000-02-18 03:39:52 +08:00
|
|
|
#endif
|
2016-03-15 05:55:26 +08:00
|
|
|
int _EXFUN(_unsetenv_r,(struct _reent *, const char *__string));
|
|
|
|
#endif /* !__CYGWIN__ */
|
2000-02-18 03:39:52 +08:00
|
|
|
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __POSIX_VISIBLE >= 200112
|
2016-03-22 01:15:42 +08:00
|
|
|
int _EXFUN(__nonnull (1) posix_memalign,(void **, size_t, size_t));
|
2009-09-23 05:49:20 +08:00
|
|
|
#endif
|
2000-02-18 03:39:52 +08:00
|
|
|
|
|
|
|
char * _EXFUN(_dtoa_r,(struct _reent *, double, int, int, int *, int*, char**));
|
2002-08-26 12:33:46 +08:00
|
|
|
#ifndef __CYGWIN__
|
2009-04-22 02:24:59 +08:00
|
|
|
_PTR _EXFUN_NOTHROW(_malloc_r,(struct _reent *, size_t));
|
|
|
|
_PTR _EXFUN_NOTHROW(_calloc_r,(struct _reent *, size_t, size_t));
|
|
|
|
_VOID _EXFUN_NOTHROW(_free_r,(struct _reent *, _PTR));
|
|
|
|
_PTR _EXFUN_NOTHROW(_realloc_r,(struct _reent *, _PTR, size_t));
|
2000-02-18 03:39:52 +08:00
|
|
|
_VOID _EXFUN(_mstats_r,(struct _reent *, char *));
|
2002-08-26 12:33:46 +08:00
|
|
|
#endif
|
2000-02-18 03:39:52 +08:00
|
|
|
int _EXFUN(_system_r,(struct _reent *, const char *));
|
|
|
|
|
|
|
|
_VOID _EXFUN(__eprintf,(const char *, const char *, unsigned int, const char *));
|
|
|
|
|
2014-12-06 00:21:04 +08:00
|
|
|
/* 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. */
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __GNU_VISIBLE
|
|
|
|
_VOID _EXFUN(qsort_r,(_PTR __base, size_t __nmemb, size_t __size, int (*_compar)(const _PTR, const _PTR, _PTR), _PTR __thunk));
|
|
|
|
#elif __BSD_VISIBLE
|
2014-12-06 00:21:04 +08:00
|
|
|
# ifdef __GNUC__
|
|
|
|
_VOID _EXFUN(qsort_r,(_PTR __base, size_t __nmemb, size_t __size, _PTR __thunk, int (*_compar)(_PTR, const _PTR, const _PTR)))
|
|
|
|
__asm__ (__ASMNAME ("__bsd_qsort_r"));
|
|
|
|
# else
|
|
|
|
_VOID _EXFUN(__bsd_qsort_r,(_PTR __base, size_t __nmemb, size_t __size, _PTR __thunk, int (*_compar)(_PTR, const _PTR, const _PTR)));
|
|
|
|
# define qsort_r __bsd_qsort_r
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
|
2009-04-25 06:49:55 +08:00
|
|
|
/* On platforms where long double equals double. */
|
2014-03-08 04:06:54 +08:00
|
|
|
#ifdef _HAVE_LONG_DOUBLE
|
2015-11-21 01:14:58 +08:00
|
|
|
extern long double _strtold_r (struct _reent *, const char *__restrict, char **__restrict);
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __ISO_C_VISIBLE >= 1999
|
2013-11-18 Sahil Patnayakuni <sahilp@oarcorp.com>
* libc/include/stdlib.h, libc/stdlib/mbstowcs.c,
libc/stdlib/mbstowcs_r.c, libc/stdlib/mbtowc.c,
libc/stdlib/mbtowc_r.c, libc/stdlib/strtod.c,
libc/stdlib/strtol.c, libc/stdlib/strtold.c,
libc/stdlib/strtoll.c, libc/stdlib/strtoll_r.c,
libc/stdlib/strtoul.c, libc/stdlib/strtoull.c,
libc/stdlib/strtoull_r.c, libc/stdlib/wcstombs.c,
libc/stdlib/wcstombs_r.c: Add restrict keyword.
2013-11-19 01:26:52 +08:00
|
|
|
extern long double strtold (const char *__restrict, char **__restrict);
|
2012-10-22 23:15:21 +08:00
|
|
|
#endif
|
2014-03-08 04:06:54 +08:00
|
|
|
#endif /* _HAVE_LONG_DOUBLE */
|
2009-04-16 Ken Werner <ken.werner@de.ibm.com>
* libm/libm.texinfo: Add long double function support chapter.
* libc/include/machine/ieeefp.h: Add _LDBL_EQ_DBL define.
* libc/include/stdlib.h: Include <machine/ieeefp.h>.
(strtold, wcstold): Declare.
* libc/stdlib/strtold.c: New File.
* libc/stdlib/wcstold.c: Likewise.
* libc/configure.in: Add long double check.
* libc/configure: Regenerate.
* libc/stdlib/Makefile.am: Add strtold.c and wcstold.c.
* libc/stdlib/Makefile.in: Regenerate.
* libc/include/math.h (atanl, cosl, sinl, tanl, tanhl): Declare.
(frexpl, modfl, ceill, fabsl, floorl, log1pl, expm1l, acosl): Ditto.
(asinl, atan2l, coshl, sinhl, expl, ldexpl, logl, log10l, powl): Ditto.
(sqrtl, fmodl, hypotl, copysignl, nanl, ilogbl, asinhl, cbrt): Ditto.
(nextafterl, rintl, scalbnl, exp2l, scalblnl, tgammal): Ditto.
(nearbyintl, lrintl, llrintl, roundl, lroundl, llround): Ditto.
(llroundl, truncl, remquol, fdiml, fmaxl, fminl, fmal, acoshl): Ditto.
(atanhl, remainderl, lgammal, erfl, erfcl): Ditto.
* libm/common/atanl.c: New File.
* libm/common/cosl.c: Likewise.
* libm/common/sinl.c: Likewise.
* libm/common/modfl.c: Likewise.
* libm/common/frexpl.c: Likewise.
* libm/common/tanhl.c: Likewise.
* libm/common/tanl.c: Likewise.
* libm/common/expm1l.c: Likewise.
* libm/common/log1pl.c: Likewise.
* libm/common/ceill.c: Likewise.
* libm/common/fabsl.c: Likewise.
* libm/common/floorl.c: Likewise.
* libm/common/acosl.c: Likewise.
* libm/common/asinl.c: Likewise.
* libm/common/atan2l.c: Likewise.
* libm/common/coshl.c: Likewise.
* libm/common/expl.c: Likewise.
* libm/common/fmodl.c: Likewise.
* libm/common/hypotl.c: Likewise.
* libm/common/ldexpl.c: Likewise.
* libm/common/log10l.c: Likewise.
* libm/common/logl.c: Likewise.
* libm/common/powl.c: Likewise.
* libm/common/sqrtl.c: Likewise.
* libm/common/copysignl.c: Likewise.
* libm/common/ilogbl.c: Likewise.
* libm/common/nanl.c: Likewise.
* libm/common/cbrtl.c: Likewise.
* libm/common/asinhl.c: Likewise.
* libm/common/nextafterl.c: Likewise.
* libm/common/rintl.c: Likewise.
* libm/common/scalbnl.c: Likewise.
* libm/common/exp2l.c: Likewise.
* libm/common/fdiml.c: Likewise.
* libm/common/fmal.c: Likewise.
* libm/common/fmaxl.c: Likewise.
* libm/common/fminl.c: Likewise.
* libm/common/lrintl.c: Likewise.
* libm/common/lroundl.c: Likewise.
* libm/common/nearbyintl.c: Likewise.
* libm/common/remquol.c: Likewise.
* libm/common/roundl.c: Likewise.
* libm/common/scalblnl.c: Likewise.
* libm/common/truncl.c: Likewise.
* libm/common/acoshl.c: Likewise.
* libm/common/atanhl.c: Likewise.
* libm/common/erfcl.c: Likewise.
* libm/common/erfl.c: Likewise.
* libm/common/lgammal.c: Likewise.
* libm/common/remainderl.c: Likewise.
* libm/common/tgammal.c: Likewise.
* libm/common/sinhl.c: Likewise.
* libm/common/llroundl.c: Likewise.
* libm/configure.in: Add long double check.
* libm/configure: Regenerate.
* libm/common/Makefile.am: Add new files.
* libm/common/Makefile.in: Regenerate.
2009-04-17 02:24:35 +08:00
|
|
|
|
2015-10-14 13:39:35 +08:00
|
|
|
/*
|
|
|
|
* If we're in a mode greater than C99, expose C11 functions.
|
|
|
|
*/
|
2016-03-15 05:55:26 +08:00
|
|
|
#if __ISO_C_VISIBLE >= 2011
|
2015-10-14 13:39:36 +08:00
|
|
|
void * aligned_alloc(size_t, size_t) __malloc_like __alloc_align(1)
|
|
|
|
__alloc_size(2);
|
2015-10-14 13:39:35 +08:00
|
|
|
int at_quick_exit(void (*)(void));
|
|
|
|
_Noreturn void
|
|
|
|
quick_exit(int);
|
|
|
|
#endif /* __ISO_C_VISIBLE >= 2011 */
|
|
|
|
|
2002-06-28 07:58:38 +08:00
|
|
|
_END_STD_C
|
|
|
|
|
2000-02-18 03:39:52 +08:00
|
|
|
#endif /* _STDLIB_H_ */
|