summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Williams <nico@cryptonector.com>2019-03-24 14:39:58 -0500
committerNicolas Williams <nico@cryptonector.com>2019-03-24 23:23:16 -0500
commit0dab2b18d73e561f5118011a65cc9877bf21c110 (patch)
treed4e212238e3a1915a433b497748ca35071940448
parent3e0a11888644fd7660af2ac241cd5c97cf12feb4 (diff)
Add -b / --binary option for Windows
-rw-r--r--docs/content/manual/manual.yml6
-rw-r--r--src/main.c10
2 files changed, 16 insertions, 0 deletions
diff --git a/docs/content/manual/manual.yml b/docs/content/manual/manual.yml
index ef609a64..e721ddfa 100644
--- a/docs/content/manual/manual.yml
+++ b/docs/content/manual/manual.yml
@@ -164,6 +164,12 @@ sections:
Colors can be configured with the `JQ_COLORS` environment
variable (see below).
+ * `--binary` / `-b`:
+
+ Windows users using WSL, MSYS2, or Cygwin, should use this option
+ when using a native jq.exe, otherwise jq will turn newlines (LFs)
+ into carriage-return-then-newline (CRLF).
+
* `--ascii-output` / `-a`:
jq usually outputs non-ASCII Unicode codepoints as UTF-8, even
diff --git a/src/main.c b/src/main.c
index 34d2c7e7..9d539eb2 100644
--- a/src/main.c
+++ b/src/main.c
@@ -394,6 +394,16 @@ int main(int argc, char* argv[]) {
options |= RAW_OUTPUT | RAW_NO_LF;
if (!short_opts) continue;
}
+ if (isoption(argv[i], 'b', "binary", &short_opts)) {
+#ifdef WIN32
+ fflush(stdout);
+ fflush(stderr);
+ _setmode(fileno(stdin), _O_BINARY);
+ _setmode(fileno(stdout), _O_BINARY);
+ _setmode(fileno(stderr), _O_BINARY);
+ if (!short_opts) continue;
+#endif
+ }
if (isoption(argv[i], 0, "tab", &short_opts)) {
dumpopts &= ~JV_PRINT_INDENT_FLAGS(7);
dumpopts |= JV_PRINT_TAB | JV_PRINT_PRETTY;