Date: Sun, 10 Oct 2010 21:51:21 -0500
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())
return error("input error: %s", strerror(errno));
Signed-off-by: Jonathan Nieder <redacted>
---
Has been in use for a while, but still I'd be interested to know
if this is sane.
vcs-svn/line_buffer.c | 5 +++++
vcs-svn/line_buffer.h | 1 +
2 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/vcs-svn/line_buffer.c b/vcs-svn/line_buffer.c
index 1543567..1b5ac8a 100644
--- a/vcs-svn/line_buffer.c
+++ b/vcs-svn/line_buffer.c
@@ -35,6 +35,11 @@ int buffer_deinit(void)
return err;
}
+int buffer_ferror(void)
+{
+ return ferror(infile);
+}
+
/* Read a line without trailing newline. */
char *buffer_read_line(void)
{diff --git a/vcs-svn/line_buffer.h b/vcs-svn/line_buffer.h
index 9c78ae1..5a19873 100644
--- a/vcs-svn/line_buffer.h
+++ b/vcs-svn/line_buffer.h
@@ -3,6 +3,7 @@
int buffer_init(const char *filename);
int buffer_deinit(void);
+int buffer_ferror(void);
char *buffer_read_line(void);
char *buffer_read_string(uint32_t len);
void buffer_copy_bytes(uint32_t len);
--
1.7.2.3.554.gc9b5c.dirty