mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-30 19:00:29 +08:00
Make pg_dump and pg_restore handle binary archive formats correctly
when using stdout/stdin on Windows.
This commit is contained in:
parent
953570a899
commit
b5aef55694
@ -15,7 +15,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.101.4.2 2005/01/25 22:44:46 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.101.4.3 2005/01/26 19:44:53 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -29,6 +29,10 @@
|
||||
#include <ctype.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#ifdef WIN32
|
||||
#include <io.h>
|
||||
#endif
|
||||
|
||||
#include "pqexpbuffer.h"
|
||||
#include "libpq/libpq-fs.h"
|
||||
|
||||
@ -1709,6 +1713,21 @@ _allocAH(const char *FileSpec, const ArchiveFormat fmt,
|
||||
AH->gzOut = 0;
|
||||
AH->OF = stdout;
|
||||
|
||||
/*
|
||||
* On Windows, we need to use binary mode to read/write non-text archive
|
||||
* formats. Force stdin/stdout into binary mode in case that is what
|
||||
* we are using.
|
||||
*/
|
||||
#ifdef WIN32
|
||||
if (fmt != archNull)
|
||||
{
|
||||
if (mode == archModeWrite)
|
||||
setmode(fileno(stdout), O_BINARY);
|
||||
else
|
||||
setmode(fileno(stdin), O_BINARY);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
write_msg(modulename, "archive format is %d\n", fmt);
|
||||
#endif
|
||||
@ -1720,7 +1739,6 @@ _allocAH(const char *FileSpec, const ArchiveFormat fmt,
|
||||
|
||||
switch (AH->format)
|
||||
{
|
||||
|
||||
case archCustom:
|
||||
InitArchiveFmt_Custom(AH);
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user