diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2014-06-19 11:32:11 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2014-06-19 11:32:11 +0200 |
commit | 6be3a5242ce4855734a4cdd5770b6ea7adaf2b3d (patch) | |
tree | e4903316cbaaaeb7cb0a4396daacb3ec1ff8e467 /findutils/find.c | |
parent | 14158b4127dba30466c50147b868a6a89702960b (diff) | |
download | busybox-w32-6be3a5242ce4855734a4cdd5770b6ea7adaf2b3d.tar.gz busybox-w32-6be3a5242ce4855734a4cdd5770b6ea7adaf2b3d.tar.bz2 busybox-w32-6be3a5242ce4855734a4cdd5770b6ea7adaf2b3d.zip |
find: exit code fixes for find -exec
function old new delta
func_exec 127 100 -27
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'findutils/find.c')
-rw-r--r-- | findutils/find.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/findutils/find.c b/findutils/find.c index 8ac3da7a0..493f72e61 100644 --- a/findutils/find.c +++ b/findutils/find.c | |||
@@ -634,6 +634,7 @@ static int do_exec(action_exec *ap, const char *fileName) | |||
634 | } else { | 634 | } else { |
635 | int j = 0; | 635 | int j = 0; |
636 | while (ap->filelist[j]) { | 636 | while (ap->filelist[j]) { |
637 | /* 2nd arg here should be ap->subst_count[i], but it is always 1: */ | ||
637 | *pp++ = xmalloc_substitute_string(arg, 1, "{}", ap->filelist[j]); | 638 | *pp++ = xmalloc_substitute_string(arg, 1, "{}", ap->filelist[j]); |
638 | free(ap->filelist[j]); | 639 | free(ap->filelist[j]); |
639 | j++; | 640 | j++; |
@@ -669,16 +670,16 @@ ACTF(exec) | |||
669 | { | 670 | { |
670 | # if ENABLE_FEATURE_FIND_EXEC_PLUS | 671 | # if ENABLE_FEATURE_FIND_EXEC_PLUS |
671 | if (ap->filelist) { | 672 | if (ap->filelist) { |
672 | int rc = 0; | 673 | int rc; |
673 | 674 | ||
675 | ap->filelist = xrealloc_vector(ap->filelist, 8, ap->filelist_idx); | ||
676 | ap->filelist[ap->filelist_idx++] = xstrdup(fileName); | ||
677 | ap->file_len += strlen(fileName) + sizeof(char*) + 1; | ||
674 | /* If we have lots of files already, exec the command */ | 678 | /* If we have lots of files already, exec the command */ |
679 | rc = 1; | ||
675 | if (ap->file_len >= 32*1024) | 680 | if (ap->file_len >= 32*1024) |
676 | rc = do_exec(ap, NULL); | 681 | rc = do_exec(ap, NULL); |
677 | 682 | return rc; | |
678 | ap->file_len += strlen(fileName) + sizeof(char*) + 1; | ||
679 | ap->filelist = xrealloc_vector(ap->filelist, 8, ap->filelist_idx); | ||
680 | ap->filelist[ap->filelist_idx++] = xstrdup(fileName); | ||
681 | return rc == 0; /* return 1 if exitcode 0 */ | ||
682 | } | 683 | } |
683 | # endif | 684 | # endif |
684 | return do_exec(ap, fileName); | 685 | return do_exec(ap, fileName); |
@@ -698,8 +699,8 @@ static int flush_exec_plus(void) | |||
698 | # if ENABLE_FEATURE_FIND_NOT | 699 | # if ENABLE_FEATURE_FIND_NOT |
699 | if (ap->invert) rc = !rc; | 700 | if (ap->invert) rc = !rc; |
700 | # endif | 701 | # endif |
701 | if (rc) | 702 | if (rc == 0) |
702 | return rc; | 703 | return 1; |
703 | } | 704 | } |
704 | } | 705 | } |
705 | } | 706 | } |