summaryrefslogtreecommitdiff
path: root/lib/fts.c
diff options
context:
space:
mode:
authorJim Meyering <meyering@redhat.com>2009-12-01 12:06:34 +0100
committerJim Meyering <meyering@redhat.com>2009-12-01 14:09:25 +0100
commitcdfe647f8d29540cdfe90cef0fa568c5d2fd4481 (patch)
tree09c66ac1b3343023a7020b6abb6c61ca72c7caba /lib/fts.c
parent52f2ca7c62445ecc1dadbba8a709421e0290f7d2 (diff)
downloadgnulib-cdfe647f8d29540cdfe90cef0fa568c5d2fd4481.tar.gz
fts: fts_open: do not let an empty string cause immediate failure
This is required in support of GNU rm, for which the command "rm A '' B" must process and remove both A and B, in spite of the empty string argument. * lib/fts.c (fts_open): Do not let the presence of an empty string cause fts_open to fail immediately. Most fts-using tools must be able to process all arguments, in order, and can be expected to diagnose such arguments themselves. Also, move declaration of local, "len", "down" to initialization.
Diffstat (limited to 'lib/fts.c')
-rw-r--r--lib/fts.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/lib/fts.c b/lib/fts.c
index 21c66583ac..39922b6a43 100644
--- a/lib/fts.c
+++ b/lib/fts.c
@@ -375,7 +375,6 @@ fts_open (char * const *argv,
register size_t nitems;
FTSENT *parent = NULL;
FTSENT *tmp = NULL; /* pacify gcc */
- size_t len;
bool defer_stat;
/* Options check. */
@@ -474,12 +473,8 @@ fts_open (char * const *argv,
/* Allocate/initialize root(s). */
for (root = NULL, nitems = 0; *argv != NULL; ++argv, ++nitems) {
- /* Don't allow zero-length file names. */
- if ((len = strlen(*argv)) == 0) {
- __set_errno (ENOENT);
- goto mem3;
- }
-
+ /* *Do* allow zero-length file names. */
+ size_t len = strlen(*argv);
if ((p = fts_alloc(sp, *argv, len)) == NULL)
goto mem3;
p->fts_level = FTS_ROOTLEVEL;