]> git.llucax.com Git - software/druntime.git/blob - import/stdc/posix/stdlib.d
Applied all D2 changes to trunk. It should now be a fully functional D2 runtime.
[software/druntime.git] / import / stdc / posix / stdlib.d
1 /**
2  * D header file for POSIX.
3  *
4  * Copyright: Public Domain
5  * License:   Public Domain
6  * Authors:   Sean Kelly
7  * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
8  */
9 module stdc.posix.stdlib;
10
11 private import stdc.posix.config;
12 public import stdc.stdlib;
13 public import stdc.posix.sys.wait;
14
15 extern (C):
16
17 //
18 // Required (defined in stdc.stdlib)
19 //
20 /*
21 EXIT_FAILURE
22 EXIT_SUCCESS
23 NULL
24 RAND_MAX
25 MB_CUR_MAX
26 div_t
27 ldiv_t
28 lldiv_t
29 size_t
30 wchar_t
31
32 void    _Exit(int);
33 void    abort();
34 int     abs(int);
35 int     atexit(void function());
36 double  atof(in char*);
37 int     atoi(in char*);
38 c_long  atol(in char*);
39 long    atoll(in char*);
40 void*   bsearch(in void*, in void*, size_t, size_t, int function(in void*, in void*));
41 void*   calloc(size_t, size_t);
42 div_t   div(int, int);
43 void    exit(int);
44 void    free(void*);
45 char*   getenv(in char*);
46 c_long  labs(c_long);
47 ldiv_t  ldiv(c_long, c_long);
48 long    llabs(long);
49 lldiv_t lldiv(long, long);
50 void*   malloc(size_t);
51 int     mblen(in char*, size_t);
52 size_t  mbstowcs(wchar_t*, in char*, size_t);
53 int     mbtowc(wchar_t*, in char*, size_t);
54 void    qsort(void*, size_t, size_t, int function(in void*, in void*));
55 int     rand();
56 void*   realloc(void*, size_t);
57 void    srand(uint);
58 double  strtod(in char*, char**);
59 float   strtof(in char*, char**);
60 c_long  strtol(in char*, char**, int);
61 real    strtold(in char*, char**);
62 long    strtoll(in char*, char**, int);
63 c_ulong strtoul(in char*, char**, int);
64 ulong   strtoull(in char*, char**, int);
65 int     system(in char*);
66 size_t  wcstombs(char*, in wchar_t*, size_t);
67 int     wctomb(char*, wchar_t);
68 */
69
70 //
71 // Advisory Information (ADV)
72 //
73 /*
74 int posix_memalign(void**, size_t, size_t);
75 */
76
77 version( linux )
78 {
79     int posix_memalign(void**, size_t, size_t);
80 }
81
82 //
83 // C Extension (CX)
84 //
85 /*
86 int setenv(in char*, in char*, int);
87 int unsetenv(in char*);
88 */
89
90 version( linux )
91 {
92     int setenv(in char*, in char*, int);
93     int unsetenv(in char*);
94
95     void* valloc(size_t); // LEGACY non-standard
96 }
97 else version( darwin )
98 {
99     int setenv(in char*, in char*, int);
100     int unsetenv(in char*);
101
102     void* valloc(size_t); // LEGACY non-standard
103 }
104
105 //
106 // Thread-Safe Functions (TSF)
107 //
108 /*
109 int rand_r(uint*);
110 */
111
112 version( linux )
113 {
114     int rand_r(uint*);
115 }
116 else version( darwin )
117 {
118     int rand_r(uint*);
119 }
120 else version( freebsd )
121 {
122     int rand_r(uint*);
123 }
124
125 //
126 // XOpen (XSI)
127 //
128 /*
129 WNOHANG     (defined in stdc.posix.sys.wait)
130 WUNTRACED   (defined in stdc.posix.sys.wait)
131 WEXITSTATUS (defined in stdc.posix.sys.wait)
132 WIFEXITED   (defined in stdc.posix.sys.wait)
133 WIFSIGNALED (defined in stdc.posix.sys.wait)
134 WIFSTOPPED  (defined in stdc.posix.sys.wait)
135 WSTOPSIG    (defined in stdc.posix.sys.wait)
136 WTERMSIG    (defined in stdc.posix.sys.wait)
137
138 c_long a64l(in char*);
139 double drand48();
140 char*  ecvt(double, int, int *, int *); // LEGACY
141 double erand48(ushort[3]);
142 char*  fcvt(double, int, int *, int *); // LEGACY
143 char*  gcvt(double, int, char*); // LEGACY
144 // per spec: int getsubopt(char** char* const*, char**);
145 int    getsubopt(char**, in char**, char**);
146 int    grantpt(int);
147 char*  initstate(uint, char*, size_t);
148 c_long jrand48(ushort[3]);
149 char*  l64a(c_long);
150 void   lcong48(ushort[7]);
151 c_long lrand48();
152 char*  mktemp(char*); // LEGACY
153 int    mkstemp(char*);
154 c_long mrand48();
155 c_long nrand48(ushort[3]);
156 int    posix_openpt(int);
157 char*  ptsname(int);
158 int    putenv(char*);
159 c_long random();
160 char*  realpath(in char*, char*);
161 ushort seed48(ushort[3]);
162 void   setkey(in char*);
163 char*  setstate(in char*);
164 void   srand48(c_long);
165 void   srandom(uint);
166 int    unlockpt(int);
167 */
168
169 version( linux )
170 {
171     //WNOHANG     (defined in stdc.posix.sys.wait)
172     //WUNTRACED   (defined in stdc.posix.sys.wait)
173     //WEXITSTATUS (defined in stdc.posix.sys.wait)
174     //WIFEXITED   (defined in stdc.posix.sys.wait)
175     //WIFSIGNALED (defined in stdc.posix.sys.wait)
176     //WIFSTOPPED  (defined in stdc.posix.sys.wait)
177     //WSTOPSIG    (defined in stdc.posix.sys.wait)
178     //WTERMSIG    (defined in stdc.posix.sys.wait)
179
180     c_long a64l(in char*);
181     double drand48();
182     char*  ecvt(double, int, int *, int *); // LEGACY
183     double erand48(ushort[3]);
184     char*  fcvt(double, int, int *, int *); // LEGACY
185     char*  gcvt(double, int, char*); // LEGACY
186     int    getsubopt(char**, in char**, char**);
187     int    grantpt(int);
188     char*  initstate(uint, char*, size_t);
189     c_long jrand48(ushort[3]);
190     char*  l64a(c_long);
191     void   lcong48(ushort[7]);
192     c_long lrand48();
193     char*  mktemp(char*); // LEGACY
194     //int    mkstemp(char*);
195     c_long mrand48();
196     c_long nrand48(ushort[3]);
197     int    posix_openpt(int);
198     char*  ptsname(int);
199     int    putenv(char*);
200     c_long random();
201     char*  realpath(in char*, char*);
202     ushort seed48(ushort[3]);
203     void   setkey(in char*);
204     char*  setstate(in char*);
205     void   srand48(c_long);
206     void   srandom(uint);
207     int    unlockpt(int);
208
209   static if( __USE_LARGEFILE64 )
210   {
211     int    mkstemp64(char*);
212     alias  mkstemp64 mkstemp;
213   }
214   else
215   {
216     int    mkstemp(char*);
217   }
218 }
219 else version( darwin )
220 {
221     //WNOHANG     (defined in stdc.posix.sys.wait)
222     //WUNTRACED   (defined in stdc.posix.sys.wait)
223     //WEXITSTATUS (defined in stdc.posix.sys.wait)
224     //WIFEXITED   (defined in stdc.posix.sys.wait)
225     //WIFSIGNALED (defined in stdc.posix.sys.wait)
226     //WIFSTOPPED  (defined in stdc.posix.sys.wait)
227     //WSTOPSIG    (defined in stdc.posix.sys.wait)
228     //WTERMSIG    (defined in stdc.posix.sys.wait)
229
230     c_long a64l(in char*);
231     double drand48();
232     char*  ecvt(double, int, int *, int *); // LEGACY
233     double erand48(ushort[3]);
234     char*  fcvt(double, int, int *, int *); // LEGACY
235     char*  gcvt(double, int, char*); // LEGACY
236     int    getsubopt(char**, in char**, char**);
237     int    grantpt(int);
238     char*  initstate(uint, char*, size_t);
239     c_long jrand48(ushort[3]);
240     char*  l64a(c_long);
241     void   lcong48(ushort[7]);
242     c_long lrand48();
243     char*  mktemp(char*); // LEGACY
244     int    mkstemp(char*);
245     c_long mrand48();
246     c_long nrand48(ushort[3]);
247     int    posix_openpt(int);
248     char*  ptsname(int);
249     int    putenv(char*);
250     c_long random();
251     char*  realpath(in char*, char*);
252     ushort seed48(ushort[3]);
253     void   setkey(in char*);
254     char*  setstate(in char*);
255     void   srand48(c_long);
256     void   srandom(uint);
257     int    unlockpt(int);
258 }
259 else version( freebsd )
260 {
261     //WNOHANG     (defined in stdc.posix.sys.wait)
262     //WUNTRACED   (defined in stdc.posix.sys.wait)
263     //WEXITSTATUS (defined in stdc.posix.sys.wait)
264     //WIFEXITED   (defined in stdc.posix.sys.wait)
265     //WIFSIGNALED (defined in stdc.posix.sys.wait)
266     //WIFSTOPPED  (defined in stdc.posix.sys.wait)
267     //WSTOPSIG    (defined in stdc.posix.sys.wait)
268     //WTERMSIG    (defined in stdc.posix.sys.wait)
269
270     c_long a64l(in char*);
271     double drand48();
272     //char*  ecvt(double, int, int *, int *); // LEGACY
273     double erand48(ushort[3]);
274     //char*  fcvt(double, int, int *, int *); // LEGACY
275     //char*  gcvt(double, int, char*); // LEGACY
276     int    getsubopt(char**, in char**, char**);
277     int    grantpt(int);
278     char*  initstate(uint, char*, size_t);
279     c_long jrand48(ushort[3]);
280     char*  l64a(c_long);
281     void   lcong48(ushort[7]);
282     c_long lrand48();
283     char*  mktemp(char*); // LEGACY
284     int    mkstemp(char*);
285     c_long mrand48();
286     c_long nrand48(ushort[3]);
287     int    posix_openpt(int);
288     char*  ptsname(int);
289     int    putenv(char*);
290     c_long random();
291     char*  realpath(in char*, char*);
292     ushort seed48(ushort[3]);
293     void   setkey(in char*);
294     char*  setstate(in char*);
295     void   srand48(c_long);
296     void   srandom(uint);
297     int    unlockpt(int);
298 }