diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2015-01-11 16:41:54 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2015-01-11 16:41:54 +0100 |
commit | 39f017293a047ac1063c84263d4d855b86c62ba1 (patch) | |
tree | 688381313ce2ba8db50ee58e8d5007462fa9e9c4 | |
parent | 70f4320b40b7af83525cebabab2bc437a22c41d2 (diff) | |
download | busybox-w32-39f017293a047ac1063c84263d4d855b86c62ba1.tar.gz busybox-w32-39f017293a047ac1063c84263d4d855b86c62ba1.tar.bz2 busybox-w32-39f017293a047ac1063c84263d4d855b86c62ba1.zip |
diff: fix a bug in diffing against stdin. Closes 7784
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | editors/diff.c | 3 | ||||
-rwxr-xr-x | testsuite/diff.tests | 11 |
2 files changed, 13 insertions, 1 deletions
diff --git a/editors/diff.c b/editors/diff.c index a78a0ee28..c3ad31bf3 100644 --- a/editors/diff.c +++ b/editors/diff.c | |||
@@ -740,9 +740,10 @@ static int diffreg(char *file[2]) | |||
740 | unlink(name); | 740 | unlink(name); |
741 | if (bb_copyfd_eof(fd, fd_tmp) < 0) | 741 | if (bb_copyfd_eof(fd, fd_tmp) < 0) |
742 | xfunc_die(); | 742 | xfunc_die(); |
743 | if (fd) /* Prevents closing of stdin */ | 743 | if (fd != STDIN_FILENO) |
744 | close(fd); | 744 | close(fd); |
745 | fd = fd_tmp; | 745 | fd = fd_tmp; |
746 | xlseek(fd, 0, SEEK_SET); | ||
746 | } | 747 | } |
747 | fp[i] = fdopen(fd, "r"); | 748 | fp[i] = fdopen(fd, "r"); |
748 | } | 749 | } |
diff --git a/testsuite/diff.tests b/testsuite/diff.tests index 6de46483b..84d853852 100755 --- a/testsuite/diff.tests +++ b/testsuite/diff.tests | |||
@@ -44,6 +44,17 @@ testing "diff of stdin, twice" \ | |||
44 | "" \ | 44 | "" \ |
45 | "stdin" | 45 | "stdin" |
46 | 46 | ||
47 | testing "diff of empty file against stdin" \ | ||
48 | "diff -u - input | $TRIM_TAB" \ | ||
49 | "\ | ||
50 | --- - | ||
51 | +++ input | ||
52 | @@ -1 +0,0 @@ | ||
53 | -a | ||
54 | " \ | ||
55 | "" \ | ||
56 | "a\n" | ||
57 | |||
47 | testing "diff of empty file against nonempty one" \ | 58 | testing "diff of empty file against nonempty one" \ |
48 | "diff -u - input | $TRIM_TAB" \ | 59 | "diff -u - input | $TRIM_TAB" \ |
49 | "\ | 60 | "\ |