]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Avoid changing stdin/stdout to binary mode on Windows unless that is
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 11 Sep 2005 00:36:35 +0000 (00:36 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 11 Sep 2005 00:36:35 +0000 (00:36 +0000)
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.

src/bin/pg_dump/pg_backup_archiver.c

index 0487ce7f50cc9e761b1c156a094054e06a607cec..9febb145683bffe8cb8fde220c28918bf24fc7e3 100644 (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);