Skip to content

setFileTimesHiRes apparently can receive EINTR #86

Open
@nh2

Description

@nh2

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions