Why binary mode?

Lev Bishop lev.bishop@gmail.com
Thu Feb 22 17:37:00 GMT 2007


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/



More information about the Cygwin mailing list