svn commit: r361331 - head/bin/ls
Kyle Evans
kevans at FreeBSD.org
Thu May 21 14:39:01 UTC 2020
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;
More information about the svn-src-all
mailing list