| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 | diff -Nur busybox-1.12.3/findutils/Config.in busybox-1.12.3-find/findutils/Config.in--- busybox-1.12.3/findutils/Config.in	2008-09-28 20:04:28.000000000 +0200+++ busybox-1.12.3-find/findutils/Config.in	2009-01-06 22:24:46.086215240 +0100@@ -81,6 +81,14 @@ 	help 	  Support the 'find -inum' option for searching by inode number. +config FEATURE_FIND_EMPTY+	bool "Enable -empty option matching empty files and directories"+	default y+	depends on FIND+	help+	  Support the 'find -empty' option for searching empty files +	  and directories.+ config FEATURE_FIND_EXEC 	bool "Enable -exec option allowing execution of commands" 	default ydiff -Nur busybox-1.12.3/findutils/find.c busybox-1.12.3-find/findutils/find.c--- busybox-1.12.3/findutils/find.c	2008-09-28 20:04:28.000000000 +0200+++ busybox-1.12.3-find/findutils/find.c	2009-01-06 23:33:53.201386585 +0100@@ -93,6 +93,7 @@ USE_FEATURE_FIND_CONTEXT(ACTS(context, security_context_t context;)) USE_FEATURE_FIND_PAREN(  ACTS(paren, action ***subexpr;)) USE_FEATURE_FIND_PRUNE(  ACTS(prune))+USE_FEATURE_FIND_EMPTY(  ACTS(empty)) USE_FEATURE_FIND_DELETE( ACTS(delete)) USE_FEATURE_FIND_EXEC(   ACTS(exec,  char **exec_argv; unsigned *subst_count; int exec_argc;)) USE_FEATURE_FIND_GROUP(  ACTS(group, gid_t gid;))@@ -318,6 +319,34 @@ 	return exec_actions(ap->subexpr, fileName, statbuf); } #endif+#if ENABLE_FEATURE_FIND_EMPTY+ACTF(empty)+{+	DIR *d;+	struct dirent *dp;+	bool empty = TRUE;++	if (S_ISDIR(statbuf->st_mode)) {+		d = opendir(fileName);+		if (d == NULL)+			bb_simple_perror_msg(fileName);+		for (dp = readdir(d); dp; dp = readdir(d)) {+			if (dp->d_name[0] != '.' ||+				(dp->d_name[1] != '\0' &&+				(dp->d_name[1] != '.' ||+				dp->d_name[2] != '\0'))) {+					empty = FALSE;+					break;+			}+		}+		closedir(d);+		return(empty);+	} else if (S_ISREG(statbuf->st_mode))+		return (statbuf->st_size == 0);+	else+		return FALSE;+}+#endif #if ENABLE_FEATURE_FIND_SIZE ACTF(size) {@@ -459,6 +488,7 @@ 	USE_FEATURE_FIND_PRINT0( PARM_print0    ,) 	USE_FEATURE_FIND_DEPTH(  PARM_depth     ,) 	USE_FEATURE_FIND_PRUNE(  PARM_prune     ,)+	USE_FEATURE_FIND_EMPTY(  PARM_empty     ,) 	USE_FEATURE_FIND_DELETE( PARM_delete    ,) 	USE_FEATURE_FIND_EXEC(   PARM_exec      ,) 	USE_FEATURE_FIND_PAREN(  PARM_char_brace,)@@ -492,6 +522,7 @@ 	USE_FEATURE_FIND_PRINT0( "-print0\0" ) 	USE_FEATURE_FIND_DEPTH(  "-depth\0"  ) 	USE_FEATURE_FIND_PRUNE(  "-prune\0"  )+	USE_FEATURE_FIND_EMPTY(  "-empty\0"  ) 	USE_FEATURE_FIND_DELETE( "-delete\0" ) 	USE_FEATURE_FIND_EXEC(   "-exec\0"   ) 	USE_FEATURE_FIND_PAREN(  "(\0"       )@@ -610,6 +641,12 @@ 			(void) ALLOC_ACTION(prune); 		} #endif+#if ENABLE_FEATURE_FIND_EMPTY+		else if (parm == PARM_empty) {+			USE_FEATURE_FIND_NOT( invert_flag = 0; )+			(void) ALLOC_ACTION(empty);+		}+#endif #if ENABLE_FEATURE_FIND_DELETE 		else if (parm == PARM_delete) { 			need_print = 0;diff -Nur busybox-1.12.3/include/usage.h busybox-1.12.3-find/include/usage.h--- busybox-1.12.3/include/usage.h	2008-09-28 20:04:26.000000000 +0200+++ busybox-1.12.3-find/include/usage.h	2009-01-07 00:07:49.832669156 +0100@@ -1140,6 +1140,8 @@      "\n	-group NAME	File belongs to group NAME (numeric group ID allowed)") \ 	USE_FEATURE_FIND_DEPTH( \      "\n	-depth		Process directory name after traversing it") \+	USE_FEATURE_FIND_EMPTY( \+     "\n	-empty		File or directory is empty") \ 	USE_FEATURE_FIND_SIZE( \      "\n	-size N[bck]	File size is N (c:bytes,k:kbytes,b:512 bytes(def.))." \      "\n			+/-N: file size is bigger/smaller than N") \
 |