Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit cedd25a

Browse files
committed
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
1 parent 3b0c2db commit cedd25a

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

src/bin/pg_basebackup/pg_basebackup.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -806,6 +806,10 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum)
806806
*/
807807
if (strcmp(basedir, "-") == 0)
808808
{
809+
#ifdef WIN32
810+
_setmode(fileno(stdout), _O_BINARY);
811+
#endif
812+
809813
#ifdef HAVE_LIBZ
810814
if (compresslevel != 0)
811815
{

src/bin/pg_dump/pg_backup_archiver.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2337,9 +2337,9 @@ _allocAH(const char *FileSpec, const ArchiveFormat fmt,
23372337
(AH->fSpec == NULL || strcmp(AH->fSpec, "") == 0))
23382338
{
23392339
if (mode == archModeWrite)
2340-
setmode(fileno(stdout), O_BINARY);
2340+
_setmode(fileno(stdout), O_BINARY);
23412341
else
2342-
setmode(fileno(stdin), O_BINARY);
2342+
_setmode(fileno(stdin), O_BINARY);
23432343
}
23442344
#endif
23452345

0 commit comments

Comments
 (0)