Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com From: ericblake AT comcast DOT net (Eric Blake) To: cygwin AT cygwin DOT com, newlib AT sourceware DOT org Subject: bug in freopen Date: Thu, 14 Jul 2005 23:13:35 +0000 Message-Id: <071420052313.28844.42D6F19F0007DD6E000070AC22007340760A050E040D0C079D0A@comcast.net> X-Authenticated-Sender: ZXJpY2JsYWtlQGNvbWNhc3QubmV0 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 #include 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 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. -- Eric Blake -- 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/