summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Dudka <kdudka@redhat.com>2009-03-24 12:16:20 +0100
committerPádraig Brady <P@draigBrady.com>2009-03-24 16:11:00 +0000
commit2827bb5704a153a0b4ac9c4af8b83ed015012f68 (patch)
treee22a1019643c9de53f2e20af99edc07ee1d47ebb
parentd1df6ef183a651c82b719c3eef6f81b899109a7e (diff)
downloadcoreutils-2827bb5704a153a0b4ac9c4af8b83ed015012f68.tar.xz
ls: make it possible to disable coloring of hard links
* src/ls.c (print_color_indicator): Don't color hard links if disabled (when there is an empty hl= in the LS_COLORS environment variable). * tests/ls/hardlink: Add test case for disabled hard link highlighting. * NEWS: Mention the change.
-rw-r--r--NEWS4
-rw-r--r--src/ls.c2
-rwxr-xr-xtests/ls/hardlink22
3 files changed, 24 insertions, 4 deletions
diff --git a/NEWS b/NEWS
index 766f2716b..bb7999426 100644
--- a/NEWS
+++ b/NEWS
@@ -38,6 +38,10 @@ GNU coreutils NEWS -*- outline -*-
cp -a now tries to preserve extended attributes (xattr), but does not
diagnose xattr-preservation failure. However, cp --preserve=all still does.
+ ls --color: hard link highlighting can be now disabled by changing the
+ LS_COLORS environment variable. To disable it you can add something like
+ this to your profile: eval `dircolors | sed s/hl=[^:]*:/hl=:/`
+
* Noteworthy changes in release 7.1 (2009-02-21) [stable]
diff --git a/src/ls.c b/src/ls.c
index fa6a59a9d..d30e5a087 100644
--- a/src/ls.c
+++ b/src/ls.c
@@ -4008,7 +4008,7 @@ print_color_indicator (const char *name, mode_t mode, int linkok,
type = C_CAP;
else if ((mode & S_IXUGO) != 0)
type = C_EXEC;
- else if (1 < nlink)
+ else if (is_colored (C_HARDLINK) && (1 < nlink))
type = C_HARDLINK;
}
else if (S_ISDIR (mode))
diff --git a/tests/ls/hardlink b/tests/ls/hardlink
index d65bb7a95..b12091466 100755
--- a/tests/ls/hardlink
+++ b/tests/ls/hardlink
@@ -26,19 +26,35 @@ working_umask_or_skip_
touch file file1 || framework_failure
ln file1 file2 || skip_test_ "can't create hard link"
-code='44;37'
+code_hl='44;37'
+code_png='01;35'
fail=0
# regular file - not hard linked
-LS_COLORS="hl=$code" ls -U1 --color=always file > out || fail=1
+LS_COLORS="hl=$code_hl" ls -U1 --color=always file > out || fail=1
printf "file\n" > out_ok || fail=1
compare out out_ok || fail=1
# hard links
-LS_COLORS="hl=$code" ls -U1 --color=always file1 file2 > out || fail=1
+LS_COLORS="hl=$code_hl" ls -U1 --color=always file1 file2 > out || fail=1
printf "\033[0m\033[44;37mfile1\033[0m
\033[44;37mfile2\033[0m
\033[m" > out_ok || fail=1
compare out out_ok || fail=1
+# hard links and png
+mv file2 file2.png || framework_failure
+LS_COLORS="hl=$code_hl:*.png=$code_png" ls -U1 --color=always file1 file2.png > out || fail=1
+printf "\033[0m\033[44;37mfile1\033[0m
+\033[44;37mfile2.png\033[0m
+\033[m" > out_ok || fail=1
+compare out out_ok || fail=1
+
+# hard links and png (hard links highlighting disabled)
+LS_COLORS="hl=:*.png=$code_png" ls -U1 --color=always file1 file2.png > out || fail=1
+printf "file1
+\033[0m\033[01;35mfile2.png\033[0m
+\033[m" > out_ok || fail=1
+compare out out_ok || fail=1
+
Exit $fail