41#define DEFINE_EXPECT(func) \
42 static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
44#define SET_EXPECT(func) \
45 expect_ ## func = TRUE
47#define CHECK_EXPECT2(func) \
49 ok(expect_ ##func, "unexpected call " #func "\n"); \
50 called_ ## func = TRUE; \
53#define CHECK_EXPECT(func) \
55 CHECK_EXPECT2(func); \
56 expect_ ## func = FALSE; \
59#define CHECK_CALLED(func) \
61 ok(called_ ## func, "expected " #func "\n"); \
62 expect_ ## func = called_ ## func = FALSE; \
67 static const UINT64 __min_pos_double = 0x10000000000000;
68 return *(
const double *)&__min_pos_double;
73 static const UINT64 __max_double = 0x7FEFFFFFFFFFFFFF;
74 return *(
const double *)&__max_double;
81 const char *short_wday[7];
83 const char *short_mon[12];
87 const char *short_date;
92 const wchar_t *short_wdayW[7];
93 const wchar_t *wdayW[7];
94 const wchar_t *short_monW[12];
95 const wchar_t *monW[12];
116#define _MAX__TIME64_T (((__time64_t)0x00000007 << 32) | 0x93406FFF)
132 memset(&table2, 0,
sizeof(table2));
139 memset(&table2, 0,
sizeof(table2));
152 ok(
table._first != (
void*)0x123,
"got %p\n",
table._first);
154 table._first = (
void*)0x123;
155 table._last = (
void*)0x456;
156 table._end = (
void*)0x123;
161 ok(
table._first != (
void*)0x123,
"got %p\n",
table._first);
163 table._first = (
void*)0x123;
164 table._last = (
void*)0x456;
165 table._end = (
void*)0x789;
168 ok(
table._first == (
void*)0x123,
"got %p\n",
table._first);
169 ok(
table._last == (
void*)0x456,
"got %p\n",
table._last);
173 table._last = (
void*)0x456;
322 skip(
"_controlfp not supported\n");
328 ok(
ret == 1,
"__fpe_flt_rounds returned %d\n",
ret);
340 ok(
ret == 0,
"__fpe_flt_rounds returned %d\n",
ret);
348 unsigned int x86_cw_init, sse2_cw_init, x86_cw, sse2_cw,
r;
350 r = __control87_2(0, 0, &x86_cw_init, &sse2_cw_init);
351 ok(
r == 1,
"__control87_2 returned %d\n",
r);
354 ok(
r == 1,
"__control87_2 returned %d\n",
r);
355 ok(x86_cw == (x86_cw_init & ~
_EM_INVALID),
"x86_cw = %x, x86_cw_init = %x\n", x86_cw, x86_cw_init);
357 r = __control87_2(0, 0, &x86_cw, &sse2_cw);
358 ok(
r == 1,
"__control87_2 returned %d\n",
r);
359 ok(x86_cw == (x86_cw_init & ~
_EM_INVALID),
"x86_cw = %x, x86_cw_init = %x\n", x86_cw, x86_cw_init);
360 ok(sse2_cw == sse2_cw_init,
"sse2_cw = %x, sse2_cw_init = %x\n", sse2_cw, sse2_cw_init);
371 const wchar_t *expression,
const wchar_t *function,
378 const wchar_t *expression,
const wchar_t *function,
389 ok(!
ret,
"ret != NULL\n");
392 ok(!
ret,
"ret != NULL\n");
395 ok(!
ret,
"ret != NULL\n");
401 ok(!
ret,
"ret != NULL\n");
404 ok(!
ret,
"ret != NULL\n");
427 ok(!
ret,
"ret != NULL\n");
474 ok(
fd > 0,
"got fd %d\n",
fd);
482 ok(
fd == -1,
"got fd %d\n",
fd);
503 ok(
fd > 0,
"got fd %d\n",
fd);
509 ok(
fd > 0,
"got fd %d\n",
fd);
518 ok(
fd == -1,
"got fd %d\n",
fd);
545 for(
c = 0;
c <= 0xff;
c++) {
551 }
else if(
c ==
' ') {
555 ok(
r ==
_BLANK,
"space should be blank (got %x)\n",
r);
563 for(
c = 0;
c <= 0xffff;
c++) {
564 if(
c ==
'\t' ||
c ==
' ' ||
c == 0x3000 ||
c == 0xfeff) {
599 {
"_logb", -1, -1, -1},
604 {
"acos", -1, -1, -1},
609 {
"acosh", 0,
EDOM, -1},
610 {
"acosh", 1, -1, -1},
614 {
"asin", -1, -1, -1},
624 {
"atanh", -2,
EDOM, -1},
625 {
"atanh", -1,
ERANGE, -1},
627 {
"atanh", 2,
EDOM, -1},
639 {
"exp2", -1e100, -1, -1},
640 {
"exp2", 1e100,
ERANGE, -1},
653 {
"log1p", -2,
EDOM, -1},
654 {
"log1p", -1,
ERANGE, -1},
682 {
"atan2", 0, 0, -1, -1},
727 {
"fma",
NAN, 0, 0, -1, -1},
728 {
"fma", 0,
NAN, 0, -1, -1},
729 {
"fma", 0, 0,
NAN, -1, -1},
742 {
"_scalb", -1e100, 1, -1, -1},
743 {
"_scalb", 0, 1, -1, -1},
744 {
"_scalb", 1e100, 1, -1, -1},
748 {
"ldexp", -1e100, 1, -1, -1},
749 {
"ldexp", 0, 1, -1, -1},
750 {
"ldexp", 1e100, 1, -1, -1},
773 p_funcd(testsd[
i].
x);
775 "%s(%f) got errno %d\n", testsd[
i].
func, testsd[
i].
x,
errno);
777 "%s(%f) got exception type %d\n", testsd[
i].func, testsd[
i].x,
exception.type);
780 "%s(%f) got exception arg1 %f\n", testsd[
i].func, testsd[
i].x,
exception.arg1);
787 p_func2d(tests2d[
i].
a, tests2d[
i].
b);
789 "%s(%f, %f) got errno %d\n", tests2d[
i].
func, tests2d[
i].
a, tests2d[
i].
b,
errno);
791 "%s(%f, %f) got exception type %d\n", tests2d[
i].func, tests2d[
i].a, tests2d[
i].b,
exception.type);
794 "%s(%f, %f) got exception arg1 %f\n", tests2d[
i].func, tests2d[
i].a, tests2d[
i].b,
exception.arg1);
796 "%s(%f, %f) got exception arg2 %f\n", tests2d[
i].func, tests2d[
i].a, tests2d[
i].b,
exception.arg2);
803 p_func3d(tests3d[
i].
a, tests3d[
i].
b, tests3d[
i].
c);
805 "%s(%f, %f, %f) got errno %d\n", tests3d[
i].
func, tests3d[
i].
a, tests3d[
i].
b, tests3d[
i].
c,
errno);
807 "%s(%f, %f, %f) got exception type %d\n", tests3d[
i].func, tests3d[
i].a, tests3d[
i].b, tests3d[
i].c,
exception.type);
810 "%s(%f, %f, %f) got exception arg1 %f\n", tests3d[
i].func, tests3d[
i].a, tests3d[
i].b, tests3d[
i].c,
exception.arg1);
812 "%s(%f, %f, %f) got exception arg2 %f\n", tests3d[
i].func, tests3d[
i].a, tests3d[
i].b, tests3d[
i].c,
exception.arg2);
819 p_funcdl(testsdl[
i].
a, testsdl[
i].
b);
821 "%s(%f, %ld) got errno %d\n", testsdl[
i].
func, testsdl[
i].
a, testsdl[
i].
b,
errno);
823 "%s(%f, %ld) got exception type %d\n", testsdl[
i].func, testsdl[
i].a, testsdl[
i].b,
exception.type);
826 "%s(%f, %ld) got exception arg1 %f\n", testsdl[
i].func, testsdl[
i].a, testsdl[
i].b,
exception.arg1);
828 "%s(%f, %ld) got exception arg2 %f\n", testsdl[
i].func, testsdl[
i].a, testsdl[
i].b,
exception.arg2);
832 ok(
d == -1.0,
"failed to change log10 return value: %e\n",
d);
837 const struct tm epoch = { 0, 0, 0, 1, 0, 70, 4, 0, 0 };
841 ok(!
strcmp(
ret,
"Thu Jan 1 00:00:00 1970\n"),
"asctime returned %s\n",
ret);
853 {
"%C",
"", { 0, 0, 0, 1, 0, -2000, 4, 0, 0 }},
854 {
"%C",
"", { 0, 0, 0, 1, 0, -1901, 4, 0, 0 }},
855 {
"%C",
"00", { 0, 0, 0, 1, 0, -1900, 4, 0, 0 }},
856 {
"%C",
"18", { 0, 0, 0, 1, 0, -1, 4, 0, 0 }},
857 {
"%C",
"19", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
858 {
"%C",
"99", { 0, 0, 0, 1, 0, 8099, 4, 0, 0 }},
859 {
"%C",
"", { 0, 0, 0, 1, 0, 8100, 4, 0, 0 }},
860 {
"%d",
"", { 0, 0, 0, 0, 0, 70, 4, 0, 0 }},
861 {
"%d",
"01", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
862 {
"%d",
"31", { 0, 0, 0, 31, 0, 70, 4, 0, 0 }},
863 {
"%d",
"", { 0, 0, 0, 32, 0, 70, 4, 0, 0 }},
864 {
"%D",
"", { 0, 0, 0, 1, 0, -1901, 4, 0, 0 }},
865 {
"%D",
"01/01/00", { 0, 0, 0, 1, 0, -1900, 4, 0, 0 }},
866 {
"%D",
"01/01/99", { 0, 0, 0, 1, 0, -1, 4, 0, 0 }},
867 {
"%D",
"01/01/70", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
868 {
"%D",
"01/01/99", { 0, 0, 0, 1, 0, 8099, 4, 0, 0 }},
869 {
"%D",
"", { 0, 0, 0, 1, 0, 8100, 4, 0, 0 }},
870 {
"%#D",
"1/1/70", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
871 {
"%e",
"", { 0, 0, 0, 0, 0, 70, 4, 0, 0 }},
872 {
"%e",
" 1", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
873 {
"%e",
"31", { 0, 0, 0, 31, 0, 70, 4, 0, 0 }},
874 {
"%e",
"", { 0, 0, 0, 32, 0, 70, 4, 0, 0 }},
875 {
"%#e",
"1", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
876 {
"%F",
"1970-01-01", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
877 {
"%#F",
"1970-1-1", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
878 {
"%R",
"00:00", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
879 {
"%#R",
"0:0", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
880 {
"%T",
"00:00:00", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
881 {
"%#T",
"0:0:0", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
882 {
"%u",
"", { 0, 0, 0, 1, 0, 117, -1, 0, 0 }},
883 {
"%u",
"7", { 0, 0, 0, 1, 0, 117, 0, 0, 0 }},
884 {
"%u",
"1", { 0, 0, 0, 1, 0, 117, 1, 0, 0 }},
885 {
"%u",
"6", { 0, 0, 0, 1, 0, 117, 6, 0, 0 }},
886 {
"%u",
"", { 0, 0, 0, 1, 0, 117, 7, 0, 0 }},
887 {
"%h",
"Jan", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
888 {
"%I",
"", { 0, 0, -1, 1, 0, 70, 4, 0, 0 }},
889 {
"%I",
"12", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
890 {
"%I",
"01", { 0, 0, 1, 1, 0, 70, 4, 0, 0 }},
891 {
"%I",
"11", { 0, 0, 11, 1, 0, 70, 4, 0, 0 }},
892 {
"%I",
"12", { 0, 0, 12, 1, 0, 70, 4, 0, 0 }},
893 {
"%I",
"01", { 0, 0, 13, 1, 0, 70, 4, 0, 0 }},
894 {
"%I",
"11", { 0, 0, 23, 1, 0, 70, 4, 0, 0 }},
895 {
"%I",
"", { 0, 0, 24, 1, 0, 70, 4, 0, 0 }},
896 {
"%n",
"\n", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
897 {
"%r",
"12:00:00 AM", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
898 {
"%r",
"02:00:00 PM", { 0, 0, 14, 1, 0, 121, 6, 0, 0 }},
899 {
"%#r",
"12:0:0 AM", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
900 {
"%#r",
"2:0:0 PM", { 0, 0, 14, 1, 0, 121, 6, 0, 0 }},
901 {
"%t",
"\t", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
902 {
"%g",
"", { 0, 0, 0, 1, 0, -1901, 4, 0, 0 }},
903 {
"%g",
"", { 0, 0, 0, 1, 0, -1901, 3, 364, 0 }},
904 {
"%g",
"00", { 0, 0, 0, 1, 0, -1900, 4, 0, 0 }},
905 {
"%g",
"70", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
906 {
"%g",
"71", { 0, 0, 0, 2, 0, 72, 0, 1, 0 }},
907 {
"%g",
"72", { 0, 0, 0, 3, 0, 72, 1, 2, 0 }},
908 {
"%g",
"16", { 0, 0, 0, 1, 0, 117, 0, 0, 0 }},
909 {
"%g",
"99", { 0, 0, 0, 1, 0, 8099, 4, 0, 0 }},
910 {
"%g",
"00", { 0, 0, 0, 1, 0, 8099, 3, 364, 0 }},
911 {
"%g",
"", { 0, 0, 0, 1, 0, 8100, 0, 0, 0 }},
912 {
"%g",
"", { 0, 0, 0, 1, 0, 8100, 4, 0, 0 }},
913 {
"%G",
"1970", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
914 {
"%G",
"1971", { 0, 0, 0, 2, 0, 72, 0, 1, 0 }},
915 {
"%G",
"1972", { 0, 0, 0, 3, 0, 72, 1, 2, 0 }},
916 {
"%G",
"2016", { 0, 0, 0, 1, 0, 117, 0, 0, 0 }},
917 {
"%V",
"01", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
918 {
"%V",
"52", { 0, 0, 0, 1, 0, 117, 0, 0, 0 }},
919 {
"%V",
"53", { 0, 0, 14, 1, 0, 121, 6, 0, 0 }},
920 {
"%y",
"", { 0, 0, 0, 0, 0, -1901, 0, 0, 0 }},
921 {
"%y",
"00", { 0, 0, 0, 0, 0, -1900, 0, 0, 0 }},
922 {
"%y",
"99", { 0, 0, 0, 0, 0, 8099, 0, 0, 0 }},
923 {
"%y",
"", { 0, 0, 0, 0, 0, 8100, 0, 0, 0 }},
924 {
"%c",
"Thu Jan 1 00:00:00 1970", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
925 {
"%c",
"Thu Feb 30 00:00:00 1970", { 0, 0, 0, 30, 1, 70, 4, 0, 0 }},
926 {
"%#c",
"Thursday, January 01, 1970 00:00:00", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
927 {
"%#c",
"Thursday, February 30, 1970 00:00:00", { 0, 0, 0, 30, 1, 70, 4, 0, 0 }},
928 {
"%x",
"01/01/70", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
929 {
"%x",
"02/30/70", { 0, 0, 0, 30, 1, 70, 4, 0, 0 }},
930 {
"%#x",
"Thursday, January 01, 1970", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
931 {
"%#x",
"Thursday, February 30, 1970", { 0, 0, 0, 30, 1, 70, 4, 0, 0 }},
932 {
"%#x",
"", { 0, 0, 0, 30, 1, 70, 7, 0, 0 }},
933 {
"%#x",
"", { 0, 0, 0, 30, 12, 70, 4, 0, 0 }},
934 {
"%X",
"00:00:00", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
935 {
"%X",
"14:00:00", { 0, 0, 14, 1, 0, 70, 4, 0, 0 }},
936 {
"%X",
"23:59:60", { 60, 59, 23, 1, 0, 70, 4, 0, 0 }},
942 const wchar_t *short_date;
948 {
"%c",
"x z",
L"x",
L"y",
L"z", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
949 {
"%#c",
"y z",
L"x",
L"y",
L"z", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
950 {
"%X",
"M1", 0, 0,
L"MMM", { 0, 0, 1, 1, 0, 70, 0, 0, 0 }},
951 {
"%X",
"1", 0, 0,
L"h", { 0, 0, 1, 1, 0, 70, 0, 0, 0 }},
952 {
"%X",
"01", 0, 0,
L"hh", { 0, 0, 1, 1, 0, 70, 0, 0, 0 }},
953 {
"%X",
"h01", 0, 0,
L"hhh", { 0, 0, 1, 1, 0, 70, 0, 0, 0 }},
954 {
"%X",
"hh01", 0, 0,
L"hhhh", { 0, 0, 1, 1, 0, 70, 0, 0, 0 }},
955 {
"%X",
"1", 0, 0,
L"H", { 0, 0, 1, 1, 0, 70, 0, 0, 0 }},
956 {
"%X",
"01", 0, 0,
L"HH", { 0, 0, 1, 1, 0, 70, 0, 0, 0 }},
957 {
"%X",
"H13", 0, 0,
L"HHH", { 0, 0, 13, 1, 0, 70, 0, 0, 0 }},
958 {
"%X",
"0", 0, 0,
L"m", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
959 {
"%X",
"00", 0, 0,
L"mm", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
960 {
"%X",
"m00", 0, 0,
L"mmm", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
961 {
"%X",
"0", 0, 0,
L"s", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
962 {
"%X",
"00", 0, 0,
L"ss", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
963 {
"%X",
"s00", 0, 0,
L"sss", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
964 {
"%X",
"T", 0, 0,
L"t", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
965 {
"%X",
"TAM", 0, 0,
L"tt", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
966 {
"%X",
"TAM", 0, 0,
L"ttttttttt", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
967 {
"%X",
"TAM", 0, 0,
L"a", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
968 {
"%X",
"TAM", 0, 0,
L"aaaaa", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
969 {
"%X",
"TAM", 0, 0,
L"A", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
970 {
"%X",
"TAM", 0, 0,
L"AAAAA", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
971 {
"%x",
"1",
L"d", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
972 {
"%x",
"01",
L"dd", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
973 {
"%x",
"D1",
L"ddd", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
974 {
"%x",
"Day1",
L"dddd", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
975 {
"%x",
"dDay1",
L"ddddd", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
976 {
"%x",
"1",
L"M", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
977 {
"%x",
"01",
L"MM", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
978 {
"%x",
"M1",
L"MMM", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
979 {
"%x",
"Mon1",
L"MMMM", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
980 {
"%x",
"MMon1",
L"MMMMM", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
981 {
"%x",
"y",
L"y", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
982 {
"%x",
"70",
L"yy", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
983 {
"%x",
"y70",
L"yyy", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
984 {
"%x",
"1970",
L"yyyy", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
985 {
"%x",
"y1970",
L"yyyyy", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
986 {
"%x",
"ggggggggggg",
L"ggggggggggg", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
987 {
"%#x",
"1", 0,
L"d", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
988 {
"%#x",
"01", 0,
L"dd", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
989 {
"%#x",
"D1", 0,
L"ddd", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
990 {
"%#x",
"Day1", 0,
L"dddd", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
991 {
"%#x",
"dDay1", 0,
L"ddddd", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
992 {
"%#x",
"1", 0,
L"M", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
993 {
"%#x",
"01", 0,
L"MM", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
994 {
"%#x",
"M1", 0,
L"MMM", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
995 {
"%#x",
"Mon1", 0,
L"MMMM", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
996 {
"%#x",
"MMon1", 0,
L"MMMMM", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
997 {
"%#x",
"y", 0,
L"y", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
998 {
"%#x",
"70", 0,
L"yy", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
999 {
"%#x",
"y70", 0,
L"yyy", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
1000 {
"%#x",
"1970", 0,
L"yyyy", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
1001 {
"%#x",
"y1970", 0,
L"yyyyy", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
1002 {
"%r",
"z",
L"x",
L"y",
L"z", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
1010 { 100, 0, {
"99 52",
"00 01",
"00 01",
"00 01",
"00 01",
"99 53",
"99 52" }},
1011 { 100, 1, {
"99 52",
"00 01",
"00 01",
"00 01",
"00 01",
"00 01",
"99 53" }},
1012 { 100, 2, {
"99 53",
"00 01",
"00 01",
"00 01",
"00 01",
"00 01",
"00 01" }},
1013 { 100, 3, {
"00 01",
"00 01",
"00 01",
"00 01",
"00 01",
"00 01",
"00 01" }},
1014 { 100, 4, {
"00 01",
"00 02",
"00 01",
"00 01",
"00 01",
"00 01",
"00 01" }},
1015 { 100, 5, {
"00 01",
"00 02",
"00 02",
"00 01",
"00 01",
"00 01",
"00 01" }},
1016 { 100, 6, {
"00 01",
"00 02",
"00 02",
"00 02",
"00 01",
"00 01",
"00 01" }},
1017 { 100, 358, {
"00 51",
"00 52",
"00 52",
"00 52",
"00 52",
"00 52",
"00 51" }},
1018 { 100, 359, {
"00 51",
"00 52",
"00 52",
"00 52",
"00 52",
"00 52",
"00 52" }},
1019 { 100, 360, {
"00 52",
"00 52",
"00 52",
"00 52",
"00 52",
"00 52",
"00 52" }},
1020 { 100, 361, {
"00 52",
"00 53",
"00 52",
"00 52",
"00 52",
"00 52",
"00 52" }},
1021 { 100, 362, {
"00 52",
"00 53",
"00 53",
"00 52",
"00 52",
"00 52",
"00 52" }},
1022 { 100, 363, {
"00 52",
"01 01",
"00 53",
"00 53",
"00 52",
"00 52",
"00 52" }},
1023 { 100, 364, {
"00 52",
"01 01",
"01 01",
"00 53",
"00 53",
"00 52",
"00 52" }},
1024 { 100, 365, {
"00 52",
"01 01",
"01 01",
"01 01",
"00 53",
"00 53",
"00 52" }},
1025 { 101, 0, {
"00 52",
"01 01",
"01 01",
"01 01",
"01 01",
"00 53",
"00 53" }},
1026 { 101, 1, {
"00 53",
"01 01",
"01 01",
"01 01",
"01 01",
"01 01",
"00 53" }},
1027 { 101, 2, {
"00 53",
"01 01",
"01 01",
"01 01",
"01 01",
"01 01",
"01 01" }},
1028 { 101, 3, {
"01 01",
"01 01",
"01 01",
"01 01",
"01 01",
"01 01",
"01 01" }},
1029 { 101, 4, {
"01 01",
"01 02",
"01 01",
"01 01",
"01 01",
"01 01",
"01 01" }},
1030 { 101, 5, {
"01 01",
"01 02",
"01 02",
"01 01",
"01 01",
"01 01",
"01 01" }},
1031 { 101, 6, {
"01 01",
"01 02",
"01 02",
"01 02",
"01 01",
"01 01",
"01 01" }},
1032 { 101, 358, {
"01 51",
"01 52",
"01 52",
"01 52",
"01 52",
"01 52",
"01 51" }},
1033 { 101, 359, {
"01 51",
"01 52",
"01 52",
"01 52",
"01 52",
"01 52",
"01 52" }},
1034 { 101, 360, {
"01 52",
"01 52",
"01 52",
"01 52",
"01 52",
"01 52",
"01 52" }},
1035 { 101, 361, {
"01 52",
"01 53",
"01 52",
"01 52",
"01 52",
"01 52",
"01 52" }},
1036 { 101, 362, {
"01 52",
"02 01",
"01 53",
"01 52",
"01 52",
"01 52",
"01 52" }},
1037 { 101, 363, {
"01 52",
"02 01",
"02 01",
"01 53",
"01 52",
"01 52",
"01 52" }},
1038 { 101, 364, {
"01 52",
"02 01",
"02 01",
"02 01",
"01 53",
"01 52",
"01 52" }},
1042 {
"d1",
"d2",
"d3",
"d4",
"d5",
"d6",
"d7" },
1043 {
"day1",
"day2",
"day3",
"day4",
"day5",
"day6",
"day7" },
1044 {
"m1",
"m2",
"m3",
"m4",
"m5",
"m6",
"m7",
"m8",
"m9",
"m10",
"m11",
"m12" },
1045 {
"mon1",
"mon2",
"mon3",
"mon4",
"mon5",
"mon6",
"mon7",
"mon8",
"mon9",
"mon10",
"mon11",
"mon12" },
1046 "tam",
"tpm", 0, 0, 0, 1, 0,
1047 {
L"D1",
L"D2",
L"D3",
L"D4",
L"D5",
L"D6",
L"D7" },
1048 {
L"Day1",
L"Day2",
L"Day3",
L"Day4",
L"Day5",
L"Day6",
L"Day7" },
1049 {
L"M1",
L"M2",
L"M3",
L"M4",
L"M5",
L"M6",
L"M7",
L"M8",
L"M9",
L"M10",
L"M11",
L"M12" },
1050 {
L"Mon1",
L"Mon2",
L"Mon3",
L"Mon4",
L"Mon5",
L"Mon6",
L"Mon7",
L"Mon8",
L"Mon9",
L"Mon10",
L"Mon11",
L"Mon12" },
1054 const struct tm epoch = { 0, 0, 0, 1, 0, 70, 4, 0, 0 };
1055 struct tm tm_yweek = { 0, 0, 0, 1, 0, 70, 0, 0, 0 };
1077 ok(
ret == 5,
"expected 5, got %d\n",
ret);
1078 ok((
buf[0] ==
'+' ||
buf[0] ==
'-') &&
1085 time_data.
dateW = tests_td[
i].date;
1086 time_data.
timeW = tests_td[
i].time;
1090 ok(!
strcmp(
buf, tests_td[
i].
ret),
"%d) buf = \"%s\", expected \"%s\"\n",
1098 tm_yweek.
tm_year = tests_yweek[
i].year;
1099 tm_yweek.
tm_yday = tests_yweek[
i].yday;
1104 ok(!
strcmp(
buf, tests_yweek[
i].
ret[
j]),
"%d,%d) buf = \"%s\", expected \"%s\"\n",
1110 win_skip(
"fr-FR locale not available\n");
1115 ok(!
strcmp(
buf,
"01/01/1970 00:00:00"),
"buf = \"%s\", expected \"%s\"\n",
buf,
"01/01/1970 00:00:00");
1118 ok(!
strcmp(
buf,
"00:00:00"),
"buf = \"%s\", expected \"%s\"\n",
buf,
"00:00:00");
1122 win_skip(
"Japanese_Japan.932 locale not available\n");
1134 0,
sizeof(
LONG),
"winetest_failures_counter");
1173 ok(
ret == 1,
"child process exited with code %ld\n",
ret);
1274 ok(
ret == 2,
"child process exited with code %ld\n",
ret);
1291 static const char test_file[] =
"\\stat_file.tst";
1292 static const char test_dir[] =
"\\stat_dir.tst";
1300 ok(
len,
"GetTempPathA failed\n");
1303 ok(
ret == -1,
"_stat32('c:') returned %d\n",
ret);
1305 ok(!
ret,
"_stat32('c:\\') returned %d\n",
ret);
1337 ok(
m !=
NULL,
"p__o_malloc(1) returned NULL\n");
1340 ok(
s == 1,
"_msize returned %d\n", (
int)
s);
1347 static const int thresh = 100, max_load_delay = 1000;
1355 ok(
c >= expect_min - thresh &&
c < expect_min + max_load_delay,
"clock() = %d, expected range [%d, %d]\n",
1356 c, expect_min - thresh, expect_min + max_load_delay);
1365 void **current_exception;
1366 void *processing_throw;
1372 ok(current_exception+2 == processing_throw,
1373 "current_exception = %p, processing_throw = %p\n",
1374 current_exception, processing_throw);
1376 "can't find se_translator in thread storage\n");
1383#if defined(__i386__)
1384 return e<<24 |
e<<16 |
e;
1385#elif defined(__x86_64__)
1394 static const int tests[] = {
1403 static const struct {
1433 ok(!
ret,
"fegetenv returned %x\n",
ret);
1434#if defined(__i386__) || defined(__x86_64__)
1435 if (
env._Fe_ctl >> 24 != (
env._Fe_ctl & 0xff))
1437 win_skip(
"fenv_t format not supported (too old ucrtbase)\n");
1442 ok(!
env._Fe_stat,
"env._Fe_stat = %lx\n",
env._Fe_stat);
1444 ok(!
ret,
"fegetenv returned %x\n",
ret);
1445 ok(
env._Fe_ctl != env2.
_Fe_ctl,
"fesetround didn't change _Fe_ctl (%lx).\n",
env._Fe_ctl);
1447 ok(!
ret,
"fesetenv returned %x\n",
ret);
1453 ok(!
ret,
"fesetexceptflag returned %x\n",
ret);
1458 ok(!
ret,
"feclearexceptflag returned %x\n",
ret);
1464 ok(!
ret,
"fesetexceptflag returned %x\n",
ret);
1471 ok(!
ret,
"fesetexceptflag returned %x\n",
ret);
1476 ok(!
ret,
"fetestexcept returned %x\n",
ret);
1483 ok(!
ret,
"Test %d: fesetexceptflag returned %x\n",
i,
ret);
1494 ok(!
ret,
"Test %d: fegetexceptflag returned %x.\n",
i,
ret);
1500 ok(!
ret,
"Test %d: fegetexceptflag returned %x.\n",
i,
ret);
1507 ok(!
ret,
"Test %d: feclearexceptflag returned %x\n",
i,
ret);
1521 ok(!
ret,
"Test %d: fesetexceptflag returned %x\n",
i,
ret);
1535 ok(!
ret,
"Test %d: fesetexceptflag returned %x\n",
i,
ret);
1542 ok(!
ret,
"feclearexceptflag returned %x\n",
ret);
1554 ok(
len,
"GetTempPathA failed\n");
1559 if(called_global_invalid_parameter_handler)
1561 win_skip(
"skipping fopen x mode tests.\n");
1564 expect_global_invalid_parameter_handler =
FALSE;
1565 ok(fp !=
NULL,
"creating file with mode wx failed\n");
1569 ok(!fp,
"overwrote existing file with mode wx\n");
1573 ok(fp !=
NULL,
"creating file with mode w+x failed\n");
1577 ok(!fp,
"overwrote existing file with mode w+x\n");
1582 ok(!fp,
"opening file with mode rx succeeded\n");
1588 ok(!fp,
"creating file with mode xw succeeded\n");
1591 ok(fp !=
NULL,
"creating file with mode wbx failed\n");
1596#if defined(__i386__)
1597#include "pshpack1.h"
1598struct rewind_thunk {
1609static void test_rewind_i386_abi(
void)
1611 FILE *fp_in, *fp_out;
1615 thunk->push_esp[0] = 0xff;
1616 thunk->push_esp[1] = 0x74;
1617 thunk->push_esp[2] = 0x24;
1618 thunk->push_esp[3] = 0x04;
1620 thunk->call_rewind = 0xe8;
1623 thunk->pop_eax = 0x58;
1626 test_rewind_wrapper = (
void *)
thunk;
1628 fp_in =
fopen(
"rewind_abi.tst",
"wb");
1629 fp_out = test_rewind_wrapper(fp_in);
1630 ok(fp_in == fp_out,
"rewind modified the first argument in the stack\n");
1633 unlink(
"rewind_abi.tst");
1646 ok(!!ptm,
"got NULL.\n");
1655 ok(!!ptm,
"got NULL.\n");
1661 ok(!!ptm,
"got NULL.\n");
1671 ok(!ptm,
"got non-NULL.\n");
1678 ok(!ptm,
"got NULL.\n");
1688 ok(!!ptm ||
broken(!ptm) ,
"got NULL.\n");
1691 win_skip(
"Old gmtime64 limits, skipping tests.\n");
1701 ok(!ptm,
"got non-NULL.\n");
1725 if(!
strcmp(arg_v[2],
"cmd"))
1727 else if(!
strcmp(arg_v[2],
"exit"))
1729 else if(!
strcmp(arg_v[2],
"quick_exit"))
1756#if defined(__i386__)
1757 test_rewind_i386_abi();
unsigned long long UINT64
valarray< _Tp > acos(const valarray< _Tp > &__x)
int strcmp(const char *String1, const char *String2)
ACPI_SIZE strlen(const char *String)
static void startup(void)
void get(int argc, const char *argv[])
_ACRTIMP int __cdecl _initialize_onexit_table(_In_opt_ _onexit_table_t *_Table)
_ACRTIMP int __cdecl _execute_onexit_table(_In_opt_ _onexit_table_t *_Table)
void(__cdecl * _PVFV)(void)
char *__CRTDECL _get_narrow_winmain_command_line(void)
_ACRTIMP int __cdecl _register_onexit_function(_In_opt_ _onexit_table_t *_Table, _In_opt_ _onexit_t _Function)
_ACRTIMP int __cdecl _crt_at_quick_exit(_In_opt_ _PVFV _Function)
_ACRTIMP void __cdecl __setusermatherr(_UserMathErrorFunctionPointer _UserMathErrorFunction)
#define _iswblank_l(_c, _p)
int __cdecl fesetexceptflag(const fexcept_t *, int)
int __cdecl fesetenv(const fenv_t *)
int __cdecl fetestexcept(int excepts)
int __cdecl fegetround(void)
int __cdecl fegetexceptflag(fexcept_t *flagp, int excepts)
int __cdecl feclearexcept(int)
int __cdecl fegetenv(fenv_t *envp)
int __cdecl fesetround(int mode)
_CRTIMP intptr_t __cdecl _get_heap_handle(void)
_Check_return_ _CRTIMP size_t __cdecl _msize(_In_ void *_Memory)
static LPCWSTR LPCWSTR LPCWSTR env
const char * wine_dbgstr_an(const char *str, int n)
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
DWORD WINAPI GetTempPathA(IN DWORD nBufferLength, OUT LPSTR lpBuffer)
BOOL WINAPI GetExitCodeProcess(IN HANDLE hProcess, IN LPDWORD lpExitCode)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessA(LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
LPSTR WINAPI GetCommandLineA(VOID)
VOID WINAPI GetSystemTimeAsFileTime(OUT PFILETIME lpFileTime)
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
_Check_return_ _CRTIMP int __cdecl _iswctype_l(_In_ wint_t c, _In_ wctype_t type, _In_opt_ _locale_t locale)
int __cdecl _crt_atexit(void(__cdecl *)(void))
void __cdecl quick_exit(int const return_code)
HANDLE NTAPI CreateFileMappingA(IN HANDLE hFile, IN LPSECURITY_ATTRIBUTES lpFileMappingAttributes, IN DWORD flProtect, IN DWORD dwMaximumSizeHigh, IN DWORD dwMaximumSizeLow, IN LPCSTR lpName)
GLint GLint GLint GLint GLint x
GLdouble GLdouble GLdouble r
GLboolean GLboolean GLboolean b
GLenum GLuint GLenum GLsizei const GLchar * buf
GLboolean GLboolean GLboolean GLboolean a
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean flag
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
struct tm * _gmtime64(const __time64_t *ptime)
_Check_return_ _CRTIMP int __cdecl _isctype(_In_ int _C, _In_ int _Type)
__MINGW_NOTHROW _CRTIMP unsigned int __cdecl _controlfp(_In_ unsigned int unNew, _In_ unsigned int unMask)
__MINGW_NOTHROW _CRTIMP unsigned int __cdecl _clearfp(void)
_CRTIMP void __cdecl rewind(_Inout_ FILE *_File)
_Check_return_ _CRTIMP char *__cdecl _tempnam(_In_opt_z_ const char *_DirName, _In_opt_z_ const char *_FilePrefix)
_Check_return_ _CRTIMP FILE *__cdecl fopen(_In_z_ const char *_Filename, _In_z_ const char *_Mode)
_Check_return_opt_ _CRTIMP int __cdecl fclose(_Inout_ FILE *_File)
_invalid_parameter_handler __cdecl _set_invalid_parameter_handler(_In_opt_ _invalid_parameter_handler _Handler)
int(__cdecl * _onexit_t)(void)
_invalid_parameter_handler __cdecl _get_invalid_parameter_handler(void)
__MINGW_EXTENSION _Check_return_ lldiv_t __cdecl lldiv(_In_ long long, _In_ long long)
void(__cdecl * _invalid_parameter_handler)(const wchar_t *, const wchar_t *, const wchar_t *, unsigned int, uintptr_t)
#define _isblank_l(c, locale)
_Check_return_ _ACRTIMP int __cdecl __fpe_flt_rounds(void)
_ACRTIMP _invalid_parameter_handler __cdecl _set_thread_local_invalid_parameter_handler(_In_opt_ _invalid_parameter_handler _Handler)
_ACRTIMP _invalid_parameter_handler __cdecl _get_thread_local_invalid_parameter_handler(void)
int CDECL _ltoa_s(long value, char *str, size_t size, int radix)
#define memcpy(s1, s2, n)
static struct test_info tests[]
#define sprintf(buf, format,...)
#define todo_wine_if(is_todo)
unsigned int __cdecl _control87(unsigned int, unsigned int)
static const char mbstate_t *static wchar_t const char mbstate_t *static const wchar_t int *static double
static IBackgroundCopyFile * test_file
static void test___fpe_flt_rounds(void)
static void test_invalid_parameter_handler(void)
_se_translator_function __cdecl _set_se_translator(_se_translator_function func)
static int CDECL onexit_func2(void)
static void test_exit(const char *argv0)
static void test__get_narrow_winmain_command_line(char *path)
static void test__sopen_dispatch(void)
static void test__sopen_s(void)
static void __cdecl thread_invalid_parameter_handler(const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned line, uintptr_t arg)
static double __port_max_double(void)
static void test__execute_onexit_table(void)
static void test_call_exit(void)
static void test__initialize_onexit_table(void)
static void test_gmtime64(void)
static void test_clock(void)
#define CHECK_EXPECT(func)
void **__cdecl __current_exception(void)
#define DEFINE_EXPECT(func)
static void test__o_malloc(void)
_ACRTIMP int __cdecl _o__register_onexit_function(_onexit_table_t *table, _onexit_t func)
static int CDECL onexit_func(void)
static void CDECL at_quick_exit_func2(void)
int *__cdecl __processing_throw(void)
static void test_strftime(void)
static unsigned long fenv_encode(unsigned int e)
static void test_isblank(void)
static void test__stat32(void)
static void set_failures_counter(LONG add)
_ACRTIMP int __cdecl _o__execute_onexit_table(_onexit_table_t *table)
static int atquick_exit_called
static void CDECL at_exit_func1(void)
#define CHECK_EXPECT2(func)
static void __cdecl se_translator(unsigned int u, EXCEPTION_POINTERS *ep)
static void CDECL at_quick_exit_func1(void)
static LONG * get_failures_counter(HANDLE *map)
static void test__register_onexit_function(void)
void(__cdecl * _se_translator_function)(unsigned int code, struct _EXCEPTION_POINTERS *info)
static void test_call_quick_exit(void)
static void test__control87_2(void)
static void test_quick_exit(const char *argv0)
static int CDECL matherr_callback(struct _exception *e)
static void test_fenv(void)
_ACRTIMP void *__cdecl _o_malloc(size_t)
#define CHECK_CALLED(func)
static void free_failures_counter(LONG *mem, HANDLE map)
static void __cdecl global_invalid_parameter_handler(const wchar_t *expression, const wchar_t *function, const wchar_t *file, unsigned line, uintptr_t arg)
static void test_thread_storage(void)
static void test_lldiv(void)
static LONGLONG crt_init_end
static int g_onexit_called
static void CDECL at_exit_func2(void)
static double __port_min_pos_double(void)
static void test_asctime(void)
_ACRTIMP int __cdecl _o__initialize_onexit_table(_onexit_table_t *table)
static void test_fopen_exclusive(void)
static struct _exception exception
static void test__get_heap_handle(void)
static void test_math_errors(void)
#define PAGE_EXECUTE_READWRITE
errno_t __cdecl _sopen_dispatch(char const *const path, int const oflag, int const shflag, int const pmode, int *const pfh, int const secure)
_Check_return_opt_ _CRTIMP int __cdecl _close(_In_ int _FileHandle)
_CRTIMP int __cdecl _open(const char *_Filename, int _OpenFlag,...)
_Check_return_wat_ _CRTIMP errno_t __cdecl _sopen_s(_Out_ int *_FileHandle, _In_z_ const char *_Filename, _In_ int _OpenFlag, _In_ int _ShareFlag, _In_ int _PermissionMode)
_Check_return_ _CRTIMP char *__cdecl asctime(_In_ const struct tm *_Tm)
_Check_return_ _CRTIMP clock_t __cdecl clock(void)
_Check_return_ _CRTIMP struct tm *__cdecl _gmtime32(_In_ const __time32_t *_Time)
_Check_return_wat_ _CRTIMP errno_t __cdecl _gmtime32_s(_In_ struct tm *_Tm, _In_ const __time32_t *_Time)
LONG winetest_get_failures(void)
int winetest_get_mainargs(char ***pargv)
#define wait_child_process
_Check_return_wat_ _ACRTIMP errno_t __cdecl _gmtime64_s(_Out_ struct tm *_Tm, _In_ __time64_t const *_Time)
static char argv0[MAX_PATH]
size_t CDECL strftime(char *str, size_t max, const char *format, const struct tm *mstm)
const wchar_t * short_dateW
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventA(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
LPVOID NTAPI VirtualAlloc(IN LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD flAllocationType, IN DWORD flProtect)
#define NORMAL_PRIORITY_CLASS
DWORD WINAPI GetLastError(void)
#define FILE_MAP_ALL_ACCESS
#define CREATE_DEFAULT_ERROR_MODE
_CRTIMP size_t __cdecl _Strftime(char *, size_t _Maxsize, const char *, const struct tm *, void *)