summaryrefslogtreecommitdiffstats
path: root/tests/test_decode1.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_decode1.c')
-rw-r--r--tests/test_decode1.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/tests/test_decode1.c b/tests/test_decode1.c
index cc4688dc..a2c7f428 100644
--- a/tests/test_decode1.c
+++ b/tests/test_decode1.c
@@ -24,12 +24,28 @@ bool print_person(pb_istream_t *stream)
return true;
}
-int main()
+bool callback(pb_istream_t *stream, uint8_t *buf, size_t count)
{
- uint8_t buffer[512];
- size_t size = fread(buffer, 1, 512, stdin);
+ FILE *file = (FILE*)stream->state;
+ bool status;
+
+ if (buf == NULL)
+ {
+ while (count-- && fgetc(file) != EOF);
+ return count == 0;
+ }
+
+ status = (fread(buf, 1, count, file) == count);
- pb_istream_t stream = pb_istream_from_buffer(buffer, size);
+ if (feof(file))
+ stream->bytes_left = 0;
+
+ return status;
+}
+
+int main()
+{
+ pb_istream_t stream = {&callback, stdin, SIZE_MAX};
if (!print_person(&stream))
printf("Parsing failed.\n");