Use openpty() to deal with the new pty naming scheme.

This commit is contained in:
simonb 2002-05-30 03:22:58 +00:00
parent 5004b7788d
commit 688f49ac00
2 changed files with 16 additions and 41 deletions

View File

@ -1,4 +1,4 @@
# $NetBSD: Makefile,v 1.8 1997/11/21 08:35:41 lukem Exp $
# $NetBSD: Makefile,v 1.9 2002/05/30 03:22:58 simonb Exp $
# @(#)Makefile 8.1 (Berkeley) 6/6/93
PROG= window
@ -16,7 +16,7 @@ SRCS= char.c cmd.c cmd1.c cmd2.c cmd3.c cmd4.c cmd5.c cmd6.c cmd7.c \
wwterminfo.c wwtty.c wwunframe.c wwupdate.c wwwrite.c xx.c xxflush.c \
compress.c
MAN= window.1
DPADD= ${LIBTERMCAP}
LDADD= -ltermcap
DPADD= ${LIBTERMCAP} ${LIBUTIL}
LDADD= -ltermcap -lutil
.include <bsd.prog.mk>

View File

@ -1,4 +1,4 @@
/* $NetBSD: wwpty.c,v 1.5 1997/11/21 08:49:12 mrg Exp $ */
/* $NetBSD: wwpty.c,v 1.6 2002/05/30 03:22:58 simonb Exp $ */
/*
* Copyright (c) 1983, 1993
@ -41,7 +41,7 @@
#if 0
static char sccsid[] = "@(#)wwpty.c 8.1 (Berkeley) 6/6/93";
#else
__RCSID("$NetBSD: wwpty.c,v 1.5 1997/11/21 08:49:12 mrg Exp $");
__RCSID("$NetBSD: wwpty.c,v 1.6 2002/05/30 03:22:58 simonb Exp $");
#endif
#endif /* not lint */
@ -49,49 +49,24 @@ __RCSID("$NetBSD: wwpty.c,v 1.5 1997/11/21 08:49:12 mrg Exp $");
#include <sys/ioctl.h>
#endif
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
#include <util.h>
#include "ww.h"
int
wwgetpty(w)
struct ww *w;
{
char c, *p;
int tty;
int on = 1;
#define PTY "/dev/XtyXX"
#define _PT 5
#define _PQRS 8
#define _0_9 9
int result, tty;
(void) strcpy(w->ww_ttyname, PTY);
for (c = 'p'; c <= 'u'; c++) {
w->ww_ttyname[_PT] = 'p';
w->ww_ttyname[_PQRS] = c;
w->ww_ttyname[_0_9] = '0';
if (access(w->ww_ttyname, 0) < 0)
break;
for (p = "0123456789abcdef"; *p; p++) {
w->ww_ttyname[_PT] = 'p';
w->ww_ttyname[_0_9] = *p;
if ((w->ww_pty = open(w->ww_ttyname, 2)) < 0)
continue;
w->ww_ttyname[_PT] = 't';
if ((tty = open(w->ww_ttyname, 2)) < 0) {
(void) close(w->ww_pty);
continue;
}
(void) close(tty);
if (ioctl(w->ww_pty, TIOCPKT, (char *)&on) < 0) {
(void) close(w->ww_pty);
continue;
}
(void) fcntl(w->ww_pty, F_SETFD, 1);
return 0;
}
result = openpty(&w->ww_pty, &tty, w->ww_ttyname, NULL, NULL);
if (result < 0) {
w->ww_pty = -1;
wwerrno = WWE_NOPTY;
return -1;
} else {
(void) ioctl(w->ww_pty, TIOCPKT, (char *)&on);
(void) fcntl(w->ww_pty, F_SETFD, 1);
return 0;
}
w->ww_pty = -1;
wwerrno = WWE_NOPTY;
return -1;
}