unix
unix copied to clipboard
setFileTimesHiRes apparently can receive EINTR
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.