diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libunixonacid/open2_at.c | 8 | ||||
-rw-r--r-- | src/libunixonacid/open3_at.c | 8 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/libunixonacid/open2_at.c b/src/libunixonacid/open2_at.c index 023c038..76d79cc 100644 --- a/src/libunixonacid/open2_at.c +++ b/src/libunixonacid/open2_at.c @@ -9,12 +9,18 @@ #endif #include <skalibs/nonposix.h> + +#include <errno.h> #include <fcntl.h> + #include <skalibs/unix-transactional.h> int open2_at (int dirfd, char const *file, int flags) { - return openat(dirfd, file, flags) ; + int fd ; + do fd = openat(dirfd, file, flags) ; + while (fd == -1 && errno == EINTR) ; + return fd ; } #else diff --git a/src/libunixonacid/open3_at.c b/src/libunixonacid/open3_at.c index d4234d4..063092d 100644 --- a/src/libunixonacid/open3_at.c +++ b/src/libunixonacid/open3_at.c @@ -9,12 +9,18 @@ #endif #include <skalibs/nonposix.h> + +#include <errno.h> #include <fcntl.h> + #include <skalibs/unix-transactional.h> int open3_at (int dirfd, char const *file, int flags, unsigned int mode) { - return openat(dirfd, file, flags, mode) ; + int fd ; + do fd = openat(dirfd, file, flags, mode) ; + while (fd == -1 && errno == EINTR) ; + return fd ; } #else |