svn commit: trunk/busybox/findutils

vda at busybox.net vda at busybox.net
Thu Feb 1 17:17:52 PST 2007


Author: vda
Date: 2007-02-01 17:17:52 -0800 (Thu, 01 Feb 2007)
New Revision: 17710

Log:
find -user support by Natanael Copa <natanael.copa at gmail.com>


Modified:
   trunk/busybox/findutils/Config.in
   trunk/busybox/findutils/find.c


Changeset:
Modified: trunk/busybox/findutils/Config.in
===================================================================
--- trunk/busybox/findutils/Config.in	2007-02-02 01:16:33 UTC (rev 17709)
+++ trunk/busybox/findutils/Config.in	2007-02-02 01:17:52 UTC (rev 17710)
@@ -83,6 +83,13 @@
 	  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

Modified: trunk/busybox/findutils/find.c
===================================================================
--- trunk/busybox/findutils/find.c	2007-02-02 01:16:33 UTC (rev 17709)
+++ trunk/busybox/findutils/find.c	2007-02-02 01:17:52 UTC (rev 17710)
@@ -68,6 +68,7 @@
 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 @@
 }
 #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 @@
 				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;



More information about the busybox-cvs mailing list