hybrid text/binary mount

Mumit Khan khan@NanoTech.Wisc.EDU
Mon Apr 24 14:37:00 GMT 2000

On Mon, 24 Apr 2000, Chris Faylor wrote:

> On Mon, Apr 24, 2000 at 02:31:19PM -0400, DJ Delorie wrote:
> >Hey, I've got an idea.  How about a mount mode where files opened for
> >reading do CR/LF conversion *if* they look like text files (i.e. no
> >binary characters, all CR/LF are part of CR/LF pair), and files open
> >for writing always write files in binary mode.
> That's amazing.  I have been thinking about the same thing for several
> days.  I have started to type this in several time but always hit a wall
> when I realized that given the nature of this mailing list, either no one
> would respond or somewone will respond with a twenty page treatise on the
> way they think it should be done with no hint of an effort to volunteer to
> do the actual work.
> I was thinking that if a file had any characters whose ASCII code was
> < ' ' or >= DEL before the first \n, then the file would be considered
> binary.  Otherwise, the file would be text.  You could apply this heuristic
> to both input and output.
> This might catch a majority of the cases where people really want binary
> code but it is so non-deterministic that it might make problems harder
> to track down.
> I was thinking of a CYGWIN=autobinmode and a mount '-a' option.

I have yet to read the whole thread, so apologies in advance if I'm
missing anything.

I implemented something along these lines for glibc2 win32 port, and 
it works well in theory, but ran into a whole bunch of weird problems. 
My main motivation was to support scripts written using native editors 
that use CR-LF line endings; writing is always binary, since there is
distinction made in the runtime between text vs binary streams, and
all streams are binary.

All was well, until someone who used a file that had innocent looking
text as the first line (eg., "This file cannot be run in MSDOS mode"), 
and the rest was binary, and of course the reader failed miserably. I 
believe I have two other bug reports from other testers that got bitten 
by something similar.

After this I had reverted the change, but now rethinking how to do this


More information about the Cygwin-developers mailing list