Return to BSD News archive
Path: sserve!manuel.anu.edu.au!munnari.oz.au!hp9000.csc.cuhk.hk!saimiri.primate.wisc.edu!caen!uunet!mcsun!fuug!kiae!demos!newsserv From: "Andrew A. Chernov, Black Mage" <ache@astral.msk.su> Newsgroups: comp.unix.bsd Subject: Re: Patch tty driver for correct handle COMPAT_43 tty modes (SECOND patch) Date: Wed, 02 Dec 92 23:22:35 +0300 Distribution: world Organization: Ha-oh-lahm Yetzirah Message-ID: <qCBiH7hi40@astral.msk.su> Sender: news-service@newcom.kiae.su Reply-To: ache@astral.msk.su Keywords: COMPAT_43 386bsd tty driver References: <hF7BK5hiH1@astral.msk.su> Lines: 68 In comp.unix.bsd article <hF7BK5hiH1@astral.msk.su> Andrew A. Chernov writes: >Hi, >I found this bug in following situation: >my current tty modes: -parity cs8 -istrip >When I call any program that use CBREAK (COMPAT_43) mode, >tty modes resets to: cs7 parenb istrip, >so, I lost my 8-bit characters. > >I produce this patch to fix this and some more situations. >I made COMPAT_43 modes and POSIX modes as close as >possible. [first patch skipped] I found another bug after my first patch: if anybody set and clear RAW mode, OPOST & IXANY modes stuck. Here is small patch (thanx to pasha@kiae.su) to correct this situation. REMEMBER: it is SECOND patch, apply my first patch before. *** tty_compat.c.was1 Thu Nov 26 22:38:06 1992 --- tty_compat.c Wed Dec 2 23:05:17 1992 *************** *** 242,249 **** } else flags |= EVENP | ODDP; } - if (!(oflag&OPOST) && (!(cflag&PARENB) || (cflag&CSIZE) == CS8)) - flags |= LITOUT; if ((cflag&CSIZE) == CS8 && !(iflag&ISTRIP)) flags |= PASS8; --- 242,247 ---- *************** *** 254,259 **** --- 252,259 ---- else flags |= RAW; } + if (!(flags&RAW) && !(oflag&OPOST) && (!(cflag&PARENB) || (cflag&CSIZE) == CS8)) + flags |= LITOUT; if (oflag&OXTABS) flags |= XTABS; if (lflag&ECHOE) *************** *** 283,289 **** register long cflag = t->c_cflag; if (flags & RAW) { ! iflag &= IXOFF; oflag &= ~OPOST; lflag &= ~(ECHOCTL|ISIG|ICANON|IEXTEN); } else { --- 283,289 ---- register long cflag = t->c_cflag; if (flags & RAW) { ! iflag &= (IXOFF|IXANY); oflag &= ~OPOST; lflag &= ~(ECHOCTL|ISIG|ICANON|IEXTEN); } else { -- In-This-Life: Andrew A. Chernov | "Hay mas dicha, mas contento Internet: ache@astral.msk.su | "Que adorar una hermosura Organization: The RELCOM Corp., | "Brujuleada entre los lejos Moscow, Russia | "De lo imposible?!" (Calderon)