diff options
author | Jonathan Nieder <jrnieder@gmail.com> | 2010-10-10 21:41:06 -0500 |
---|---|---|
committer | Jonathan Nieder <jrnieder@gmail.com> | 2011-02-26 04:57:59 -0600 |
commit | e5e45ca1e35482d120a7ce776cf208369edcc459 (patch) | |
tree | bb050fff933928d0d54a66a2afeebab568ee636a /test-line-buffer.c | |
parent | d350822fa7d14052713bea0ec62ff1246d8a2f7a (diff) | |
download | git-e5e45ca1e35482d120a7ce776cf208369edcc459.tar.gz |
vcs-svn: teach line_buffer to handle multiple input files
Collect the line_buffer state in a newly public line_buffer struct.
Callers can use multiple line_buffers to manage input from multiple
files at a time.
svn-fe's delta applier will use this to stream a delta from svnrdump
and the preimage it applies to from fast-import at the same time.
The tests don't take advantage of the new features, but I think that's
okay. It is easier to find lingering examples of nonreentrant code by
searching for "static" in line_buffer.c.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Diffstat (limited to 'test-line-buffer.c')
-rw-r--r-- | test-line-buffer.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/test-line-buffer.c b/test-line-buffer.c index c11bf7f967..f9af892d28 100644 --- a/test-line-buffer.c +++ b/test-line-buffer.c @@ -22,25 +22,26 @@ static uint32_t strtouint32(const char *s) int main(int argc, char *argv[]) { + struct line_buffer buf = LINE_BUFFER_INIT; char *s; if (argc != 1) usage("test-line-buffer < input.txt"); - if (buffer_init(NULL)) + if (buffer_init(&buf, NULL)) die_errno("open error"); - while ((s = buffer_read_line())) { - s = buffer_read_string(strtouint32(s)); + while ((s = buffer_read_line(&buf))) { + s = buffer_read_string(&buf, strtouint32(s)); fputs(s, stdout); fputc('\n', stdout); - buffer_skip_bytes(1); - if (!(s = buffer_read_line())) + buffer_skip_bytes(&buf, 1); + if (!(s = buffer_read_line(&buf))) break; - buffer_copy_bytes(strtouint32(s) + 1); + buffer_copy_bytes(&buf, strtouint32(s) + 1); } - if (buffer_deinit()) + if (buffer_deinit(&buf)) die("input error"); if (ferror(stdout)) die("output error"); - buffer_reset(); + buffer_reset(&buf); return 0; } |