about summary refs log tree commit diff
path: root/time/tst-strptime3.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2007-07-12 18:26:36 +0000
committerJakub Jelinek <jakub@redhat.com>2007-07-12 18:26:36 +0000
commit0ecb606cb6cf65de1d9fc8a919bceb4be476c602 (patch)
tree2ea1f8305970753e4a657acb2ccc15ca3eec8e2c /time/tst-strptime3.c
parent7d58530341304d403a6626d7f7a1913165fe2f32 (diff)
downloadglibc-0ecb606cb6cf65de1d9fc8a919bceb4be476c602.tar.gz
glibc-0ecb606cb6cf65de1d9fc8a919bceb4be476c602.tar.xz
glibc-0ecb606cb6cf65de1d9fc8a919bceb4be476c602.zip
2.5-18.1
Diffstat (limited to 'time/tst-strptime3.c')
-rw-r--r--time/tst-strptime3.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/time/tst-strptime3.c b/time/tst-strptime3.c
new file mode 100644
index 0000000000..9a8c6485e7
--- /dev/null
+++ b/time/tst-strptime3.c
@@ -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;
+}