List Info

Thread: svn commit: trunk/busybox: findutils include




svn commit: trunk/busybox: findutils include
country flaguser name
United States
2007-04-13 05:00:14
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-cvsbusybox.net
http://busybox.net/cgi-bin/mailman/listinfo/busybox-cvs

[1]

about | contact  Other archives ( Real Estate discussion Medical topics )