Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F111116443
D30547.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D30547.diff
View Options
diff --git a/bin/ls/extern.h b/bin/ls/extern.h
--- a/bin/ls/extern.h
+++ b/bin/ls/extern.h
@@ -66,6 +66,7 @@
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
--- a/bin/ls/ls.1
+++ b/bin/ls/ls.1
@@ -740,6 +740,7 @@
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 @@
.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
--- a/bin/ls/ls.c
+++ b/bin/ls/ls.c
@@ -159,6 +159,7 @@
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 @@
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
--- a/bin/ls/print.c
+++ b/bin/ls/print.c
@@ -106,7 +106,8 @@
/* colors for file types */
static struct {
int num[2];
- int bold;
+ bool bold;
+ bool underline;
} colors[C_NUMCOLORS];
#endif
@@ -548,6 +549,8 @@
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 @@
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)
@@ -666,7 +671,8 @@
cs = ""; /* LSCOLORS not set */
len = strlen(cs);
for (i = 0; i < (int)C_NUMCOLORS; i++) {
- colors[i].bold = 0;
+ colors[i].bold = false;
+ colors[i].underline = false;
if (len <= 2 * (size_t)i) {
c[0] = defcolors[2 * i];
@@ -689,10 +695,15 @@
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 == 1)
+ colors[i].underline = true;
+ else
+ colors[i].bold = true;
+ } else if (tolower((unsigned char)c[j]) == 'x') {
+ if (j == 1 && c[j] == 'X')
+ colors[i].underline = true;
colors[i].num[j] = -1;
- else {
+ } else {
warnx("invalid character '%c' in LSCOLORS"
" env var", c[j]);
colors[i].num[j] = -1;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Feb 28, 3:57 PM (18 h, 14 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16887317
Default Alt Text
D30547.diff (3 KB)
Attached To
Mode
D30547: ls(1): Allow LSCOLORS to specify an underline
Attached
Detach File
Event Timeline
Log In to Comment