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 | |
parent | 1069c63c6ca2713cce2d6153acc1a1ef9f2b7f8f (diff) | |
download | zix-171aa2a60a8deeaf7b7692a0ecb6de56df1607f8.tar.gz zix-171aa2a60a8deeaf7b7692a0ecb6de56df1607f8.tar.bz2 zix-171aa2a60a8deeaf7b7692a0ecb6de56df1607f8.zip |
Simplify errno handling
Diffstat (limited to 'src')
-rw-r--r-- | src/sem.c | 19 | ||||
-rw-r--r-- | src/status.c | 8 |
2 files changed, 12 insertions, 15 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 } diff --git a/src/status.c b/src/status.c index a0bb17e..ed48952 100644 --- a/src/status.c +++ b/src/status.c @@ -41,10 +41,6 @@ zix_errno_status(const int e) switch (e) { case 0: return ZIX_STATUS_SUCCESS; -#ifdef EAGAIN - case EAGAIN: - return ZIX_STATUS_NO_MEM; -#endif #ifdef EEXIST case EEXIST: return ZIX_STATUS_EXISTS; @@ -57,6 +53,10 @@ zix_errno_status(const int e) case EPERM: return ZIX_STATUS_BAD_PERMS; #endif +#ifdef ETIMEDOUT + case ETIMEDOUT: + return ZIX_STATUS_TIMEOUT; +#endif default: break; } |