unix icon indicating copy to clipboard operation
unix copied to clipboard

setFileTimesHiRes apparently can receive EINTR

Open nh2 opened this issue 7 years ago • 0 comments

man utimensat doesn't document it (at least on Ubuntu 16.04 -- but this page seems to do for futimens), but it seems that utimensat() can return errno = EINTR when interrupted.

This just occurred to me when sending SIGSTOP (Ctrl-Z) to my program and then resuming:

setFileTimesHiRes: interrupted (Interrupted system call)

If it can really return EINTR, we'd have to change

setFileTimesHiRes name atime mtime =
  withFilePath name $ \s ->
    withArray [toCTimeSpec atime, toCTimeSpec mtime] $ \times ->
      throwErrnoPathIfMinus1_ "setFileTimesHiRes" name $
        c_utimensat (-100) s times 0

to use throwErrnoIfMinus1Retry_ instead.

nh2 avatar Feb 18 '17 11:02 nh2