diff options
author | Nicholas Marriott <nicm@cvs.openbsd.org> | 2010-06-29 20:09:40 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@cvs.openbsd.org> | 2010-06-29 20:09:40 +0000 |
commit | abdb9c7ff6417c26618514872b4bd4a27e71a1f6 (patch) | |
tree | 795ae9efcf30bcc53c3724f33afd74abb28a3b71 | |
parent | e69cd500249d0f33ac2315b0a6fa39715244a3bf (diff) |
Use the libutil implementation of UUCP locking.
-rw-r--r-- | usr.bin/tip/Makefile | 8 | ||||
-rw-r--r-- | usr.bin/tip/hunt.c | 6 | ||||
-rw-r--r-- | usr.bin/tip/pathnames.h | 7 | ||||
-rw-r--r-- | usr.bin/tip/tip.h | 6 | ||||
-rw-r--r-- | usr.bin/tip/uucplock.c | 119 |
5 files changed, 14 insertions, 132 deletions
diff --git a/usr.bin/tip/Makefile b/usr.bin/tip/Makefile index c3168f542c2..c071f1fc80b 100644 --- a/usr.bin/tip/Makefile +++ b/usr.bin/tip/Makefile @@ -1,10 +1,14 @@ -# $OpenBSD: Makefile,v 1.13 2010/06/29 16:44:38 nicm Exp $ +# $OpenBSD: Makefile,v 1.14 2010/06/29 20:09:39 nicm Exp $ PROG= tip LINKS= ${BINDIR}/tip ${BINDIR}/cu MAN= tip.1 cu.1 + CFLAGS+=-I${.CURDIR} -DDEFBR=9600 -DDEFFS=BUFSIZ +LDADD= -lutil +DPADD= ${LIBUTIL} + SRCS= cmds.c cmdtab.c cu.c hunt.c log.c partab.c remote.c tip.c \ - tipout.c uucplock.c value.c vars.c + tipout.c value.c vars.c .include <bsd.prog.mk> diff --git a/usr.bin/tip/hunt.c b/usr.bin/tip/hunt.c index 77aefe1bd0b..7885368d37f 100644 --- a/usr.bin/tip/hunt.c +++ b/usr.bin/tip/hunt.c @@ -1,4 +1,4 @@ -/* $OpenBSD: hunt.c,v 1.15 2010/06/29 17:42:35 nicm Exp $ */ +/* $OpenBSD: hunt.c,v 1.16 2010/06/29 20:09:39 nicm Exp $ */ /* $NetBSD: hunt.c,v 1.6 1997/04/20 00:02:10 mellon Exp $ */ /* @@ -30,6 +30,8 @@ * SUCH DAMAGE. */ +#include <util.h> + #include "tip.h" static jmp_buf deadline; @@ -59,7 +61,7 @@ hunt(char *name) uucplock = cp; else uucplock++; - if (uu_lock(uucplock) < 0) + if (uu_lock(uucplock) != UU_LOCK_OK) continue; if (setjmp(deadline) == 0) { diff --git a/usr.bin/tip/pathnames.h b/usr.bin/tip/pathnames.h index 76778e65344..3369ad60074 100644 --- a/usr.bin/tip/pathnames.h +++ b/usr.bin/tip/pathnames.h @@ -1,4 +1,4 @@ -/* $OpenBSD: pathnames.h,v 1.4 2010/06/29 16:41:56 nicm Exp $ */ +/* $OpenBSD: pathnames.h,v 1.5 2010/06/29 20:09:39 nicm Exp $ */ /* $NetBSD: pathnames.h,v 1.3 1994/12/08 09:30:59 jtc Exp $ */ /* @@ -34,6 +34,5 @@ #include <paths.h> -#define _PATH_ACULOG "/var/log/aculog" -#define _PATH_LOCKDIRNAME "/var/spool/lock/LCK..%s" -#define _PATH_REMOTE "/etc/remote" +#define _PATH_ACULOG "/var/log/aculog" +#define _PATH_REMOTE "/etc/remote" diff --git a/usr.bin/tip/tip.h b/usr.bin/tip/tip.h index d24805e81df..c4a7308c24e 100644 --- a/usr.bin/tip/tip.h +++ b/usr.bin/tip/tip.h @@ -1,4 +1,4 @@ -/* $OpenBSD: tip.h,v 1.38 2010/06/29 18:39:18 nicm Exp $ */ +/* $OpenBSD: tip.h,v 1.39 2010/06/29 20:09:39 nicm Exp $ */ /* $NetBSD: tip.h,v 1.7 1997/04/20 00:02:46 mellon Exp $ */ /* @@ -285,10 +285,6 @@ void unraw(void); /* tipout.c */ void tipout(void); -/* uucplock.c */ -int uu_lock(char *); -int uu_unlock(char *); - /* value.c */ void vinit(void); void vlex(char *); diff --git a/usr.bin/tip/uucplock.c b/usr.bin/tip/uucplock.c deleted file mode 100644 index 7ea9c6c53a1..00000000000 --- a/usr.bin/tip/uucplock.c +++ /dev/null @@ -1,119 +0,0 @@ -/* $OpenBSD: uucplock.c,v 1.12 2009/10/27 23:59:45 deraadt Exp $ */ -/* $NetBSD: uucplock.c,v 1.7 1997/02/11 09:24:08 mrg Exp $ */ - -/* - * Copyright (c) 1988, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/types.h> -#include <sys/file.h> -#include <sys/dir.h> -#include <stdio.h> -#include <string.h> -#include <signal.h> -#include <unistd.h> -#include <stdlib.h> -#include <errno.h> -#include "pathnames.h" - -/* - * uucp style locking routines - * return: 0 - success - * -1 - failure - */ - -int -uu_lock(char *ttyname) -{ - int fd, len; - char tbuf[sizeof(_PATH_LOCKDIRNAME) + MAXNAMLEN]; - char text_pid[81]; - pid_t pid; - - (void)snprintf(tbuf, sizeof tbuf, _PATH_LOCKDIRNAME, ttyname); - fd = open(tbuf, O_RDWR|O_CREAT|O_EXCL, 0660); - if (fd < 0) { - /* - * file is already locked - * check to see if the process holding the lock still exists - */ - fd = open(tbuf, O_RDWR, 0); - if (fd < 0) { - perror(tbuf); - fprintf(stderr, "Can't open lock file.\n"); - return(-1); - } - len = read(fd, text_pid, sizeof(text_pid)-1); - if (len<=0) { - perror(tbuf); - (void)close(fd); - fprintf(stderr, "Can't read lock file.\n"); - return(-1); - } - text_pid[len] = 0; - pid = atol(text_pid); - - if (kill(pid, 0) == 0 || errno != ESRCH) { - (void)close(fd); /* process is still running */ - return(-1); - } - /* - * The process that locked the file isn't running, so - * we'll lock it ourselves - */ - fprintf(stderr, "Stale lock on %s PID=%ld... overriding.\n", - ttyname, (long)pid); - if (lseek(fd, (off_t)0, SEEK_SET) < 0) { - perror(tbuf); - (void)close(fd); - fprintf(stderr, "Can't seek lock file.\n"); - return(-1); - } - /* fall out and finish the locking process */ - } - pid = getpid(); - (void)snprintf(text_pid, sizeof text_pid, "%10ld\n", (long)pid); - len = strlen(text_pid); - if (write(fd, text_pid, len) != len) { - (void)close(fd); - (void)unlink(tbuf); - perror("lock write"); - return(-1); - } - (void)close(fd); - return(0); -} - -int -uu_unlock(char *ttyname) -{ - char tbuf[sizeof(_PATH_LOCKDIRNAME) + MAXNAMLEN]; - - (void)snprintf(tbuf, sizeof tbuf, _PATH_LOCKDIRNAME, ttyname); - return(unlink(tbuf)); -} |