Subject: RE: B20.1: CR-LF translation not always handled properly
From: "Jon Leichter" <[email-masked]>
To: <[email-masked]>
Cc: <[email-masked]>
Date: Thu, 21 Oct 1999 22:12:14 -0700

Oops... I stated one thing backwards...

In my test program, stdin starts in textmode. I had to explicitly set it to
binmode to see a difference.

This suggests that 'sed' must be setting stdin to binmode, but I wouldn't know
why.

Jon

> -----Original Message-----
> From: [email-masked]
> [mailto:[email-masked]]On Behalf Of Jon Leichter
> Sent: Thursday, October 21, 1999 10:07 PM
> To: [email-masked]
> Cc: [email-masked]
> Subject: RE: B20.1: CR-LF translation not always handled properly
>
>
> I've tried your suggestions. Setting CYGWIN to nobinmode had no effect.
>
> The way I see it, the fact that pipes and redirection default to binmode is
> irrelevant. The important thing is that a program like 'sed' should first be
> doing a setmode to text mode on stdin (and stdout for that matter). It does
> not appear to be doing this, otherwise I would not be seeing this problem.
>
> 'grep', on the other hand, must be doing exactly this, otherwise I'd see ^M
> characters in its output, but I don't.
>
> I've written my own test program to verify this. Stdin is in binmode by
> default. If I change it to textmode, translationn works.
>
> Like I said, I don't know the complete set of tools that are
> 'broken'. I only
> know that 'sed' and command substitution in 'bash' appear to be
> broken. There
> may be others.
>
> I, too, can mix Mingw32 and Cygwin, and I can build binaries and so
> forth. The
> real problems occurred for me when I was trying to build projects that use
> 'configure' and 'libtool'. These shell scripts interpret output
> badly because
> of this text mode translation problem. It made it impossible (or at
> least VERY
> difficult) to build the projects that I was working on. As I've
> said, I needed
> to use the alternate environment, the default Mingw32 support provided by
> Cygwin (all updated to 2.95, with Ander Norlander's Win32 APIs).
>
> Jon Leichter
> [email-masked]
>
>
> > -----Original Message-----
> > From: Earnie Boyd [mailto:[email-masked]]
> > Sent: Thursday, October 21, 1999 9:33 PM
> > To: Jon Leichter
> > Cc: [email-masked]
> > Subject: RE: B20.1: CR-LF translation not always handled properly
> >
> >
> > Sorry, to have offended you, however, I've mixed cygwin and mingw32
> > and not had
> > problems.  Pipes and redirection in cygwin default to binmode.  Try `SET
> > CYGWIN=nobinmode' before starting bash to see if it helps.  It
> > could very well
> > be a cygwin bug.  What version of cygwin are you using i.e.: what
> > does `uname
> > -a' give you?
> >
> > Earnie.
> >
> > --- Jon Leichter <[email-masked]> wrote:
> > > Earnie,
> > >
> > > I had read about all of this real carefully before, and I thought I had
> > > things
> > > set up right. I'll explain what I have set up, and then you can tell me
> > > whether or not it's still my setup that's wrong.
> > >
> > > I have my root file system mounted on my E: drive. Here's a
> sample of the
> > > mount command:
> > >
> > > $ mount
> > > Device           Directory           Type        Flags
> > > e:               /                   native      text!=binary
> > >
> > > Thus, I believe it is mounted in text mode. Furthermore, I do use
> > other file
> > > systems that are not mounted. I currently don't have the CYGWIN
> > environment
> > > variable set to anything. According to the User Guide, this (lack of a)
> > > setting should default to text mode.
> > >
> > > Thus, all of the files that I access should be getting opened
> in text mode
> > > when the appropriate tool is ran, e.g. 'sed' but not 'od'.
> > >
> > > When I first started having these problems, I tried changing
> > modes to binary,
> > > but it only added new problems. I think that setting was just
> > wrong and not
> > > what I needed.
> > >
> > > So my claim is that I have the rigth mode setting AND I still see these
> > > problems. Note how I've mentioned that the 'grep' command DOES translate
> > > CR-LF
> > > to LF but that 'sed' and command substitution in 'bash' does NOT.
> > If my mode
> > > were wrong, I'd expect grep to be doing the 'wrong' thing too.
> > >
> > > Jon Leichter
> > > [email-masked]
> > >
> > >
> > > > -----Original Message-----
> > > > From: [email-masked]
> > > > [mailto:[email-masked]]On Behalf Of Earnie Boyd
> > > > Sent: Thursday, October 21, 1999 7:55 PM
> > > > To: Jon Leichter; [email-masked]
> > > > Cc: [email-masked]
> > > > Subject: Re: B20.1: CR-LF translation not always handled properly
> > > >
> > > >
> > > > It sounds to me as if your setup is broken rather than cygwin.  To
> > > > mix Mingw32
> > > > (or any other win32 native package) and Cygwin you _have_to_have_
> > > > text mounts
> > > > and at times export CYGWIN=... nobinmode ... instead of binmode.
> > > > The default
> > > > for Win32 packages is to write the \r\n on line endings and you
> > > > must process in
> > > > text mode or modify the package to deal with the \r on the end
> > of the line.
> > > >
> > > > Earnie.
> > > >
> > > > --- Jon Leichter <[email-masked]> wrote:
> > > > > I have read through your FAQs and searched your mailing list, and
> > > > I not have
> > > > > been able to find information about the problem that I am reporting:
> > > > >
> > > > > Rather than use the Mingw32 support in the version of 'gcc'
> > supplied with
> > > > > Cygwin, I decided to download and install gcc-2.95-mingw32.zip on
> > > > my system.
> > > > > I
> > > > > had chosen this option because I wanted the most up to date
> > > > Mingw32 system,
> > > > > and I didn't want to have to apply the various patches to the 'gcc'
> > > system
> > > > > installed with Cygwin. To make sure that I ended up using Mingw32
> > > compiler
> > > > > tools, I made sure that its 'bin' directory preceded Cygwin's
> > > > 'bin' directory
> > > > > in my PATH.
> > > > >
> > > > > Early on, I noticed that various tools from the standalone Mingw32
> > > package
> > > > > generates the CR-LF pair in its output. (Cygwin's tools do not).
> > > > This should
> > > > > be ok, because Cygwin's environment is supposed to account for this
> > > > > possibility. However, this is not always the case. The
> > following are two
> > > > > examples where I had problems:
> > > > >
> > > > > - I found a problem with bash's command substitution. Using the
> > > standalone
> > > > > Mingw32 package, one could do the following:
> > > > >
> > > > > 	$ xx=`gcc -pring-prog-name=ld`
> > > > >
> > > > > The value of xx ends up being "ld^M". If I then use this
> variable with
> > > > > various
> > > > > shell commands, I do not get the correct results. For instance
> > > > the following
> > > > > would evaluate to false (if ld was in the current directory):
> > > > >
> > > > > 	$ test -f ./$xx
> > > > >
> > > > > Thus, it seems as though command substitution in bash is broken.
> > > > It should be
> > > > > filtering the output of commands for the potential need to
> do a CR-LF
> > > > > translation. (Note that Cygwin's version of 'gcc' does not
> > generate the
> > > CR
> > > > > character in its output, so this problem does not surface).
> > > > >
> > > > > I found this problem when running a 'configure' script.
> > 'configure' was
> > > > > unable
> > > > > to verify that I had an 'ld' binary on my system as a result.
> > > > >
> > > > > - Another command that is likely to be broken is Cygwin's
> > 'sed' command.
> > > I
> > > > > found this out, as well, while running a 'configure' script.
> > > > 'sed' fails to
> > > > > parse the output from Mingw32's 'nm' command because the
> 'nm' command
> > > > > generates CR-LF pairs in its output.
> > > > >
> > > > > As an example, if you wanted to translate all of the external
> > > > symbol output
> > > > > of
> > > > > 'nm' into symbol names only, one might try:
> > > > >
> > > > > 	$ nm -g xx.o | sed -e 's/[0-9a-z]* [ABCDGISTW]
> > \([_A-Za-z0-9]*\)$/\1/'
> > > > >
> > > > > Because the output of Mingw32's 'nm' generates ^M characters at
> > > > the end, the
> > > > > above command fails. The key to this failure is that prior to
> > > > '$', the only
> > > > > permitted characters are [_A-Za-z0-9], which does NOT include the ^M
> > > > > character.
> > > > >
> > > > > As a result of this problem, the 'configure' script that I
> was running
> > > was
> > > > > unable to successfully interpret 'nm' output.
> > > > >
> > > > > ---
> > > > >
> > > > > Basically, a bunch of Cygwin's tools are probably broken. Note
> > > > that not all
> > > > > tools should be adjusted. For instance, 'od' does the correct thing
> > > (using
> > > > > stdin in binary mode). If this were not the case, I might not
> > had tracked
> > > > > down
> > > > > the problem.
> > > > >
> > > > > I also noticed that the 'grep' command seems to do the
> > 'right' thing. If
> > > I
> > > > > pipe output through grep, it translates CR-LF pairs into LF.
> > > > >
> > > > > One might argue that the problem is with Mingw32's standalone
> > > > package, that
> > > > > its tools should not be generating the CR-LF pair in its
> output. But,
> > > this
> > > > > does not seem reasonable, since these tools are expected to
> run in the
> > > DOS
> > > > > environment as well.
> > > > >
> > > > > Like I said, I suspect that there are more 'broken' tools, but I
> > > > have not had
> > > > > the time to chase them down. In order for me to do my work, I had
> > > > to abandon
> > > > > using the standalone Mingw32 package in Cygwin, and I now,
> > instead, use
> > > > > Cygwin's built-in support for Mingw32 (with update patches applied).
> > > > >
> > > > >
> > > > > System Information
> > > > > ------------------
> > > > > Pentium II 400 MHz
> > > > > 128 MB RAM
> > > > > Windows NT Server 4.0
> > > > > Cygwin B20.1
> > > > > Mingw32 gcc 2.95
> > > > >
> > > > >
> > > > > Jon Leichter
> > > > > [email-masked]
> > > > >
> > > > >
> > > > > --
> > > > > Want to unsubscribe from this list?
> > > > > Send a message to [email-masked]
> > > > >
> > > > >
> > > >
> > > > __________________________________________________
> > > > Do You Yahoo!?
> > > > Bid and sell for free at http://auctions.yahoo.com
> > > >
> > > > --
> > > > Want to unsubscribe from this list?
> > > > Send a message to [email-masked]
> > > >
> > >
> > >
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Bid and sell for free at http://auctions.yahoo.com
> >
>
>
> --
> Want to unsubscribe from this list?
> Send a message to [email-masked]
>

--
Want to unsubscribe from this list?
Send a message to [email-masked]