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");