diff options
author | Jim Meyering <meyering@redhat.com> | 2009-12-01 12:06:34 +0100 |
---|---|---|
committer | Jim Meyering <meyering@redhat.com> | 2009-12-01 14:09:25 +0100 |
commit | cdfe647f8d29540cdfe90cef0fa568c5d2fd4481 (patch) | |
tree | 09c66ac1b3343023a7020b6abb6c61ca72c7caba /lib/fts.c | |
parent | 52f2ca7c62445ecc1dadbba8a709421e0290f7d2 (diff) | |
download | gnulib-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.c | 9 |
1 files changed, 2 insertions, 7 deletions
@@ -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; |