On Mar 30 13:29, David Carter wrote: > I've taken a look at the differences between -2 and -3; here's the diff: > > $ diff -r gawk-3.1.5-2 gawk-3.1.5-3 > diff -r gawk-3.1.5-2/posix/gawkmisc.c gawk-3.1.5-3/posix/gawkmisc.c > 223a224 > >#include <stdio.h> > 237a239,244 > > > >void > >cygwin_premain2 (int argc, char **argv, struct per_process *myself) > >{ > > setmode (fileno (stdin), O_TEXT); > >} > > ...that's the only difference between the two source trees. > > Not having looked at cygwin-specific source before, I'm going to guess > that cygwin_premain2 is a hook which is called at program execution > time, since there is no call to cygwin_premain2 in the source code. > > I think the problem is the O_TEXT. If I change this to O_BINARY and > recompile, everything works swimmingly. The question now is: should the > file really be opened as O_TEXT, or as O_BINARY? > > Can anyone set me straight on this?
O_TEXT is correct because gawk is a text tool in the first place and it should treat input lines identical, regardless if they have DOS or UNIX lineendings. I can't tell why it fails for you, because I can't reproduce this locally. As for the O_BINARY mode, in theory there's a way to accomplish that without rebuilding gawk by setting the BINMODE variable: gawk -v BINMODE=r [...] Unfortunately it turns out that this doesn't work because gawk fails to call the setmode function in this case on Cygwin. I'll upload a patched gawk soon. If you want to apply it by yourself, try this: --- posix/gawkmisc.c.ORIG 2006-03-30 22:06:37.429941500 +0200 +++ posix/gawkmisc.c 2006-03-30 21:58:33.918902700 +0200 @@ -207,6 +207,9 @@ int os_setbinmode(fd, mode) int fd, mode; { +#ifdef __CYGWIN__ + setmode (fd, mode); +#endif return 0; } Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat -- 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/