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
This commit is contained in:
parent
e165a15b5f
commit
a408dc2018
@ -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 .
|
||||
|
13
bin/ls/ls.c
13
bin/ls/ls.c
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user