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: 2005-01-26 18:37:16
Message-ID: 16907.1106764636@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general 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

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Fabio Esposito 2005-01-26 19:51:57 Re: PostgreSQL 8.0 for RH AS
Previous Message Alex Turner 2005-01-26 18:29:53 Re: text field constraint advice

Browse pgsql-hackers-win32 by date

  From Date Subject
Next Message Merlin Moncure 2005-01-26 18:41:28 Re: Opening stdin/stdout in binary mode on Windows
Previous Message Tom Lane 2005-01-25 22:51:47 Opening stdin/stdout in binary mode on Windows