diff options
Diffstat (limited to 'package')
-rw-r--r-- | package/busybox/patches/002-find-empty.patch | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/package/busybox/patches/002-find-empty.patch b/package/busybox/patches/002-find-empty.patch new file mode 100644 index 000000000..776196ce4 --- /dev/null +++ b/package/busybox/patches/002-find-empty.patch @@ -0,0 +1,105 @@ +diff -Nur busybox-1.15.2.orig/findutils/Config.in busybox-1.15.2/findutils/Config.in +--- busybox-1.15.2.orig/findutils/Config.in 2009-09-26 15:14:57.000000000 +0200 ++++ busybox-1.15.2/findutils/Config.in 2009-11-28 12:41:31.000000000 +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: execute commands" + default y +diff -Nur busybox-1.15.2.orig/findutils/find.c busybox-1.15.2/findutils/find.c +--- busybox-1.15.2.orig/findutils/find.c 2009-10-08 03:04:40.000000000 +0200 ++++ busybox-1.15.2/findutils/find.c 2009-11-28 12:48:36.000000000 +0100 +@@ -93,6 +93,7 @@ + IF_FEATURE_FIND_CONTEXT(ACTS(context, security_context_t context;)) + IF_FEATURE_FIND_PAREN( ACTS(paren, action ***subexpr;)) + IF_FEATURE_FIND_PRUNE( ACTS(prune)) ++IF_FEATURE_FIND_EMPTY( ACTS(empty)) + IF_FEATURE_FIND_DELETE( ACTS(delete)) + IF_FEATURE_FIND_EXEC( ACTS(exec, char **exec_argv; unsigned *subst_count; int exec_argc;)) + IF_FEATURE_FIND_GROUP( ACTS(group, gid_t gid;)) +@@ -333,6 +334,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) + { +@@ -476,6 +505,7 @@ + IF_FEATURE_FIND_PRINT0( PARM_print0 ,) + IF_FEATURE_FIND_DEPTH( PARM_depth ,) + IF_FEATURE_FIND_PRUNE( PARM_prune ,) ++ IF_FEATURE_FIND_EMPTY( PARM_empty ,) + IF_FEATURE_FIND_DELETE( PARM_delete ,) + IF_FEATURE_FIND_EXEC( PARM_exec ,) + IF_FEATURE_FIND_PAREN( PARM_char_brace,) +@@ -509,6 +539,7 @@ + IF_FEATURE_FIND_PRINT0( "-print0\0" ) + IF_FEATURE_FIND_DEPTH( "-depth\0" ) + IF_FEATURE_FIND_PRUNE( "-prune\0" ) ++ IF_FEATURE_FIND_EMPTY( "-empty\0" ) + IF_FEATURE_FIND_DELETE( "-delete\0" ) + IF_FEATURE_FIND_EXEC( "-exec\0" ) + IF_FEATURE_FIND_PAREN( "(\0" ) +@@ -627,6 +658,12 @@ + (void) ALLOC_ACTION(prune); + } + #endif ++#if ENABLE_FEATURE_FIND_EMPTY ++ else if (parm == PARM_empty) { ++ IF_FEATURE_FIND_NOT( invert_flag = 0; ) ++ (void) ALLOC_ACTION(empty); ++ } ++#endif + #if ENABLE_FEATURE_FIND_DELETE + else if (parm == PARM_delete) { + G.need_print = 0; +diff -Nur busybox-1.15.2.orig/include/usage.h busybox-1.15.2/include/usage.h +--- busybox-1.15.2.orig/include/usage.h 2009-10-08 02:59:09.000000000 +0200 ++++ busybox-1.15.2/include/usage.h 2009-11-28 12:42:43.000000000 +0100 +@@ -1239,6 +1239,8 @@ + "\n -group NAME File belongs to group NAME (numeric group ID allowed)") \ + IF_FEATURE_FIND_DEPTH( \ + "\n -depth Process directory name after traversing it") \ ++ IF_FEATURE_FIND_EMPTY( \ ++ "\n -empty File or directory is empty") \ + IF_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") \ |