diff: fix a bug in diffing against stdin. Closes 7784
No binary (build failed)
—
(log yok)
| @@ -740,9 +740,10 @@ static int diffreg(char *file[2]) | |
| unlink(name); | |
| if (bb_copyfd_eof(fd, fd_tmp) < 0) | |
| xfunc_die(); | |
| - | if (fd) /* Prevents closing of stdin */ |
| + | if (fd != STDIN_FILENO) |
| close(fd); | |
| fd = fd_tmp; | |
| + | xlseek(fd, 0, SEEK_SET); |
| } | |
| fp[i] = fdopen(fd, "r"); | |
| } | |
| @@ -44,6 +44,17 @@ testing "diff of stdin, twice" \ | |
| "" \ | |
| "stdin" | |
| + | testing "diff of empty file against stdin" \ |
| + | "diff -u - input | $TRIM_TAB" \ |
| + | "\ |
| + | --- - |
| + | +++ input |
| + | @@ -1 +0,0 @@ |
| + | -a |
| + | " \ |
| + | "" \ |
| + | "a\n" |
| + | |
| testing "diff of empty file against nonempty one" \ | |
| "diff -u - input | $TRIM_TAB" \ | |
| "\ | |