]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
ls: make it possible to disable coloring of hard links
authorKamil Dudka <kdudka@redhat.com>
Tue, 24 Mar 2009 11:16:20 +0000 (12:16 +0100)
committerPádraig Brady <P@draigBrady.com>
Tue, 24 Mar 2009 16:11:00 +0000 (16:11 +0000)
* 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.

NEWS
src/ls.c
tests/ls/hardlink

diff --git a/NEWS b/NEWS
index 766f2716bd8eadfa5fe70ea602b940f51658c7cf..bb7999426c4ee445a915695c08b55580fa41ed36 100644 (file)
--- 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]
 
index fa6a59a9d5e738e0fc9f4d3d302bbd1b22f49910..d30e5a087cf8961050a593a716a251bc74c6ecc1 100644 (file)
--- 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))
index d65bb7a951fd758d87ec21d3fdf7336ea8552e46..b1209146646c574c7e8fd2b485ea92ac3aa28479 100755 (executable)
@@ -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