]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
Fix up workarounds for dietlibc breakage
authorTheodore Ts'o <tytso@mit.edu>
Thu, 9 Jan 2014 03:25:04 +0000 (22:25 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 9 Jan 2014 17:22:03 +0000 (12:22 -0500)
The dietlibc doesn't support the TZ environment variable, which is
required by the standard.  Work around this so that we can run the
regression test suite when building with dietlibc.  (This is useful
for finding problems.)

With this change, the only thing which doesn't work as far as dietlibc
is concerned is the posix_memalign test, and the MMP support tests
(because posix_memalign isn't provided by dietlibc, sigh.)

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
debugfs/util.c
e2fsck/message.c
tests/d_special_files/script
tests/f_dup4/script
tests/f_dup_resize/script

index 21991cf94284ae14c98f735b61b5478b36b7976c..cf46cc3110bbfc8d2b63a21e5ff4015dacf830ff 100644 (file)
@@ -201,7 +201,7 @@ char *time_to_string(__u32 cl)
                tz = ss_safe_getenv("TZ");
                if (!tz)
                        tz = "";
-               do_gmt = !strcmp(tz, "GMT");
+               do_gmt = !strcmp(tz, "GMT") | !strcmp(tz, "GMT0");
        }
 
        return asctime((do_gmt) ? gmtime(&t) : localtime(&t));
@@ -222,14 +222,18 @@ time_t string_to_time(const char *arg)
        }
        if (arg[0] == '@') {
                /* interpret it as an integer */
-               ret = strtoul(arg+1, &tmp, 0);
+               arg++;
+       fallback:
+               ret = strtoul(arg, &tmp, 0);
                if (*tmp)
                        return ((time_t) -1);
                return ret;
        }
        memset(&ts, 0, sizeof(ts));
 #ifdef HAVE_STRPTIME
-       strptime(arg, "%Y%m%d%H%M%S", &ts);
+       ret = strptime(arg, "%Y%m%d%H%M%S", &ts);
+       if (ret == NULL)
+               goto fallback;
 #else
        sscanf(arg, "%4d%2d%2d%2d%2d%2d", &ts.tm_year, &ts.tm_mon,
               &ts.tm_mday, &ts.tm_hour, &ts.tm_min, &ts.tm_sec);
@@ -241,13 +245,9 @@ time_t string_to_time(const char *arg)
                ts.tm_mday = 0;
 #endif
        ts.tm_isdst = -1;
-       ret = mktime(&ts);
-       if (ts.tm_mday == 0 || ret == ((time_t) -1)) {
-               /* Try it as an integer... */
-               ret = strtoul(arg, &tmp, 0);
-               if (*tmp)
-                       return ((time_t) -1);
-       }
+       ret = ts.tm_sec + ts.tm_min*60 + ts.tm_hour*3600 + ts.tm_yday*86400 +
+               (ts.tm_year-70)*31536000 + ((ts.tm_year-69)/4)*86400 -
+               ((ts.tm_year-1)/100)*86400 + ((ts.tm_year+299)/400)*86400;
        return ret;
 }
 
index 7b2cb623f8ef71ba34a01c4d2ef3261f47272226..7b8435945f0a6eb12b0f7216a73ad8f8d606465e 100644 (file)
@@ -226,7 +226,8 @@ static void print_time(FILE *f, time_t t)
                        time_str = getenv("TZ");
                        if (!time_str)
                                time_str = "";
-                       do_gmt = !strcmp(time_str, "GMT0");
+                       do_gmt = !strcmp(time_str, "GMT") ||
+                               !strcmp(time_str, "GMT0");
                }
 #endif
                time_str = asctime((do_gmt > 0) ? gmtime(&t) : localtime(&t));
index 1a1999a003e4697954b4d16aae02def5f89f804c..9bdff5d005a435339f54f2155fd38d8978b06160 100644 (file)
@@ -18,7 +18,7 @@ status=$?
 echo Exit status is $status >> $OUT
 
 $DEBUGFS -w $TMPFILE << EOF > /dev/null 2>&1
-set_current_time 201301151400
+set_current_time 20130115140000
 set_super_value lastcheck 0
 set_super_value hash_seed null
 set_super_value mkfs_time 0
index 7c45bed99aaa58827d58de240cf4ecc7d07baa83..498f5259c388355bb56c800c64500b94626644ae 100644 (file)
@@ -8,7 +8,7 @@ echo "/ Murphy Magic.  The SeCrEt of the UnIvErSe is 43, NOT 42" > $TEST_DATA
 touch $TMPFILE
 $MKE2FS -N 32 -F -o Linux -b 1024 $TMPFILE 100 > /dev/null 2>&1 
 $DEBUGFS -w $TMPFILE << EOF > /dev/null 2>&1
-set_current_time 200704102100
+set_current_time 20070410210000
 set_super_value lastcheck 0
 set_super_value hash_seed null
 set_super_value mkfs_time 0
index 34ec4aea3af04156578855c99fe7f39495760950..659c92ee1d4daf6ef3924df2b85079876bfb5ee1 100644 (file)
@@ -11,8 +11,8 @@ $DEBUGFS -w $TMPFILE << EOF > /dev/null 2>&1
 freeb 4 4
 freeb 8195 4
 write $TEST_DATA debugfs
-set_current_time 200504110000
-set_inode_field debugfs mtime 200504110000
+set_current_time 20050411000000
+set_inode_field debugfs mtime 2005041100000000
 q
 EOF