diff options
author | David Robillard <d@drobilla.net> | 2022-09-01 23:35:15 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2022-09-02 00:05:26 -0400 |
commit | bb3a59f1eff2ad2ac203d063cb714189955bbc93 (patch) | |
tree | 468b9ee9c5e723aa69c56ecdc856e64f738c72f4 | |
parent | 6dc5d6cd358569f1e9654e0ecd5c385fe508b23d (diff) | |
download | zix-bb3a59f1eff2ad2ac203d063cb714189955bbc93.tar.gz zix-bb3a59f1eff2ad2ac203d063cb714189955bbc93.tar.bz2 zix-bb3a59f1eff2ad2ac203d063cb714189955bbc93.zip |
Factor out POSIX-style return pattern
-rw-r--r-- | include/zix/common.h | 5 | ||||
-rw-r--r-- | src/sem.c | 13 | ||||
-rw-r--r-- | src/status.c | 6 |
3 files changed, 17 insertions, 7 deletions
diff --git a/include/zix/common.h b/include/zix/common.h index a097edd..59a61ac 100644 --- a/include/zix/common.h +++ b/include/zix/common.h @@ -42,6 +42,11 @@ ZIX_CONST_API ZixStatus zix_errno_status(int e); +/// Return success if `r` is non-zero, or `errno` as a status code otherwise +ZIX_PURE_API +ZixStatus +zix_errno_status_if(int r); + /// Function for comparing two elements typedef int (*ZixComparator)(const void* a, const void* b, @@ -136,20 +136,19 @@ zix_sem_timed_wait(ZixSem* sem, ZixStatus zix_sem_init(ZixSem* sem, unsigned initial) { - return sem_init(&sem->sem, 0, initial) ? zix_errno_status(errno) - : ZIX_STATUS_SUCCESS; + return zix_errno_status_if(sem_init(&sem->sem, 0, initial)); } ZixStatus zix_sem_destroy(ZixSem* sem) { - return sem_destroy(&sem->sem) ? zix_errno_status(errno) : ZIX_STATUS_SUCCESS; + return zix_errno_status_if(sem_destroy(&sem->sem)); } ZixStatus zix_sem_post(ZixSem* sem) { - return sem_post(&sem->sem) ? zix_errno_status(errno) : ZIX_STATUS_SUCCESS; + return zix_errno_status_if(sem_post(&sem->sem)); } ZixStatus @@ -160,7 +159,7 @@ zix_sem_wait(ZixSem* sem) // Interrupted, try again } - return r ? zix_errno_status(errno) : ZIX_STATUS_SUCCESS; + return zix_errno_status_if(r); } ZixStatus @@ -171,7 +170,7 @@ zix_sem_try_wait(ZixSem* sem) // Interrupted, try again } - return r ? zix_errno_status(errno) : ZIX_STATUS_SUCCESS; + return zix_errno_status_if(r); } ZixStatus @@ -195,7 +194,7 @@ zix_sem_timed_wait(ZixSem* sem, } } - return r ? zix_errno_status(errno) : ZIX_STATUS_SUCCESS; + return zix_errno_status_if(r); # endif } diff --git a/src/status.c b/src/status.c index 380d370..e6fbec8 100644 --- a/src/status.c +++ b/src/status.c @@ -38,6 +38,12 @@ zix_strerror(const ZixStatus status) } ZixStatus +zix_errno_status_if(const int r) +{ + return r ? zix_errno_status(errno) : ZIX_STATUS_SUCCESS; +} + +ZixStatus zix_errno_status(const int e) { switch (e) { |