find: fix -name matching for dotfiles. -1 byte
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
05273daf6f
commit
9138817a27
@ -198,14 +198,19 @@ static int exec_actions(action ***appp, const char *fileName, const struct stat
|
|||||||
ACTF(name)
|
ACTF(name)
|
||||||
{
|
{
|
||||||
const char *tmp = bb_basename(fileName);
|
const char *tmp = bb_basename(fileName);
|
||||||
if (tmp != fileName && !*tmp) { /* "foo/bar/". Oh no... go back to 'b' */
|
if (tmp != fileName && *tmp == '\0') {
|
||||||
|
/* "foo/bar/". Oh no... go back to 'b' */
|
||||||
tmp--;
|
tmp--;
|
||||||
while (tmp != fileName && *--tmp != '/')
|
while (tmp != fileName && *--tmp != '/')
|
||||||
continue;
|
continue;
|
||||||
if (*tmp == '/')
|
if (*tmp == '/')
|
||||||
tmp++;
|
tmp++;
|
||||||
}
|
}
|
||||||
return fnmatch(ap->pattern, tmp, FNM_PERIOD | (ap->iname ? FNM_CASEFOLD : 0)) == 0;
|
/* Was using FNM_PERIOD flag too,
|
||||||
|
* but somewhere between 4.1.20 and 4.4.0 GNU find stopped using it.
|
||||||
|
* find -name '*foo' should match .foo too:
|
||||||
|
*/
|
||||||
|
return fnmatch(ap->pattern, tmp, (ap->iname ? FNM_CASEFOLD : 0)) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_FEATURE_FIND_PATH
|
#if ENABLE_FEATURE_FIND_PATH
|
||||||
|
Loading…
Reference in New Issue
Block a user