X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Flock_file.c;h=7309c8681b849e76d73673af755461590b82fde4;hp=e065c93e4657bdd677337bd9311a014cd42f3928;hb=e48142e43bfeef1a44fb2f7131918b7172cd427e;hpb=9f9bfa91d88b3ca4cd9206c1f2b17c6d13ebcaba diff --git a/sbr/lock_file.c b/sbr/lock_file.c index e065c93..7309c86 100644 --- a/sbr/lock_file.c +++ b/sbr/lock_file.c @@ -15,24 +15,18 @@ ** Ruud de Rooij Sun, 28 Mar 1999 15:34:03 +0200 */ +#include #include #include #include +#include -#ifdef TIME_WITH_SYS_TIME +#ifdef HAVE_SYS_TIME_H # include -# include -#else -# ifdef TM_IN_SYS_TIME -# include -# else -# include -# endif #endif +#include -#ifdef HAVE_ERRNO_H -# include -#endif +#include #ifdef HAVE_FCNTL_H # include @@ -50,8 +44,10 @@ #include #endif -#ifdef LOCKDIR +#ifdef DOT_LOCKING +# ifdef LOCKDIR char *lockdir = LOCKDIR; +# endif #endif /* Are we using any kernel locking? */ @@ -106,12 +102,12 @@ static int lkopen_dot(char *, int, mode_t); static void lockname(char *, struct lockinfo *, int); static void timerON(char *, int); static void timerOFF(int); -static RETSIGTYPE alrmser(int); -#endif +static void alrmser(int); #if !defined(HAVE_LIBLOCKFILE) static int lockit(struct lockinfo *); #endif +#endif /* ** Base routine to open and lock a file, @@ -336,7 +332,7 @@ lkopen_kernel(char *file, int access, mode_t mode) j = errno; close(fd); - sleep(5); + sleep(1); } close(fd); @@ -388,7 +384,7 @@ lkopen_dot(char *file, int access, mode_t mode) if (stat(lkinfo.curlock, &st) == -1) { if (i++ > 5) return -1; - sleep(5); + sleep(1); } else { time_t curtime; i = 0; @@ -401,7 +397,7 @@ lkopen_dot(char *file, int access, mode_t mode) if (curtime > st.st_ctime + RSECS) unlink(lkinfo.curlock); else - sleep(5); + sleep(1); } lockname(file, &lkinfo, 1); } @@ -437,18 +433,10 @@ lockit(struct lockinfo *li) curlock = li->curlock; tmplock = li->tmplock; -#ifdef HAVE_MKSTEMP - if ((fd = mkstemp(tmplock)) == -1) + if ((fd = mkstemp(tmplock)) == -1) { + advise(NULL, "unable to create temporary file in %s", tmplock); return -1; -#else - if (mktemp(tmplock) == NULL) - return -1; - if (unlink(tmplock) == -1 && errno != ENOENT) - return -1; - /* create the temporary lock file */ - if ((fd = creat(tmplock, 0600)) == -1) - return -1; -#endif + } #if 0 /* write our process id into lock file */ @@ -585,16 +573,12 @@ timerOFF(int fd) ** lockfiles, so another command doesn't remove them. */ -static RETSIGTYPE +static void alrmser(int sig) { char *lockfile; struct lock *lp; -#ifndef RELIABLE_SIGNALS - SIGNAL(SIGALRM, alrmser); -#endif - /* update the ctime of all the lock files */ for (lp = l_top; lp; lp = lp->l_next) { lockfile = lp->l_lock;