Skip to content

Commit

Permalink
vcs-svn: allow input errors to be detected promptly
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jonathan Nieder committed Mar 7, 2011
1 parent e75316d commit efc749b
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 0 deletions.
5 changes: 5 additions & 0 deletions vcs-svn/line_buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,11 @@ long buffer_tmpfile_prepare_to_read(struct line_buffer *buf)
return pos;
}

int buffer_ferror(struct line_buffer *buf)
{
return ferror(buf->infile);
}

int buffer_read_char(struct line_buffer *buf)
{
return fgetc(buf->infile);
Expand Down
1 change: 1 addition & 0 deletions vcs-svn/line_buffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ int buffer_tmpfile_init(struct line_buffer *buf);
FILE *buffer_tmpfile_rewind(struct line_buffer *buf); /* prepare to write. */
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_string(struct line_buffer *buf, uint32_t len);
int buffer_read_char(struct line_buffer *buf);
Expand Down

0 comments on commit efc749b

Please sign in to comment.