summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSerge A. Zaitsev <devnull@localhost>2010-11-22 14:52:46 +0200
committerSerge A. Zaitsev <devnull@localhost>2010-11-22 14:52:46 +0200
commit23b8487783f1fcabc164db71a9e1f5388ecb6daa (patch)
tree5c8b305201da4b87c6a1320b4f63ff5951498265
parent8e31e4d2148febcee4ee371eadcab06aa21b83e3 (diff)
Demo: option added to specify buffer size when reading
-rw-r--r--demo.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/demo.c b/demo.c
index 671029ac8..b0c4c92ac 100644
--- a/demo.c
+++ b/demo.c
@@ -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);