git: ls(1): Alter time portion of "long format"

John Marino marino at crater.dragonflybsd.org
Fri Nov 20 05:36:30 PST 2015


commit 0b35d94f4cab7ac814260ce14ceb39c47e7f958b
Author: John Marino <draco at marino.st>
Date:   Fri Nov 20 13:49:26 2015 +0100

    ls(1): Alter time portion of "long format"
    
    One side effect of moving to the CLDR standard for locale definitions
    is that abreviated months are no longer guaranteed to align.  We altered
    the definitions for CJK to ensure this, but we do not want to manually
    adjust every locale.
    
    The most obvious manifestation is seen with ls(1) using the long format
    (-l option).  Not only is the month abbreviation no longer guaranteed to
    be 3 characters wide, it's not even guaranteed to be a uniform width.  As
    a result, the file listing may no longer line up, as seen with French:
    
      ironwolf# env LANG=fr_FR.UTF-8 ls -l | head
      drwxr-xr-x  2 root  wheel   512 26 mars  2015 ariadne
      drwxr-xr-x  2 root  wheel   512 26 mars  2015 artemis
      drwxr-xr-x  3 root  wheel   512  9 sept. 19:45 avida
      drwxr-xr-x  3 root  wheel   512  9 sept. 19:45 babel
      drwxr-xr-x  3 root  wheel   512 15 juin 20:38 bcftools
      drwxr-xr-x  2 root  wheel   512 20 sept. 11:27 biococoa
      drwxr-xr-x  2 root  wheel   512 26 mars  2015 biojava
      drwxr-xr-x  3 root  wheel   512 26 mars  2015 blat
      drwxr-xr-x  3 root  wheel   512  7 nov. 08:44 bwa
    
      ironwolf# env LANG=fr_FR.UTF-8 ls -lT | head
      drwxr-xr-x  2 root  wheel   512 26 mars 10:15:28 2015 ariadne
      drwxr-xr-x  2 root  wheel   512 26 mars 10:15:28 2015 artemis
      drwxr-xr-x  3 root  wheel   512  9 sept. 19:45:04 2015 avida
      drwxr-xr-x  3 root  wheel   512  9 sept. 19:45:04 2015 babel
      drwxr-xr-x  3 root  wheel   512 15 juin 20:38:55 2015 bcftools
      drwxr-xr-x  2 root  wheel   512 20 sept. 11:27:40 2015 biococoa
      drwxr-xr-x  2 root  wheel   512 26 mars 10:15:28 2015 biojava
      drwxr-xr-x  3 root  wheel   512 26 mars 10:15:28 2015 blat
      drwxr-xr-x  3 root  wheel   512  7 nov. 08:44:24 2015 bwa
    
    To address both issues (misalignment and differing widths as a function
    of locale), I've modified ls(1) to use valid forms of ISO 8601, an
    international standard for the representation of time.
    
    The default long format produces the last modified timestamp in the form
    of YYYYMMDDTHH (Year|Month|Day|T|Hour with no spaces).  This is known as
    the "basic" format which includes the optional "T" concatenator.  The
    result is the time is represented by a single column using 1-3 characters
    less than before.
    
      ironwolf# env LANG=fr_FR.UTF-8 ls -l | head
      drwxr-xr-x  2 root  wheel   512 20150326T10 ariadne
      drwxr-xr-x  2 root  wheel   512 20150326T10 artemis
      drwxr-xr-x  3 root  wheel   512 20150909T19 avida
      drwxr-xr-x  3 root  wheel   512 20150909T19 babel
      drwxr-xr-x  3 root  wheel   512 20150615T20 bcftools
      drwxr-xr-x  2 root  wheel   512 20150920T11 biococoa
      drwxr-xr-x  2 root  wheel   512 20150326T10 biojava
      drwxr-xr-x  3 root  wheel   512 20150326T10 blat
      drwxr-xr-x  3 root  wheel   512 20151107T08 bwa
    
    The -T option uses the extended format of ISO 8601 without the T symbol,
    but with the minutes and seconds representation.  The result is two
    characters wider than the approach FreeBSD is taking to address the same
    issue (FreeBSD is padding the month section and expanding the field by
    two characters to accommodate 5-character wide month names).  The output
    on DragonFly looks like this:
    
      ironwolf# env LANG=fr_FR.UTF-8 ls -lT | head
      drwxr-xr-x  2 root  wheel   512 2015-03-26 10:15:28 ariadne
      drwxr-xr-x  2 root  wheel   512 2015-03-26 10:15:28 artemis
      drwxr-xr-x  3 root  wheel   512 2015-09-09 19:45:04 avida
      drwxr-xr-x  3 root  wheel   512 2015-09-09 19:45:04 babel
      drwxr-xr-x  3 root  wheel   512 2015-06-15 20:38:55 bcftools
      drwxr-xr-x  2 root  wheel   512 2015-09-20 11:27:40 biococoa
      drwxr-xr-x  2 root  wheel   512 2015-03-26 10:15:28 biojava
      drwxr-xr-x  3 root  wheel   512 2015-03-26 10:15:28 blat
      drwxr-xr-x  3 root  wheel   512 2015-11-07 08:44:24 bwa
    
    The long format no longer changes if the last modified time is within six
    months (future or past), thus file times are more quickly comparable with
    a quick visual scan versus switching between year and hours:seconds.
    
    Reported by:	bapt at FreeBSD.org

Summary of changes:
 bin/ls/ls.1    | 16 ++++++----------
 bin/ls/print.c | 16 ++++------------
 2 files changed, 10 insertions(+), 22 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/0b35d94f4cab7ac814260ce14ceb39c47e7f958b


-- 
DragonFly BSD source repository


More information about the Commits mailing list