This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Why binary mode?


On 2/22/07, Norton Allen wrote:
Lev Bishop wrote:
> On 2/22/07, Sven Severus wrote:
>> But in a textmode mounted directory, 'echo peng >p.txt' creates
>> a 6 byte long file containing 'p' 'e' 'n' 'g' '\r' '\n'.
>> OK, exactly as expected. Now I thought, 'cat p.txt' would open
>> this file for reading in textmode, according to the default rule.
>>
>> This is, what I expect, after reading the Cygwin FAQ:
>> "When processing in text mode, [...] written to the file [...]
>> you in fact get "Hello\r\n". Upon reading this combination,
>> the \r is removed [...]".
>> Why is it in fact not removed when reading with cat?
>
> Because cat is required by posix to read in binmode. Try, for example:
> $ echo peng >p.txt && read CO <p.txt && od -c <<<"$CO"
> 0000000   p   e   n   g  \n
> 0000005
Which apparently means that the original doc he referred to (Cygwin
User's Guide, chapter "Text and Binary modes" ) should be updated. I
think the fact that cat reads in binmode is surprising (though it makes
sense if you think about it) so the behavior should be prominently
noted. Certainly the shell idiom of using cat to read text files is
widespread. Makes you wonder whether cat shouldn't have an option added
to read in text mode (that'd be an upstream question).

It has been discussed to add a cygwin-local cat --text option, but rejected on the basis that since it would be cygwin-only and nonstandard, one might as well use the equally nonstandard d2u instead of cat. I believe there was at one point some attempt to get such an option upstream, but upstream resisted this. I'm sure this is mentionned in the archives somewhere.

Lev

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]