projects
/
mmh
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
This is mmh-0.3
[mmh]
/
sbr
/
lock_file.c
diff --git
a/sbr/lock_file.c
b/sbr/lock_file.c
index
6b74068
..
957bc4e
100644
(file)
--- a/
sbr/lock_file.c
+++ b/
sbr/lock_file.c
@@
-15,20
+15,16
@@
** Ruud de Rooij <ruud@debian.org> Sun, 28 Mar 1999 15:34:03 +0200
*/
** Ruud de Rooij <ruud@debian.org> Sun, 28 Mar 1999 15:34:03 +0200
*/
+#include <unistd.h>
#include <h/mh.h>
#include <h/signals.h>
#include <h/utils.h>
#include <h/mh.h>
#include <h/signals.h>
#include <h/utils.h>
+#include <sys/stat.h>
-#ifdef TIME_WITH_SYS_TIME
+#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# include <sys/time.h>
-# include <time.h>
-#else
-# ifdef TM_IN_SYS_TIME
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
#endif
#endif
+#include <time.h>
#include <errno.h>
#include <errno.h>
@@
-48,8
+44,10
@@
#include <lockfile.h>
#endif
#include <lockfile.h>
#endif
-#ifdef LOCKDIR
+#ifdef DOT_LOCKING
+# ifdef LOCKDIR
char *lockdir = LOCKDIR;
char *lockdir = LOCKDIR;
+# endif
#endif
/* Are we using any kernel locking? */
#endif
/* Are we using any kernel locking? */
@@
-104,7
+102,7
@@
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 void lockname(char *, struct lockinfo *, int);
static void timerON(char *, int);
static void timerOFF(int);
-static RETSIGTYPE alrmser(int);
+static void alrmser(int);
#if !defined(HAVE_LIBLOCKFILE)
static int lockit(struct lockinfo *);
#if !defined(HAVE_LIBLOCKFILE)
static int lockit(struct lockinfo *);
@@
-334,7
+332,7
@@
lkopen_kernel(char *file, int access, mode_t mode)
j = errno;
close(fd);
j = errno;
close(fd);
- sleep(5);
+ sleep(1);
}
close(fd);
}
close(fd);
@@
-386,7
+384,7
@@
lkopen_dot(char *file, int access, mode_t mode)
if (stat(lkinfo.curlock, &st) == -1) {
if (i++ > 5)
return -1;
if (stat(lkinfo.curlock, &st) == -1) {
if (i++ > 5)
return -1;
- sleep(5);
+ sleep(1);
} else {
time_t curtime;
i = 0;
} else {
time_t curtime;
i = 0;
@@
-399,7
+397,7
@@
lkopen_dot(char *file, int access, mode_t mode)
if (curtime > st.st_ctime + RSECS)
unlink(lkinfo.curlock);
else
if (curtime > st.st_ctime + RSECS)
unlink(lkinfo.curlock);
else
- sleep(5);
+ sleep(1);
}
lockname(file, &lkinfo, 1);
}
}
lockname(file, &lkinfo, 1);
}
@@
-435,8
+433,10
@@
lockit(struct lockinfo *li)
curlock = li->curlock;
tmplock = li->tmplock;
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;
return -1;
+ }
#if 0
/* write our process id into lock file */
#if 0
/* write our process id into lock file */
@@
-516,11
+516,11
@@
timerON(char *curlock, int fd)
struct lock *lp;
size_t len;
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;
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;
memcpy(lp->l_lock, curlock, len);
lp->l_next = l_top;
@@
-557,8
+557,8
@@
timerOFF(int fd)
else
pp->l_next = lp->l_next;
else
pp->l_next = lp->l_next;
- free(lp->l_lock);
- free(lp);
+ mh_free0(&(lp->l_lock));
+ mh_free0(&lp);
}
}
}
}
@@
-573,16
+573,12
@@
timerOFF(int fd)
** lockfiles, so another command doesn't remove them.
*/
** lockfiles, so another command doesn't remove them.
*/
-static RETSIGTYPE
+static void
alrmser(int sig)
{
char *lockfile;
struct lock *lp;
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;
/* update the ctime of all the lock files */
for (lp = l_top; lp; lp = lp->l_next) {
lockfile = lp->l_lock;