]> granicus.if.org Git - strace/commitdiff
Make date output format conform to ISO 8601
authorElvira Khabirova <lineprinter0@gmail.com>
Sat, 13 Aug 2016 17:27:38 +0000 (20:27 +0300)
committerDmitry V. Levin <ldv@altlinux.org>
Tue, 29 Nov 2016 10:05:16 +0000 (10:05 +0000)
* util.c (sprinttime): Make date output conform to ISO 8601.
* tests/utime.c (print_tm): Update expected output.
* tests/xstatx.c (print_time): Likewise.

tests/utime.c
tests/xstatx.c
util.c

index fdb48a7056d017a99e07298fd7e2c7abc0bde3eb..b81256c8e0b25dd4b33178d3067ce9fb7fcd7c15 100644 (file)
 static void
 print_tm(const struct tm * const p)
 {
-       printf("%02d/%02d/%02d-%02d:%02d:%02d",
-              p->tm_year + 1900, p->tm_mon + 1, p->tm_mday,
-              p->tm_hour, p->tm_min, p->tm_sec);
+       char buf[256];
+
+       strftime(buf, sizeof(buf), "%FT%T%z", p);
+
+       printf("%s", buf);
 }
 
 static long
index 12da191cfb8740d77e360a66b788deb6c9ad98e9..64204647024fe22e10850f243b9593c8182419ad 100644 (file)
@@ -57,12 +57,15 @@ print_time(const time_t t)
 
        struct tm *p = localtime(&t);
 
-       if (p)
-               printf("%02d/%02d/%02d-%02d:%02d:%02d",
-                      p->tm_year + 1900, p->tm_mon + 1, p->tm_mday,
-                      p->tm_hour, p->tm_min, p->tm_sec);
-       else
+       if (p) {
+               char buf[256];
+
+               strftime(buf, sizeof(buf), "%FT%T%z", p);
+
+               printf("%s", buf);
+       } else {
                printf("%llu", zero_extend_signed_to_ull(t));
+       }
 }
 
 # ifndef STRUCT_STAT
diff --git a/util.c b/util.c
index 3fa3de31ceecd89b46eaeeeca04ab89160b3e176..a3c505d67b8eaf9912a84c70dcb83a41f223fc2c 100644 (file)
--- a/util.c
+++ b/util.c
@@ -524,7 +524,7 @@ const char *
 sprinttime(time_t t)
 {
        struct tm *tmp;
-       static char buf[sizeof(int) * 3 * 6];
+       static char buf[sizeof(int) * 3 * 6 + sizeof("+0000")];
 
        if (t == 0) {
                strcpy(buf, "0");
@@ -532,11 +532,9 @@ sprinttime(time_t t)
        }
        tmp = localtime(&t);
        if (tmp)
-               snprintf(buf, sizeof buf, "%02d/%02d/%02d-%02d:%02d:%02d",
-                       tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
-                       tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
+               strftime(buf, sizeof(buf), "%FT%T%z", tmp);
        else
-               snprintf(buf, sizeof buf, "%lu", (unsigned long) t);
+               snprintf(buf, sizeof(buf), "%lu", (unsigned long) t);
 
        return buf;
 }