Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: Opening stdin/stdout in binary mode on Windows



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

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group