diff options
author | John Stamp <jstamp@users.sourceforge.net> | 2009-07-19 20:06:04 -0700 |
---|---|---|
committer | Lloyd Hilaiel <lloyd@hilaiel.com> | 2009-09-09 08:53:36 -0600 |
commit | 6bcb5f23c642e8428c5e4e4b644d4dd53e73583a (patch) | |
tree | 8e53dc8b983fdcf319461c8ce97f5f5c4de0ecf7 /reformatter | |
parent | 4616b3a4abae56af75e9976a69ba6326de80a5c3 (diff) | |
download | yajl-6bcb5f23c642e8428c5e4e4b644d4dd53e73583a.tar.gz |
Add support for combining short options
Diffstat (limited to 'reformatter')
-rw-r--r-- | reformatter/json_reformat.c | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/reformatter/json_reformat.c b/reformatter/json_reformat.c index d39678d..01fa375 100644 --- a/reformatter/json_reformat.c +++ b/reformatter/json_reformat.c @@ -120,7 +120,8 @@ static yajl_callbacks callbacks = { static void usage(const char * progname) { - fprintf(stderr, "usage: %s <filename>\n" + fprintf(stderr, "%s: reformat json from stdin\n" + "usage: json_reformat [options]\n" " -m minimize json rather than beautify (default)\n" " -u allow invalid UTF8 inside strings during parsing\n", progname); @@ -143,20 +144,25 @@ main(int argc, char ** argv) int retval = 0, done = 0; /* check arguments.*/ - if (argc > 1 && argc < 4) { + int a = 1; + while ((a < argc) && (argv[a][0] == '-') && (strlen(argv[a]) > 1)) { int i; - - for (i=1; i < argc;i++) { - if (!strcmp("-m", argv[i])) { - conf.beautify = 0; - } else if (!strcmp("-u", argv[i])) { - cfg.checkUTF8 = 0; - } else { - fprintf(stderr, "unrecognized option: '%s'\n\n", argv[i]); - usage(argv[0]); + for ( i=1; i < strlen(argv[a]); i++) { + switch (argv[a][i]) { + case 'm': + conf.beautify = 0; + break; + case 'u': + cfg.checkUTF8 = 0; + break; + default: + fprintf(stderr, "unrecognized option: '%c'\n\n", argv[a][i]); + usage(argv[0]); } } - } else if (argc != 1) { + ++a; + } + if (a < argc) { usage(argv[0]); } |