Subversion Repositories Kolibri OS

Rev

Rev 4874 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /*
  2.  * stdlib.h
  3.  *
  4.  * Definitions for common types, variables, and functions.
  5.  */
  6.  
  7. #ifndef _STDLIB_H_
  8. #define _STDLIB_H_
  9.  
  10. #include <machine/ieeefp.h>
  11. #include "_ansi.h"
  12.  
  13. #define __need_size_t
  14. #define __need_wchar_t
  15. #define __need_NULL
  16. #include <stddef.h>
  17.  
  18. #include <sys/reent.h>
  19. #include <machine/stdlib.h>
  20. #ifndef __STRICT_ANSI__
  21. #include <alloca.h>
  22. #endif
  23.  
  24. #ifdef __CYGWIN__
  25. #include <cygwin/stdlib.h>
  26. #endif
  27.  
  28. _BEGIN_STD_C
  29.  
  30. typedef struct
  31. {
  32.   int quot; /* quotient */
  33.   int rem; /* remainder */
  34. } div_t;
  35.  
  36. typedef struct
  37. {
  38.   long quot; /* quotient */
  39.   long rem; /* remainder */
  40. } ldiv_t;
  41.  
  42. #if !defined(__STRICT_ANSI__) || \
  43.   (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
  44.   (defined(__cplusplus) && __cplusplus >= 201103L)
  45. typedef struct
  46. {
  47.   long long int quot; /* quotient */
  48.   long long int rem; /* remainder */
  49. } lldiv_t;
  50. #endif
  51.  
  52. #ifndef __compar_fn_t_defined
  53. #define __compar_fn_t_defined
  54. typedef int (*__compar_fn_t) (const _PTR, const _PTR);
  55. #endif
  56.  
  57. #define EXIT_FAILURE 1
  58. #define EXIT_SUCCESS 0
  59.  
  60. #define RAND_MAX __RAND_MAX
  61.  
  62. int     _EXFUN(__locale_mb_cur_max,(_VOID));
  63.  
  64. #define MB_CUR_MAX __locale_mb_cur_max()
  65.  
  66. _VOID   _EXFUN(abort,(_VOID) _ATTRIBUTE ((noreturn)));
  67. int     _EXFUN(abs,(int));
  68. int     _EXFUN(atexit,(_VOID (*__func)(_VOID)));
  69. double  _EXFUN(atof,(const char *__nptr));
  70. #ifndef __STRICT_ANSI__
  71. float   _EXFUN(atoff,(const char *__nptr));
  72. #endif
  73. int     _EXFUN(atoi,(const char *__nptr));
  74. int     _EXFUN(_atoi_r,(struct _reent *, const char *__nptr));
  75. long    _EXFUN(atol,(const char *__nptr));
  76. long    _EXFUN(_atol_r,(struct _reent *, const char *__nptr));
  77. _PTR    _EXFUN(bsearch,(const _PTR __key,
  78.                        const _PTR __base,
  79.                        size_t __nmemb,
  80.                        size_t __size,
  81.                        __compar_fn_t _compar));
  82. _PTR    _EXFUN_NOTHROW(calloc,(size_t __nmemb, size_t __size));
  83. div_t   _EXFUN(div,(int __numer, int __denom));
  84. _VOID   _EXFUN(exit,(int __status) _ATTRIBUTE ((noreturn)));
  85. _VOID   _EXFUN_NOTHROW(free,(_PTR));
  86. char *  _EXFUN(getenv,(const char *__string));
  87. char *  _EXFUN(_getenv_r,(struct _reent *, const char *__string));
  88. char *  _EXFUN(_findenv,(_CONST char *, int *));
  89. char *  _EXFUN(_findenv_r,(struct _reent *, _CONST char *, int *));
  90. #ifndef __STRICT_ANSI__
  91. extern char *suboptarg;                 /* getsubopt(3) external variable */
  92. int     _EXFUN(getsubopt,(char **, char * const *, char **));
  93. #endif
  94. long    _EXFUN(labs,(long));
  95. ldiv_t  _EXFUN(ldiv,(long __numer, long __denom));
  96. _PTR    _EXFUN_NOTHROW(malloc,(size_t __size));
  97. int     _EXFUN(mblen,(const char *, size_t));
  98. int     _EXFUN(_mblen_r,(struct _reent *, const char *, size_t, _mbstate_t *));
  99. int     _EXFUN(mbtowc,(wchar_t *__restrict, const char *__restrict, size_t));
  100. int     _EXFUN(_mbtowc_r,(struct _reent *, wchar_t *__restrict, const char *__restrict, size_t, _mbstate_t *));
  101. int     _EXFUN(wctomb,(char *, wchar_t));
  102. int     _EXFUN(_wctomb_r,(struct _reent *, char *, wchar_t, _mbstate_t *));
  103. size_t  _EXFUN(mbstowcs,(wchar_t *__restrict, const char *__restrict, size_t));
  104. size_t  _EXFUN(_mbstowcs_r,(struct _reent *, wchar_t *__restrict, const char *__restrict, size_t, _mbstate_t *));
  105. size_t  _EXFUN(wcstombs,(char *__restrict, const wchar_t *__restrict, size_t));
  106. size_t  _EXFUN(_wcstombs_r,(struct _reent *, char *__restrict, const wchar_t *__restrict, size_t, _mbstate_t *));
  107. #ifndef __STRICT_ANSI__
  108. #ifndef _REENT_ONLY
  109. char *  _EXFUN(mkdtemp,(char *));
  110. int     _EXFUN(mkostemp,(char *, int));
  111. int     _EXFUN(mkostemps,(char *, int, int));
  112. int     _EXFUN(mkstemp,(char *));
  113. int     _EXFUN(mkstemps,(char *, int));
  114. char *  _EXFUN(mktemp,(char *) _ATTRIBUTE ((__warning__ ("the use of `mktemp' is dangerous; use `mkstemp' instead"))));
  115. #endif
  116. char *  _EXFUN(_mkdtemp_r, (struct _reent *, char *));
  117. int     _EXFUN(_mkostemp_r, (struct _reent *, char *, int));
  118. int     _EXFUN(_mkostemps_r, (struct _reent *, char *, int, int));
  119. int     _EXFUN(_mkstemp_r, (struct _reent *, char *));
  120. int     _EXFUN(_mkstemps_r, (struct _reent *, char *, int));
  121. char *  _EXFUN(_mktemp_r, (struct _reent *, char *) _ATTRIBUTE ((__warning__ ("the use of `mktemp' is dangerous; use `mkstemp' instead"))));
  122. #endif
  123. _VOID   _EXFUN(qsort,(_PTR __base, size_t __nmemb, size_t __size, __compar_fn_t _compar));
  124. int     _EXFUN(rand,(_VOID));
  125. _PTR    _EXFUN_NOTHROW(realloc,(_PTR __r, size_t __size));
  126. #ifndef __STRICT_ANSI__
  127. _PTR    _EXFUN(reallocf,(_PTR __r, size_t __size));
  128. char *  _EXFUN(realpath, (const char *__restrict path, char *__restrict resolved_path));
  129. #endif
  130. _VOID   _EXFUN(srand,(unsigned __seed));
  131. double  _EXFUN(strtod,(const char *__restrict __n, char **__restrict __end_PTR));
  132. double  _EXFUN(_strtod_r,(struct _reent *,const char *__restrict __n, char **__restrict __end_PTR));
  133. #if !defined(__STRICT_ANSI__) || (__STDC_VERSION__ >= 199901L) || (__cplusplus >= 201103L)
  134. float   _EXFUN(strtof,(const char *__restrict __n, char **__restrict __end_PTR));
  135. #endif
  136. #ifndef __STRICT_ANSI__
  137. /* the following strtodf interface is deprecated...use strtof instead */
  138. # ifndef strtodf
  139. #  define strtodf strtof
  140. # endif
  141. #endif
  142. long    _EXFUN(strtol,(const char *__restrict __n, char **__restrict __end_PTR, int __base));
  143. long    _EXFUN(_strtol_r,(struct _reent *,const char *__restrict __n, char **__restrict __end_PTR, int __base));
  144. unsigned long _EXFUN(strtoul,(const char *__restrict __n, char **__restrict __end_PTR, int __base));
  145. unsigned long _EXFUN(_strtoul_r,(struct _reent *,const char *__restrict __n, char **__restrict __end_PTR, int __base));
  146.  
  147. int     _EXFUN(system,(const char *__string));
  148.  
  149. #ifndef __STRICT_ANSI__
  150. long    _EXFUN(a64l,(const char *__input));
  151. char *  _EXFUN(l64a,(long __input));
  152. char *  _EXFUN(_l64a_r,(struct _reent *,long __input));
  153. int     _EXFUN(on_exit,(_VOID (*__func)(int, _PTR),_PTR __arg));
  154. _VOID   _EXFUN(_Exit,(int __status) _ATTRIBUTE ((noreturn)));
  155. int     _EXFUN(putenv,(char *__string));
  156. int     _EXFUN(_putenv_r,(struct _reent *, char *__string));
  157. _PTR    _EXFUN(_reallocf_r,(struct _reent *, _PTR, size_t));
  158. int     _EXFUN(setenv,(const char *__string, const char *__value, int __overwrite));
  159. int     _EXFUN(_setenv_r,(struct _reent *, const char *__string, const char *__value, int __overwrite));
  160.  
  161. char *  _EXFUN(gcvt,(double,int,char *));
  162. char *  _EXFUN(gcvtf,(float,int,char *));
  163. char *  _EXFUN(fcvt,(double,int,int *,int *));
  164. char *  _EXFUN(fcvtf,(float,int,int *,int *));
  165. char *  _EXFUN(ecvt,(double,int,int *,int *));
  166. char *  _EXFUN(ecvtbuf,(double, int, int*, int*, char *));
  167. char *  _EXFUN(fcvtbuf,(double, int, int*, int*, char *));
  168. char *  _EXFUN(ecvtf,(float,int,int *,int *));
  169. char *  _EXFUN(dtoa,(double, int, int, int *, int*, char**));
  170. int     _EXFUN(rand_r,(unsigned *__seed));
  171.  
  172. double _EXFUN(drand48,(_VOID));
  173. double _EXFUN(_drand48_r,(struct _reent *));
  174. double _EXFUN(erand48,(unsigned short [3]));
  175. double _EXFUN(_erand48_r,(struct _reent *, unsigned short [3]));
  176. long   _EXFUN(jrand48,(unsigned short [3]));
  177. long   _EXFUN(_jrand48_r,(struct _reent *, unsigned short [3]));
  178. _VOID  _EXFUN(lcong48,(unsigned short [7]));
  179. _VOID  _EXFUN(_lcong48_r,(struct _reent *, unsigned short [7]));
  180. long   _EXFUN(lrand48,(_VOID));
  181. long   _EXFUN(_lrand48_r,(struct _reent *));
  182. long   _EXFUN(mrand48,(_VOID));
  183. long   _EXFUN(_mrand48_r,(struct _reent *));
  184. long   _EXFUN(nrand48,(unsigned short [3]));
  185. long   _EXFUN(_nrand48_r,(struct _reent *, unsigned short [3]));
  186. unsigned short *
  187.        _EXFUN(seed48,(unsigned short [3]));
  188. unsigned short *
  189.        _EXFUN(_seed48_r,(struct _reent *, unsigned short [3]));
  190. _VOID  _EXFUN(srand48,(long));
  191. _VOID  _EXFUN(_srand48_r,(struct _reent *, long));
  192. long long _EXFUN(atoll,(const char *__nptr));
  193. long long _EXFUN(_atoll_r,(struct _reent *, const char *__nptr));
  194. long long _EXFUN(llabs,(long long));
  195. lldiv_t _EXFUN(lldiv,(long long __numer, long long __denom));
  196. #endif /* ! __STRICT_ANSI__ */
  197. #if !defined(__STRICT_ANSI__) || (__STDC_VERSION__ >= 199901L) || (__cplusplus >= 201103L)
  198. long long _EXFUN(strtoll,(const char *__restrict __n, char **__restrict __end_PTR, int __base));
  199. #endif
  200. #ifndef __STRICT_ANSI__
  201. long long _EXFUN(_strtoll_r,(struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base));
  202. #endif /* ! __STRICT_ANSI__ */
  203. #if !defined(__STRICT_ANSI__) || (__STDC_VERSION__ >= 199901L) || (__cplusplus >= 201103L)
  204. unsigned long long _EXFUN(strtoull,(const char *__restrict __n, char **__restrict __end_PTR, int __base));
  205. #endif
  206. #ifndef __STRICT_ANSI__
  207. unsigned long long _EXFUN(_strtoull_r,(struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base));
  208.  
  209. #ifndef __CYGWIN__
  210. _VOID   _EXFUN(cfree,(_PTR));
  211. int     _EXFUN(unsetenv,(const char *__string));
  212. int     _EXFUN(_unsetenv_r,(struct _reent *, const char *__string));
  213. #endif
  214.  
  215. #ifdef __rtems__
  216. int _EXFUN(posix_memalign,(void **, size_t, size_t));
  217. #endif
  218.  
  219. #endif /* ! __STRICT_ANSI__ */
  220.  
  221. char *  _EXFUN(_dtoa_r,(struct _reent *, double, int, int, int *, int*, char**));
  222. #ifndef __CYGWIN__
  223. _PTR    _EXFUN_NOTHROW(_malloc_r,(struct _reent *, size_t));
  224. _PTR    _EXFUN_NOTHROW(_calloc_r,(struct _reent *, size_t, size_t));
  225. _VOID   _EXFUN_NOTHROW(_free_r,(struct _reent *, _PTR));
  226. _PTR    _EXFUN_NOTHROW(_realloc_r,(struct _reent *, _PTR, size_t));
  227. _VOID   _EXFUN(_mstats_r,(struct _reent *, char *));
  228. #endif
  229. int     _EXFUN(_system_r,(struct _reent *, const char *));
  230.  
  231. _VOID   _EXFUN(__eprintf,(const char *, const char *, unsigned int, const char *));
  232.  
  233. /* On platforms where long double equals double.  */
  234. #ifdef _LDBL_EQ_DBL
  235. #if !defined(__STRICT_ANSI__) || (__STDC_VERSION__ >= 199901L) || (__cplusplus >= 201103L)
  236. extern long double strtold (const char *__restrict, char **__restrict);
  237. #endif
  238. #endif /* _LDBL_EQ_DBL */
  239.  
  240. _END_STD_C
  241.  
  242. #endif /* _STDLIB_H_ */
  243.