fts: reduce two or more trailing slashes to just one, usually
authorJim Meyering <meyering@redhat.com>
Tue, 4 Sep 2012 09:36:38 +0000 (11:36 +0200)
committerJim Meyering <meyering@redhat.com>
Tue, 4 Sep 2012 11:08:16 +0000 (13:08 +0200)
commit3a9002d3cc63da7110f133b1040d2d2b0aad8305
tree58a7aa665a1be2c5d8d39ec1662fbbfac6aeb9d6
parentacb0726a65e9a6c954adcd50b50d4d02c016de26
fts: reduce two or more trailing slashes to just one, usually

* lib/fts.c (fts_open): Upon initialization, if a name ends in two
or more slashes, trim all but the final one.  But if a name consists
solely of two slashes, don't modify it.  If it consists solely of
three or more slashes, strip all but one.

This is part of the solution to a minor problem with rm:
it would print a bogus ELOOP diagnostic when failing to remove
the slash-decorated name of a symlink-to-directory:

    $ mkdir d && ln -s d s && env rm -r s/
    rm: cannot remove 's': Too many levels of symbolic links

With the change below and a trivial don't-trim-trailing-slashes
adjustment to remove.c, it does this:

    $ env rm -r s/
    rm: cannot remove 's/': Not a directory

Improved by: Eric Blake
ChangeLog
lib/fts.c