Re: Opening stdin/stdout in binary mode on Windows

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: Opening stdin/stdout in binary mode on Windows
Дата
Msg-id 200502012248.j11MmLr04997@candle.pha.pa.us
обсуждение исходный текст
Ответ на Re: Opening stdin/stdout in binary mode on Windows  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers-win32
Well, that is a nifty trick.  Great to have that solved with no
documentation changes required.

Without this fix we were going to have tons of headaches.

---------------------------------------------------------------------------

Tom Lane wrote:
> 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
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
>       subscribe-nomail command to majordomo@postgresql.org so that your
>       message can get through to the mailing list cleanly
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

В списке pgsql-hackers-win32 по дате отправления:

Предыдущее
От: "Hiroshi Saito"
Дата:
Сообщение: Re: simple doubt with shfolder.lib?
Следующее
От: "Merlin Moncure"
Дата:
Сообщение: Re: Opening stdin/stdout in binary mode on Windows