find: fix -not support

This commit is contained in:
Denis Vlasenko 2007-02-06 17:38:29 +00:00
parent 1d76f439da
commit b292264bfd

View File

@ -352,6 +352,7 @@ static action*** parse_params(char **argv)
appp[cur_group][cur_action] = NULL; appp[cur_group][cur_action] = NULL;
ap->f = f; ap->f = f;
USE_FEATURE_FIND_NOT( ap->invert = invert_flag; ) USE_FEATURE_FIND_NOT( ap->invert = invert_flag; )
USE_FEATURE_FIND_NOT( invert_flag = 0; )
return ap; return ap;
} }
#define ALLOC_ACTION(name) (action_##name*)alloc_action(sizeof(action_##name), (action_fp) func_##name) #define ALLOC_ACTION(name) (action_##name*)alloc_action(sizeof(action_##name), (action_fp) func_##name)
@ -380,14 +381,12 @@ static action*** parse_params(char **argv)
if (strcmp(arg, "-a") == 0 if (strcmp(arg, "-a") == 0
USE_DESKTOP(|| strcmp(arg, "-and") == 0) USE_DESKTOP(|| strcmp(arg, "-and") == 0)
) { ) {
USE_FEATURE_FIND_NOT( invert_flag = 0; )
/* no further special handling required */ /* no further special handling required */
} }
else if (strcmp(arg, "-o") == 0 else if (strcmp(arg, "-o") == 0
USE_DESKTOP(|| strcmp(arg, "-or") == 0) USE_DESKTOP(|| strcmp(arg, "-or") == 0)
) { ) {
/* start new OR group */ /* start new OR group */
USE_FEATURE_FIND_NOT( invert_flag = 0; )
cur_group++; cur_group++;
appp = xrealloc(appp, (cur_group+2) * sizeof(*appp)); appp = xrealloc(appp, (cur_group+2) * sizeof(*appp));
/*appp[cur_group] = NULL; - already NULL */ /*appp[cur_group] = NULL; - already NULL */
@ -398,7 +397,8 @@ static action*** parse_params(char **argv)
else if (LONE_CHAR(arg, '!') else if (LONE_CHAR(arg, '!')
USE_DESKTOP(|| strcmp(arg, "-not") == 0) USE_DESKTOP(|| strcmp(arg, "-not") == 0)
) { ) {
invert_flag = 1; /* also handles "find ! ! -name 'foo*'" */
invert_flag ^= 1;
} }
#endif #endif