diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-12-09 13:07:39 +0300 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-12-09 13:07:39 +0300 |
commit | 75aa615bef478622cd0695b95adcf182fbbc3d95 (patch) | |
tree | 32fce466a6cefda67db2289b306a111e573b9a09 /findutils | |
parent | 9cb220be9dea5417c1ad0091bb7eeb1371891f89 (diff) |
find: add -iname support (Alexander Griesser <alexander.griesser@lkh-vil.or.at>)
Diffstat (limited to 'findutils')
-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 9efe2db40..8c0397798 100644 --- a/findutils/find.c +++ b/findutils/find.c @@ -76,7 +76,7 @@ typedef struct { #define ACTS(name, arg...) typedef struct { action a; arg; } action_##name; #define ACTF(name) static int func_##name(const char *fileName, struct stat *statbuf, action_##name* ap) ACTS(print) - ACTS(name, const char *pattern;) + ACTS(name, const char *pattern; bool iname;) USE_FEATURE_FIND_PATH( ACTS(path, const char *pattern;)) USE_FEATURE_FIND_REGEX( ACTS(regex, regex_t compiled_pattern;)) USE_FEATURE_FIND_PRINT0( ACTS(print0)) @@ -188,8 +188,9 @@ ACTF(name) if (*tmp == '/') tmp++; } - return fnmatch(ap->pattern, tmp, FNM_PERIOD) == 0; + return fnmatch(ap->pattern, tmp, FNM_PERIOD | (ap->iname ? FNM_CASEFOLD : 0)) == 0; } + #if ENABLE_FEATURE_FIND_PATH ACTF(path) { @@ -458,6 +459,7 @@ static action*** parse_params(char **argv) USE_FEATURE_FIND_PAREN( PARM_char_brace,) /* All options starting from here require argument */ PARM_name , + PARM_iname , USE_FEATURE_FIND_PATH( PARM_path ,) USE_FEATURE_FIND_REGEX( PARM_regex ,) USE_FEATURE_FIND_TYPE( PARM_type ,) @@ -490,6 +492,7 @@ static action*** parse_params(char **argv) USE_FEATURE_FIND_PAREN( "(\0" ) /* All options starting from here require argument */ "-name\0" + "-iname\0" USE_FEATURE_FIND_PATH( "-path\0" ) USE_FEATURE_FIND_REGEX( "-regex\0" ) USE_FEATURE_FIND_TYPE( "-type\0" ) @@ -654,10 +657,11 @@ static action*** parse_params(char **argv) argv = endarg; } #endif - else if (parm == PARM_name) { + else if (parm == PARM_name || parm == PARM_iname) { action_name *ap; ap = ALLOC_ACTION(name); ap->pattern = arg1; + ap->iname = (parm == PARM_iname); } #if ENABLE_FEATURE_FIND_PATH else if (parm == PARM_path) { |