Re: [HACKERS] 0x1A in control file on Windows

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Re: [HACKERS] 0x1A in control file on Windows
Дата
Msg-id 48D23537.5050305@enterprisedb.com
обсуждение исходный текст
Ответ на Re: [HACKERS] 0x1A in control file on Windows  (ITAGAKI Takahiro <itagaki.takahiro@oss.ntt.co.jp>)
Ответы Re: [HACKERS] 0x1A in control file on Windows  (Magnus Hagander <magnus@hagander.net>)
Список pgsql-bugs
ITAGAKI Takahiro wrote:
> Tom Lane <tgl@sss.pgh.pa.us> wrote:
> 
>> ITAGAKI Takahiro <itagaki.takahiro@oss.ntt.co.jp> writes:
>>> We probably need to add PG_BINARY when we open control files
>>> because 0x1A is an end-of-file marker on Windows.
>> Well, why is that a bug?  If the platform is so silly as to define text
>> files that way, who are we to argue?
> 
> Google says it is for for backward compatibility with CP/M
>     http://en.wikipedia.org/wiki/End-of-file
> and adding O_BINARY is the answer.
>     http://codenewbie.com/forum/standard-c-c/1208-binary-i-o-file-reading-0x1a-trouble.html

Yes, apparently that's exactly why we have PG_BINARY, see c.h:

> /*
>  *    NOTE:  this is also used for opening text files.
>  *    WIN32 treats Control-Z as EOF in files opened in text mode.
>  *    Therefore, we open files in binary mode on Win32 so we can read
>  *    literal control-Z.    The other affect is that we see CRLF, but
>  *    that is OK because we can already handle those cleanly.
>  */
> #if defined(WIN32) || defined(__CYGWIN__)
> #define PG_BINARY    O_BINARY
> #define PG_BINARY_A "ab"
> #define PG_BINARY_R "rb"
> #define PG_BINARY_W "wb"
> #else
> #define PG_BINARY    0
> #define PG_BINARY_A "a"
> #define PG_BINARY_R "r"
> #define PG_BINARY_W "w"
> #endif

I don't see anything wrong with the patch, but I wonder if there's more 
open() calls that need the same treatment? Like the one in 
pg_resetxlog.c/ReadControlFile().

--   Heikki Linnakangas  EnterpriseDB   http://www.enterprisedb.com


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

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: BUG #4421: convert_to() should be immutable
Следующее
От: Magnus Hagander
Дата:
Сообщение: Re: [HACKERS] 0x1A in control file on Windows