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)
|
if (strcmp(basedir, "-") == 0)
|
||||||
{
|
{
|
||||||
|
#ifdef WIN32
|
||||||
|
_setmode(fileno(stdout), _O_BINARY);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_LIBZ
|
#ifdef HAVE_LIBZ
|
||||||
if (compresslevel != 0)
|
if (compresslevel != 0)
|
||||||
{
|
{
|
||||||
|
@ -2346,9 +2346,9 @@ _allocAH(const char *FileSpec, const ArchiveFormat fmt,
|
|||||||
(AH->fSpec == NULL || strcmp(AH->fSpec, "") == 0))
|
(AH->fSpec == NULL || strcmp(AH->fSpec, "") == 0))
|
||||||
{
|
{
|
||||||
if (mode == archModeWrite)
|
if (mode == archModeWrite)
|
||||||
setmode(fileno(stdout), O_BINARY);
|
_setmode(fileno(stdout), O_BINARY);
|
||||||
else
|
else
|
||||||
setmode(fileno(stdin), O_BINARY);
|
_setmode(fileno(stdin), O_BINARY);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user