]> granicus.if.org Git - jq/commitdiff
Added rawfile
authorDavid Fetter <david@fetter.org>
Fri, 27 Oct 2017 22:46:57 +0000 (18:46 -0400)
committerNicolas Williams <nico@cryptonector.com>
Mon, 11 Dec 2017 18:17:17 +0000 (12:17 -0600)
In passing, clean remnants of argfile from slurpfile docs.

docs/content/3.manual/manual.yml
src/main.c

index 91209a1e3e0b7719d7132259bbfd55782fbce1c6..34ef085fbd2f5f3568e23f01a81021f8cb84f058 100644 (file)
@@ -236,10 +236,17 @@ sections:
 
         This option reads all the JSON texts in the named file and binds
         an array of the parsed JSON values to the given global variable.
-        If you run jq with `--argfile foo bar`, then `$foo` is available
+        If you run jq with `--slurpfile foo bar`, then `$foo` is available
         in the program and has an array whose elements correspond to the
         texts in the file named `bar`.
 
+      * `--rawfile variable-name filename`:
+
+        This option reads in the named file and binds its contents to the given
+        global variable.  If you run jq with `--rawfile foo bar`, then `$foo` is
+        available in the program and has a string whose contents are to the texs
+        in the file named `bar`.
+
       * `--argfile variable-name filename`:
 
         Do not use.  Use `--slurpfile` instead.
index a7f50b5135551f54a1db75e8049a44192fbed486..be436dd8c53d71fd1331d08adc117e1d6030bb09 100644 (file)
@@ -83,6 +83,7 @@ static void usage(int code, int keep_it_short) {
       "  --arg a v        set variable $a to value <v>;\n"
       "  --argjson a v    set variable $a to JSON value <v>;\n"
       "  --slurpfile a f  set variable $a to an array of JSON texts read from <f>;\n"
+      "  --rawfile a f    set variable $a to a string consisting of the contents of <f>;\n"
       "  --args           remaining arguments are string arguments, not files;\n"
       "  --jsonargs       remaining arguments are JSON arguments, not files;\n"
       "  --               terminates argument processing;\n\n"
@@ -443,10 +444,14 @@ int main(int argc, char* argv[]) {
         continue;
       }
       if (isoption(argv[i], 0, "argfile", &short_opts) ||
+          isoption(argv[i], 0, "rawfile", &short_opts) ||
           isoption(argv[i], 0, "slurpfile", &short_opts)) {
+        int raw = isoption(argv[i], 0, "rawfile", &short_opts);
         const char *which;
         if (isoption(argv[i], 0, "argfile", &short_opts))
           which = "argfile";
+        else if (raw)
+          which = "rawfile";
         else
           which = "slurpfile";
         if (i >= argc - 2) {
@@ -454,7 +459,7 @@ int main(int argc, char* argv[]) {
           die();
         }
         if (!jv_object_has(jv_copy(program_arguments), jv_string(argv[i+1]))) {
-          jv data = jv_load_file(argv[i+2], 0);
+          jv data = jv_load_file(argv[i+2], raw);
           if (!jv_is_valid(data)) {
             data = jv_invalid_get_msg(data);
             fprintf(stderr, "%s: Bad JSON in --%s %s %s: %s\n", progname, which,