ae21e03
--- kiss/mkiss.c.orig	2008-12-05 22:01:49.000000000 +0100
ae21e03
+++ kiss/mkiss.c	2008-12-05 22:09:36.000000000 +0100
ae21e03
@@ -96,6 +96,7 @@
ae21e03
 {
ae21e03
 	char		*name;		/* Interface name (/dev/???)	*/
ae21e03
 	int		fd;		/* File descriptor		*/
ae21e03
+	int		is_pty;
ae21e03
 	int		escaped;	/* FESC received?		*/
ae21e03
 	u16		crc;		/* Incoming frame crc		*/
ae21e03
 	unsigned char	obuf[SIZE];	/* TX buffer			*/
ae21e03
@@ -475,6 +476,8 @@
ae21e03
 		perror("mkiss: open");
ae21e03
 		return 1;
ae21e03
 	}
ae21e03
+	grantpt(tty->fd);
ae21e03
+	tty->is_pty = !unlockpt(tty->fd);
ae21e03
 
ae21e03
 	tty->name = argv[optind];
ae21e03
 	tty_raw(tty->fd, hwflag);
ae21e03
@@ -502,6 +505,8 @@
ae21e03
 			perror("mkiss: open");
ae21e03
 			return 1;
ae21e03
 		}
ae21e03
+		grantpt(pty[i]->fd);
ae21e03
+		pty[i]->is_pty = !unlockpt(pty[i]->fd);
ae21e03
 		pty[i]->name = argv[optind + i + 1];
ae21e03
 		tty_raw(pty[i]->fd, FALSE);
ae21e03
 		pty[i]->optr = pty[i]->obuf;
ae21e03
@@ -511,9 +516,11 @@
ae21e03
 	/*
ae21e03
 	 * Now all the ports are open, lock them.
ae21e03
 	 */
ae21e03
-	tty_lock(argv[optind]);
ae21e03
+	if (!tty->is_pty)
ae21e03
+		tty_lock(argv[optind]);
ae21e03
 	for (i = 0; i < numptys; i++)
ae21e03
-		tty_lock(argv[optind + i + 1]);
ae21e03
+		if (!pty[i]->is_pty)
ae21e03
+			tty_lock(argv[optind + i + 1]);
ae21e03
 
ae21e03
 	signal(SIGHUP, SIG_IGN);
ae21e03
 	signal(SIGUSR1, sigusr1_handler);