Re: Opening stdin/stdout in binary mode on Windows
- From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
- To: pgsql-hackers-win32(at)postgresql(dot)org
- Subject: Re: Opening stdin/stdout in binary mode on Windows
- Date: Wed, 26 Jan 2005 13:37:16 -0500
- Message-id: <16907.1106764636@sss.pgh.pa.us> <text/plain>
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
Home |
Main Index |
Thread Index