Re: Opening stdin/stdout in binary mode on Windows - Mailing list pgsql-hackers-win32

From Tom Lane
Subject Re: Opening stdin/stdout in binary mode on Windows
Date
Msg-id 16907.1106764636@sss.pgh.pa.us
Whole thread Raw
In response to Opening stdin/stdout in binary mode on Windows  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Opening stdin/stdout in binary mode on Windows  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-hackers-win32
I wrote:
> Can anyone suggest a way that does work to do binary I/O
> on stdout?  What about reading from stdin?

After a bit of googling I came up with the attached patch.  I am not in
a position to test it, however.  Can anyone try it out?

            regards, tom lane

*** src/bin/pg_dump/pg_backup_archiver.c~    Tue Jan 25 17:44:31 2005
--- src/bin/pg_dump/pg_backup_archiver.c    Wed Jan 26 13:34:33 2005
***************
*** 29,34 ****
--- 29,38 ----
  #include <ctype.h>
  #include <unistd.h>

+ #ifdef WIN32
+ #include <io.h>
+ #endif
+
  #include "pqexpbuffer.h"
  #include "libpq/libpq-fs.h"

***************
*** 1709,1714 ****
--- 1713,1731 ----
      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)
+     {
+         setmode(fileno(stdout), O_BINARY);
+         setmode(fileno(stdin), O_BINARY);
+     }
+ #endif
+
  #if 0
      write_msg(modulename, "archive format is %d\n", fmt);
  #endif

pgsql-hackers-win32 by date:

Previous
From: Tom Lane
Date:
Subject: Opening stdin/stdout in binary mode on Windows
Next
From: "Merlin Moncure"
Date:
Subject: Re: Opening stdin/stdout in binary mode on Windows