aboutsummaryrefslogtreecommitdiff
path: root/system/include/libc/stdlib.h
diff options
context:
space:
mode:
authorBruce Mitchener <bruce.mitchener@gmail.com>2013-08-04 00:32:45 +0800
committerAlon Zakai <alonzakai@gmail.com>2013-09-13 10:07:02 -0700
commit5c6e1633d218bd5b9c5077634829eb14d326308f (patch)
tree50a4fd55b51a0fab6506addf610a666afabaec9b /system/include/libc/stdlib.h
parent27d496610e0ef93c9805a6a1a77de3f053405c6b (diff)
Update libc headers to use musl headers.
Diffstat (limited to 'system/include/libc/stdlib.h')
-rw-r--r--system/include/libc/stdlib.h345
1 files changed, 142 insertions, 203 deletions
diff --git a/system/include/libc/stdlib.h b/system/include/libc/stdlib.h
index 6fdef40b..0bcc9f4f 100644
--- a/system/include/libc/stdlib.h
+++ b/system/include/libc/stdlib.h
@@ -1,228 +1,167 @@
-/*
- * stdlib.h
- *
- * Definitions for common types, variables, and functions.
- */
+#ifndef _STDLIB_H
+#define _STDLIB_H
-#ifndef _STDLIB_H_
-#define _STDLIB_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
-#include <machine/ieeefp.h>
-#include "_ansi.h"
+#include <features.h>
-#define __need_size_t
-#define __need_wchar_t
-#include <stddef.h>
+#define NULL 0L
-#include <sys/reent.h>
-#include <machine/stdlib.h>
-#ifndef __STRICT_ANSI__
-#include <alloca.h>
-#endif
+#define __NEED_size_t
+#define __NEED_wchar_t
-#ifdef __CYGWIN__
-#include <cygwin/stdlib.h>
-#endif
+#include <bits/alltypes.h>
-_BEGIN_STD_C
-
-typedef struct
-{
- int quot; /* quotient */
- int rem; /* remainder */
-} div_t;
-
-typedef struct
-{
- long quot; /* quotient */
- long rem; /* remainder */
-} ldiv_t;
-
-#if !defined(__STRICT_ANSI__) || defined(EMSCRIPTEN)
-typedef struct
-{
- long long int quot; /* quotient */
- long long int rem; /* remainder */
-} lldiv_t;
-#endif
+int atoi (const char *);
+long atol (const char *);
+long long atoll (const char *);
+double atof (const char *);
-#ifndef NULL
-#define NULL 0
-#endif
+float strtof (const char *__restrict, char **__restrict);
+double strtod (const char *__restrict, char **__restrict);
+long double strtold (const char *__restrict, char **__restrict);
+
+long strtol (const char *__restrict, char **__restrict, int);
+unsigned long strtoul (const char *__restrict, char **__restrict, int);
+long long strtoll (const char *__restrict, char **__restrict, int);
+unsigned long long strtoull (const char *__restrict, char **__restrict, int);
+
+int rand (void);
+void srand (unsigned);
+
+void *malloc (size_t);
+void *calloc (size_t, size_t);
+void *realloc (void *, size_t);
+void free (void *);
+void *aligned_alloc(size_t alignment, size_t size);
+
+_Noreturn void abort (void);
+int atexit (void (*) (void));
+_Noreturn void exit (int);
+_Noreturn void _Exit (int);
+int at_quick_exit (void (*) (void));
+_Noreturn void quick_exit (int);
+
+char *getenv (const char *);
+
+int system (const char *);
+
+void *bsearch (const void *, const void *, size_t, size_t, int (*)(const void *, const void *));
+void qsort (void *, size_t, size_t, int (*)(const void *, const void *));
+
+int abs (int);
+long labs (long);
+long long llabs (long long);
+
+typedef struct { int quot, rem; } div_t;
+typedef struct { long quot, rem; } ldiv_t;
+typedef struct { long long quot, rem; } lldiv_t;
+
+div_t div (int, int);
+ldiv_t ldiv (long, long);
+lldiv_t lldiv (long long, long long);
+
+int mblen (const char *, size_t);
+int mbtowc (wchar_t *__restrict, const char *__restrict, size_t);
+int wctomb (char *, wchar_t);
+size_t mbstowcs (wchar_t *__restrict, const char *__restrict, size_t);
+size_t wcstombs (char *__restrict, const wchar_t *__restrict, size_t);
#define EXIT_FAILURE 1
#define EXIT_SUCCESS 0
-#define RAND_MAX __RAND_MAX
+#define MB_CUR_MAX ((size_t)+4)
-int _EXFUN(__locale_mb_cur_max,(_VOID));
+#define RAND_MAX (0x7fffffff)
-#define MB_CUR_MAX __locale_mb_cur_max()
-_VOID _EXFUN(abort,(_VOID) _ATTRIBUTE(noreturn));
-int _EXFUN(abs,(int));
-int _EXFUN(atexit,(_VOID (*__func)(_VOID)));
-double _EXFUN(atof,(const char *__nptr));
-#ifndef __STRICT_ANSI__
-float _EXFUN(atoff,(const char *__nptr));
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+
+#define WNOHANG 1
+#define WUNTRACED 2
+
+#define WEXITSTATUS(s) (((s) & 0xff00) >> 8)
+#define WTERMSIG(s) ((s) & 0x7f)
+#define WSTOPSIG(s) WEXITSTATUS(s)
+#define WIFEXITED(s) (!WTERMSIG(s))
+#define WIFSTOPPED(s) (((s) & 0xff) == 0x7f)
+#define WIFSIGNALED(s) (((signed char) (((s) & 0x7f) + 1) >> 1) > 0)
+
+int posix_memalign (void **, size_t, size_t);
+int setenv (const char *, const char *, int);
+int unsetenv (const char *);
+int mkstemp (char *);
+int mkostemp (char *, int);
+char *mkdtemp (char *);
+int getsubopt (char **, char *const *, char **);
+int rand_r (unsigned *);
+
#endif
-int _EXFUN(atoi,(const char *__nptr));
-int _EXFUN(_atoi_r,(struct _reent *, const char *__nptr));
-long _EXFUN(atol,(const char *__nptr));
-long _EXFUN(_atol_r,(struct _reent *, const char *__nptr));
-_PTR _EXFUN(bsearch,(const _PTR __key,
- const _PTR __base,
- size_t __nmemb,
- size_t __size,
- int _EXFNPTR(_compar,(const _PTR, const _PTR))));
-_PTR _EXFUN_NOTHROW(calloc,(size_t __nmemb, size_t __size));
-div_t _EXFUN(div,(int __numer, int __denom));
-_VOID _EXFUN(exit,(int __status) _ATTRIBUTE(noreturn));
-_VOID _EXFUN_NOTHROW(free,(_PTR));
-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 *));
-#ifndef __STRICT_ANSI__
-extern char *suboptarg; /* getsubopt(3) external variable */
-int _EXFUN(getsubopt,(char **, char * const *, char **));
+
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
+ || defined(_BSD_SOURCE)
+char *realpath (const char *__restrict, char *__restrict);
+long int random (void);
+void srandom (unsigned int);
+char *initstate (unsigned int, char *, size_t);
+char *setstate (char *);
#endif
-long _EXFUN(labs,(long));
-ldiv_t _EXFUN(ldiv,(long __numer, long __denom));
-_PTR _EXFUN_NOTHROW(malloc,(size_t __size));
-int _EXFUN(mblen,(const char *, size_t));
-int _EXFUN(_mblen_r,(struct _reent *, const char *, size_t, _mbstate_t *));
-int _EXFUN(mbtowc,(wchar_t *, const char *, size_t));
-int _EXFUN(_mbtowc_r,(struct _reent *, wchar_t *, const char *, size_t, _mbstate_t *));
-int _EXFUN(wctomb,(char *, wchar_t));
-int _EXFUN(_wctomb_r,(struct _reent *, char *, wchar_t, _mbstate_t *));
-size_t _EXFUN(mbstowcs,(wchar_t *, const char *, size_t));
-size_t _EXFUN(_mbstowcs_r,(struct _reent *, wchar_t *, const char *, size_t, _mbstate_t *));
-size_t _EXFUN(wcstombs,(char *, const wchar_t *, size_t));
-size_t _EXFUN(_wcstombs_r,(struct _reent *, char *, const wchar_t *, size_t, _mbstate_t *));
-#ifndef __STRICT_ANSI__
-#ifndef _REENT_ONLY
-char * _EXFUN(mkdtemp,(char *));
-int _EXFUN(mkostemp,(char *, int));
-int _EXFUN(mkostemps,(char *, int, int));
-int _EXFUN(mkstemp,(char *));
-int _EXFUN(mkstemps,(char *, int));
-char * _EXFUN(mktemp,(char *) _ATTRIBUTE (__warning__ ("the use of `mktemp' is dangerous; use `mkstemp' instead")));
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
+int putenv (char *);
+int posix_openpt (int);
+int grantpt (int);
+int unlockpt (int);
+char *ptsname (int);
+char *l64a (long);
+long a64l (const char *);
+void setkey (const char *);
+double drand48 (void);
+double erand48 (unsigned short [3]);
+long int lrand48 (void);
+long int nrand48 (unsigned short [3]);
+long mrand48 (void);
+long jrand48 (unsigned short [3]);
+void srand48 (long);
+unsigned short *seed48 (unsigned short [3]);
+void lcong48 (unsigned short [7]);
#endif
-char * _EXFUN(_mkdtemp_r, (struct _reent *, char *));
-int _EXFUN(_mkostemp_r, (struct _reent *, char *, int));
-int _EXFUN(_mkostemps_r, (struct _reent *, char *, int, int));
-int _EXFUN(_mkstemp_r, (struct _reent *, char *));
-int _EXFUN(_mkstemps_r, (struct _reent *, char *, int));
-char * _EXFUN(_mktemp_r, (struct _reent *, char *) _ATTRIBUTE (__warning__ ("the use of `mktemp' is dangerous; use `mkstemp' instead")));
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#include <alloca.h>
+char *mktemp (char *);
+int mkstemps (char *, int);
+int mkostemps (char *, int, int);
+void *valloc (size_t);
+void *memalign(size_t, size_t);
+#define WCOREDUMP(s) ((s) & 0x80)
+#define WIFCONTINUED(s) ((s) == 0xffff)
#endif
-_VOID _EXFUN(qsort,(_PTR __base, size_t __nmemb, size_t __size, int(*_compar)(const _PTR, const _PTR)));
-int _EXFUN(rand,(_VOID));
-_PTR _EXFUN_NOTHROW(realloc,(_PTR __r, size_t __size));
-#ifndef __STRICT_ANSI__
-_PTR _EXFUN(reallocf,(_PTR __r, size_t __size));
+
+#ifdef _GNU_SOURCE
+int clearenv(void);
+int ptsname_r(int, char *, size_t);
+char *ecvt(double, int, int *, int *);
+char *fcvt(double, int, int *, int *);
+char *gcvt(double, int, char *);
#endif
-_VOID _EXFUN(srand,(unsigned __seed));
-double _EXFUN(strtod,(const char *__n, char **__end_PTR));
-double _EXFUN(_strtod_r,(struct _reent *,const char *__n, char **__end_PTR));
-float _EXFUN(strtof,(const char *__n, char **__end_PTR));
-#ifndef __STRICT_ANSI__
-/* the following strtodf interface is deprecated...use strtof instead */
-# ifndef strtodf
-# define strtodf strtof
-# endif
+
+#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
+#define mkstemp64 mkstemp
+#define mkostemp64 mkostemp
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define mkstemps64 mkstemps
+#define mkostemps64 mkostemps
#endif
-long _EXFUN(strtol,(const char *__n, char **__end_PTR, int __base));
-long _EXFUN(_strtol_r,(struct _reent *,const char *__n, char **__end_PTR, int __base));
-unsigned long _EXFUN(strtoul,(const char *__n, char **__end_PTR, int __base));
-unsigned long _EXFUN(_strtoul_r,(struct _reent *,const char *__n, char **__end_PTR, int __base));
-
-int _EXFUN(system,(const char *__string));
-
-#if !defined(__STRICT_ANSI__) || defined(EMSCRIPTEN)
-long _EXFUN(a64l,(const char *__input));
-char * _EXFUN(l64a,(long __input));
-char * _EXFUN(_l64a_r,(struct _reent *,long __input));
-int _EXFUN(on_exit,(_VOID (*__func)(int, _PTR),_PTR __arg));
-_VOID _EXFUN(_Exit,(int __status) _ATTRIBUTE(noreturn));
-int _EXFUN(putenv,(char *__string));
-int _EXFUN(_putenv_r,(struct _reent *, char *__string));
-_PTR _EXFUN(_reallocf_r,(struct _reent *, _PTR, size_t));
-char *realpath(const char *file_name, char *resolved_name); /* XXX Emscripten */
-int _EXFUN(setenv,(const char *__string, const char *__value, int __overwrite));
-int _EXFUN(_setenv_r,(struct _reent *, const char *__string, const char *__value, int __overwrite));
-
-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 *));
-char * _EXFUN(dtoa,(double, int, int, int *, int*, char**));
-int _EXFUN(rand_r,(unsigned *__seed));
-
-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));
-long long _EXFUN(atoll,(const char *__nptr));
-long long _EXFUN(_atoll_r,(struct _reent *, const char *__nptr));
-long long _EXFUN(llabs,(long long));
-lldiv_t _EXFUN(lldiv,(long long __numer, long long __denom));
-
-long long _EXFUN(strtoll,(const char *__n, char **__end_PTR, int __base));
-long long _EXFUN(_strtoll_r,(struct _reent *, const char *__n, char **__end_PTR, int __base));
-unsigned long long _EXFUN(strtoull,(const char *__n, char **__end_PTR, int __base));
-unsigned long long _EXFUN(_strtoull_r,(struct _reent *, const char *__n, char **__end_PTR, int __base));
-
-#ifndef __CYGWIN__
-_VOID _EXFUN(cfree,(_PTR));
-int _EXFUN(unsetenv,(const char *__string));
-int _EXFUN(_unsetenv_r,(struct _reent *, const char *__string));
#endif
-#if defined(__rtems__) || defined(EMSCRIPTEN)
-int _EXFUN(posix_memalign,(void **, size_t, size_t));
+#ifdef __cplusplus
+}
#endif
-#endif /* ! __STRICT_ANSI__ */
-
-char * _EXFUN(_dtoa_r,(struct _reent *, double, int, int, int *, int*, char**));
-#ifndef __CYGWIN__
-_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));
-_VOID _EXFUN(_mstats_r,(struct _reent *, char *));
#endif
-int _EXFUN(_system_r,(struct _reent *, const char *));
-
-_VOID _EXFUN(__eprintf,(const char *, const char *, unsigned int, const char *));
-
-/* On platforms where long double equals double. */
-#if defined(_LDBL_EQ_DBL) || defined(EMSCRIPTEN)
-extern long double strtold (const char *, char **);
-extern long double wcstold (const wchar_t *, wchar_t **);
-#endif /* _LDBL_EQ_DBL */
-
-_END_STD_C
-
-#endif /* _STDLIB_H_ */