diff options
author | Nicolas Williams <nico@cryptonector.com> | 2015-05-29 14:19:23 -0500 |
---|---|---|
committer | Nicolas Williams <nico@cryptonector.com> | 2015-05-29 14:24:33 -0500 |
commit | 1de56bc5df52cf187ea5c27098f360d4b277d89d (patch) | |
tree | 7f02b23a1d2dd6a34df211285ee2b703817e9299 /main.c | |
parent | 8a79f1d0a36fcd8ce8ff0800282605d9bdee55c4 (diff) |
Add --slurpfile
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 15 |
1 files changed, 11 insertions, 4 deletions
@@ -305,9 +305,15 @@ int main(int argc, char* argv[]) { i += 2; // skip the next two arguments if (!short_opts) continue; } - if (isoption(argv[i], 0, "argfile", &short_opts)) { + if (isoption(argv[i], 0, "argfile", &short_opts) || + isoption(argv[i], 0, "slurpfile", &short_opts)) { + const char *which; + if (isoption(argv[i], 0, "argfile", &short_opts)) + which = "argfile"; + else + which = "slurpfile"; if (i >= argc - 2) { - fprintf(stderr, "%s: --argfile takes two parameters (e.g. -a varname filename)\n", progname); + fprintf(stderr, "%s: --%s takes two parameters (e.g. -a varname filename)\n", progname, which); die(); } jv arg = jv_object(); @@ -315,14 +321,15 @@ int main(int argc, char* argv[]) { jv data = jv_load_file(argv[i+2], 0); if (!jv_is_valid(data)) { data = jv_invalid_get_msg(data); - fprintf(stderr, "%s: Bad JSON in --argfile %s %s: %s\n", progname, + fprintf(stderr, "%s: Bad JSON in --%s %s %s: %s\n", progname, which, argv[i+1], argv[i+2], jv_string_value(data)); jv_free(data); jv_free(arg); ret = 2; goto out; } - if (jv_get_kind(data) == JV_KIND_ARRAY && jv_array_length(jv_copy(data)) == 1) + if (isoption(argv[i], 0, "argfile", &short_opts) && + jv_get_kind(data) == JV_KIND_ARRAY && jv_array_length(jv_copy(data)) == 1) data = jv_array_get(data, 0); arg = jv_object_set(arg, jv_string("value"), data); program_arguments = jv_array_append(program_arguments, arg); |