2008-06-27 Ulrich Drepper [BZ #6657] * time/strptime_l.c: Don't clear s.era_cnt after successful match of %EY. Patch by Petr Baudis. localedata/ 2008-06-27 Ulrich Drepper * tst-strptime.c (do_test): Add test of %EY. 2008-06-25 Ulrich Drepper * tst-strptime.c (do_test): Add test for parsing era year representation. --- libc/time/strptime_l.c 28 Jul 2007 19:10:08 -0000 1.12 +++ libc/time/strptime_l.c 27 Jun 2008 21:36:13 -0000 1.13 @@ -951,7 +942,6 @@ __strptime_internal (rp, fmt, tmp, state else { s.decided = loc; - s.era_cnt = -1; break; } --- libc/localedata/tst-strptime.c 1 Aug 2007 03:42:25 -0000 1.2 +++ libc/localedata/tst-strptime.c 27 Jun 2008 17:21:24 -0000 1.5 @@ -1,22 +1,53 @@ #include #include #include +#include static int do_test (void) { + int result = 0; + if (setlocale (LC_ALL, "vi_VN.TCVN5712-1") == NULL) { puts ("cannot set locale"); return 1; } struct tm tm; + memset (&tm, '\0', sizeof (tm)); /* This is November in Vietnamese encoded using TCVN5712-1. */ static const char s[] = "\ -\x54\x68\xb8\x6e\x67\x20\x6d\xad\xea\x69\x20\x6d\xe9\x74"; +\x54\x68\xb8\x6e\x67\x20\x6d\xad\xea\x69\x20\x6d\xe9\x74\0"; char *r = strptime (s, "%b", &tm); printf ("r = %p, r-s = %tu, tm.tm_mon = %d\n", r, r - s, tm.tm_mon); - return r == NULL || r - s != 14 || tm.tm_mon != 10; + result = r == NULL || r - s != 14 || tm.tm_mon != 10; + + if (setlocale (LC_ALL, "ja_JP.UTF-8") == NULL) + { + puts ("cannot set locale"); + return 1; + } + static const char s2[] = "\ +\x32\x35\x20\x30\x36\x20\xe5\xb9\xb3\xe6\x88\x90\x32\x30\0"; + memset (&tm, '\0', sizeof (tm)); + r = strptime (s2, "%d %m %EC%Ey", &tm); + printf ("\ +r = %p, r-s2 = %tu, tm.tm_mday = %d, tm.tm_mon = %d, tm.tm_year = %d\n", + r, r - s2, tm.tm_mday, tm.tm_mon, tm.tm_year); + result |= (r == NULL || r - s2 != 14 || tm.tm_mday != 25 || tm.tm_mon != 5 + || tm.tm_year != 108); + + static const char s3[] = "\ +\x32\x35\x20\x30\x36\x20\xe5\xb9\xb3\xe6\x88\x90\x32\x30\xe5\xb9\xb4\0"; + memset (&tm, '\0', sizeof (tm)); + r = strptime (s3, "%d %m %EY", &tm); + printf ("\ +r = %p, r-s3 = %tu, tm.tm_mday = %d, tm.tm_mon = %d, tm.tm_year = %d\n", + r, r - s3, tm.tm_mday, tm.tm_mon, tm.tm_year); + result |= (r == NULL || r - s3 != 17 || tm.tm_mday != 25 || tm.tm_mon != 5 + || tm.tm_year != 108); + + return result; } #define TEST_FUNCTION do_test ()