summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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;