From: Jonathan Nieder Date: Mon, 11 Oct 2010 02:51:21 +0000 (-0500) Subject: vcs-svn: allow input errors to be detected promptly X-Git-Tag: v1.7.5-rc0~3^2~15 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=efc749b48f729992d838484d652ba24f5291ee28;p=git.git 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 Signed-off-by: David Barr Signed-off-by: Jonathan Nieder --- diff --git a/vcs-svn/line_buffer.c b/vcs-svn/line_buffer.c index aedf105b7..eb8a6a7f7 100644 --- a/vcs-svn/line_buffer.c +++ b/vcs-svn/line_buffer.c @@ -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); diff --git a/vcs-svn/line_buffer.h b/vcs-svn/line_buffer.h index 96ce966a2..3c9629e09 100644 --- a/vcs-svn/line_buffer.h +++ b/vcs-svn/line_buffer.h @@ -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);