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 gawk 3.1.5-3 hanging -- more info


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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]