Return to BSD News archive
Path: sserve!newshost.anu.edu.au!munnari.oz.au!bunyip.cc.uq.oz.au!harbinger.cc.monash.edu.au!yeshua.marcam.com!MathWorks.Com!europa.eng.gtefsd.com!news.umbc.edu!haven.umd.edu!umd5.umd.edu!mark From: mark@roissy.umd.edu (Mark Sienkiewicz) Newsgroups: comp.os.386bsd.questions Subject: HACK/FIX Re: More causes garbage on dialin Date: 8 Feb 1994 21:51:45 GMT Organization: Zeno, IPST, University of Maryland Lines: 51 Message-ID: <2j91hh$gio@hecate.umd.edu> References: <2hnoc9$b4f@crl2.crl.com> <hastyCKB3rL.MBq@netcom.com> <1994Jan28.220616.1676@diana.ocunix.on.ca> <BLYMN.94Feb4184001@mallee.awadi.com.au> NNTP-Posting-Host: roissy.umd.edu >>>>When we dial into our NETBSD host and use more, the output gets all > >Diane> I first noticed this problem with 'man' under NETBSD 0.9 a month or so >Diane> ago. I traced it to 'more' messing up (which of course, 'man' uses.) >Diane> 'more' messed up the stty settings. I haven't been able to look at this >Diane> and track the problem down completely due to time constraints. > >Diane> To confirm this is your problem, try a shell sequence such as: > >Diane> stty -a > before_stty_settings;more shortfile;stty -a > after_stty_settings > >Actually, it's more than more :-) that does this. On my NetBSD 0.9 >system it seems like anything that uses cbreak (or maybe raw) tty >stuff breaks it. In my case the line gets set to 7bits no parity, >my normal operation is 7 bits, even parity. I posted the problem to >the netbsd-bugs mailing list, silence was the stern reply. The correct fix for this is in the sgtty() emulation, but rather than trace through that, I hacked arch/isa/com.c as follows: In the function comparam(), you see switch (cflag&CSIZE) { case CS5: cfcr = CFCR_5BITS; break; case CS6: cfcr = CFCR_6BITS; break; case CS7: cfcr = CFCR_7BITS; break; case CS8: cfcr = CFCR_8BITS; break; } if (cflag&PARENB) { cfcr |= CFCR_PENAB; if ((cflag&PARODD) == 0) cfcr |= CFCR_PEVEN; } The sgtty() emulation sets things up as "cs7 -parenb" which really means 1 start bit, 7 data bits, 1 stop bit. In fact, what most people want is 1 start bit, 8 data bits, 1 stop bit, even when they are talking about a seven bit path. My hack is: case CS7: cfcr = CFCR_7BITS | CFCR_PENAB | CFCR_PEVEN; break; which works for my preference of 7 bits even parity. It's a hack but it makes it do what I want it to do. I might even make a proper fix someday... :)