Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 21 May 2020 14:39:00 +0000 (UTC)
From:      Kyle Evans <kevans@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r361331 - head/bin/ls
Message-ID:  <202005211439.04LEd0G0038264@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202005211439.04LEd0G0038264>