Mercurial > hg > octave-nkf > gnulib-hg
changeset 12378:ec1305e3ea1c
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.
author | Jim Meyering <meyering@redhat.com> |
---|---|
date | Tue, 01 Dec 2009 12:06:34 +0100 |
parents | 94e10d90164d |
children | a26918b40a9a |
files | ChangeLog lib/fts.c |
diffstat | 2 files changed, 13 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2009-12-01 Jim Meyering <meyering@redhat.com> + + 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. + 2009-11-30 Eric Blake <ebb9@byu.net> utimens: fix compilation error
--- a/lib/fts.c +++ b/lib/fts.c @@ -375,7 +375,6 @@ register size_t nitems; FTSENT *parent = NULL; FTSENT *tmp = NULL; /* pacify gcc */ - size_t len; bool defer_stat; /* Options check. */ @@ -474,12 +473,8 @@ /* 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;