dircolors takes a new --print-ls-colors option to display LS_COLORS
entries, on separate lines, colored according to the entry color code.
+ dircolors will now also match COLORTERM in addition to TERM environment
+ variables. The default config will apply colors with any COLORTERM set.
+
** Improvements
cp, mv, and install now use openat-like syscalls when copying to a directory.
size_t input_line_size = 0;
char const *line;
char const *term;
+ char const *colorterm;
bool ok = true;
/* State for the parser. */
if (term == NULL || *term == '\0')
term = "none";
+ /* Also match $COLORTERM. */
+ colorterm = getenv ("COLORTERM");
+ if (colorterm == NULL)
+ colorterm = ""; /* Doesn't match default "?*" */
+
while (true)
{
char *keywd, *arg;
else if (state != ST_TERMSURE)
state = ST_TERMNO;
}
+ else if (c_strcasecmp (keywd, "COLORTERM") == 0)
+ {
+ if (fnmatch (arg, colorterm, 0) == 0)
+ state = ST_TERMSURE;
+ else if (state != ST_TERMSURE)
+ state = ST_TERMNO;
+ }
else
{
if (state == ST_TERMSURE)
- state = ST_TERMYES; /* Another TERM can cancel */
+ state = ST_TERMYES; /* Another {COLOR,}TERM can cancel. */
if (state != ST_TERMNO)
{
# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
# slackware version of dircolors) are recognized but ignored.
-# Below are TERM entries, which can be a glob patterns, to match
-# against the TERM environment variable to determine if it is colorable.
+# Global config options can be specified before TERM or COLORTERM entries
+
+# Below are TERM or COLORTERM entries, which can be glob patterns, which
+# restrict following config to systems with matching environment variables.
+COLORTERM ?*
TERM Eterm
TERM ansi
TERM *color*
.opus 00;36
.spx 00;36
.xspf 00;36
+
+# Subsequent TERM or COLORTERM entries, can be used to add / override
+# config specific to those matching environment variables.
['term-4', '-b', {IN => "TERM N*match\nowt 40;33\n"},
{OUT => "LS_COLORS='';\nexport LS_COLORS\n"}],
+ ['colorterm-1', '-b', {ENV => 'COLORTERM=any'},
+ {IN => "COLORTERM ?*\nowt 40;33\n"},
+ {OUT => "LS_COLORS='tw=40;33:';\nexport LS_COLORS\n"}],
+
+ ['colorterm-2', '-b', {ENV => 'COLORTERM='},
+ {IN => "COLORTERM ?*\nowt 40;33\n"},
+ {OUT => "LS_COLORS='';\nexport LS_COLORS\n"}],
+
['print-clash1', '-p', '--print-ls',
{ERR => "dircolors: options --print-database and --print-ls-colors " .
"are mutually exclusive\n" .