summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/color.c6
-rw-r--r--tests/bfs/color_ls.out4
-rw-r--r--tests/bfs/color_ls.sh6
3 files changed, 9 insertions, 7 deletions
diff --git a/src/color.c b/src/color.c
index 7d98978..f7a5d86 100644
--- a/src/color.c
+++ b/src/color.c
@@ -982,8 +982,10 @@ static ssize_t first_broken_offset(const char *path, const struct BFTW *ftwbuf,
while (ret && at_path[len - 1] == '/') {
--len, --ret;
}
- while (ret && at_path[len - 1] != '/') {
- --len, --ret;
+ if (errno != ENOTDIR) {
+ while (ret && at_path[len - 1] != '/') {
+ --len, --ret;
+ }
}
dstresize(&at_path, len);
diff --git a/tests/bfs/color_ls.out b/tests/bfs/color_ls.out
index b5216c4..f69eb9c 100644
--- a/tests/bfs/color_ls.out
+++ b/tests/bfs/color_ls.out
@@ -2,11 +2,11 @@
scratch/foo/bar
/__bfs__/nowhere
/__bfs__/nowhere
-foo/bar/baz/qux
-foo/bar/baz/qux
foo/bar/nowhere
foo/bar/nowhere
foo/bar/nowhere/nothing
foo/bar/nowhere/nothing
foo/bar/baz
foo/bar/baz
+foo/bar/baz//qux
+foo/bar/baz//qux
diff --git a/tests/bfs/color_ls.sh b/tests/bfs/color_ls.sh
index 37d088f..f2d3c72 100644
--- a/tests/bfs/color_ls.sh
+++ b/tests/bfs/color_ls.sh
@@ -3,13 +3,13 @@ clean_scratch
ln -s foo/bar/baz scratch/link
ln -s foo/bar/nowhere scratch/broken
ln -s foo/bar/nowhere/nothing scratch/nested
-ln -s foo/bar/baz/qux scratch/notdir
+ln -s foo/bar/baz//qux scratch/notdir
ln -s scratch/foo/bar scratch/relative
mkdir scratch/__bfs__
ln -s /__bfs__/nowhere scratch/absolute
-LS_COLORS="or=01;31:" invoke_bfs scratch/{,link,broken,nested,notdir,relative,absolute} -color -type l -ls \
+export LS_COLORS="or=01;31:"
+invoke_bfs scratch/{,link,broken,nested,notdir,relative,absolute} -color -type l -ls \
| sed 's/.* -> //' \
| sort >"$OUT"
-
diff_output