From 85c2054fdbac56a5f60001d504190317b1729ee7 Mon Sep 17 00:00:00 2001 From: Cameron Katri Date: Sun, 30 May 2021 17:21:13 -0400 Subject: Initial --- ls-1-Allow-LSCOLORS-to-specify-an-underline.patch | 152 ++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 ls-1-Allow-LSCOLORS-to-specify-an-underline.patch (limited to 'ls-1-Allow-LSCOLORS-to-specify-an-underline.patch') diff --git a/ls-1-Allow-LSCOLORS-to-specify-an-underline.patch b/ls-1-Allow-LSCOLORS-to-specify-an-underline.patch new file mode 100644 index 0000000..095d6f3 --- /dev/null +++ b/ls-1-Allow-LSCOLORS-to-specify-an-underline.patch @@ -0,0 +1,152 @@ +From f873a0a04c981fbcc7879bcefe355fbbfd1a8adb Mon Sep 17 00:00:00 2001 +From: Cameron Katri +Date: Fri, 28 May 2021 17:56:48 -0400 +Subject: [PATCH] ls(1): Allow LSCOLORS to specify an underline + +Summary: Allows capitalizing the background color character to unable an underline instead of bold, capitalizing the foreground color char will still do bold. + +Differential Revision: https://reviews.freebsd.org/D30547 +--- + bin/ls/extern.h | 1 + + bin/ls/ls.1 | 19 +++++++++++-------- + bin/ls/ls.c | 2 ++ + bin/ls/print.c | 16 ++++++++++++++-- + 4 files changed, 28 insertions(+), 10 deletions(-) + +diff --git a/bin/ls/extern.h b/bin/ls/extern.h +index 8dab2bcc9d8..247c2c4a1d5 100644 +--- a/bin/ls/extern.h ++++ b/bin/ls/extern.h +@@ -66,6 +66,7 @@ extern char *ansi_bgcol; + extern char *ansi_coloff; + extern char *attrs_off; + extern char *enter_bold; ++extern char *enter_underline; + + extern int colorflag; + extern bool explicitansi; +diff --git a/bin/ls/ls.1 b/bin/ls/ls.1 +index 8510ca609cd..ef412dd2927 100644 +--- a/bin/ls/ls.1 ++++ b/bin/ls/ls.1 +@@ -740,6 +740,7 @@ where + is the foreground color and + .Ar b + is the background color. ++When the background color is capitalized, the text will underlined. + .Pp + The color designators are as follows: + .Pp +@@ -761,23 +762,25 @@ cyan + .It Sy h + light grey + .It Sy A +-bold black, usually shows up as dark grey ++bold or underlined black, usually shows up as dark grey + .It Sy B +-bold red ++bold or underlined red + .It Sy C +-bold green ++bold or underlined green + .It Sy D +-bold brown, usually shows up as yellow ++bold or underlined brown, usually shows up as yellow + .It Sy E +-bold blue ++bold or underlined blue + .It Sy F +-bold magenta ++bold or underlined magenta + .It Sy G +-bold cyan ++bold or underlined cyan + .It Sy H +-bold light grey; looks like bright white ++bold or underlined light grey; looks like bright white + .It Sy x + default foreground or background ++.It Sy X ++default foreground or background, with an underline or bold + .El + .Pp + Note that the above are standard +diff --git a/bin/ls/ls.c b/bin/ls/ls.c +index 338b3d1d2a2..67cb91fdcde 100644 +--- a/bin/ls/ls.c ++++ b/bin/ls/ls.c +@@ -161,6 +161,7 @@ char *ansi_fgcol; /* ANSI sequence to set foreground colour */ + char *ansi_coloff; /* ANSI sequence to reset colours */ + char *attrs_off; /* ANSI sequence to turn off attributes */ + char *enter_bold; /* ANSI sequence to set color to bold mode */ ++char *enter_underline; /* ANSI sequence to enter underline mode */ + #endif + + static int rval; +@@ -485,6 +486,7 @@ main(int argc, char *argv[]) + ansi_bgcol = tgetstr("AB", &bp); + attrs_off = tgetstr("me", &bp); + enter_bold = tgetstr("md", &bp); ++ enter_underline = tgetstr("us", &bp); + + /* To switch colours off use 'op' if + * available, otherwise use 'oc', or +diff --git a/bin/ls/print.c b/bin/ls/print.c +index 9a537418f7b..da92668d5c5 100644 +--- a/bin/ls/print.c ++++ b/bin/ls/print.c +@@ -107,6 +107,7 @@ static const char *defcolors = "exfxcxdxbxegedabagacad"; + static struct { + int num[2]; + int bold; ++ int underline; + } colors[C_NUMCOLORS]; + #endif + +@@ -548,6 +549,8 @@ printcolor_termcap(Colors c) + + if (colors[c].bold) + tputs(enter_bold, 1, putch); ++ if (colors[c].underline) ++ tputs(enter_underline, 1, putch); + + if (colors[c].num[0] != -1) { + ansiseq = tgoto(ansi_fgcol, 0, colors[c].num[0]); +@@ -569,6 +572,8 @@ printcolor_ansi(Colors c) + + if (colors[c].bold) + printf("1"); ++ if (colors[c].underline) ++ printf(";4"); + if (colors[c].num[0] != -1) + printf(";3%d", colors[c].num[0]); + if (colors[c].num[1] != -1) +@@ -667,6 +672,7 @@ parsecolors(const char *cs) + len = strlen(cs); + for (i = 0; i < (int)C_NUMCOLORS; i++) { + colors[i].bold = 0; ++ colors[i].underline = 0; + + if (len <= 2 * (size_t)i) { + c[0] = defcolors[2 * i]; +@@ -689,9 +695,15 @@ parsecolors(const char *cs) + colors[i].num[j] = c[j] - 'a'; + else if (c[j] >= 'A' && c[j] <= 'H') { + colors[i].num[j] = c[j] - 'A'; +- colors[i].bold = 1; +- } else if (tolower((unsigned char)c[j]) == 'x') ++ if (j) ++ colors[i].underline = 1; ++ else ++ colors[i].bold = 1; ++ } else if (tolower((unsigned char)c[j]) == 'x') { ++ if (j && c[j] == 'X') ++ colors[i].underline = 1; + colors[i].num[j] = -1; ++ } + else { + warnx("invalid character '%c' in LSCOLORS" + " env var", c[j]); +-- +2.31.1 + -- cgit v1.2.3-56-ge451