From d43a52f6d27112889fd30bcca5a5ebdab8030c1b Mon Sep 17 00:00:00 2001 From: Kamil Dudka Date: Tue, 24 Mar 2009 12:16:20 +0100 Subject: [PATCH] ls: make possible to disable hard links highlighting * src/ls.c (print_color_indicator): Skip hard link checking if not colored. * tests/ls/hardlink: Add test case for disabled hard link highlighting. * NEWS: Mention the change. --- NEWS | 4 ++++ src/ls.c | 2 +- tests/ls/hardlink | 22 +++++++++++++++++++--- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index 766f271..c659303 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 links highlighting can be now disabled by changing LS_COLORS + variable. To disable it you can add something like this to your profile: + eval `dircolors -b | 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 fa6a59a..d30e5a0 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 d65bb7a..b120914 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 -- 1.6.1.2