diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2009-01-22 11:35:28 +0100 |
---|---|---|
committer | Jelmer Vernooij <jelmer@samba.org> | 2009-01-22 11:35:28 +0100 |
commit | e490c1b8c858ea42e31ae1a6504c4788e0fb1545 (patch) | |
tree | 850087c9403c37adfc54deaf831a3e729223fa9a /source4/build/tests/fcntl_lock.c | |
parent | 63e23a7d648cb608a9834b4397c0aed765a1d459 (diff) | |
download | samba-e490c1b8c858ea42e31ae1a6504c4788e0fb1545.tar.gz samba-e490c1b8c858ea42e31ae1a6504c4788e0fb1545.tar.bz2 samba-e490c1b8c858ea42e31ae1a6504c4788e0fb1545.zip |
Move configure test files to the top-level and share them between s3 and
s4.
Diffstat (limited to 'source4/build/tests/fcntl_lock.c')
-rw-r--r-- | source4/build/tests/fcntl_lock.c | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/source4/build/tests/fcntl_lock.c b/source4/build/tests/fcntl_lock.c deleted file mode 100644 index ffd1ee69fa..0000000000 --- a/source4/build/tests/fcntl_lock.c +++ /dev/null @@ -1,112 +0,0 @@ -/* 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> - -#ifdef HAVE_FCNTL_H -#include <fcntl.h> -#endif - -#ifdef HAVE_SYS_FCNTL_H -#include <sys/fcntl.h> -#endif - -#ifdef HAVE_SYS_WAIT_H -#include <sys/wait.h> -#endif - -#include <errno.h> - -#define DATA "conftest.fcntl" - -#ifndef SEEK_SET -#define SEEK_SET 0 -#endif - -/* lock a byte range in a open file */ -int main(int argc, char *argv[]) -{ - struct flock lock; - int fd, ret, status=1; - pid_t pid; - char *testdir = NULL; - - testdir = getenv("TESTDIR"); - if (testdir) chdir(testdir); - - alarm(10); - - if (!(pid=fork())) { - sleep(2); - fd = open(DATA, O_RDONLY); - - if (fd == -1) { - fprintf(stderr,"ERROR: failed to open %s (errno=%d)\n", - DATA, (int)errno); - exit(1); - } - - lock.l_type = F_WRLCK; - lock.l_whence = SEEK_SET; - lock.l_start = 0; - lock.l_len = 4; - lock.l_pid = getpid(); - - lock.l_type = F_WRLCK; - - /* check if a lock applies */ - ret = fcntl(fd,F_GETLK,&lock); - - if ((ret == -1) || - (lock.l_type == F_UNLCK)) { - fprintf(stderr,"ERROR: lock test failed (ret=%d errno=%d)\n", ret, (int)errno); - exit(1); - } else { - exit(0); - } - } - - unlink(DATA); - fd = open(DATA, O_RDWR|O_CREAT|O_EXCL, 0600); - - if (fd == -1) { - fprintf(stderr,"ERROR: failed to open %s (errno=%d)\n", - DATA, (int)errno); - exit(1); - } - - lock.l_type = F_WRLCK; - lock.l_whence = SEEK_SET; - lock.l_start = 0; - lock.l_len = 4; - lock.l_pid = getpid(); - - /* set a 4 byte write lock */ - fcntl(fd,F_SETLK,&lock); - - waitpid(pid, &status, 0); - - 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) */ - - if (status) { - fprintf(stderr,"ERROR: lock test failed with status=%d\n", - status); - } - - exit(status); -} |