diff options
-rw-r--r-- | findutils/find.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/findutils/find.c b/findutils/find.c index 9ae84fa0d..7918240f4 100644 --- a/findutils/find.c +++ b/findutils/find.c @@ -264,6 +264,7 @@ //usage: "\n -iname PATTERN Case insensitive -name" //usage: IF_FEATURE_FIND_PATH( //usage: "\n -path PATTERN Match path to PATTERN" +//usage: "\n -ipath PATTERN Case insensitive -path" //usage: ) //usage: IF_FEATURE_FIND_REGEX( //usage: "\n -regex PATTERN Match path to regex PATTERN" @@ -352,7 +353,7 @@ typedef struct { ACTS(print) ACTS(name, const char *pattern; bool iname;) -IF_FEATURE_FIND_PATH( ACTS(path, const char *pattern;)) +IF_FEATURE_FIND_PATH( ACTS(path, const char *pattern; bool ipath;)) IF_FEATURE_FIND_REGEX( ACTS(regex, regex_t compiled_pattern;)) IF_FEATURE_FIND_PRINT0( ACTS(print0)) IF_FEATURE_FIND_TYPE( ACTS(type, int type_mask;)) @@ -494,7 +495,7 @@ ACTF(name) #if ENABLE_FEATURE_FIND_PATH ACTF(path) { - return fnmatch(ap->pattern, fileName, 0) == 0; + return fnmatch(ap->pattern, fileName, (ap->ipath ? FNM_CASEFOLD : 0)) == 0; } #endif #if ENABLE_FEATURE_FIND_REGEX @@ -794,6 +795,7 @@ static action*** parse_params(char **argv) PARM_name , PARM_iname , IF_FEATURE_FIND_PATH( PARM_path ,) + IF_FEATURE_FIND_PATH( PARM_ipath ,) IF_FEATURE_FIND_REGEX( PARM_regex ,) IF_FEATURE_FIND_TYPE( PARM_type ,) IF_FEATURE_FIND_PERM( PARM_perm ,) @@ -831,6 +833,7 @@ static action*** parse_params(char **argv) "-name\0" "-iname\0" IF_FEATURE_FIND_PATH( "-path\0" ) + IF_FEATURE_FIND_PATH( "-ipath\0" ) IF_FEATURE_FIND_REGEX( "-regex\0" ) IF_FEATURE_FIND_TYPE( "-type\0" ) IF_FEATURE_FIND_PERM( "-perm\0" ) @@ -1018,10 +1021,11 @@ static action*** parse_params(char **argv) ap->iname = (parm == PARM_iname); } #if ENABLE_FEATURE_FIND_PATH - else if (parm == PARM_path) { + else if (parm == PARM_path || parm == PARM_ipath) { action_path *ap; ap = ALLOC_ACTION(path); ap->pattern = arg1; + ap->ipath = (parm == PARM_ipath); } #endif #if ENABLE_FEATURE_FIND_REGEX |