summaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
authorNicolas Williams <nico@cryptonector.com>2015-05-29 14:19:23 -0500
committerNicolas Williams <nico@cryptonector.com>2015-05-29 14:24:33 -0500
commit1de56bc5df52cf187ea5c27098f360d4b277d89d (patch)
tree7f02b23a1d2dd6a34df211285ee2b703817e9299 /main.c
parent8a79f1d0a36fcd8ce8ff0800282605d9bdee55c4 (diff)
Add --slurpfile
Diffstat (limited to 'main.c')
-rw-r--r--main.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/main.c b/main.c
index 6b4d5b92..813ff34d 100644
--- a/main.c
+++ b/main.c
@@ -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);