Author: kevans
Date: Thu May 21 14:39:00 2020
New Revision: 361331
URL: https://svnweb.freebsd.org/changeset/base/361331

Log:
  ls(1): actually restore proper behavior
  
  Highlights:
  - CLICOLOR in the environment should imply --color=auto to maintain
    compatibility with historical behavior
  - -G should set CLICOLOR and imply --color=auto
  
  The manpage has been updated to draw the connection between -G and --color;
  the former is in-fact a sort of compromise between --color=always and
  --color=auto, where we'll output color regardless of the environment lacking
  CLICOLOR/COLORTERM assuming stdout is a tty.
  
  X-MFC-With: r361318

Modified:
  head/bin/ls/ls.1
  head/bin/ls/ls.c

Modified: head/bin/ls/ls.1
==============================================================================
--- head/bin/ls/ls.1    Thu May 21 13:46:30 2020        (r361330)
+++ head/bin/ls/ls.1    Thu May 21 14:39:00 2020        (r361331)
@@ -32,7 +32,7 @@
 .\"     @(#)ls.1       8.7 (Berkeley) 7/29/94
 .\" $FreeBSD$
 .\"
-.Dd May 20, 2020
+.Dd May 21, 2020
 .Dt LS 1
 .Os
 .Sh NAME
@@ -135,7 +135,8 @@ This option is equivalent to defining
 .Ev CLICOLOR
 or
 .Ev COLORTERM
-in the environment.
+in the environment and setting
+.Fl -color Ns = Ns Ar auto .
 (See below.)
 This functionality can be compiled out by removing the definition of
 .Ev COLORLS .

Modified: head/bin/ls/ls.c
==============================================================================
--- head/bin/ls/ls.c    Thu May 21 13:46:30 2020        (r361330)
+++ head/bin/ls/ls.c    Thu May 21 14:39:00 2020        (r361331)
@@ -265,6 +265,13 @@ main(int argc, char *argv[])
        fts_options = FTS_PHYSICAL;
        if (getenv("LS_SAMESORT"))
                f_samesort = 1;
+
+       /*
+        * For historical compatibility, we'll use our autodetection if CLICOLOR
+        * is set.
+        */
+       if (getenv("CLICOLOR"))
+               colorflag = COLORFLAG_AUTO;
        while ((ch = getopt_long(argc, argv,
            "+1ABCD:FGHILPRSTUWXZabcdfghiklmnopqrstuwxy,", long_opts,
            NULL)) != -1) {
@@ -342,7 +349,13 @@ main(int argc, char *argv[])
                        f_slash = 0;
                        break;
                case 'G':
+                       /*
+                        * We both set CLICOLOR here and set colorflag to
+                        * COLORFLAG_AUTO, because -G should not force color if
+                        * stdout isn't a tty.
+                        */
                        setenv("CLICOLOR", "", 1);
+                       colorflag = COLORFLAG_AUTO;
                        break;
                case 'H':
                        fts_options |= FTS_COMFOLLOW;
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to