This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: FreeBSD Fortran Failure
>>>>> "Joseph" == Joseph S Myers <jsm28@cam.ac.uk> writes:
Joseph> http://www.opengroup.org/onlinepubs/7908799/xsh/stdio.html
Thanks. It would have been more helpful to post that originally,
since you knew where it was.
The bottom line is that I think the libf2c plays within the rules. We
have:
fflush(b->ufd);
rc = ftruncate(fileno(b->ufd),loc);
The fflush makes it legal to switch from the currently actively handle
(the stream) to the new one (the file descriptor).
Then, we shouldn't need an fseek to switch back to the stream because
you only need that if the previously actively handle changed the file
offset, and `ftruncate' is specifically documented not to change the
file offset.
However, that web page also says:
"It is implementation-dependent whether, and under what conditions,
all input is seen exactly once."
I don't know exactly what that means.
Anyhow, immediately upon return to our caller (f_rew), we call
`rewind', which is supposed to be exactly equivalent to an appropriate
`fseek'.
It is possible that this a bug in OpenBSD.
In which case, we need to do the freopen thing anyhow.
--
Mark Mitchell mark@codesourcery.com
CodeSourcery, LLC http://www.codesourcery.com