diff options
author | David Robillard <d@drobilla.net> | 2022-08-19 14:05:26 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2022-08-19 14:21:32 -0400 |
commit | 171aa2a60a8deeaf7b7692a0ecb6de56df1607f8 (patch) | |
tree | 9656d3faa9f982c688188911b658962bf8d618c0 /src/sem.c | |
parent | 1069c63c6ca2713cce2d6153acc1a1ef9f2b7f8f (diff) | |
download | zix-171aa2a60a8deeaf7b7692a0ecb6de56df1607f8.tar.gz zix-171aa2a60a8deeaf7b7692a0ecb6de56df1607f8.tar.bz2 zix-171aa2a60a8deeaf7b7692a0ecb6de56df1607f8.zip |
Simplify errno handling
Diffstat (limited to 'src/sem.c')
-rw-r--r-- | src/sem.c | 19 |
1 files changed, 8 insertions, 11 deletions
@@ -186,20 +186,17 @@ zix_sem_timed_wait(ZixSem* sem, struct timespec ts = {0, 0}; - if (clock_gettime(CLOCK_REALTIME, &ts)) { - return ZIX_STATUS_ERROR; - } - - ts.tv_sec += (time_t)seconds; - ts.tv_nsec += (long)nanoseconds; - int r = 0; - while ((r = sem_timedwait(&sem->sem, &ts)) && errno == EINTR) { - // Interrupted, try again + if (!(r = clock_gettime(CLOCK_REALTIME, &ts))) { + ts.tv_sec += (time_t)seconds; + ts.tv_nsec += (long)nanoseconds; + + while ((r = sem_timedwait(&sem->sem, &ts)) && errno == EINTR) { + // Interrupted, try again + } } - return r ? (errno == ETIMEDOUT ? ZIX_STATUS_TIMEOUT : zix_errno_status(errno)) - : ZIX_STATUS_SUCCESS; + return r ? zix_errno_status(errno) : ZIX_STATUS_SUCCESS; # endif } |