]> git.ipfire.org Git - thirdparty/coreutils.git/commit
ls: color each symlink-to-relative-name in / properly
authorJim Meyering <meyering@redhat.com>
Thu, 10 May 2012 17:43:00 +0000 (19:43 +0200)
committerJim Meyering <meyering@redhat.com>
Sat, 12 May 2012 14:19:38 +0000 (16:19 +0200)
commit6124a3842dfa8484b52e067a8ab8105c3875a4f7
treeb7047bc1393246d26c7f4af2bcf9d3622e56dd12
parente438a0e8581cfd5ce3df0f37ba46163f725d0bb0
ls: color each symlink-to-relative-name in / properly

In order for ls --color to color each symlink, it must form the name
of each referent and then stat it to see if the link is dangling, to
a directory, to a file, etc.  When the symlink is to a relative name,
ls must concatenate the starting directory name and that relative name.
When, in addition, the starting directory was "/" or "/some-name",
the result was ill-formed, and the subsequent stat would usually fail,
making the caller color it as a dangling symlink.
* src/ls.c (make_link_name): Don't botch the case in which
dir_name(NAME) == "/" and LINKNAME is relative.
* tests/ls/root-rel-symlink-color: New file.  Test for the above.
* tests/Makefile.am (TESTS): Add it.
* NEWS (Bug fixes): Mention it.
Reported by Mike Frysinger in http://bugs.gnu.org/11453
Bug introduced by commit v8.16-23-gbcb9078.
NEWS
src/ls.c
tests/Makefile.am
tests/ls/root-rel-symlink-color [new file with mode: 0755]