diff options
Diffstat (limited to 'src/libstddjb/fd_lock.c')
-rw-r--r-- | src/libstddjb/fd_lock.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/libstddjb/fd_lock.c b/src/libstddjb/fd_lock.c index e9d1a62..a4ebaa5 100644 --- a/src/libstddjb/fd_lock.c +++ b/src/libstddjb/fd_lock.c @@ -19,8 +19,8 @@ int fd_lock (int fd, int w, int nb) int e = errno ; int r ; do r = fcntl(fd, nb ? F_SETLK : F_SETLKW, &fl) ; - while (r < 0 && errno == EINTR) ; - return r >= 0 ? 1 : + while (r == -1 && errno == EINTR) ; + return r != -1 ? 1 : errno == EACCES || error_isagain(errno) ? (errno = e, 0) : -1 ; } |