[gshyam: 22.214.171.124 fgetc returns no error for bad file descriptor]
Wed Mar 10 17:29:00 GMT 2004
On Tue, Mar 09, 2004 at 05:49:14PM -0500, Jeff Johnston wrote:
>This is not totally surprising. Newlib is not Posix-conformant. A
>number of the I/O functions (e.g. fgetc, fputc, fflush) do not
>directly set errno. ANSI-90 does not dictate them to. As simple as
>fixing this seems, work is required to properly set up calls to handle
>thread-specific errnos. If the end-user is trying to push newlib
>through a Posix-conformance suite, then this won't be the only problem
Thanks for the clarification, Jeff.
This sounds like something I should put in the cygwin FAQ. Do you mind
if I add the above statement verbatim?
>-- Jeff J.
>Christopher Faylor wrote:
>>This observation, sent to the cygwin mailing list, is apparently correct.
>>fgetc doesn't set errno when trying to read from an fp that is only open
>>The attached test program results in this output:
>> fp 0xc30c4c, fd 4
>> -1 = fgetc
>> fgetc: No error
>> -1 = read
>> read: Bad file descriptor
>>----- Forwarded message from Ghanshyam <gshyam> -----
>>Subject: 126.96.36.199 fgetc returns no error for bad file descriptor
>>Date: Mon, 8 Mar 2004 20:11:37 +0000 (GMT)
>> The 9th assertion of fgetc in "IEEE std 2003.1-1992 Test Methods for
>>Measuring Conformance to Posix-Part1 System Interface" document states:
>> When the stream pointer argument addresses a file descriptor that
>>is not open for reading, then a call to fgetc()returns a value of
>>EOF and sets errno to [EBADF].
>>The current implementation does not set any errno. It says "No error".
>>----- End forwarded message -----
More information about the Newlib