Fix more -Wstrict-prototypes warnings.
[wine] / dlls / msvcrt / tests / headers.c
1 /*
2  * Copyright 2004 Dimitrie O. Paun
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  *
18  * This file contains tests to ensure the consistency between symbols
19  * defined in the regular msvcrt headers, and the corresponding duplicated
20  * symbol defined in msvcrt.h (prefixed by MSVCRT_).
21  */
22
23 #include "dos.h"
24 #include "math.h"
25 #include "stdlib.h"
26 #include "io.h"
27 #include "errno.h"
28 #include "fcntl.h"
29 #include "malloc.h"
30 #include "limits.h"
31 #include "mbctype.h"
32 #include "stdio.h"
33 #include "wchar.h"
34 #include "ctype.h"
35 #include "crtdbg.h"
36 #include "share.h"
37 #include "search.h"
38 #include "wctype.h"
39 #include "float.h"
40 #include "stddef.h"
41 #include "mbstring.h"
42 #include "sys/locking.h"
43 #include "sys/utime.h"
44 #include "sys/types.h"
45 #include "sys/stat.h"
46 #include "sys/timeb.h"
47 #include "direct.h"
48 #include "conio.h"
49 #include "process.h"
50 #include "string.h"
51 #include "time.h"
52 #include "locale.h"
53 #include "setjmp.h"
54 #include "wine/test.h"
55
56 #ifdef __WINE_USE_MSVCRT
57 /* Wine-specific msvcrt headers */
58 #define __WINE_MSVCRT_TEST
59 #include "eh.h"
60 #include "msvcrt.h"
61
62 #ifdef __GNUC__
63 #define TYPEOF(type) typeof(type)
64 #else
65 #define TYPEOF(type) int
66 #endif
67 #define MSVCRT(x)    MSVCRT_##x
68 #define OFFSET(T,F) ((unsigned int)((char *)&((struct T *)0L)->F - (char *)0L))
69 #define CHECK_SIZE(e) ok(sizeof(e) == sizeof(MSVCRT(e)), "Element has different sizes\n")
70 #define CHECK_TYPE(t) { TYPEOF(t) a = 0; TYPEOF(MSVCRT(t)) b = 0; a = b; CHECK_SIZE(t); }
71 #define CHECK_STRUCT(s) ok(sizeof(struct s) == sizeof(struct MSVCRT(s)), "Struct has different sizes\n")
72 #define CHECK_FIELD(s,e) ok(OFFSET(s,e) == OFFSET(MSVCRT(s),e), "Bad offset\n")
73 #define CHECK_DEF(n,d1,d2) ok(d1 == d2, "Defines (MSVCRT_)%s are different: '%d' vs. '%d'\n", n, d1, d2)
74
75 /************* Checking types ***************/
76 void test_types(void)
77 {
78     CHECK_TYPE(wchar_t);
79     CHECK_TYPE(wint_t);
80     CHECK_TYPE(wctype_t);
81     CHECK_TYPE(_ino_t);
82     CHECK_TYPE(_fsize_t);
83     CHECK_TYPE(size_t);
84     CHECK_TYPE(_dev_t);
85     CHECK_TYPE(_off_t);
86     CHECK_TYPE(clock_t);
87     CHECK_TYPE(time_t);
88     CHECK_TYPE(fpos_t);
89     CHECK_SIZE(FILE);
90     CHECK_TYPE(terminate_handler);
91     CHECK_TYPE(terminate_function);
92     CHECK_TYPE(unexpected_handler);
93     CHECK_TYPE(unexpected_function);
94     CHECK_TYPE(_se_translator_function);
95     CHECK_TYPE(_beginthread_start_routine_t);
96     CHECK_TYPE(_onexit_t);
97 }
98
99 /************* Checking structs ***************/
100 void test_structs(void)
101 {
102     CHECK_STRUCT(tm);
103     CHECK_FIELD(tm, tm_sec);
104     CHECK_FIELD(tm, tm_min);
105     CHECK_FIELD(tm, tm_hour);
106     CHECK_FIELD(tm, tm_mday);
107     CHECK_FIELD(tm, tm_mon);
108     CHECK_FIELD(tm, tm_year);
109     CHECK_FIELD(tm, tm_wday);
110     CHECK_FIELD(tm, tm_yday);
111     CHECK_FIELD(tm, tm_isdst);
112     CHECK_STRUCT(_timeb);
113     CHECK_FIELD(_timeb, time);
114     CHECK_FIELD(_timeb, millitm);
115     CHECK_FIELD(_timeb, timezone);
116     CHECK_FIELD(_timeb, dstflag);
117     CHECK_STRUCT(_iobuf);
118     CHECK_FIELD(_iobuf, _ptr);
119     CHECK_FIELD(_iobuf, _cnt);
120     CHECK_FIELD(_iobuf, _base);
121     CHECK_FIELD(_iobuf, _flag);
122     CHECK_FIELD(_iobuf, _file);
123     CHECK_FIELD(_iobuf, _charbuf);
124     CHECK_FIELD(_iobuf, _bufsiz);
125     CHECK_FIELD(_iobuf, _tmpfname);
126     CHECK_STRUCT(lconv);
127     CHECK_FIELD(lconv, decimal_point);
128     CHECK_FIELD(lconv, thousands_sep);
129     CHECK_FIELD(lconv, grouping);
130     CHECK_FIELD(lconv, int_curr_symbol);
131     CHECK_FIELD(lconv, currency_symbol);
132     CHECK_FIELD(lconv, mon_decimal_point);
133     CHECK_FIELD(lconv, mon_thousands_sep);
134     CHECK_FIELD(lconv, mon_grouping);
135     CHECK_FIELD(lconv, positive_sign);
136     CHECK_FIELD(lconv, negative_sign);
137     CHECK_FIELD(lconv, int_frac_digits);
138     CHECK_FIELD(lconv, frac_digits);
139     CHECK_FIELD(lconv, p_cs_precedes);
140     CHECK_FIELD(lconv, p_sep_by_space);
141     CHECK_FIELD(lconv, n_cs_precedes);
142     CHECK_FIELD(lconv, n_sep_by_space);
143     CHECK_FIELD(lconv, p_sign_posn);
144     CHECK_FIELD(lconv, n_sign_posn);
145     CHECK_STRUCT(_exception);
146     CHECK_FIELD(_exception, type);
147     CHECK_FIELD(_exception, name);
148     CHECK_FIELD(_exception, arg1);
149     CHECK_FIELD(_exception, arg2);
150     CHECK_FIELD(_exception, retval);
151     CHECK_STRUCT(_complex);
152     CHECK_FIELD(_complex, x);
153     CHECK_FIELD(_complex, y);
154     CHECK_STRUCT(_div_t);
155     CHECK_FIELD(_div_t, quot);
156     CHECK_FIELD(_div_t, rem);
157     CHECK_STRUCT(_ldiv_t);
158     CHECK_FIELD(_ldiv_t, quot);
159     CHECK_FIELD(_ldiv_t, rem);
160     CHECK_STRUCT(_heapinfo);
161     CHECK_FIELD(_heapinfo, _pentry);
162     CHECK_FIELD(_heapinfo, _size);
163     CHECK_FIELD(_heapinfo, _useflag);
164 #ifdef __i386__
165     CHECK_STRUCT(__JUMP_BUFFER);
166     CHECK_FIELD(__JUMP_BUFFER, Ebp);
167     CHECK_FIELD(__JUMP_BUFFER, Ebx);
168     CHECK_FIELD(__JUMP_BUFFER, Edi);
169     CHECK_FIELD(__JUMP_BUFFER, Esi);
170     CHECK_FIELD(__JUMP_BUFFER, Esp);
171     CHECK_FIELD(__JUMP_BUFFER, Eip);
172     CHECK_FIELD(__JUMP_BUFFER, Registration);
173     CHECK_FIELD(__JUMP_BUFFER, TryLevel);
174     CHECK_FIELD(__JUMP_BUFFER, Cookie);
175     CHECK_FIELD(__JUMP_BUFFER, UnwindFunc);
176     CHECK_FIELD(__JUMP_BUFFER, UnwindData[6]);
177 #endif
178     CHECK_STRUCT(_diskfree_t);
179     CHECK_FIELD(_diskfree_t, total_clusters);
180     CHECK_FIELD(_diskfree_t, avail_clusters);
181     CHECK_FIELD(_diskfree_t, sectors_per_cluster);
182     CHECK_FIELD(_diskfree_t, bytes_per_sector);
183     CHECK_STRUCT(_finddata_t);
184     CHECK_FIELD(_finddata_t, attrib);
185     CHECK_FIELD(_finddata_t, time_create);
186     CHECK_FIELD(_finddata_t, time_access);
187     CHECK_FIELD(_finddata_t, time_write);
188     CHECK_FIELD(_finddata_t, size);
189     CHECK_FIELD(_finddata_t, name[260]);
190     CHECK_STRUCT(_finddatai64_t);
191     CHECK_FIELD(_finddatai64_t, attrib);
192     CHECK_FIELD(_finddatai64_t, time_create);
193     CHECK_FIELD(_finddatai64_t, time_access);
194     CHECK_FIELD(_finddatai64_t, time_write);
195     CHECK_FIELD(_finddatai64_t, size);
196     CHECK_FIELD(_finddatai64_t, name[260]);
197     CHECK_STRUCT(_wfinddata_t);
198     CHECK_FIELD(_wfinddata_t, attrib);
199     CHECK_FIELD(_wfinddata_t, time_create);
200     CHECK_FIELD(_wfinddata_t, time_access);
201     CHECK_FIELD(_wfinddata_t, time_write);
202     CHECK_FIELD(_wfinddata_t, size);
203     CHECK_FIELD(_wfinddata_t, name[260]);
204     CHECK_STRUCT(_wfinddatai64_t);
205     CHECK_FIELD(_wfinddatai64_t, attrib);
206     CHECK_FIELD(_wfinddatai64_t, time_create);
207     CHECK_FIELD(_wfinddatai64_t, time_access);
208     CHECK_FIELD(_wfinddatai64_t, time_write);
209     CHECK_FIELD(_wfinddatai64_t, size);
210     CHECK_FIELD(_wfinddatai64_t, name[260]);
211     CHECK_STRUCT(_utimbuf);
212     CHECK_FIELD(_utimbuf, actime);
213     CHECK_FIELD(_utimbuf, modtime);
214     CHECK_STRUCT(_stat);
215     CHECK_FIELD(_stat, st_dev);
216     CHECK_FIELD(_stat, st_ino);
217     CHECK_FIELD(_stat, st_mode);
218     CHECK_FIELD(_stat, st_nlink);
219     CHECK_FIELD(_stat, st_uid);
220     CHECK_FIELD(_stat, st_gid);
221     CHECK_FIELD(_stat, st_rdev);
222     CHECK_FIELD(_stat, st_size);
223     CHECK_FIELD(_stat, st_atime);
224     CHECK_FIELD(_stat, st_mtime);
225     CHECK_FIELD(_stat, st_ctime);
226     CHECK_FIELD(_stat, st_dev);
227     CHECK_FIELD(_stat, st_ino);
228     CHECK_FIELD(_stat, st_mode);
229     CHECK_FIELD(_stat, st_nlink);
230     CHECK_FIELD(_stat, st_uid);
231     CHECK_FIELD(_stat, st_gid);
232     CHECK_FIELD(_stat, st_rdev);
233     CHECK_FIELD(_stat, st_size);
234     CHECK_FIELD(_stat, st_atime);
235     CHECK_FIELD(_stat, st_mtime);
236     CHECK_FIELD(_stat, st_ctime);
237     CHECK_FIELD(_stat, st_dev);
238     CHECK_FIELD(_stat, st_ino);
239     CHECK_FIELD(_stat, st_mode);
240     CHECK_FIELD(_stat, st_nlink);
241     CHECK_FIELD(_stat, st_uid);
242     CHECK_FIELD(_stat, st_gid);
243     CHECK_FIELD(_stat, st_rdev);
244     CHECK_FIELD(_stat, st_size);
245     CHECK_FIELD(_stat, st_atime);
246     CHECK_FIELD(_stat, st_mtime);
247     CHECK_FIELD(_stat, st_ctime);
248     CHECK_STRUCT(stat);
249     CHECK_FIELD(stat, st_dev);
250     CHECK_FIELD(stat, st_ino);
251     CHECK_FIELD(stat, st_mode);
252     CHECK_FIELD(stat, st_nlink);
253     CHECK_FIELD(stat, st_uid);
254     CHECK_FIELD(stat, st_gid);
255     CHECK_FIELD(stat, st_rdev);
256     CHECK_FIELD(stat, st_size);
257     CHECK_FIELD(stat, st_atime);
258     CHECK_FIELD(stat, st_mtime);
259     CHECK_FIELD(stat, st_ctime);
260     CHECK_FIELD(stat, st_dev);
261     CHECK_FIELD(stat, st_ino);
262     CHECK_FIELD(stat, st_mode);
263     CHECK_FIELD(stat, st_nlink);
264     CHECK_FIELD(stat, st_uid);
265     CHECK_FIELD(stat, st_gid);
266     CHECK_FIELD(stat, st_rdev);
267     CHECK_FIELD(stat, st_size);
268     CHECK_FIELD(stat, st_atime);
269     CHECK_FIELD(stat, st_mtime);
270     CHECK_FIELD(stat, st_ctime);
271     CHECK_FIELD(stat, st_dev);
272     CHECK_FIELD(stat, st_ino);
273     CHECK_FIELD(stat, st_mode);
274     CHECK_FIELD(stat, st_nlink);
275     CHECK_FIELD(stat, st_uid);
276     CHECK_FIELD(stat, st_gid);
277     CHECK_FIELD(stat, st_rdev);
278     CHECK_FIELD(stat, st_size);
279     CHECK_FIELD(stat, st_atime);
280     CHECK_FIELD(stat, st_mtime);
281     CHECK_FIELD(stat, st_ctime);
282     CHECK_STRUCT(_stati64);
283     CHECK_FIELD(_stati64, st_dev);
284     CHECK_FIELD(_stati64, st_ino);
285     CHECK_FIELD(_stati64, st_mode);
286     CHECK_FIELD(_stati64, st_nlink);
287     CHECK_FIELD(_stati64, st_uid);
288     CHECK_FIELD(_stati64, st_gid);
289     CHECK_FIELD(_stati64, st_rdev);
290     CHECK_FIELD(_stati64, st_size);
291     CHECK_FIELD(_stati64, st_atime);
292     CHECK_FIELD(_stati64, st_mtime);
293     CHECK_FIELD(_stati64, st_ctime);
294 }
295
296 /************* Checking defines ***************/
297 void test_defines(void)
298 {
299     CHECK_DEF("WEOF", WEOF, MSVCRT_WEOF);
300     CHECK_DEF("EOF", EOF, MSVCRT_EOF);
301     CHECK_DEF("TMP_MAX", TMP_MAX, MSVCRT_TMP_MAX);
302     CHECK_DEF("BUFSIZ", BUFSIZ, MSVCRT_BUFSIZ);
303     CHECK_DEF("STDIN_FILENO", STDIN_FILENO, MSVCRT_STDIN_FILENO);
304     CHECK_DEF("STDOUT_FILENO", STDOUT_FILENO, MSVCRT_STDOUT_FILENO);
305     CHECK_DEF("STDERR_FILENO", STDERR_FILENO, MSVCRT_STDERR_FILENO);
306     CHECK_DEF("_IOFBF", _IOFBF, MSVCRT__IOFBF);
307     CHECK_DEF("_IONBF", _IONBF, MSVCRT__IONBF);
308     CHECK_DEF("_IOLBF", _IOLBF, MSVCRT__IOLBF);
309     CHECK_DEF("FILENAME_MAX", FILENAME_MAX, MSVCRT_FILENAME_MAX);
310     CHECK_DEF("_P_WAIT", _P_WAIT, MSVCRT__P_WAIT);
311     CHECK_DEF("_P_NOWAIT", _P_NOWAIT, MSVCRT__P_NOWAIT);
312     CHECK_DEF("_P_OVERLAY", _P_OVERLAY, MSVCRT__P_OVERLAY);
313     CHECK_DEF("_P_NOWAITO", _P_NOWAITO, MSVCRT__P_NOWAITO);
314     CHECK_DEF("_P_DETACH", _P_DETACH, MSVCRT__P_DETACH);
315     CHECK_DEF("EPERM", EPERM, MSVCRT_EPERM);
316     CHECK_DEF("ENOENT", ENOENT, MSVCRT_ENOENT);
317     CHECK_DEF("ESRCH", ESRCH, MSVCRT_ESRCH);
318     CHECK_DEF("EINTR", EINTR, MSVCRT_EINTR);
319     CHECK_DEF("EIO", EIO, MSVCRT_EIO);
320     CHECK_DEF("ENXIO", ENXIO, MSVCRT_ENXIO);
321     CHECK_DEF("E2BIG", E2BIG, MSVCRT_E2BIG);
322     CHECK_DEF("ENOEXEC", ENOEXEC, MSVCRT_ENOEXEC);
323     CHECK_DEF("EBADF", EBADF, MSVCRT_EBADF);
324     CHECK_DEF("ECHILD", ECHILD, MSVCRT_ECHILD);
325     CHECK_DEF("EAGAIN", EAGAIN, MSVCRT_EAGAIN);
326     CHECK_DEF("ENOMEM", ENOMEM, MSVCRT_ENOMEM);
327     CHECK_DEF("EACCES", EACCES, MSVCRT_EACCES);
328     CHECK_DEF("EFAULT", EFAULT, MSVCRT_EFAULT);
329     CHECK_DEF("EBUSY", EBUSY, MSVCRT_EBUSY);
330     CHECK_DEF("EEXIST", EEXIST, MSVCRT_EEXIST);
331     CHECK_DEF("EXDEV", EXDEV, MSVCRT_EXDEV);
332     CHECK_DEF("ENODEV", ENODEV, MSVCRT_ENODEV);
333     CHECK_DEF("ENOTDIR", ENOTDIR, MSVCRT_ENOTDIR);
334     CHECK_DEF("EISDIR", EISDIR, MSVCRT_EISDIR);
335     CHECK_DEF("EINVAL", EINVAL, MSVCRT_EINVAL);
336     CHECK_DEF("ENFILE", ENFILE, MSVCRT_ENFILE);
337     CHECK_DEF("EMFILE", EMFILE, MSVCRT_EMFILE);
338     CHECK_DEF("ENOTTY", ENOTTY, MSVCRT_ENOTTY);
339     CHECK_DEF("EFBIG", EFBIG, MSVCRT_EFBIG);
340     CHECK_DEF("ENOSPC", ENOSPC, MSVCRT_ENOSPC);
341     CHECK_DEF("ESPIPE", ESPIPE, MSVCRT_ESPIPE);
342     CHECK_DEF("EROFS", EROFS, MSVCRT_EROFS);
343     CHECK_DEF("EMLINK", EMLINK, MSVCRT_EMLINK);
344     CHECK_DEF("EPIPE", EPIPE, MSVCRT_EPIPE);
345     CHECK_DEF("EDOM", EDOM, MSVCRT_EDOM);
346     CHECK_DEF("ERANGE", ERANGE, MSVCRT_ERANGE);
347     CHECK_DEF("EDEADLK", EDEADLK, MSVCRT_EDEADLK);
348     CHECK_DEF("EDEADLOCK", EDEADLOCK, MSVCRT_EDEADLOCK);
349     CHECK_DEF("ENAMETOOLONG", ENAMETOOLONG, MSVCRT_ENAMETOOLONG);
350     CHECK_DEF("ENOLCK", ENOLCK, MSVCRT_ENOLCK);
351     CHECK_DEF("ENOSYS", ENOSYS, MSVCRT_ENOSYS);
352     CHECK_DEF("ENOTEMPTY", ENOTEMPTY, MSVCRT_ENOTEMPTY);
353     CHECK_DEF("LC_ALL", LC_ALL, MSVCRT_LC_ALL);
354     CHECK_DEF("LC_COLLATE", LC_COLLATE, MSVCRT_LC_COLLATE);
355     CHECK_DEF("LC_CTYPE", LC_CTYPE, MSVCRT_LC_CTYPE);
356     CHECK_DEF("LC_MONETARY", LC_MONETARY, MSVCRT_LC_MONETARY);
357     CHECK_DEF("LC_NUMERIC", LC_NUMERIC, MSVCRT_LC_NUMERIC);
358     CHECK_DEF("LC_TIME", LC_TIME, MSVCRT_LC_TIME);
359     CHECK_DEF("LC_MIN", LC_MIN, MSVCRT_LC_MIN);
360     CHECK_DEF("LC_MAX", LC_MAX, MSVCRT_LC_MAX);
361     CHECK_DEF("CLOCKS_PER_SEC", CLOCKS_PER_SEC, MSVCRT_CLOCKS_PER_SEC);
362     CHECK_DEF("_HEAPEMPTY", _HEAPEMPTY, MSVCRT__HEAPEMPTY);
363     CHECK_DEF("_HEAPOK", _HEAPOK, MSVCRT__HEAPOK);
364     CHECK_DEF("_HEAPBADBEGIN", _HEAPBADBEGIN, MSVCRT__HEAPBADBEGIN);
365     CHECK_DEF("_HEAPBADNODE", _HEAPBADNODE, MSVCRT__HEAPBADNODE);
366     CHECK_DEF("_HEAPEND", _HEAPEND, MSVCRT__HEAPEND);
367     CHECK_DEF("_HEAPBADPTR", _HEAPBADPTR, MSVCRT__HEAPBADPTR);
368     CHECK_DEF("_FREEENTRY", _FREEENTRY, MSVCRT__FREEENTRY);
369     CHECK_DEF("_USEDENTRY", _USEDENTRY, MSVCRT__USEDENTRY);
370     CHECK_DEF("_OUT_TO_DEFAULT", _OUT_TO_DEFAULT, MSVCRT__OUT_TO_DEFAULT);
371     CHECK_DEF("_REPORT_ERRMODE", _REPORT_ERRMODE, MSVCRT__REPORT_ERRMODE);
372     CHECK_DEF("_UPPER", _UPPER, MSVCRT__UPPER);
373     CHECK_DEF("_LOWER", _LOWER, MSVCRT__LOWER);
374     CHECK_DEF("_DIGIT", _DIGIT, MSVCRT__DIGIT);
375     CHECK_DEF("_SPACE", _SPACE, MSVCRT__SPACE);
376     CHECK_DEF("_PUNCT", _PUNCT, MSVCRT__PUNCT);
377     CHECK_DEF("_CONTROL", _CONTROL, MSVCRT__CONTROL);
378     CHECK_DEF("_BLANK", _BLANK, MSVCRT__BLANK);
379     CHECK_DEF("_HEX", _HEX, MSVCRT__HEX);
380     CHECK_DEF("_LEADBYTE", _LEADBYTE, MSVCRT__LEADBYTE);
381     CHECK_DEF("_ALPHA", _ALPHA, MSVCRT__ALPHA);
382     CHECK_DEF("_IOREAD", _IOREAD, MSVCRT__IOREAD);
383     CHECK_DEF("_IOWRT", _IOWRT, MSVCRT__IOWRT);
384     CHECK_DEF("_IOMYBUF", _IOMYBUF, MSVCRT__IOMYBUF);
385     CHECK_DEF("_IOEOF", _IOEOF, MSVCRT__IOEOF);
386     CHECK_DEF("_IOERR", _IOERR, MSVCRT__IOERR);
387     CHECK_DEF("_IOSTRG", _IOSTRG, MSVCRT__IOSTRG);
388     CHECK_DEF("_IORW", _IORW, MSVCRT__IORW);
389     CHECK_DEF("_S_IEXEC", _S_IEXEC, MSVCRT__S_IEXEC);
390     CHECK_DEF("_S_IWRITE", _S_IWRITE, MSVCRT__S_IWRITE);
391     CHECK_DEF("_S_IREAD", _S_IREAD, MSVCRT__S_IREAD);
392     CHECK_DEF("_S_IFIFO", _S_IFIFO, MSVCRT__S_IFIFO);
393     CHECK_DEF("_S_IFCHR", _S_IFCHR, MSVCRT__S_IFCHR);
394     CHECK_DEF("_S_IFDIR", _S_IFDIR, MSVCRT__S_IFDIR);
395     CHECK_DEF("_S_IFREG", _S_IFREG, MSVCRT__S_IFREG);
396     CHECK_DEF("_S_IFMT", _S_IFMT, MSVCRT__S_IFMT);
397     CHECK_DEF("_LK_UNLCK", _LK_UNLCK, MSVCRT__LK_UNLCK);
398     CHECK_DEF("_LK_LOCK", _LK_LOCK, MSVCRT__LK_LOCK);
399     CHECK_DEF("_LK_NBLCK", _LK_NBLCK, MSVCRT__LK_NBLCK);
400     CHECK_DEF("_LK_RLCK", _LK_RLCK, MSVCRT__LK_RLCK);
401     CHECK_DEF("_LK_NBRLCK", _LK_NBRLCK, MSVCRT__LK_NBRLCK);
402     CHECK_DEF("_O_RDONLY", _O_RDONLY, MSVCRT__O_RDONLY);
403     CHECK_DEF("_O_WRONLY", _O_WRONLY, MSVCRT__O_WRONLY);
404     CHECK_DEF("_O_RDWR", _O_RDWR, MSVCRT__O_RDWR);
405     CHECK_DEF("_O_ACCMODE", _O_ACCMODE, MSVCRT__O_ACCMODE);
406     CHECK_DEF("_O_APPEND", _O_APPEND, MSVCRT__O_APPEND);
407     CHECK_DEF("_O_RANDOM", _O_RANDOM, MSVCRT__O_RANDOM);
408     CHECK_DEF("_O_SEQUENTIAL", _O_SEQUENTIAL, MSVCRT__O_SEQUENTIAL);
409     CHECK_DEF("_O_TEMPORARY", _O_TEMPORARY, MSVCRT__O_TEMPORARY);
410     CHECK_DEF("_O_NOINHERIT", _O_NOINHERIT, MSVCRT__O_NOINHERIT);
411     CHECK_DEF("_O_CREAT", _O_CREAT, MSVCRT__O_CREAT);
412     CHECK_DEF("_O_TRUNC", _O_TRUNC, MSVCRT__O_TRUNC);
413     CHECK_DEF("_O_EXCL", _O_EXCL, MSVCRT__O_EXCL);
414     CHECK_DEF("_O_SHORT_LIVED", _O_SHORT_LIVED, MSVCRT__O_SHORT_LIVED);
415     CHECK_DEF("_O_TEXT", _O_TEXT, MSVCRT__O_TEXT);
416     CHECK_DEF("_O_BINARY", _O_BINARY, MSVCRT__O_BINARY);
417     CHECK_DEF("_O_RAW", _O_RAW, MSVCRT__O_RAW);
418     CHECK_DEF("_SW_INEXACT", _SW_INEXACT, MSVCRT__SW_INEXACT);
419     CHECK_DEF("_SW_UNDERFLOW", _SW_UNDERFLOW, MSVCRT__SW_UNDERFLOW);
420     CHECK_DEF("_SW_OVERFLOW", _SW_OVERFLOW, MSVCRT__SW_OVERFLOW);
421     CHECK_DEF("_SW_ZERODIVIDE", _SW_ZERODIVIDE, MSVCRT__SW_ZERODIVIDE);
422     CHECK_DEF("_SW_INVALID", _SW_INVALID, MSVCRT__SW_INVALID);
423     CHECK_DEF("_SW_UNEMULATED", _SW_UNEMULATED, MSVCRT__SW_UNEMULATED);
424     CHECK_DEF("_SW_SQRTNEG", _SW_SQRTNEG, MSVCRT__SW_SQRTNEG);
425     CHECK_DEF("_SW_STACKOVERFLOW", _SW_STACKOVERFLOW, MSVCRT__SW_STACKOVERFLOW);
426     CHECK_DEF("_SW_STACKUNDERFLOW", _SW_STACKUNDERFLOW, MSVCRT__SW_STACKUNDERFLOW);
427     CHECK_DEF("_SW_DENORMAL", _SW_DENORMAL, MSVCRT__SW_DENORMAL);
428     CHECK_DEF("_FPCLASS_SNAN", _FPCLASS_SNAN, MSVCRT__FPCLASS_SNAN);
429     CHECK_DEF("_FPCLASS_QNAN", _FPCLASS_QNAN, MSVCRT__FPCLASS_QNAN);
430     CHECK_DEF("_FPCLASS_NINF", _FPCLASS_NINF, MSVCRT__FPCLASS_NINF);
431     CHECK_DEF("_FPCLASS_NN", _FPCLASS_NN, MSVCRT__FPCLASS_NN);
432     CHECK_DEF("_FPCLASS_ND", _FPCLASS_ND, MSVCRT__FPCLASS_ND);
433     CHECK_DEF("_FPCLASS_NZ", _FPCLASS_NZ, MSVCRT__FPCLASS_NZ);
434     CHECK_DEF("_FPCLASS_PZ", _FPCLASS_PZ, MSVCRT__FPCLASS_PZ);
435     CHECK_DEF("_FPCLASS_PD", _FPCLASS_PD, MSVCRT__FPCLASS_PD);
436     CHECK_DEF("_FPCLASS_PN", _FPCLASS_PN, MSVCRT__FPCLASS_PN);
437     CHECK_DEF("_FPCLASS_PINF", _FPCLASS_PINF, MSVCRT__FPCLASS_PINF);
438 #ifdef __i386__
439     CHECK_DEF("_EM_INVALID", _EM_INVALID, MSVCRT__EM_INVALID);
440     CHECK_DEF("_EM_DENORMAL", _EM_DENORMAL, MSVCRT__EM_DENORMAL);
441     CHECK_DEF("_EM_ZERODIVIDE", _EM_ZERODIVIDE, MSVCRT__EM_ZERODIVIDE);
442     CHECK_DEF("_EM_OVERFLOW", _EM_OVERFLOW, MSVCRT__EM_OVERFLOW);
443     CHECK_DEF("_EM_UNDERFLOW", _EM_UNDERFLOW, MSVCRT__EM_UNDERFLOW);
444     CHECK_DEF("_EM_INEXACT", _EM_INEXACT, MSVCRT__EM_INEXACT);
445     CHECK_DEF("_IC_AFFINE", _IC_AFFINE, MSVCRT__IC_AFFINE);
446     CHECK_DEF("_IC_PROJECTIVE", _IC_PROJECTIVE, MSVCRT__IC_PROJECTIVE);
447     CHECK_DEF("_RC_CHOP", _RC_CHOP, MSVCRT__RC_CHOP);
448     CHECK_DEF("_RC_UP", _RC_UP, MSVCRT__RC_UP);
449     CHECK_DEF("_RC_DOWN", _RC_DOWN, MSVCRT__RC_DOWN);
450     CHECK_DEF("_RC_NEAR", _RC_NEAR, MSVCRT__RC_NEAR);
451     CHECK_DEF("_PC_24", _PC_24, MSVCRT__PC_24);
452     CHECK_DEF("_PC_53", _PC_53, MSVCRT__PC_53);
453     CHECK_DEF("_PC_64", _PC_64, MSVCRT__PC_64);
454 #endif
455 }
456
457 #endif /* __WINE_USE_MSVCRT */
458
459 START_TEST(headers)
460 {
461 #ifdef __WINE_USE_MSVCRT
462     test_types();
463     test_structs();
464     test_defines();
465 #endif
466 }