find: fix implicit -print (sometime differed from standard)
authorDenis Vlasenko <vda.linux@googlemail.com>
Tue, 31 Oct 2006 03:20:13 +0000 (03:20 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Tue, 31 Oct 2006 03:20:13 +0000 (03:20 -0000)
findutils/find.c

index 3c7e66a56c16c406b484eabb4f418ea11fca3087..21ea9d42294c0fc28664c5e57d548cef28794081 100644 (file)
  * file.txt
  * # find file.txt -name '*f*' -o -name '*z*'
  * file.txt
+ *
+ * # find t z -name '*t*' -print -o -name '*z*'
+ * t
+ * # find t z t z -name '*t*' -o -name '*z*' -print
+ * z
+ * z
+ * # find t z t z '(' -name '*t*' -o -name '*z*' ')' -o -print
+ * (no output)
  */
 
 #include "busybox.h"
@@ -193,7 +201,6 @@ SFUNC(exec)
                bb_perror_msg("%s", argv[0]);
        for (i = 0; i < ap->exec_argc; i++)
                free(argv[i]);
-       need_print = 0;
        return rc == 0; /* return 1 if success */
 }
 #endif
@@ -202,7 +209,6 @@ SFUNC(exec)
 SFUNC(print0)
 {
        printf("%s%c", fileName, '\0');
-       need_print = 0;
        return TRUE;
 }
 #endif
@@ -210,7 +216,6 @@ SFUNC(print0)
 SFUNC(print)
 {
        puts(fileName);
-       need_print = 0;
        return TRUE;
 }
 
@@ -331,10 +336,12 @@ action*** parse_params(char **argv)
 
        /* --- Tests and actions --- */
                else if (strcmp(arg, "-print") == 0) {
+                       need_print = 0;
                        (void) ALLOC_ACTION(print);
                }
 #if ENABLE_FEATURE_FIND_PRINT0
                else if (strcmp(arg, "-print0") == 0) {
+                       need_print = 0;
                        (void) ALLOC_ACTION(print0);
                }
 #endif
@@ -420,6 +427,7 @@ action*** parse_params(char **argv)
                else if (strcmp(arg, "-exec") == 0) {
                        int i;
                        action_exec *ap;
+                       need_print = 0;
                        ap = ALLOC_ACTION(exec);
                        ap->exec_argv = ++argv; /* first arg after -exec */
                        ap->exec_argc = 0;