ls(1): New long format for named locales
authorJohn Marino <draco@marino.st>
Sun, 22 Nov 2015 19:45:10 +0000 (20:45 +0100)
committerJohn Marino <draco@marino.st>
Sun, 22 Nov 2015 19:45:10 +0000 (20:45 +0100)
The use of the basic version of ISO 8601 was not very popular.  After
a discussion on IRC, the Long Format of named locales is the following:

  DD-MMM-YYYY hh:mm

  DD is day number with leading zeros
 MMM is abbreviated month *in english* (regardless of locale)
YYYY is 4-digit year
  hh is 24-hour with leading zeros
  ss is seconds with leading zeros

bin/ls/ls.1
bin/ls/print.c

index e0d34e2..c635641 100644 (file)
@@ -327,8 +327,8 @@ is displayed for each file:
 file mode,
 number of links, owner name, group name,
 number of bytes in the file,
-last modified time in either per POSIX requirements or per
-ISO 8601 basic format reduced to hour accuracy, and the pathname.
+last modified time in either per POSIX requirements or
+using the format DD-MMM-YYYY hh:ss, and the pathname.
 In addition, for each directory whose contents are displayed, the total
 number of 512-byte blocks used by the files in the directory is displayed
 on a line by itself immediately before the information for the files in the
index 17d1914..06211db 100644 (file)
@@ -383,11 +383,15 @@ printtime(time_t ftime)
                else
                        format = "%b %e %R ";
        } else {
-               /* Named locales use ISO 8601 (basic with T): YYYYDDMMThh */
-               format = "%Y%m%dT%H ";
+               /*
+                * Named locales use format DD-MMM-YYYY hh:mm
+                * Regardless of locale, English is used for month field
+                */
+               format = "%d-%b-%Y %H:%M ";
        }
 
-       strftime(longstring, sizeof(longstring), format, localtime(&ftime));
+       strftime_l(longstring, sizeof(longstring), format, localtime(&ftime),
+            NULL);
        fputs(longstring, stdout);
 }