X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Flock_file.c;h=957bc4e89bbba93f0d5c59a8e6fd8bcde20521ee;hp=d15c93957de69944609479ebdb1e06790d050066;hb=d4bcca1aa235370bc20bc2734c0cd6f700b17871;hpb=b3628819b4ab903269cd83cc68e453b13534346c diff --git a/sbr/lock_file.c b/sbr/lock_file.c index d15c939..957bc4e 100644 --- a/sbr/lock_file.c +++ b/sbr/lock_file.c @@ -15,9 +15,11 @@ ** Ruud de Rooij Sun, 28 Mar 1999 15:34:03 +0200 */ +#include #include #include #include +#include #ifdef HAVE_SYS_TIME_H # include @@ -42,8 +44,10 @@ #include #endif -#ifdef LOCKDIR +#ifdef DOT_LOCKING +# ifdef LOCKDIR char *lockdir = LOCKDIR; +# endif #endif /* Are we using any kernel locking? */ @@ -328,7 +332,7 @@ lkopen_kernel(char *file, int access, mode_t mode) j = errno; close(fd); - sleep(5); + sleep(1); } close(fd); @@ -380,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; @@ -393,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); } @@ -429,8 +433,10 @@ lockit(struct lockinfo *li) curlock = li->curlock; tmplock = li->tmplock; - if ((fd = mkstemp(tmplock)) == -1) + if ((fd = mkstemp(tmplock)) == -1) { + advise(NULL, "unable to create temporary file in %s", tmplock); return -1; + } #if 0 /* write our process id into lock file */ @@ -510,11 +516,11 @@ timerON(char *curlock, int fd) struct lock *lp; size_t len; - lp = (struct lock *) mh_xmalloc(sizeof(*lp)); + lp = mh_xcalloc(1, sizeof(*lp)); len = strlen(curlock) + 1; lp->l_fd = fd; - lp->l_lock = mh_xmalloc(len); + lp->l_lock = mh_xcalloc(len, sizeof(char)); memcpy(lp->l_lock, curlock, len); lp->l_next = l_top; @@ -551,8 +557,8 @@ timerOFF(int fd) else pp->l_next = lp->l_next; - free(lp->l_lock); - free(lp); + mh_free0(&(lp->l_lock)); + mh_free0(&lp); } }