From bb3a59f1eff2ad2ac203d063cb714189955bbc93 Mon Sep 17 00:00:00 2001
From: David Robillard <d@drobilla.net>
Date: Thu, 1 Sep 2022 23:35:15 -0400
Subject: Factor out POSIX-style return pattern

---
 src/sem.c    | 13 ++++++-------
 src/status.c |  6 ++++++
 2 files changed, 12 insertions(+), 7 deletions(-)

(limited to 'src')

diff --git a/src/sem.c b/src/sem.c
index 325eaa4..d9aa6d1 100644
--- a/src/sem.c
+++ b/src/sem.c
@@ -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
@@ -37,6 +37,12 @@ zix_strerror(const ZixStatus status)
   return "Unknown error";
 }
 
+ZixStatus
+zix_errno_status_if(const int r)
+{
+  return r ? zix_errno_status(errno) : ZIX_STATUS_SUCCESS;
+}
+
 ZixStatus
 zix_errno_status(const int e)
 {
-- 
cgit v1.2.1