r22224: merge from samba4:
authorStefan Metzmacher <metze@samba.org>
Sun, 15 Apr 2007 20:57:48 +0000 (20:57 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:19:21 +0000 (12:19 -0500)
make comparing of struct tm more verbose and portable

metze

source/lib/replace/test/strptime.c

index 434b5d0933e9ad8023ff56d2ece031db68bfaf33..fade3ecc57567d73ea5dc37ad902384f990f4f70 100644 (file)
@@ -8,6 +8,10 @@
 #define true 1
 #define false 0
 
+#ifndef __STRING
+#define __STRING(x)    #x
+#endif
+
 /* make printf a no-op */
 #define printf if(0) printf
 
@@ -24,6 +28,9 @@ int libreplace_test_strptime(void)
        char *ret;
        struct tm t, t2;
 
+       memset(&t, 0, sizeof(t));
+       memset(&t2, 0, sizeof(t2));
+
        printf("test: strptime\n");
 
        ret = strptime(s, "%Y%m%d%H%M%S", &t);
@@ -56,13 +63,26 @@ int libreplace_test_strptime(void)
                return false;
        }
 
-       if (memcmp(&t, &t2, sizeof(t)) == 0) {
-               printf("failure: strptime [\n"
-                      "result differs if the format string has a 'Z' at the end\n"
-                      "]\n");
-               return false;
+#define CMP_TM_ELEMENT(t1,t2,elem) \
+       if (t1.elem != t2.elem) { \
+               printf("failure: strptime [\n" \
+                      "result differs if the format string has a 'Z' at the end\n" \
+                      "element: %s %d != %d\n" \
+                      "]\n", \
+                      __STRING(elen), t1.elem, t2.elem); \
+               return false; \
        }
 
+       CMP_TM_ELEMENT(t,t2,tm_sec);
+       CMP_TM_ELEMENT(t,t2,tm_min);
+       CMP_TM_ELEMENT(t,t2,tm_hour);
+       CMP_TM_ELEMENT(t,t2,tm_mday);
+       CMP_TM_ELEMENT(t,t2,tm_mon);
+       CMP_TM_ELEMENT(t,t2,tm_year);
+       CMP_TM_ELEMENT(t,t2,tm_wday);
+       CMP_TM_ELEMENT(t,t2,tm_yday);
+       CMP_TM_ELEMENT(t,t2,tm_isdst);
+
        if (t.tm_sec != 46) {
                printf("failure: strptime [\n"
                       "tm_sec: expected: 46, got: %d\n"