Re: 0x1A in control file on Windows - Mailing list pgsql-hackers

From Magnus Hagander
Subject Re: 0x1A in control file on Windows
Date
Msg-id 48D9D703.8030506@hagander.net
Whole thread Raw
In response to Re: 0x1A in control file on Windows  (Andrew Dunstan <andrew@dunslane.net>)
Responses Re: [BUGS] 0x1A in control file on Windows  (Magnus Hagander <magnus@hagander.net>)
Re: [BUGS] 0x1A in control file on Windows  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
Andrew Dunstan wrote:
> 
> 
> Tom Lane wrote:
>> Bruce Momjian <bruce@momjian.us> writes:
>>  
>>> Tom Lane wrote:
>>>    
>>>> Well, why is that a bug?  If the platform is so silly as to define text
>>>> files that way, who are we to argue?
>>>>       
>>
>>  
>>> The problem is that our pg_controldata might have binary values that
>>> contain 0x1a that will be confused by the operating system as
>>> end-of-file.
>>>     
>>
>> pg_controldata is certainly already being read as binary. 
> 
> Umm, no, it is in the backend I believe but not in the utilities. Hence
> the original bug report. We need to add the binary flag in
> pg_controldata.c and pg_resetxlog.c.

Right.
I'll go ahead and put that part in (I find two locations - the one in
the original patch, and the extra one Heikki noticed).


>>  The
>> discussion here is about *text* files, particularly configuration
>> files.  Why should we not adhere to the platform standard about
>> what a text file is?
>>
>> If you need a positive reason why this might be a bad idea, consider the
>> idea that someone is examining postgresql.conf with a text editor that
>> stops reading at control-Z.  He might not be able to see items that the
>> postmaster is treating as valid.
>>
>>            
>>   
> 
> Yes, exactly right. We certainly can't just open everything in binary
> mode. Magnus did say that all the current config files are opened in
> text mode as far as he could see.

The point being that the config files are opened with AllocateFile(),
which in turn calls fopen(). It doesn't use open(). The proposal was
only to make all *open()* calls do it binary. I was under the impression
that on Unix, that's what open() did, so we should behave the same?

//Magnus


pgsql-hackers by date:

Previous
From: Magnus Hagander
Date:
Subject: Re: WIP patch: Collation support
Next
From: Greg Stark
Date:
Subject: Re: Common Table Expressions (WITH RECURSIVE) patch