X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=tests%2Ftest_decode1.c;h=a2c7f4281a48bdd3fa4b6f79d0fe706d0ea0b323;hb=6dfba365b00175eae7e8b83aaf5d29ce190fd9eb;hp=cc4688dcfb5d8aa96d4a3650d823825ec446e0ff;hpb=a8d0172507d59b73b95f766aa7644147fd060f20;p=apps%2Flow-level-can-service.git diff --git a/tests/test_decode1.c b/tests/test_decode1.c index cc4688d..a2c7f42 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");