find -user support by Natanael Copa <natanael.copa@gmail.com>

This commit is contained in:
Denis Vlasenko 2007-02-02 01:17:52 +00:00
parent 731d357295
commit a100707c04
2 changed files with 26 additions and 0 deletions

View File

@ -83,6 +83,13 @@ config FEATURE_FIND_EXEC
Support the 'find -exec' option for executing commands based upon
the files matched.
config FEATURE_FIND_USER
bool "Enable username/uid matching (-user) option"
default y
depends on FIND
help
Support the 'find -user' option for searching by username or uid.
config GREP
bool "grep"
default n

View File

@ -68,6 +68,7 @@ USE_FEATURE_FIND_MMIN( ACTS(mmin, char mmin_char; unsigned mmin_mins;))
USE_FEATURE_FIND_NEWER( ACTS(newer, time_t newer_mtime;))
USE_FEATURE_FIND_INUM( ACTS(inum, ino_t inode_num;))
USE_FEATURE_FIND_EXEC( ACTS(exec, char **exec_argv; int *subst_count; int exec_argc;))
USE_FEATURE_FIND_USER( ACTS(user, int uid;))
USE_DESKTOP( ACTS(paren, action ***subexpr;))
USE_DESKTOP( ACTS(size, off_t size;))
USE_DESKTOP( ACTS(prune))
@ -212,6 +213,13 @@ ACTF(exec)
}
#endif
#if ENABLE_FEATURE_FIND_USER
ACTF(user)
{
return (statbuf->st_uid == ap->uid);
}
#endif
#if ENABLE_FEATURE_FIND_PRINT0
ACTF(print0)
{
@ -478,6 +486,17 @@ static action*** parse_params(char **argv)
ap->subst_count[i] = count_subst(ap->exec_argv[i]);
}
#endif
#ifdef ENABLE_FEATURE_FIND_USER
else if (strcmp(arg, "-user") == 0) {
action_user *ap;
if (!*++argv)
bb_error_msg_and_die(bb_msg_requires_arg, arg);
ap = ALLOC_ACTION(user);
ap->uid = bb_strtou(arg1, NULL, 10);
if (errno)
ap->uid = xuname2uid(arg1);
}
#endif
#if ENABLE_DESKTOP
else if (LONE_CHAR(arg, '(')) {
action_paren *ap;