diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2017-07-14 16:02:53 +0300 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2017-07-14 16:03:12 +0300 |
commit | f20d58a6f7b68b731c94a639e4c0802e8a0acb5b (patch) | |
tree | c446c2d9cbcee0fe0e0b69959fac9a85bf152dc5 /src/bin/pg_basebackup/pg_basebackup.c | |
parent | 3fbebd781a44578fe79867af0d04d3803ee6fba6 (diff) |
Fix pg_basebackup output to stdout on Windows.
When writing a backup to stdout with pg_basebackup on Windows, put stdout
to binary mode. Any CR bytes in the output will otherwise be output
incorrectly as CR+LF.
In the passing, standardize on using "_setmode" instead of "setmode", for
the sake of consistency. They both do the same thing, but according to
MSDN documentation, setmode is deprecated.
Fixes bug #14634, reported by Henry Boehlert. Patch by Haribabu Kommi.
Backpatch to all supported versions.
Discussion: https://www.postgresql.org/message-id/20170428082818.24366.13134@wrigleys.postgresql.org
Diffstat (limited to 'src/bin/pg_basebackup/pg_basebackup.c')
-rw-r--r-- | src/bin/pg_basebackup/pg_basebackup.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/bin/pg_basebackup/pg_basebackup.c b/src/bin/pg_basebackup/pg_basebackup.c index 60ead91a9da..17b8a8bbe12 100644 --- a/src/bin/pg_basebackup/pg_basebackup.c +++ b/src/bin/pg_basebackup/pg_basebackup.c @@ -795,6 +795,10 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum) */ if (strcmp(basedir, "-") == 0) { +#ifdef WIN32 + _setmode(fileno(stdout), _O_BINARY); +#endif + #ifdef HAVE_LIBZ if (compresslevel != 0) { |