This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC] fseek, an alternative implementation (PR22359)


Daniel Franke wrote:
While working on the docs last week, I learned, that the FSEEK intrinsic is not implemented yet.

The FSEEK implementation of g77 takes a statement label to jump to, if an error occurs. Since there is no other intrinsic that takes a statement label, considerable effort would be necessary to implement the framework needed. As demand is low (one PR, no dupes, no usage of FSEEK shown by google-code search), it might be worthwile to implement the FSEEK intrinsic for completeness and replace the statement label by a status flag:

  g77:        CALL FSEEK(unit, offset, whence, *100)
  gfortran:   CALL FSEEK(unit, offset, whence, status)
              IF (status /= 0) goto 100

This is not 100% compability, but reasonable close.

Please find a preliminary patch that implements FSEEK using a status flag attached. Of course, this implementation (still) has the same problems with casting/assigning of the status flag as the other intrinsics.


I like the idea of the status flag. I will repeat here Janne's comment on IRC to consider casting the integer offset to GFC_OFFSET and having only one type function call in the library. Otherwise the patch looks reasonable.


Consider for the testsuite: Some large seeks mingled with some other IO statements to make sure we have no odd side effects. I have seen enough bugs do to the library getting lost. You may want to keep extremes out of the test suite so we don't hang systems that do not support LARGE_FILE I/O, but do some on your local machine. :)

Jerry


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]