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: Problems with archiver "ar"


> From: Eric Blake
> Sent: Wednesday, September 27, 2006 8:42 PM
> Subject: Re: Problems with archiver "ar"
> 
[snip]
> > 
> > But due to the newest bash update, I rather need "textmode" 
> to re-use 
> > my existing scripts without conversion, as the come from a revision 
> > control system which always generates the EOLs according to 
> the underlying system.
> 
> See the other thread on this today.  First, why can't you 
> teach your revision control system that on a cygwin binary 
> mount, the underlying system uses \n line endings, not \r\n?

I hate to sound like a broken record, but not-quite-correct statements such
as the above give aid and comfort to our common enemy, The "/r/n vs /n vs
/r" Debacle Which None Of Us Shall Live Long Enough To See Resolved, and I
therefore must wax pedantic:

The "underlying system" (i.e. Windows, Linux, Cygwin binary mounts,
whatever) has no notion of what a "line ending" even is, much less what
values might represent it.  Bytes is bytes; have been since CP/M died.
Programs which manipulate text in some way, and the libraries they link
with, are who and what define the notion of a text file, and hence text file
formats, and hence "line endings".

Most of these programs and/or libraries are broken in either implementation
or design, in that they are only capable of reading one text file format.
When faced with the simple task of reading a plain text file with a format
other than the One True Format which they can handle, they fail, with
varying degrees of spectacularity.  Researchers have been unable to
determine why, in the 21st century, this problem is still as bad as its ever
been, but such is the sorry state of affairs of the Computer Science world
we live in.

At any rate, in an effort to mitigate the inevitable problems caused by
these broken programs, workarounds such as Cygwin's "text mode mount" were
invented.  Of course, Life never closes a door without also closing a
window, and these workarounds are not without their own problems.  There can
be speed issues, especially if the broken program wants random access to the
file (lseek()/fseek()).  Programs that are broken in the opposite direction,
i.e. programs which treat all files - executables, binaries, graphics,
whatever - as if they were text files in their One True Format, can be
broken (and yes, as impossible as it is to believe, such programs are not at
all uncommon!).

The good news, Gentle Reader, is that there is a teeny-tiny glimmer of hope
on the horizon: Unicode.  The Unicode standard actually had the courage to
define not one, but no less than *seven* valid line terminator sequences
(q.v.: http://en.wikipedia.org/wiki/Newline).  So, as Unixoid, Windowsoid,
and Macoid tools slowly become Unicode-capable, and assuming they make even
a token attempt at meeting the standard, perhaps, some day, our great,
great, great, greatgreatgreat grandchildren will be able to creat a plain
text file on one computer and have it be understood on another.

But I wouldn't put money on it.

-- 
Gary R. Van Sickle
 


--
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]