vcs-svn: allow input errors to be detected promptly
The line_buffer library silently flags input errors until
buffer_deinit time; unfortunately, by that point usually errno is
invalid. Expose the error flag so callers can check for and
report errors early for easy debugging.
some_error_prone_operation(...);
if (buffer_ferror(buf))
return error("input error: %s", strerror(errno));
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
This commit is contained in:
@@ -59,6 +59,11 @@ long buffer_tmpfile_prepare_to_read(struct line_buffer *buf)
|
|||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int buffer_ferror(struct line_buffer *buf)
|
||||||
|
{
|
||||||
|
return ferror(buf->infile);
|
||||||
|
}
|
||||||
|
|
||||||
int buffer_read_char(struct line_buffer *buf)
|
int buffer_read_char(struct line_buffer *buf)
|
||||||
{
|
{
|
||||||
return fgetc(buf->infile);
|
return fgetc(buf->infile);
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ int buffer_tmpfile_init(struct line_buffer *buf);
|
|||||||
FILE *buffer_tmpfile_rewind(struct line_buffer *buf); /* prepare to write. */
|
FILE *buffer_tmpfile_rewind(struct line_buffer *buf); /* prepare to write. */
|
||||||
long buffer_tmpfile_prepare_to_read(struct line_buffer *buf);
|
long buffer_tmpfile_prepare_to_read(struct line_buffer *buf);
|
||||||
|
|
||||||
|
int buffer_ferror(struct line_buffer *buf);
|
||||||
char *buffer_read_line(struct line_buffer *buf);
|
char *buffer_read_line(struct line_buffer *buf);
|
||||||
char *buffer_read_string(struct line_buffer *buf, uint32_t len);
|
char *buffer_read_string(struct line_buffer *buf, uint32_t len);
|
||||||
int buffer_read_char(struct line_buffer *buf);
|
int buffer_read_char(struct line_buffer *buf);
|
||||||
|
|||||||
Reference in New Issue
Block a user