bug in freopen

Jeff Johnston jjohnstn@redhat.com
Mon Jul 18 19:11:00 GMT 2005

Dave Korn wrote:
> ----Original Message----
>>From: Eric Blake
>>Sent: 15 July 2005 00:14
>>POSIX requires that freopen(NULL, mode, f) reopen f in the new
>>mode, and allows implementations the option of not even closing
>>f in the first place.  But in cygwin, it is failing with EFAULT, which is
>>not even one of the errors allowed by POSIX.
>>#include <stdio.h>
>>#include <errno.h>
>>int main(void)
>>   FILE* f = freopen (NULL, "rb", stdin); /* Ensure that stdin is binary
>>   */ printf ("file is %s, errno %d:%s\n", f ? "good" : "null", errno,
>>           strerror(errno));
>>   return 0;
>>CVS coreutils recently switched to this idiom, replacing its former
>>use of the nonstandard <io.h> and setmode() with something
>>that is required by the standards.  But until this bug is fixed, CVS
>>coreutils will not work with cygwin.  The strace in cygwin shows
>>that newlib tried to perform open(NULL), which is the cause of
>>the EFAULT.
>   I could take a look at this over the weekend if nobody gets to it first :)

A little late, but please do.  I'm a little busy at the moment.

-- Jeff J.

>     cheers,
>       DaveK

More information about the Newlib mailing list