Use openpty() to deal with the new pty naming scheme.
This commit is contained in:
parent
5004b7788d
commit
688f49ac00
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue