summaryrefslogtreecommitdiffstats
path: root/source/tests/fcntl_lock.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/tests/fcntl_lock.c')
-rw-r--r--source/tests/fcntl_lock.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/source/tests/fcntl_lock.c b/source/tests/fcntl_lock.c
index a90e00aa000..32aecb87439 100644
--- a/source/tests/fcntl_lock.c
+++ b/source/tests/fcntl_lock.c
@@ -1,5 +1,9 @@
/* test whether fcntl locking works on this system */
+#if defined(HAVE_UNISTD_H)
+#include <unistd.h>
+#endif
+
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
@@ -33,7 +37,8 @@ static int sys_waitpid(pid_t pid,int *status,int options)
int main(int argc, char *argv[])
{
struct flock lock;
- int fd, pid, ret, status=1;
+ int fd, ret, status=1;
+ pid_t pid;
if (!(pid=fork())) {
sleep(2);
@@ -75,5 +80,15 @@ int main(int argc, char *argv[])
unlink(DATA);
+#if defined(WIFEXITED) && defined(WEXITSTATUS)
+ if(WIFEXITED(status)) {
+ status = WEXITSTATUS(status);
+ } else {
+ status = 1;
+ }
+#else /* defined(WIFEXITED) && defined(WEXITSTATUS) */
+ status = (status == 0) ? 0 : 1;
+#endif /* defined(WIFEXITED) && defined(WEXITSTATUS) */
+
exit(status);
}