diff options
-rw-r--r-- | NEWS | 6 | ||||
-rw-r--r-- | src/split.c | 4 | ||||
-rwxr-xr-x | tests/split/l-chunk | 3 |
3 files changed, 11 insertions, 2 deletions
@@ -29,6 +29,12 @@ GNU coreutils NEWS -*- outline -*- and NcFsd file systems. This did not affect Unix/Linux-based kernels. [bug introduced in coreutils-8.0, when rm began using fts] + split -n 1/2 FILE no longer fails when operating on a growing file, or + (on some systems) when operating on a non-regular file like /dev/zero. + It would report "/dev/zero: No such file or directory" even though + the file obviously exists. Same for -n l/2. + [bug introduced in coreutils-8.8, with the addition of the -n option] + stat -f now recognizes the FhGFS and PipeFS file system types. tac no longer fails to handle two or more non-seekable inputs diff --git a/src/split.c b/src/split.c index 5b00fe804..2eb343b15 100644 --- a/src/split.c +++ b/src/split.c @@ -623,11 +623,11 @@ lines_chunk_split (uintmax_t k, uintmax_t n, char *buf, size_t bufsize, { char *bp = buf, *eob; size_t n_read = full_read (STDIN_FILENO, buf, bufsize); - n_read = MIN (n_read, file_size - n_written); if (n_read < bufsize && errno) error (EXIT_FAILURE, errno, "%s", infile); else if (n_read == 0) break; /* eof. */ + n_read = MIN (n_read, file_size - n_written); chunk_truncated = false; eob = buf + n_read; @@ -718,11 +718,11 @@ bytes_chunk_extract (uintmax_t k, uintmax_t n, char *buf, size_t bufsize, while (start < end) { size_t n_read = full_read (STDIN_FILENO, buf, bufsize); - n_read = MIN (n_read, end - start); if (n_read < bufsize && errno) error (EXIT_FAILURE, errno, "%s", infile); else if (n_read == 0) break; /* eof. */ + n_read = MIN (n_read, end - start); if (full_write (STDOUT_FILENO, buf, n_read) != n_read && ! ignorable (errno)) error (EXIT_FAILURE, errno, "%s", quote ("-")); diff --git a/tests/split/l-chunk b/tests/split/l-chunk index dd92b7002..c4e696815 100755 --- a/tests/split/l-chunk +++ b/tests/split/l-chunk @@ -40,6 +40,9 @@ split -n l/2 /dev/zero test "$(stat -c %s x* | wc -l)" = '2' || fail=1 rm x?? +# Repeat the above, but with 1/2, not l/2: +split -n 1/2 /dev/zero || fail=1 + # Ensure --elide-empty-files is honored split -e -n l/10 /dev/null || fail=1 stat x?? 2>/dev/null && fail=1 |