libhaikucompat: Delete.
[haiku.git] / headers / posix / stdlib.h
bloba1c6a57cc866e7564443bc50e28e3d8d1cd5527f
1 /*
2 * Copyright 2002-2012 Haiku, Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
4 */
5 #ifndef _STDLIB_H_
6 #define _STDLIB_H_
9 #include <alloca.h>
10 #include <div_t.h>
11 #include <limits.h>
12 #include <stddef.h>
13 #include <sys/types.h>
14 #include <sys/wait.h>
15 #include <wchar_t.h>
17 #define RAND_MAX 0x7fffffff
18 #define MB_CUR_MAX (__ctype_get_mb_cur_max())
20 #define EXIT_SUCCESS 0
21 #define EXIT_FAILURE 1
23 /* random data structures (for thread-safe random numbers) */
24 struct random_data {
25 int *fptr;
26 int *rptr;
27 int *state;
28 int rand_type;
29 int rand_deg;
30 int rand_sep;
31 int *end_ptr;
34 struct drand48_data {
35 unsigned short int x[3];
36 unsigned short int a[3];
37 unsigned short int c;
38 unsigned short int old_x[3];
39 int init;
43 #ifdef __cplusplus
44 extern "C" {
45 #endif
47 /* memory allocation (see malloc.h for additional defines & prototypes) */
48 extern void *calloc(size_t numElements, size_t size);
49 extern void free(void *pointer);
50 extern void *malloc(size_t size);
51 extern int posix_memalign(void **_pointer, size_t alignment, size_t size);
52 extern void *realloc(void *oldPointer, size_t newSize);
54 /* process termination */
55 extern void abort(void);
56 extern int atexit(void (*func)(void));
57 extern int atfork(void (*func)(void));
58 extern void exit(int);
59 extern void _Exit(int);
61 /* misc functions */
62 extern char *realpath(const char *path, char *resolved);
64 extern int system(const char *command);
66 extern char *mktemp(char *name);
67 extern char *mkdtemp(char *templat);
68 extern int mkstemp(char *templat);
70 extern char *ecvt(double value, int digits, int *_decimalPoint, int *_sign);
71 extern char *fcvt(double value, int precision, int *_decimalPoint,
72 int *_sign);
73 extern char *gcvt(double value, int digits, char *buffer);
75 extern char *l64a(long n);
76 extern long a64l(const char *string);
78 /* environment variables */
79 extern char **environ;
80 extern int clearenv(void);
81 extern char *getenv(const char *name);
82 extern int putenv(const char *string);
83 extern int setenv(char const *name, char const *value, int rewrite);
84 extern int unsetenv(const char *name);
86 /* ASCII string to number conversion */
87 extern double atof(const char *string);
88 extern int atoi(const char *string);
89 extern long atol(const char *string);
90 extern long long int atoll(const char *string);
91 extern unsigned int atoui(const char *string);
92 extern unsigned long atoul(const char *string);
94 extern double strtod(const char *string, char **end);
95 extern long double strtold(const char *string, char **end);
96 extern float strtof(const char *string, char **end);
97 extern long strtol(const char *string, char **end, int base);
98 extern unsigned long strtoul(const char *string, char **end, int base);
99 extern long long strtoll(const char *string, char **end, int base);
100 extern unsigned long long strtoull(const char *string, char **end, int base);
102 /* random number generation */
103 extern void srand(unsigned int seed);
104 extern int rand(void);
105 extern int random(void);
106 extern void srandom(unsigned int seed);
107 extern int rand_r(unsigned int *seed);
108 extern int random_r(struct random_data *data, int *result);
109 extern int srandom_r(unsigned int seed, struct random_data *data);
110 extern char *initstate(unsigned int seed, char *state, size_t size);
111 extern char *setstate(char *state);
112 extern int initstate_r(unsigned int seed, void *stateBuffer,
113 size_t stateLength, struct random_data *data);
114 extern int setstate_r(void *stateBuffer, struct random_data *data);
116 extern double drand48(void);
117 extern double erand48(unsigned short int xsubi[3]);
118 extern long lrand48(void);
119 extern long nrand48(unsigned short int xsubi[3]);
120 extern long mrand48(void);
121 extern long jrand48(unsigned short int xsubi[3]);
122 extern void srand48(long int seed);
123 extern unsigned short *seed48(unsigned short int seed16v[3]);
124 extern void lcong48(unsigned short int param[7]);
126 extern int drand48_r(struct drand48_data *data, double *result);
127 extern int erand48_r(unsigned short int xsubi[3],
128 struct drand48_data *data, double *result);
129 extern int lrand48_r(struct drand48_data *data, long int *result);
130 extern int nrand48_r(unsigned short int xsubi[3],
131 struct drand48_data *data, long int *result);
132 extern int mrand48_r(struct drand48_data *data, long int *result);
133 extern int jrand48_r(unsigned short int xsubi[3],
134 struct drand48_data *data, long int *result);
135 extern int srand48_r(long int seed, struct drand48_data *data);
136 extern int seed48_r(unsigned short int seed16v[3],
137 struct drand48_data *data);
138 extern int lcong48_r(unsigned short int param[7],
139 struct drand48_data *data);
141 /* search and sort functions */
142 typedef int (*_compare_function)(const void *, const void *);
144 extern void *bsearch(const void *key, const void *base, size_t numElements,
145 size_t sizeOfElement, _compare_function);
146 extern int heapsort(void *base, size_t numElements, size_t sizeOfElement,
147 _compare_function);
148 extern int mergesort(void *base, size_t numElements, size_t sizeOfElement,
149 _compare_function);
150 extern void qsort(void *base, size_t numElements, size_t sizeOfElement,
151 _compare_function);
152 extern int radixsort(u_char const **base, int numElements,
153 u_char const *table, u_int endByte);
154 extern int sradixsort(u_char const **base, int numElements,
155 u_char const *table, u_int endByte);
157 /* misc math functions */
158 extern int abs(int number);
159 extern long labs(long number);
160 extern long long llabs(long long number);
162 extern div_t div(int numerator, int denominator);
163 extern ldiv_t ldiv(long numerator, long denominator);
164 extern lldiv_t lldiv(long long numerator, long long denominator);
166 /* wide & multibyte string functions */
167 extern int mblen(const char *string, size_t maxSize);
168 extern int mbtowc(wchar_t *pwc, const char *string, size_t maxSize);
169 extern int wctomb(char *string, wchar_t wchar);
170 extern size_t mbstowcs(wchar_t *pwcs, const char *string, size_t maxSize);
171 extern size_t wcstombs(char *string, const wchar_t *pwcs, size_t maxSize);
173 /* crypt */
174 extern void setkey(const char *key);
176 /* sub-option parsing */
177 extern int getsubopt(char **optionp, char * const *keylistp,
178 char **valuep);
180 /* pty functions */
181 extern int posix_openpt(int openFlags);
182 extern int grantpt(int masterFD);
183 extern char* ptsname(int masterFD);
184 extern int unlockpt(int masterFD);
186 /* internal accessor to value for MB_CUR_MAX */
187 extern unsigned short __ctype_get_mb_cur_max(void);
189 #ifdef __cplusplus
190 } /* extern "C" */
191 #endif
193 #endif /* _STDLIB_H_ */