mirror of
https://github.com/postgres/postgres.git
synced 2025-04-27 22:56:53 +03:00
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
This commit is contained in:
parent
a3ca72ae9a
commit
8046465c2e
@ -954,6 +954,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)
|
||||
{
|
||||
|
@ -2346,9 +2346,9 @@ _allocAH(const char *FileSpec, const ArchiveFormat fmt,
|
||||
(AH->fSpec == NULL || strcmp(AH->fSpec, "") == 0))
|
||||
{
|
||||
if (mode == archModeWrite)
|
||||
setmode(fileno(stdout), O_BINARY);
|
||||
_setmode(fileno(stdout), O_BINARY);
|
||||
else
|
||||
setmode(fileno(stdin), O_BINARY);
|
||||
_setmode(fileno(stdin), O_BINARY);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user