31#define _MAX__TIME64_T (((__time64_t)0x00000007 << 32) | 0x93406FFF)
33#define SECSPERDAY 86400
34#define SECSPERHOUR 3600
40 const char *short_wday[7];
42 const char *short_mon[12];
117 ok(
ret ==
NULL,
"expected ctime to return NULL, got %s\n",
ret);
122 struct tm* gmt_tm, gmt_tm_s;
126 win_skip(
"Skipping _gmtime32 tests\n");
131 ok(gmt_tm ==
NULL,
"gmt_tm != NULL\n");
140 ok(0,
"_gmtime32() failed\n");
147 "Wrong date:Year %4d mon %2d yday %3d mday %2d wday %1d hour%2d min %2d sec %2d dst %2d\n",
152 win_skip(
"Skipping _mkgmtime32 tests\n");
157 gmt = p_mkgmtime32(gmt_tm);
158 ok(gmt ==
valid,
"gmt = %lu\n", gmt);
164 gmt = p_mkgmtime32(gmt_tm);
165 ok(gmt ==
valid,
"gmt = %lu\n", gmt);
171 gmt = p_mkgmtime32(gmt_tm);
172 ok(gmt ==
valid,
"gmt = %lu\n", gmt);
176 gmt =
valid = 173921;
179 ok(0,
"_gmtime32() failed\n");
184 gmt = p_mkgmtime32(gmt_tm);
185 ok(gmt ==
valid,
"gmt = %lu\n", gmt);
190 gmt = p_mkgmtime32(gmt_tm);
191 ok(gmt ==
valid,
"gmt = %lu\n", gmt);
194 win_skip(
"Skipping _gmtime32_s tests\n");
200 err = p_gmtime32_s(
NULL, &gmt);
206 err = p_gmtime32_s(&gmt_tm_s, &gmt);
208 "tm_year = %d, tm_sec = %d\n", gmt_tm_s.
tm_year, gmt_tm_s.
tm_sec);
226 skip(
"Old gmtime64 limits, skipping tests.\n");
229 ok(!!ptm,
"got NULL.\n");
230 ret = p_gmtime64_s(&
tm, &
t);
238 ok(!!ptm,
"got NULL.\n");
239 ret = p_gmtime64_s(&
tm, &
t);
244 ok(!!ptm,
"got NULL.\n");
254 ok(!ptm,
"got non-NULL.\n");
256 ret = p_gmtime64_s(&
tm, &
t);
261 ok(!ptm,
"got NULL.\n");
271 ok(!!ptm,
"got NULL.\n");
272 ret = p_gmtime64_s(&
tm, &
t);
279 ok(!ptm,
"got non-NULL.\n");
281 ret = p_gmtime64_s(&
tm, &
t);
291 struct tm my_tm, sav_tm;
303 trace(
"bias %ld std %ld dst %ld zone %s\n",
330 ok(
local_time ==
ref,
"Unnormalized mktime returned %lu, expected %lu\n",
335 "mktime returned %2d-%02d-%02d %02d:%02d expected %2d-%02d-%02d %02d:%02d\n",
344 ok(
local_time ==
ref,
"Unnormalized mktime returned %lu, expected %lu\n",
349 "mktime returned %2d-%02d-%02d %02d:%02d expected %2d-%02d-%02d %02d:%02d\n",
358 ok(
local_time ==
ref,
"Unnormalized mktime returned %lu, expected %lu\n",
363 "mktime returned %2d-%02d-%02d %02d:%02d expected %2d-%02d-%02d %02d:%02d\n",
372 ok(
local_time ==
ref,
"Unnormalized mktime returned %lu, expected %lu\n",
377 "mktime returned %2d-%02d-%02d %02d:%02d expected %2d-%02d-%02d %02d:%02d\n",
393 nulltime =
mktime(&my_tm);
394 ok(nulltime ==
ref,
"mktime returned 0x%08lx\n",(
DWORD)nulltime);
407 int is_leap = !(year % 4) && ((year % 100) || !((year + 300) % 400));
417 "Wrong date:Year %d mon %d yday %d mday %d wday %d hour %d min %d sec %d dst %d\n",
427 "Wrong date:Year %d mon %d yday %d mday %d wday %d hour %d min %d sec %d dst %d\n",
440 "Wrong date:Year %d mon %d yday %d mday %d wday %d hour %d min %d sec %d dst %d\n",
454 ok(
len == 8,
"Wrong length: returned %d, should be 8\n",
len);
456 ok(
count == 3,
"Wrong format: count = %d, should be 3\n",
count);
459 win_skip(
"Skipping _strdate_s tests\n");
473 ok(
date[0] ==
'\0',
"date[0] != '\\0'\n");
474 ok(
date[1] ==
'x',
"date[1] != 'x'\n");
483 int hour, minute, second,
count,
len;
489 ok(
len == 8,
"Wrong length: returned %d, should be 8\n",
len);
491 ok(
count == 3,
"Wrong format: count = %d, should be 3\n",
count);
494 win_skip(
"Skipping _strtime_s tests\n");
511 ok(
time[0] ==
'\0',
"time[0] != '\\0'\n");
525 ok(
len == 8,
"Wrong length: returned %d, should be 8\n",
len);
527 ok(
count == 3,
"Wrong format: count = %d, should be 3\n",
count);
533 int hour, minute, second,
count,
len;
538 ok(
len == 8,
"Wrong length: returned %d, should be 8\n",
len);
540 ok(
count == 3,
"Wrong format: count = %d, should be 3\n",
count);
549 if (!p_localtime32_s)
551 win_skip(
"Skipping _localtime32_s tests\n");
557 ok(
err ==
EINVAL,
"Expected _localtime32_s to return EINVAL, got %d\n",
err);
563 ok(
err ==
EINVAL,
"Expected _localtime32_s to return EINVAL, got %d\n",
err);
569 ok(
err ==
EINVAL,
"Expected _localtime32_s to return EINVAL, got %d\n",
err);
574 "Expected tm structure members to be initialized to -1, got "
575 "(%d, %d, %d, %d, %d, %d, %d, %d, %d)\n",
tm.
tm_sec,
tm.
tm_min,
583 ok(
err ==
EINVAL,
"Expected _localtime32_s to return EINVAL, got %d\n",
err);
588 "Expected tm structure members to be initialized to -1, got "
589 "(%d, %d, %d, %d, %d, %d, %d, %d, %d)\n",
tm.
tm_sec,
tm.
tm_min,
600 if (!p_localtime64_s)
602 win_skip(
"Skipping _localtime64_s tests\n");
608 ok(
err ==
EINVAL,
"Expected _localtime64_s to return EINVAL, got %d\n",
err);
614 ok(
err ==
EINVAL,
"Expected _localtime64_s to return EINVAL, got %d\n",
err);
620 ok(
err ==
EINVAL,
"Expected _localtime64_s to return EINVAL, got %d\n",
err);
625 "Expected tm structure members to be initialized to -1, got "
626 "(%d, %d, %d, %d, %d, %d, %d, %d, %d)\n",
tm.
tm_sec,
tm.
tm_min,
634 ok(
err ==
EINVAL,
"Expected _localtime64_s to return EINVAL, got %d\n",
err);
639 "Expected tm structure members to be initialized to -1, got "
640 "(%d, %d, %d, %d, %d, %d, %d, %d, %d)\n",
tm.
tm_sec,
tm.
tm_min,
648 ok(
err ==
EINVAL,
"Expected _localtime64_s to return EINVAL, got %d\n",
err);
653 "Expected tm structure members to be initialized to -1, got "
654 "(%d, %d, %d, %d, %d, %d, %d, %d, %d)\n",
tm.
tm_sec,
tm.
tm_min,
665 win_skip(
"__daylight() not available\n");
670 if (
sizeof(
void*) !=
sizeof(
int))
676 ok(ret1 && ret1 == ret2,
"got %p\n", ret1);
703 {
"e%#%e",
"e%e", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
704 {
"%c",
"01/01/70 00:00:00", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
705 {
"%c",
"02/30/70 00:00:00", { 0, 0, 0, 30, 1, 70, 4, 0, 0 }},
706 {
"%#c",
"Thursday, January 01, 1970 00:00:00", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
707 {
"%#c",
"Thursday, February 30, 1970 00:00:00", { 0, 0, 0, 30, 1, 70, 4, 0, 0 }},
708 {
"%x",
"01/01/70", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
709 {
"%x",
"02/30/70", { 0, 0, 0, 30, 1, 70, 4, 0, 0 }},
710 {
"%#x",
"Thursday, January 01, 1970", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
711 {
"%#x",
"Thursday, February 30, 1970", { 0, 0, 0, 30, 1, 70, 4, 0, 0 }},
712 {
"%X",
"00:00:00", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
713 {
"%X",
"14:00:00", { 0, 0, 14, 1, 0, 70, 4, 0, 0 }},
714 {
"%a",
"Thu", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
715 {
"%A",
"Thursday", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
716 {
"%b",
"Jan", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
717 {
"%B",
"January", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
718 {
"%d",
"01", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
719 {
"%#d",
"1", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
720 {
"%H",
"00", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
721 {
"%I",
"12", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
722 {
"%j",
"001", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
723 {
"%m",
"01", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
724 {
"%#M",
"0", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
725 {
"%p",
"AM", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
726 {
"%U",
"00", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
727 {
"%W",
"00", { 0, 0, 0, 1, 0, 70, 4, 0, 0 }},
728 {
"%U",
"01", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
729 {
"%W",
"00", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
730 {
"%U",
"53", { 0, 0, 0, 1, 0, 70, 0, 365, 0 }},
731 {
"%W",
"52", { 0, 0, 0, 1, 0, 70, 0, 365, 0 }},
737 const char *short_date;
743 {
"%c",
"x z",
"x",
"y",
"z", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
744 {
"%#c",
"y z",
"x",
"y",
"z", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
745 {
"%X",
"m1", 0, 0,
"MMM", { 0, 0, 1, 1, 0, 70, 0, 0, 0 }},
746 {
"%X",
"1", 0, 0,
"h", { 0, 0, 1, 1, 0, 70, 0, 0, 0 }},
747 {
"%X",
"01", 0, 0,
"hh", { 0, 0, 1, 1, 0, 70, 0, 0, 0 }},
748 {
"%X",
"h01", 0, 0,
"hhh", { 0, 0, 1, 1, 0, 70, 0, 0, 0 }},
749 {
"%X",
"hh01", 0, 0,
"hhhh", { 0, 0, 1, 1, 0, 70, 0, 0, 0 }},
750 {
"%X",
"1", 0, 0,
"H", { 0, 0, 1, 1, 0, 70, 0, 0, 0 }},
751 {
"%X",
"01", 0, 0,
"HH", { 0, 0, 1, 1, 0, 70, 0, 0, 0 }},
752 {
"%X",
"H13", 0, 0,
"HHH", { 0, 0, 13, 1, 0, 70, 0, 0, 0 }},
753 {
"%X",
"0", 0, 0,
"m", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
754 {
"%X",
"00", 0, 0,
"mm", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
755 {
"%X",
"0", 0, 0,
"s", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
756 {
"%X",
"00", 0, 0,
"ss", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
757 {
"%X",
"s00", 0, 0,
"sss", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
758 {
"%X",
"t", 0, 0,
"t", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
759 {
"%X",
"tam", 0, 0,
"tt", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
760 {
"%X",
"tam", 0, 0,
"ttttttttt", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
761 {
"%X",
"tam", 0, 0,
"a", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
762 {
"%X",
"tam", 0, 0,
"aaaaa", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
763 {
"%X",
"tam", 0, 0,
"A", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
764 {
"%X",
"tam", 0, 0,
"AAAAA", { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
765 {
"%x",
"1",
"d", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
766 {
"%x",
"01",
"dd", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
767 {
"%x",
"d1",
"ddd", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
768 {
"%x",
"day1",
"dddd", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
769 {
"%x",
"dday1",
"ddddd", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
770 {
"%x",
"1",
"M", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
771 {
"%x",
"01",
"MM", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
772 {
"%x",
"m1",
"MMM", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
773 {
"%x",
"mon1",
"MMMM", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
774 {
"%x",
"Mmon1",
"MMMMM", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
775 {
"%x",
"y",
"y", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
776 {
"%x",
"70",
"yy", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
777 {
"%x",
"y70",
"yyy", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
778 {
"%x",
"1970",
"yyyy", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
779 {
"%x",
"y1970",
"yyyyy", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
780 {
"%x",
"ggggggggggg",
"ggggggggggg", 0, 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
781 {
"%#x",
"1", 0,
"d", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
782 {
"%#x",
"01", 0,
"dd", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
783 {
"%#x",
"d1", 0,
"ddd", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
784 {
"%#x",
"day1", 0,
"dddd", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
785 {
"%#x",
"dday1", 0,
"ddddd", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
786 {
"%#x",
"1", 0,
"M", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
787 {
"%#x",
"01", 0,
"MM", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
788 {
"%#x",
"m1", 0,
"MMM", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
789 {
"%#x",
"mon1", 0,
"MMMM", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
790 {
"%#x",
"Mmon1", 0,
"MMMMM", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
791 {
"%#x",
"y", 0,
"y", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
792 {
"%#x",
"70", 0,
"yy", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
793 {
"%#x",
"y70", 0,
"yyy", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
794 {
"%#x",
"1970", 0,
"yyyy", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
795 {
"%#x",
"y1970", 0,
"yyyyy", 0, { 0, 0, 0, 1, 0, 70, 0, 0, 0 }},
799 {
"d1",
"d2",
"d3",
"d4",
"d5",
"d6",
"d7" },
800 {
"day1",
"day2",
"day3",
"day4",
"day5",
"day6",
"day7" },
801 {
"m1",
"m2",
"m3",
"m4",
"m5",
"m6",
"m7",
"m8",
"m9",
"m10",
"m11",
"m12" },
802 {
"mon1",
"mon2",
"mon3",
"mon4",
"mon5",
"mon6",
"mon7",
"mon8",
"mon9",
"mon10",
"mon11",
"mon12" },
807 char buf[256], bufA[256];
812 if (!p_strftime || !p_wcsftime || !
p_gmtime)
814 win_skip(
"strftime, wcsftime or gmtime is not available\n");
822 ok(gmt_tm !=
NULL,
"gmtime failed\n");
827 retA = p_strftime(bufA, 256, tests_einval[
i].
format, gmt_tm);
828 ok(retA == 0,
"%d) ret = %ld\n",
i, retA);
833 retA = p_strftime(
NULL, 0,
"copy", gmt_tm);
834 ok(retA == 0,
"expected 0, got %ld\n", retA);
837 retA = p_strftime(bufA, 256,
"copy",
NULL);
838 ok(retA == 4,
"expected 4, got %ld\n", retA);
839 ok(!
strcmp(bufA,
"copy"),
"got %s\n", bufA);
841 retA = p_strftime(bufA, 256,
"copy it", gmt_tm);
842 ok(retA == 7,
"expected 7, got %ld\n", retA);
843 ok(!
strcmp(bufA,
"copy it"),
"got %s\n", bufA);
846 retA = p_strftime(bufA, 2,
"copy", gmt_tm);
847 ok(retA == 0,
"expected 0, got %ld\n", retA);
852 retA = p_strftime(bufA, 256,
"a%e", gmt_tm);
853 ok(retA==0 ||
broken(retA==1),
"expected 0, got %ld\n", retA);
859 retA = p_strftime(bufA, 256,
"%c",
NULL);
860 ok(retA == 0,
"expected 0, got %ld\n", retA);
861 ok(!
strcmp(bufA,
""),
"got %s\n", bufA);
875 retA = p_strftime(bufA, 256,
"%c", gmt_tm);
876 retW = p_wcsftime(bufW, 256,
L"%c", gmt_tm);
877 ok(retW == 17,
"expected 17, got %ld\n", retW);
878 ok(retA == retW,
"expected %ld, got %ld\n", retA, retW);
885 win_skip(
"Japanese_Japan.932 locale not available\n");
890 retA = p_strftime(bufA, 256,
"\x82%c", gmt_tm);
891 ok(retA == 3,
"expected 3, got %ld\n", retA);
892 ok(!
strcmp(bufA,
"\x82%c"),
"got %s\n", bufA);
896 win_skip(
"_Strftime is not available\n");
905 time_data.
date = tests_td[
i].date;
906 time_data.
time = tests_td[
i].time;
907 retA = p__Strftime(
buf,
sizeof(
buf), tests_td[
i].
format, &tests_td[
i].
tm, &time_data);
910 ok(!
strcmp(
buf, tests_td[
i].
ret),
"%d) buf = \"%s\", expected \"%s\"\n",
924 win_skip(
"asctime or gmtime is not available\n");
931 ok(!
strcmp(
ret,
"Thu Jan 01 00:00:00 1970\n"),
"asctime returned %s\n",
ret);
936 ok(!
strcmp(
ret,
"Mon Nov 26 02:58:41 1979\n"),
"asctime returned %s\n",
ret);
941 ok(!
strcmp(
ret,
"Wed Nov 26 02:58:41 1979\n"),
"asctime returned %s\n",
ret);
953 ok(!
strcmp(
ret,
"Wed Nov 26 02:58:41 1979\n"),
"asctime returned %s\n",
ret);
959 ok(!
strcmp(
ret,
"Wed Nov 28 02:58:41 :000\n"),
"asctime returned %s\n",
ret);
963 ok(!
strcmp(
ret,
"Wed Nov 28 02:58:41 :000\n"),
"asctime returned %s\n",
ret);
986 if (
sizeof(
void*) !=
sizeof(
int))
996 ok(
ret == -3600,
"*__dstbias() = %d\n",
ret);
998 ok(
ret == -3600,
"*__p__dstbias() = %d\n",
ret);
1001 win_skip(
"__dstbias() is not available.\n");
1006 ok(
ret == 1,
"*__p__daylight() = %d\n",
ret);
1008 ok(
ret == 28800,
"*__p__timezone() = %d\n",
ret);
1010 ok(
ret == -3600,
"*__p__dstbias() = %d\n",
ret);
1015 ok(
ret == 121,
"*__p__daylight() = %d\n",
ret);
1017 ok(
ret == 3600,
"*__p__timezone() = %d\n",
ret);
1019 ok(
ret == -3600,
"*__p__dstbias() = %d\n",
ret);
1025 ok(
ret == 122,
"*__p__daylight() = %d\n",
ret);
1027 ok(
ret == 3785,
"*__p__timezone() = %d\n",
ret);
1029 ok(
ret == 0,
"*__p__dstbias() = %d\n",
ret);
int strcmp(const char *String1, const char *String2)
ACPI_SIZE strlen(const char *String)
#define GetProcAddress(x, y)
#define WideCharToMultiByte
static DOUBLE local_time(DOUBLE time, DateInstance *date)
static DOUBLE day(DOUBLE time)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
DWORD WINAPI GetTimeZoneInformation(LPTIME_ZONE_INFORMATION lpTimeZoneInformation)
static const WCHAR month[12][4]
GLuint GLuint GLsizei count
GLenum GLuint GLenum GLsizei const GLchar * buf
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
_Check_return_ _CRTIMP int __cdecl swscanf(_In_z_ const wchar_t *_Src, _In_z_ _Scanf_format_string_ const wchar_t *_Format,...)
_Check_return_ _CRTIMP int __cdecl sscanf(_In_z_ const char *_Src, _In_z_ _Scanf_format_string_ const char *_Format,...)
_Check_return_ _CRTIMP int __cdecl putenv(_In_z_ const char *_EnvString)
_Check_return_ _CRTIMP int __cdecl _putenv(_In_z_ const char *_EnvString)
_Check_return_ char *__cdecl getenv(_In_z_ const char *_VarName)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
static struct test_info tests[]
static PEXPLICIT_ACCESSW *static HMODULE hmod
#define todo_wine_if(is_todo)
static void test_daylight(void)
static void test_localtime32_s(void)
static __time32_t *static __time64_t *static int *__cdecl * p__daylight(void)
static void test_mktime(void)
static void test_strtime(void)
static void test_localtime(void)
static void test__tzset(void)
static void test_strdate(void)
static long *__cdecl * p___p__timezone(void)
static void test_localtime64_s(void)
static void test_gmtime64(void)
static __time32_t *static struct tm *__cdecl * p_gmtime64(__time64_t *)
static void test_gmtime(void)
static long *__cdecl * p___p__dstbias(void)
static __time64_t *static size_t
static struct tm *__cdecl * p_gmtime(time_t *)
static void test_strftime(void)
static long *__cdecl * p__dstbias(void)
static void test_ctime(void)
static const char const struct tm *static const char const struct tm void *static const wchar_t const struct tm *static char *__cdecl * p_asctime(const struct tm *)
static int *__cdecl * p___p__daylight(void)
static void test_wstrdate(void)
static int get_test_year(time_t *start)
static void test_wstrtime(void)
static void test_asctime(void)
static struct tm *__cdecl * p_gmtime32(__time32_t *)
_CRTIMP time_t __cdecl mktime(struct tm *_Tm)
_CRTIMP void __cdecl _tzset(void)
_CRTIMP struct tm *__cdecl localtime(const time_t *_Time)
#define TIME_ZONE_ID_INVALID