# define FNM_CASEFOLD 0
#endif
+#define dbg(...) ((void)0)
+/* #define dbg(...) bb_error_msg(__VA_ARGS__) */
+
/* This is a NOEXEC applet. Be very careful! */
#if ENABLE_FEATURE_FIND_NOT
if (ap->invert) rc ^= TRUE;
#endif
+ dbg("grp %d action %d rc:0x%x", cur_group, cur_action, rc);
if (rc & TRUE) /* current group failed, try next */
break;
}
}
+ dbg("returning:0x%x", rc ^ TRUE);
return rc ^ TRUE; /* restore TRUE bit */
}
int parm = index_in_strings(params, arg);
const char *arg1 = argv[1];
+ dbg("arg:'%s' arg1:'%s' parm:%d PARM_type:%d", arg, arg1, parm, PARM_type);
+
if (parm >= PARM_name) {
/* All options/actions starting from -name require argument */
if (!arg1)
* expression is reached.
*/
/* Options */
+ if (0) { }
#if ENABLE_FEATURE_FIND_XDEV
- if (parm == OPT_XDEV) {
+ else if (parm == OPT_XDEV) {
+ dbg("%d", __LINE__);
G.xdev_on = 1;
}
#endif
#if ENABLE_FEATURE_FIND_MAXDEPTH
else if (parm == OPT_MINDEPTH || parm == OPT_MINDEPTH + 1) {
+ dbg("%d", __LINE__);
G.minmaxdepth[parm - OPT_MINDEPTH] = xatoi_positive(arg1);
}
#endif
#if ENABLE_FEATURE_FIND_DEPTH
else if (parm == OPT_DEPTH) {
+ dbg("%d", __LINE__);
G.recurse_flags |= ACTION_DEPTHFIRST;
}
#endif
*/
/* Operators */
else if (parm == PARM_a IF_DESKTOP(|| parm == PARM_and)) {
+ dbg("%d", __LINE__);
/* no further special handling required */
}
else if (parm == PARM_o IF_DESKTOP(|| parm == PARM_or)) {
+ dbg("%d", __LINE__);
/* start new OR group */
cur_group++;
appp = xrealloc(appp, (cur_group+2) * sizeof(*appp));
else if (parm == PARM_char_not IF_DESKTOP(|| parm == PARM_not)) {
/* also handles "find ! ! -name 'foo*'" */
invert_flag ^= 1;
+ dbg("invert_flag:%d", invert_flag);
}
#endif
/* Actions */
else if (parm == PARM_print) {
+ dbg("%d", __LINE__);
G.need_print = 0;
(void) ALLOC_ACTION(print);
}
#if ENABLE_FEATURE_FIND_PRINT0
else if (parm == PARM_print0) {
+ dbg("%d", __LINE__);
G.need_print = 0;
(void) ALLOC_ACTION(print0);
}
#endif
#if ENABLE_FEATURE_FIND_PRUNE
else if (parm == PARM_prune) {
+ dbg("%d", __LINE__);
(void) ALLOC_ACTION(prune);
}
#endif
#if ENABLE_FEATURE_FIND_DELETE
else if (parm == PARM_delete) {
+ dbg("%d", __LINE__);
G.need_print = 0;
G.recurse_flags |= ACTION_DEPTHFIRST;
(void) ALLOC_ACTION(delete);
else if (parm == PARM_exec) {
int i;
action_exec *ap;
+ dbg("%d", __LINE__);
G.need_print = 0;
ap = ALLOC_ACTION(exec);
ap->exec_argv = ++argv; /* first arg after -exec */
char **endarg;
unsigned nested = 1;
+ dbg("%d", __LINE__);
endarg = argv;
while (1) {
if (!*++endarg)
#endif
else if (parm == PARM_name || parm == PARM_iname) {
action_name *ap;
+ dbg("%d", __LINE__);
ap = ALLOC_ACTION(name);
ap->pattern = arg1;
ap->iname = (parm == PARM_iname);
#if ENABLE_FEATURE_FIND_PATH
else if (parm == PARM_path || parm == PARM_ipath) {
action_path *ap;
+ dbg("%d", __LINE__);
ap = ALLOC_ACTION(path);
ap->pattern = arg1;
ap->ipath = (parm == PARM_ipath);
#if ENABLE_FEATURE_FIND_REGEX
else if (parm == PARM_regex) {
action_regex *ap;
+ dbg("%d", __LINE__);
ap = ALLOC_ACTION(regex);
xregcomp(&ap->compiled_pattern, arg1, 0 /*cflags*/);
}
action_type *ap;
ap = ALLOC_ACTION(type);
ap->type_mask = find_type(arg1);
+ dbg("created:type mask:%x", ap->type_mask);
}
#endif
#if ENABLE_FEATURE_FIND_PERM
*/
else if (parm == PARM_perm) {
action_perm *ap;
+ dbg("%d", __LINE__);
ap = ALLOC_ACTION(perm);
ap->perm_char = arg1[0];
arg1 = plus_minus_num(arg1);
#if ENABLE_FEATURE_FIND_MTIME
else if (parm == PARM_mtime) {
action_mtime *ap;
+ dbg("%d", __LINE__);
ap = ALLOC_ACTION(mtime);
ap->mtime_char = arg1[0];
ap->mtime_days = xatoul(plus_minus_num(arg1));
#if ENABLE_FEATURE_FIND_MMIN
else if (parm == PARM_mmin) {
action_mmin *ap;
+ dbg("%d", __LINE__);
ap = ALLOC_ACTION(mmin);
ap->mmin_char = arg1[0];
ap->mmin_mins = xatoul(plus_minus_num(arg1));
else if (parm == PARM_newer) {
struct stat stat_newer;
action_newer *ap;
+ dbg("%d", __LINE__);
ap = ALLOC_ACTION(newer);
xstat(arg1, &stat_newer);
ap->newer_mtime = stat_newer.st_mtime;
#if ENABLE_FEATURE_FIND_INUM
else if (parm == PARM_inum) {
action_inum *ap;
+ dbg("%d", __LINE__);
ap = ALLOC_ACTION(inum);
ap->inode_num = xatoul(arg1);
}
#if ENABLE_FEATURE_FIND_USER
else if (parm == PARM_user) {
action_user *ap;
+ dbg("%d", __LINE__);
ap = ALLOC_ACTION(user);
ap->uid = bb_strtou(arg1, NULL, 10);
if (errno)
#if ENABLE_FEATURE_FIND_GROUP
else if (parm == PARM_group) {
action_group *ap;
+ dbg("%d", __LINE__);
ap = ALLOC_ACTION(group);
ap->gid = bb_strtou(arg1, NULL, 10);
if (errno)
{ "", 0 }
};
action_size *ap;
+ dbg("%d", __LINE__);
ap = ALLOC_ACTION(size);
ap->size_char = arg1[0];
ap->size = XATOU_SFX(plus_minus_num(arg1), find_suffixes);
#if ENABLE_FEATURE_FIND_CONTEXT
else if (parm == PARM_context) {
action_context *ap;
+ dbg("%d", __LINE__);
ap = ALLOC_ACTION(context);
/*ap->context = NULL; - ALLOC_ACTION did it */
/* SELinux headers erroneously declare non-const parameter */
#if ENABLE_FEATURE_FIND_LINKS
else if (parm == PARM_links) {
action_links *ap;
+ dbg("%d", __LINE__);
ap = ALLOC_ACTION(links);
ap->links_char = arg1[0];
ap->links_count = xatoul(plus_minus_num(arg1));
}
argv++;
}
+ dbg("exiting %s", __func__);
return appp;
#undef ALLOC_ACTION
}