- Include all header files necessary
- Check for flock() function
dnl Process this file with autoconf to produce a configure script.
dnl Process this file with autoconf to produce a configure script.
-dnl $Id: configure.in,v 1.13.2.13 2000/11/02 21:38:55 zarq Exp $
+dnl $Id: configure.in,v 1.13.2.14 2000/11/07 22:33:33 guus Exp $
AC_INIT(src/tincd.c)
AM_INIT_AUTOMAKE(tinc, 1.0pre3)
AC_INIT(src/tincd.c)
AM_INIT_AUTOMAKE(tinc, 1.0pre3)
AC_FUNC_MEMCMP
AC_FUNC_ALLOCA
AC_TYPE_SIGNAL
AC_FUNC_MEMCMP
AC_FUNC_ALLOCA
AC_TYPE_SIGNAL
-AC_CHECK_FUNCS(ftime socket select strtol strerror)
+AC_CHECK_FUNCS(ftime socket select strtol strerror flock)
jm_FUNC_MALLOC
jm_FUNC_REALLOC
jm_FUNC_MALLOC
jm_FUNC_REALLOC
#include <string.h>
#include <errno.h>
#include <signal.h>
#include <string.h>
#include <errno.h>
#include <signal.h>
+#include <sys/types.h>
+#include <fcntl.h>
fprintf(stderr, "Can't open or create %s.\n", pidfile);
return 0;
}
fprintf(stderr, "Can't open or create %s.\n", pidfile);
return 0;
}
if (flock(fd, LOCK_EX|LOCK_NB) == -1) {
fscanf(f, "%d", &pid);
fclose(f);
printf("Can't lock, lock is held by pid %d.\n", pid);
return 0;
}
if (flock(fd, LOCK_EX|LOCK_NB) == -1) {
fscanf(f, "%d", &pid);
fclose(f);
printf("Can't lock, lock is held by pid %d.\n", pid);
return 0;
}
pid = getpid();
if (!fprintf(f,"%d\n", pid)) {
pid = getpid();
if (!fprintf(f,"%d\n", pid)) {
if (flock(fd, LOCK_UN) == -1) {
printf("Can't unlock pidfile %s, %s.\n", pidfile, strerror(errno));
close(fd);
return 0;
}
if (flock(fd, LOCK_UN) == -1) {
printf("Can't unlock pidfile %s, %s.\n", pidfile, strerror(errno));
close(fd);
return 0;
}