Avoid changing stdin/stdout to binary mode on Windows unless that is

really the source or destination of the archive.  I think this will
resolve recent complaints that password prompting is broken in pg_restore
on Windows.  Note that password prompting and reading from stdin is an
unworkable combination on Windows ... but that was true anyway.
This commit is contained in:
Tom Lane 2005-09-11 00:36:35 +00:00
parent 16acb8bfd3
commit 3e711451f1

View File

@ -15,7 +15,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.101.4.7 2005/05/17 17:30:41 tgl Exp $
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.101.4.8 2005/09/11 00:36:35 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -1714,11 +1714,12 @@ _allocAH(const char *FileSpec, const ArchiveFormat fmt,
/*
* 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
* formats. Force stdin/stdout into binary mode if that is what
* we are using.
*/
#ifdef WIN32
if (fmt != archNull)
if (fmt != archNull &&
(AH->fSpec == NULL || strcmp(AH->fSpec, "") == 0))
{
if (mode == archModeWrite)
setmode(fileno(stdout), O_BINARY);