found to be part of a directory cycle. Before, du would issue a
"NOTIFY YOUR SYSTEM MANAGER" diagnostic and fail.
+ split now diagnoses read errors rather than silently exiting.
+ [bug introduced in coreutils-4.5.8]
+
tac would perform a double-free when given an input line longer than 16KiB.
[bug introduced in coreutils-8.3]
#include "full-read.h"
#include "full-write.h"
#include "quote.h"
-#include "safe-read.h"
#include "xfreopen.h"
#include "xstrtol.h"
do
{
n_read = full_read (STDIN_FILENO, buf, bufsize);
- if (n_read == SAFE_READ_ERROR)
+ if (n_read < bufsize && errno)
error (EXIT_FAILURE, errno, "%s", infile);
bp_out = buf;
to_read = n_read;
do
{
n_read = full_read (STDIN_FILENO, buf, bufsize);
- if (n_read == SAFE_READ_ERROR)
+ if (n_read < bufsize && errno)
error (EXIT_FAILURE, errno, "%s", infile);
bp = bp_out = buf;
eob = bp + n_read;
static void
line_bytes_split (size_t n_bytes)
{
- size_t n_read;
char *bp;
bool eof = false;
size_t n_buffered = 0;
{
/* Fill up the full buffer size from the input file. */
- n_read = full_read (STDIN_FILENO, buf + n_buffered, n_bytes - n_buffered);
- if (n_read == SAFE_READ_ERROR)
+ size_t to_read = n_bytes - n_buffered;
+ size_t n_read = full_read (STDIN_FILENO, buf + n_buffered, to_read);
+ if (n_read < to_read && errno)
error (EXIT_FAILURE, errno, "%s", infile);
n_buffered += n_read;
EOF
compare out exp || fail=1
+# Make sure split fails when it can't read input
+# (the current directory in this case)
+if ! cat . >/dev/null; then
+ # can't read() directories
+ split . && fail=1
+fi
Exit $fail