diff options
author | Serge A. Zaitsev <devnull@localhost> | 2010-11-22 14:52:46 +0200 |
---|---|---|
committer | Serge A. Zaitsev <devnull@localhost> | 2010-11-22 14:52:46 +0200 |
commit | 23b8487783f1fcabc164db71a9e1f5388ecb6daa (patch) | |
tree | 5c8b305201da4b87c6a1320b4f63ff5951498265 | |
parent | 8e31e4d2148febcee4ee371eadcab06aa21b83e3 (diff) |
Demo: option added to specify buffer size when reading
-rw-r--r-- | demo.c | 14 |
1 files changed, 11 insertions, 3 deletions
@@ -54,9 +54,10 @@ int main(int argc, char *argv[]) { jsmn_parser parser; char *js = NULL; jsontok_t *tokens; + int block_size = 1024; int num_tokens = 100; - while ((c = getopt(argc, argv, "ht:")) != -1) { + while ((c = getopt(argc, argv, "ht:b:")) != -1) { switch (c) { case 'h': usage(); @@ -68,6 +69,12 @@ int main(int argc, char *argv[]) { exit(EXIT_FAILURE); } break; + case 'b': + block_size = atoi(optarg); + if (errno || block_size < 0) { + fprintf(stderr, "Invalid block size: %s!\n", optarg); + exit(EXIT_FAILURE); + } } } @@ -93,9 +100,9 @@ int main(int argc, char *argv[]) { jsmn_init_parser(&parser, js, tokens, num_tokens); + char *buf = malloc(block_size); while (1) { - char buf[BUFSIZ]; - r = fread(buf, 1, 1, f); + r = fread(buf, 1, block_size, f); if (r <= 0) { break; } @@ -122,6 +129,7 @@ int main(int argc, char *argv[]) { } fclose(f); + free(buf); free(tokens); free(js); |