summaryrefslogtreecommitdiffstats
path: root/contrib/sendmail/libsm/sem.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/sendmail/libsm/sem.c')
-rw-r--r--contrib/sendmail/libsm/sem.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/contrib/sendmail/libsm/sem.c b/contrib/sendmail/libsm/sem.c
index a429cf4..89394cb 100644
--- a/contrib/sendmail/libsm/sem.c
+++ b/contrib/sendmail/libsm/sem.c
@@ -8,13 +8,14 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: sem.c,v 1.12 2005/03/25 21:27:02 ca Exp $")
+SM_RCSID("@(#)$Id: sem.c,v 1.13 2005/08/12 20:39:59 ca Exp $")
#if SM_CONF_SEM
# include <stdlib.h>
# include <unistd.h>
# include <sm/sem.h>
# include <sm/heap.h>
+# include <errno.h>
/*
** SM_SEM_START -- initialize semaphores
@@ -37,7 +38,7 @@ sm_sem_start(key, nsem, semflg, owner)
int semflg;
bool owner;
{
- int semid, i;
+ int semid, i, err;
unsigned short *semvals;
semvals = NULL;
@@ -67,11 +68,12 @@ sm_sem_start(key, nsem, semflg, owner)
return semid;
error:
+ err = errno;
if (semvals != NULL)
sm_free(semvals);
if (semid >= 0)
sm_sem_stop(semid);
- return -1;
+ return (err > 0) ? (0 - err) : -1;
}
/*
OpenPOWER on IntegriCloud