summaryrefslogtreecommitdiff
path: root/test-line-buffer.c
diff options
context:
space:
mode:
authorJonathan Nieder <jrnieder@gmail.com>2010-10-11 02:41:06 (GMT)
committerJonathan Nieder <jrnieder@gmail.com>2011-02-26 10:57:59 (GMT)
commite5e45ca1e35482d120a7ce776cf208369edcc459 (patch)
treebb050fff933928d0d54a66a2afeebab568ee636a /test-line-buffer.c
parentd350822fa7d14052713bea0ec62ff1246d8a2f7a (diff)
downloadgit-e5e45ca1e35482d120a7ce776cf208369edcc459.zip
git-e5e45ca1e35482d120a7ce776cf208369edcc459.tar.gz
git-e5e45ca1e35482d120a7ce776cf208369edcc459.tar.bz2
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.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/test-line-buffer.c b/test-line-buffer.c
index c11bf7f..f9af892 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;
}