summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2010-06-29 20:09:40 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2010-06-29 20:09:40 +0000
commitabdb9c7ff6417c26618514872b4bd4a27e71a1f6 (patch)
tree795ae9efcf30bcc53c3724f33afd74abb28a3b71
parente69cd500249d0f33ac2315b0a6fa39715244a3bf (diff)
Use the libutil implementation of UUCP locking.
-rw-r--r--usr.bin/tip/Makefile8
-rw-r--r--usr.bin/tip/hunt.c6
-rw-r--r--usr.bin/tip/pathnames.h7
-rw-r--r--usr.bin/tip/tip.h6
-rw-r--r--usr.bin/tip/uucplock.c119
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));
-}