Re: Opening stdin/stdout in binary mode on Windows

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-hackers-win32(at)postgresql(dot)org
Subject: Re: Opening stdin/stdout in binary mode on Windows
Date: 2005-02-01 22:48:21
Message-ID: 200502012248.j11MmLr04997@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general 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(at)postgresql(dot)org so that your
> message can get through to the mailing list cleanly
>

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

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Christopher Browne 2005-02-01 23:17:20 Re: Postgresql and Athlon64 ?
Previous Message Niederland 2005-02-01 22:30:57 Re: postgresql.conf - add_missing_from

Browse pgsql-hackers-win32 by date

  From Date Subject
Next Message Merlin Moncure 2005-02-02 17:55:13 Re: Opening stdin/stdout in binary mode on Windows
Previous Message Hiroshi Saito 2005-02-01 20:18:22 Re: simple doubt with shfolder.lib?