From 9eac94a4ddd70b5afb37f71cc7fb36fcb46e2e44 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Fri, 30 Apr 2004 17:38:22 +0000 Subject: [PATCH] Improved the program that checks for broken large-file locking. --- configure.in | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/configure.in b/configure.in index 245a7692..000a723a 100644 --- a/configure.in +++ b/configure.in @@ -146,21 +146,26 @@ AC_TRY_RUN([ int main(void) { struct flock lock; - int status; - int fd = open("conftest.dat", O_CREAT|O_RDWR, 0600); + int status; + char tpl[32] = "/tmp/locktest.XXXXXX"; + int fd = mkstemp(tpl); + if (fd < 0) { + strcpy(tpl, "conftest.dat"); + fd = open(tpl, O_CREAT|O_RDWR, 0600); + } + lock.l_type = F_WRLCK; lock.l_whence = SEEK_SET; lock.l_start = 0; lock.l_len = 1; lock.l_pid = 0; - fcntl(fd,F_SETLK,&lock); if (fork() == 0) { - lock.l_start = 1; - exit(fcntl(fd,F_SETLK,&lock) == 0); - } - wait(&status); - unlink("conftest.dat"); + lock.l_start = 1; + _exit(fcntl(fd,F_SETLK,&lock) == 0); + } + wait(&status); + unlink(tpl); exit(WEXITSTATUS(status)); } ], -- 2.34.1