Pty driver info needed.

Keith Gabryelski ag at elgar.UUCP
Wed Feb 15 09:04:41 AEST 1989


In article <603 at tapa.UUCP> larry at tapa.UUCP (Larry Pajakowski) writes:
>Chip's message about script reminds me that I have been unable to get
>any info on the pty driver in the SCO 386 kernel.

>How close are they to the Berkeley or Sun pty drivers?

They seem pretty close.  But I noticed a possible name clash with
mscreen(M) and standard ptys.

ptys in mscreen(M) seemed to named (slave) `/dev/ttyp%d' and (master)
`/dev/ptyp%d' where `%d' is the some number.

This is not compatible with other ptys which are named (slave)
`/dev/tty%c%x' and (master) `/dev/pty%c%x' where `%c' is a letter `p'
and up and `%x' is a hex digit.

The following code fragment from my version of BSD script(1/C) may
explain what I mean a little better.

This code tries to find an available pty on the system.

	*--------------------------------------*
    found_pty = FALSE;
 
    for (i=0; i < 255 && !found_pty; ++i)
    {
#ifdef SCO_PTYS
	(void) sprintf(master_pty_filename, "/dev/ptyp%d", i);
#else /* !SCO_PTYS aka The Real Thing */
	(void) sprintf(master_pty_filename, "/dev/pty%c%x", 'p'+i/16, i%16);
#endif /* !SCO_PTYS */

	if ((master_pty_fd = open(master_pty_filename, O_RDWR)) != -1)
	{
#ifdef SCO_PTYS
 	    (void) sprintf(slave_pty_filename, "/dev/ttyp%d", i);
#else /* !SCO_PTYS aka The Real Thing */
 	    (void) sprintf(slave_pty_filename, "/dev/tty%c%x", 'p'+i/16,
			   i%16);
#endif /* !SCO_PTYS */

	    if ((slave_pty_fd = open(slave_pty_filename, O_RDWR)) < 0)
	    {
		(void)
		    fprintf(stderr,
			    "%s: Couldn't open slave pseudo tty: %s (%s).\n",
			       progname, slave_pty_filename,
			       long_error(errno));
		(void) exit(1);
	    }
 	    else
 		found_pty = TRUE;
	}
    }
	*--------------------------------------*

So, in your code you must compensate for either naming conventions.
Possibly by using one of the above naming conventions (modifing
existing code that may need it; ie GNU EMACS) or by using bother
naming conventions.

>Can anyone enlighten me and the rest of this group on their findings.

^S and ^Q will not pass through the SCO ptys unless you `stty -ixon
-ixoff' before doing the mscreen(M) thing.  I do the ioctl thing in
script(C) to solve this problem.

Remember to open both sides of the pty to make sure it is availble for
use since the slave could have a getty running on it (for use in
mscreen(M)).

Pax, Keith
-- 
ag at elgar.CTS.COM         Keith Gabryelski          ...!{ucsd, crash}!elgar!ag



More information about the Comp.unix.xenix mailing list