PR 67585 Handle EINTR
authorJanne Blomqvist <jb@gcc.gnu.org>
Sun, 9 Oct 2016 18:05:56 +0000 (21:05 +0300)
committerJanne Blomqvist <jb@gcc.gnu.org>
Sun, 9 Oct 2016 18:05:56 +0000 (21:05 +0300)
commitb9233944298c0975a7cab3b1053c3ea388e9fd15
treec793adb9e84177e3ddeb8a327cecd0543a6f697f
parentdf74f099d381013b4f52a32654f9a97c5bd39327
PR 67585 Handle EINTR

Many POSIX systems have the bad habit of not restarting interrupted
syscalls. On these systems it's up to the user to check for an error
with errno == EINTR and restart manually. This patch does this for
libgfortran, so that GFortran users don't have to do it.

2016-10-09  Janne Blomqvist  <jb@gcc.gnu.org>

        PR libfortran/67585
        * io/io.h: TEMP_FAILURE_RETRY: Define macro if not found.
        * io/unix.c (raw_read): Handle EINTR.
        (raw_write): Check for return value -1.
        (raw_seek): Handle EINTR.
        (raw_tell): Likewise.
        (raw_size): Likewise.
        (raw_truncate): Likewise.
        (raw_close): Likewise.
        (buf_flush): Call raw_seek instead of lseek.
        (buf_read): Likewise.
        (buf_write): Likewise.
        (fd_to_stream): Handle EINTR.
        (tempfile_open): Likewise.
        (regular_file2): Likewise.
        (compare_file_filename): Likewise.
        (find_file): Likewise.
        (inquire_sequential): Likewise.
        (inquire_direct): Likewise.
        (inquire_formatted): Likewise.

From-SVN: r240902
libgfortran/ChangeLog
libgfortran/io/io.h
libgfortran/io/unix.c