Author: vda
Date: 2007-04-13 03:00:12 -0700 (Fri, 13 Apr 2007)
New Revision: 18425
Log:
find: add support for -delete, -path (by Natanael Copa)
Modified:
trunk/busybox/findutils/Config.in
trunk/busybox/findutils/find.c
trunk/busybox/include/usage.h
Changeset:
Modified: trunk/busybox/findutils/Config.in
============================================================
=======
--- trunk/busybox/findutils/Config.in 2007-04-13 08:32:18
UTC (rev 18424)
+++ trunk/busybox/findutils/Config.in 2007-04-13 10:00:12
UTC (rev 18425)
 -135,6
+135,22 
If the file is a directory, dont descend into it. Useful
for
exclusion .svn and CVS directories.
+config FEATURE_FIND_DELETE
+ bool "Enable -delete option allowing to delete
files"
+ default n
+ depends on FIND && FEATURE_FIND_DEPTH
+ help
+ Support the 'find -delete' option for deleting files and
direcotries.
+ WARNING: This option can do much harm if used wrong.
Busybox will not
+ try to protect the user from doing stupid things. Use
with care.
+
+config FEATURE_FIND_PATH
+ bool "Enable -path option allowing to match pathname
patterns"
+ default y
+ depends on FIND
+ help
+ The -path option matches whole pathnames instead of just
filenames.
+
config GREP
bool "grep"
default n
Modified: trunk/busybox/findutils/find.c
============================================================
=======
--- trunk/busybox/findutils/find.c 2007-04-13 08:32:18 UTC
(rev 18424)
+++ trunk/busybox/findutils/find.c 2007-04-13 10:00:12 UTC
(rev 18425)
 -79,6
+79,8 
USE_FEATURE_FIND_PAREN( ACTS(paren, action ***subexpr;))
USE_FEATURE_FIND_SIZE( ACTS(size, off_t size;))
USE_FEATURE_FIND_PRUNE( ACTS(prune))
+USE_FEATURE_FIND_DELETE(ACTS(delete))
+USE_FEATURE_FIND_PATH( ACTS(path, const char *pattern;))
static action ***actions;
static bool need_print = 1;
 -305,6
+307,28 
}
#endif
+#if ENABLE_FEATURE_FIND_DELETE
+ACTF(delete)
+{
+ int rc;
+ if (S_ISDIR(statbuf->st_mode)) {
+ rc = rmdir(fileName);
+ } else {
+ rc = unlink(fileName);
+ }
+ if (rc < 0)
+ bb_perror_msg("%s", fileName);
+ return TRUE;
+}
+#endif
+
+#if ENABLE_FEATURE_FIND_PATH
+ACTF(path)
+{
+ return fnmatch(ap->pattern, fileName, 0) == 0;
+}
+#endif
+
#if ENABLE_FEATURE_FIND_SIZE
ACTF(size)
{
 -393,6
+417,8 
USE_FEATURE_FIND_PAREN( PARM_char_brace,)
USE_FEATURE_FIND_SIZE( PARM_size ,)
USE_FEATURE_FIND_PRUNE( PARM_prune ,)
+ USE_FEATURE_FIND_DELETE(PARM_delete ,)
+ USE_FEATURE_FIND_PATH( PARM_path ,)
#if ENABLE_DESKTOP
PARM_and ,
PARM_or ,
 -420,6
+446,8 
USE_FEATURE_FIND_PAREN( "(" ,)
USE_FEATURE_FIND_SIZE( "-size" ,)
USE_FEATURE_FIND_PRUNE( "-prune" ,)
+ USE_FEATURE_FIND_DELETE("-delete",)
+ USE_FEATURE_FIND_PATH( "-path" ,)
#if ENABLE_DESKTOP
"-and" ,
"-or" ,
 -656,6
+684,22 
(void) ALLOC_ACTION(prune);
}
#endif
+#if ENABLE_FEATURE_FIND_DELETE
+ else if (parm == PARM_delete) {
+ need_print = 0;
+ recurse_flags |= ACTION_DEPTHFIRST;
+ (void) ALLOC_ACTION(delete);
+ }
+#endif
+#if ENABLE_FEATURE_FIND_PATH
+ else if (parm == PARM_path) {
+ action_path *ap;
+ if (!*++argv)
+ bb_error_msg_and_die(bb_msg_requires_arg, arg);
+ ap = ALLOC_ACTION(path);
+ ap->pattern = arg1;
+ }
+#endif
#if ENABLE_FEATURE_FIND_SIZE
else if (parm == PARM_size) {
action_size *ap;
Modified: trunk/busybox/include/usage.h
============================================================
=======
--- trunk/busybox/include/usage.h 2007-04-13 08:32:18 UTC
(rev 18424)
+++ trunk/busybox/include/usage.h 2007-04-13 10:00:12 UTC
(rev 18425)
 -968,6
+968,10 
"n -size N File size is N"
) USE_FEATURE_FIND_PRUNE(
"n -prune Stop traversing current
subtree"
+ ) USE_FEATURE_FIND_DELETE(
+ "n -delete Delete files; Turns on -depth
option"
+ ) USE_FEATURE_FIND_PATH(
+ "n -path Path matches PATTERN"
) USE_FEATURE_FIND_PAREN(
"n (EXPR) Group an expression"
)
_______________________________________________
busybox-cvs mailing list
busybox-cvs busybox.net
http://busybox.net/cgi-bin/mailman/listinfo/busybox-cvs
a>
|