Re: Opening stdin/stdout in binary mode on Windows

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Opening stdin/stdout in binary mode on Windows
Дата
Msg-id 16907.1106764636@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Opening stdin/stdout in binary mode on Windows  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: Opening stdin/stdout in binary mode on Windows  (Bruce Momjian <pgman@candle.pha.pa.us>)
Список 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 по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Opening stdin/stdout in binary mode on Windows
Следующее
От: "Merlin Moncure"
Дата:
Сообщение: Re: Opening stdin/stdout in binary mode on Windows