From: Nicolas Williams Date: Sun, 24 Mar 2019 19:39:58 +0000 (-0500) Subject: Add -b / --binary option for Windows X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0dab2b18d73e561f5118011a65cc9877bf21c110;p=jq Add -b / --binary option for Windows --- diff --git a/docs/content/manual/manual.yml b/docs/content/manual/manual.yml index ef609a6..e721ddf 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 34d2c7e..9d539eb 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;