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.
>>
>>http://www.opengroup.org/susv3xsh/freopen.html
>>
>>#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


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



More information about the Cygwin mailing list