{
/* Read a block of input. */
- size_t n_read = safe_read (input_desc, buf, bufsize);
- if (n_read == SAFE_READ_ERROR)
+ ptrdiff_t n_read = safe_read (input_desc, buf, bufsize);
+ if (n_read < 0)
{
error (0, errno, "%s", quotef (infile));
return false;
/* Read more input into INBUF. */
- size_t n_read = safe_read (input_desc, inbuf, insize);
- if (n_read == SAFE_READ_ERROR)
+ ptrdiff_t n_read = safe_read (input_desc, inbuf, insize);
+ if (n_read < 0)
{
error (0, errno, "%s", quotef (infile));
write_pending (outbuf, &bpout);
static idx_t
read_input (char *dest, idx_t max_n_bytes)
{
- idx_t bytes_read;
-
if (max_n_bytes == 0)
return 0;
- bytes_read = safe_read (STDIN_FILENO, dest, max_n_bytes);
+ ptrdiff_t bytes_read = safe_read (STDIN_FILENO, dest, max_n_bytes);
if (bytes_read == 0)
have_read_eof = true;
- if (bytes_read == SAFE_READ_ERROR)
+ if (bytes_read < 0)
{
error (0, errno, _("read error"));
cleanup_fatal ();
copy_fd (int src_fd, uintmax_t n_bytes)
{
char buf[BUFSIZ];
- const size_t buf_size = sizeof (buf);
/* Copy the file contents. */
while (0 < n_bytes)
{
- size_t n_to_read = MIN (buf_size, n_bytes);
- size_t n_read = safe_read (src_fd, buf, n_to_read);
- if (n_read == SAFE_READ_ERROR)
+ idx_t n_to_read = MIN (n_bytes, sizeof buf);
+ ptrdiff_t n_read = safe_read (src_fd, buf, n_to_read);
+ if (n_read < 0)
return COPY_FD_READ_ERROR;
n_bytes -= n_read;
idx_t in_elide = n_elide;
bool first = true;
bool eof = false;
- size_t n_to_read = READ_BUFSIZE + in_elide;
+ idx_t n_to_read = READ_BUFSIZE + n_elide;
bool i;
char *b[2];
b[0] = xnmalloc (2, n_to_read);
for (i = false; ! eof ; i = !i)
{
- size_t n_read = full_read (fd, b[i], n_to_read);
- size_t delta = 0;
+ idx_t n_read = full_read (fd, b[i], n_to_read);
+ idx_t delta = 0;
if (n_read < n_to_read)
{
if (errno != 0)
LBUFFER *first, *last, *tmp;
size_t total_lines = 0; /* Total number of newlines in all buffers. */
bool ok = true;
- size_t n_read; /* Size in bytes of most recent read */
+ ptrdiff_t n_read; /* Size in bytes of most recent read */
first = last = xmalloc (sizeof (LBUFFER));
first->nbytes = first->nlines = 0;
while (true)
{
n_read = safe_read (fd, tmp->buffer, BUFSIZ);
- if (n_read == 0 || n_read == SAFE_READ_ERROR)
+ if (n_read <= 0)
break;
if (! n_elide)
free (tmp);
- if (n_read == SAFE_READ_ERROR)
+ if (n_read < 0)
{
error (0, errno, _("error reading %s"), quoteaf (filename));
ok = false;
off_t start_pos, off_t size)
{
char buffer[BUFSIZ];
- size_t bytes_read;
+ ptrdiff_t bytes_read;
off_t pos = size;
/* Set 'bytes_read' to the size of the last, probably partial, buffer;
if (elseek (fd, pos, SEEK_SET, pretty_filename) < 0)
return false;
bytes_read = safe_read (fd, buffer, bytes_read);
- if (bytes_read == SAFE_READ_ERROR)
+ if (bytes_read < 0)
{
error (0, errno, _("error reading %s"), quoteaf (pretty_filename));
return false;
{
/* Scan backward, counting the newlines in this bufferfull. */
- size_t n = bytes_read;
+ idx_t n = bytes_read;
while (n)
{
if (all_lines)
return false;
bytes_read = safe_read (fd, buffer, BUFSIZ);
- if (bytes_read == SAFE_READ_ERROR)
+ if (bytes_read < 0)
{
error (0, errno, _("error reading %s"), quoteaf (pretty_filename));
return false;
while (bytes_to_write)
{
- size_t bytes_read;
if (bytes_to_write < bytes_to_read)
bytes_to_read = bytes_to_write;
- bytes_read = safe_read (fd, buffer, bytes_to_read);
- if (bytes_read == SAFE_READ_ERROR)
+ ptrdiff_t bytes_read = safe_read (fd, buffer, bytes_to_read);
+ if (bytes_read < 0)
{
error (0, errno, _("error reading %s"), quoteaf (filename));
return false;
while (lines_to_write)
{
- size_t bytes_read = safe_read (fd, buffer, BUFSIZ);
- size_t bytes_to_write = 0;
+ ptrdiff_t bytes_read = safe_read (fd, buffer, BUFSIZ);
+ idx_t bytes_to_write = 0;
- if (bytes_read == SAFE_READ_ERROR)
+ if (bytes_read < 0)
{
error (0, errno, _("error reading %s"), quoteaf (filename));
return false;
static char a_buff[CMP_BLOCK_SIZE];
static char b_buff[CMP_BLOCK_SIZE];
- size_t size;
+ idx_t size;
while (0 < (size = full_read (a_fd, a_buff, sizeof a_buff))) {
if (size != full_read (b_fd, b_buff, sizeof b_buff))
return false;
while (true)
{
- char *buf = (char *) malloc (BUFFER_SIZE);
- size_t bytes_read;
+ char *buf = malloc (BUFFER_SIZE);
if (buf == nullptr)
{
ok = false;
break;
}
- bytes_read = full_read (STDIN_FILENO, buf, BUFFER_SIZE);
- if (bytes_read != buffer_size && errno != 0)
+ idx_t bytes_read = full_read (STDIN_FILENO, buf, BUFFER_SIZE);
+ if (bytes_read != BUFFER_SIZE && errno != 0)
error (EXIT_FAILURE, errno, _("read error"));
{
char *past_end;
/* Length of the record growing in 'G_buffer'. */
- size_t saved_record_size;
+ ptrdiff_t saved_record_size;
/* True if 'output' has not been called yet for any file.
Only used when the separator is attached to the preceding record. */
/* Now scan forward, looking for end of file. */
while (saved_record_size == read_size)
{
- size_t nread = safe_read (input_fd, G_buffer, read_size);
+ ptrdiff_t nread = safe_read (input_fd, G_buffer, read_size);
if (nread == 0)
break;
saved_record_size = nread;
- if (saved_record_size == SAFE_READ_ERROR)
+ if (saved_record_size < 0)
break;
file_pos += nread;
}
- if (saved_record_size == SAFE_READ_ERROR)
+ if (saved_record_size < 0)
{
error (0, errno, _("%s: read error"), quotef (file));
return false;
while (true)
{
- size_t bytes_read = safe_read (input_fd, G_buffer, read_size);
+ ptrdiff_t bytes_read = safe_read (input_fd, G_buffer, read_size);
if (bytes_read == 0)
break;
- if (bytes_read == SAFE_READ_ERROR)
+ if (bytes_read < 0)
{
error (0, errno, _("%s: read error"), quotef (file));
return -1;
while (true)
{
char buffer[BUFSIZ];
- size_t n = MIN (n_remaining, BUFSIZ);
- size_t bytes_read = safe_read (fd, buffer, n);
- if (bytes_read == SAFE_READ_ERROR)
+ idx_t n = MIN (n_remaining, BUFSIZ);
+ ptrdiff_t bytes_read = safe_read (fd, buffer, n);
+ if (bytes_read < 0)
{
if (errno != EAGAIN)
error (EXIT_FAILURE, errno, _("error reading %s"),
uintmax_t *read_pos)
{
char *buffer;
- size_t bytes_read;
blksize_t bufsize = BUFSIZ;
off_t pos = end_pos;
bool ok = true;
/* Set 'bytes_read' to the size of the last, probably partial, buffer;
0 < 'bytes_read' <= 'bufsize'. */
- bytes_read = (pos - start_pos) % bufsize;
+ ptrdiff_t bytes_read = (pos - start_pos) % bufsize;
if (bytes_read == 0)
bytes_read = bufsize;
/* Make 'pos' a multiple of 'bufsize' (0 if the file is short), so that all
pos -= bytes_read;
xlseek (fd, pos, SEEK_SET, pretty_filename);
bytes_read = safe_read (fd, buffer, bytes_read);
- if (bytes_read == SAFE_READ_ERROR)
+ if (bytes_read < 0)
{
error (0, errno, _("error reading %s"), quoteaf (pretty_filename));
ok = false;
{
/* Scan backward, counting the newlines in this bufferfull. */
- size_t n = bytes_read;
+ idx_t n = bytes_read;
while (n)
{
char const *nl;
xlseek (fd, pos, SEEK_SET, pretty_filename);
bytes_read = safe_read (fd, buffer, bufsize);
- if (bytes_read == SAFE_READ_ERROR)
+ if (bytes_read < 0)
{
error (0, errno, _("error reading %s"), quoteaf (pretty_filename));
ok = false;
LBUFFER *first, *last, *tmp;
size_t total_lines = 0; /* Total number of newlines in all buffers. */
bool ok = true;
- size_t n_read; /* Size in bytes of most recent read */
+ ptrdiff_t n_read; /* Size in bytes of most recent read */
first = last = xmalloc (sizeof (LBUFFER));
first->nbytes = first->nlines = 0;
while (true)
{
n_read = safe_read (fd, tmp->buffer, BUFSIZ);
- if (n_read == 0 || n_read == SAFE_READ_ERROR)
+ if (n_read <= 0)
break;
tmp->nbytes = n_read;
*read_pos += n_read;
free (tmp);
- if (n_read == SAFE_READ_ERROR)
+ if (n_read < 0)
{
error (0, errno, _("error reading %s"), quoteaf (pretty_filename));
ok = false;
size_t i; /* Index into buffers. */
size_t total_bytes = 0; /* Total characters in all buffers. */
bool ok = true;
- size_t n_read;
+ ptrdiff_t n_read;
first = last = xmalloc (sizeof (CBUFFER));
first->nbytes = 0;
while (true)
{
n_read = safe_read (fd, tmp->buffer, BUFSIZ);
- if (n_read == 0 || n_read == SAFE_READ_ERROR)
+ if (n_read <= 0)
break;
*read_pos += n_read;
tmp->nbytes = n_read;
free (tmp);
- if (n_read == SAFE_READ_ERROR)
+ if (n_read < 0)
{
error (0, errno, _("error reading %s"), quoteaf (pretty_filename));
ok = false;
while (0 < n_bytes)
{
- size_t bytes_read = safe_read (fd, buffer, BUFSIZ);
+ ptrdiff_t bytes_read = safe_read (fd, buffer, BUFSIZ);
if (bytes_read == 0)
return -1;
- if (bytes_read == SAFE_READ_ERROR)
+ if (bytes_read < 0)
{
error (0, errno, _("error reading %s"), quoteaf (pretty_filename));
return 1;
while (true)
{
char buffer[BUFSIZ];
- size_t bytes_read = safe_read (fd, buffer, BUFSIZ);
+ ptrdiff_t bytes_read = safe_read (fd, buffer, BUFSIZ);
if (bytes_read == 0) /* EOF */
return -1;
- if (bytes_read == SAFE_READ_ERROR) /* error */
+ if (bytes_read < 0) /* error */
{
error (0, errno, _("error reading %s"), quoteaf (pretty_filename));
return 1;
size_t evlen = 0;
char *evbuf;
size_t evbuf_off = 0;
- size_t len = 0;
wd_to_name = hash_initialize (n_files, nullptr, wd_hasher, wd_comparator,
nullptr);
ensure that watched files can be re-added when following by name.
This loop blocks on the 'safe_read' call until a new event is notified.
But when --pid=P is specified, tail usually waits via poll. */
+ ptrdiff_t len = 0;
while (true)
{
struct File_spec *fspec;
/* For kernels prior to 2.6.21, read returns 0 when the buffer
is too small. */
- if ((len == 0 || (len == SAFE_READ_ERROR && errno == EINVAL))
+ if ((len == 0 || (len < 0 && errno == EINVAL))
&& max_realloc--)
{
len = 0;
continue;
}
- if (len == 0 || len == SAFE_READ_ERROR)
+ if (len <= 0)
error (EXIT_FAILURE, errno, _("error reading inotify event"));
}
static size_t
plain_read (char *buf, size_t size)
{
- size_t nr = safe_read (STDIN_FILENO, buf, size);
- if (nr == SAFE_READ_ERROR)
+ ptrdiff_t nr = safe_read (STDIN_FILENO, buf, size);
+ if (nr < 0)
error (EXIT_FAILURE, errno, _("read error"));
return nr;
}