[patch, libgfortran] PR31052 Bad IOSTAT values when readings NAMELISTs past EOF
Jerry DeLisle
jvdelisle@verizon.net
Sun Mar 11 02:54:00 GMT 2007
Steve Kargl wrote:
> On Sat, Mar 10, 2007 at 08:57:19AM -0800, Jerry DeLisle wrote:
>> Steve Kargl wrote:
>>> On Fri, Mar 09, 2007 at 11:45:33PM -0800, Jerry DeLisle wrote:
>>>> I would rather keep the patch as I have it and leave dev_null.f90 alone.
>>>> In this case we are user proofing. st_rewind is simply seeking to
>>>> position zero of the file and then resetting all the internal libgfortran
>>>> accounting stuff. /dev/null is a "special seekable" file.
>>>>
>>>> I have also tested this on an empty file and it works OK for that. The
>>>> adjustment in the patch occurs well after all the rewind stuff is done.
>>>>
>>>> I will await approval.
>>>>
>>> I have you tested with /dev/zero and /dev/random?
>>>
>> I had not, but now I have and the test_endfile does not "work" for a rewind
>> on these. In other words, I get an EOF condition on a read following a
>> rewind. It seems that the whole concept is askew. The /dev/null is
>> defined to always give an EOF on a read. The others should never give an
>> EOF.
>>
>> I want to give this some thinking time. The OS should give the correct
>> response and rewind should ideally have no effect. I think I should
>> address why it does have an effect now, with or without test_endfile.
>>
>> In the interim, I would like to fix the original PR by eliminating
>> test_endfile and open a new PR related to the behavior of these special
>> devices.
>>
>> Is there agreement on this?
>>
>
> Yes.
>
> The handling of special files (and fifo and pipes) is probably
> a messy system dependent pit.
Well, I completely removed the test_endfile function found in open.c and all of
its invocations in several places. I removed the prototype from io.h.
Regression tested, NIST tested, many io tested with some programs I have
collected. All pass with flying colors. I suspect we worked our way out of
needing it with other patches until it was redundant and no longer needed. The
only place it was needed is in st_rewind to handle that one odd case for dev/null.
Removing the call to rewind in the test case dev_null.f90 and that test case
passes fine with the expected behavior, EOF on a read.
I will go ahead and work up the test case for PR31052 and resubmit a final patch.
Regards,
Jerry
More information about the Gcc-patches
mailing list