summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2022-08-19 14:05:26 -0400
committerDavid Robillard <d@drobilla.net>2022-08-19 14:21:32 -0400
commit171aa2a60a8deeaf7b7692a0ecb6de56df1607f8 (patch)
tree9656d3faa9f982c688188911b658962bf8d618c0 /src
parent1069c63c6ca2713cce2d6153acc1a1ef9f2b7f8f (diff)
downloadzix-171aa2a60a8deeaf7b7692a0ecb6de56df1607f8.tar.gz
zix-171aa2a60a8deeaf7b7692a0ecb6de56df1607f8.tar.bz2
zix-171aa2a60a8deeaf7b7692a0ecb6de56df1607f8.zip
Simplify errno handling
Diffstat (limited to 'src')
-rw-r--r--src/sem.c19
-rw-r--r--src/status.c8
2 files changed, 12 insertions, 15 deletions
diff --git a/src/sem.c b/src/sem.c
index 066c592..a577b08 100644
--- a/src/sem.c
+++ b/src/sem.c
@@ -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;
}