-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
2007-02-08 Jakub Jelinek <jakub@redhat.com> [BZ #3944] * time/strptime_l.c (__strptime_internal): Set have_mon for %b/%B/%h. Set have_mon and have_mday if tm_mon and tm_mday have been computed from tm_yday and tm_year. Don't crash in day_of_the_week or day_of_the_year if not have_mon and tm_mon contains bogus value. * time/Makefile (tests): Add tst-strptime3. * time/tst-strptime3.c: New test.
- Loading branch information
Ulrich Drepper
committed
Feb 9, 2007
1 parent
784aace
commit 00458b5
Showing
4 changed files
with
77 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
#include <stdio.h> | ||
#include <stdlib.h> | ||
#include <string.h> | ||
#include <time.h> | ||
|
||
|
||
int | ||
main (void) | ||
{ | ||
int result = 0; | ||
struct tm tm; | ||
|
||
memset (&tm, 0xaa, sizeof (tm)); | ||
|
||
/* Test we don't crash on uninitialized struct tm. | ||
Some fields might contain bogus values until everything | ||
needed is initialized, but we shouldn't crash. */ | ||
if (strptime ("2007", "%Y", &tm) == NULL | ||
|| strptime ("12", "%d", &tm) == NULL | ||
|| strptime ("Feb", "%b", &tm) == NULL | ||
|| strptime ("13", "%M", &tm) == NULL | ||
|| strptime ("21", "%S", &tm) == NULL | ||
|| strptime ("16", "%H", &tm) == NULL) | ||
{ | ||
puts ("strptimes failed"); | ||
result = 1; | ||
} | ||
|
||
if (tm.tm_sec != 21 || tm.tm_min != 13 || tm.tm_hour != 16 | ||
|| tm.tm_mday != 12 || tm.tm_mon != 1 || tm.tm_year != 107 | ||
|| tm.tm_wday != 1 || tm.tm_yday != 42) | ||
{ | ||
puts ("unexpected tm content"); | ||
result = 1; | ||
} | ||
|
||
if (strptime ("8", "%d", &tm) == NULL) | ||
{ | ||
puts ("strptime failed"); | ||
result = 1; | ||
} | ||
|
||
if (tm.tm_sec != 21 || tm.tm_min != 13 || tm.tm_hour != 16 | ||
|| tm.tm_mday != 8 || tm.tm_mon != 1 || tm.tm_year != 107 | ||
|| tm.tm_wday != 4 || tm.tm_yday != 38) | ||
{ | ||
puts ("unexpected tm content"); | ||
result = 1; | ||
} | ||
|
||
if (result == 0) | ||
puts ("all OK"); | ||
|
||
return 0; | ||
} |