[net.bugs.4bsd] Stupid MORE breaks on a rubout key when it should not

bstempleton@watmath.UUCP (Brad Templeton) (10/20/83)

Because I sometimes use noisy modem lines like this one, I set my
INTR character to ^C instead of rubout (del or ^? as some call it)
which is the silly unix default, since it is the most common character
on a noisy line.  But silly more ignores this fact and still breaks when
it gets a rubout even though it should be paying no special attention.

Much as I hate to say it, this makes me want to agree with Ian Allen
about unix programmers, which are a trademark of BTL.
-- 
	Brad Templeton - Waterloo, Ont. (519) 886-7304

perry@gatech.UUCP (10/22/83)

My experience with noisy lines is that framing errors are much more
common that any single character (like rubout).  Since the dh and
dz drivers both turn framing errors into the current interrupt
character, it doesn't matter what you set it to--you'll still get
interrupts on a noisy line.  And since more runs in CBREAK mode,
the interrupt character terminates the program. 

It's also true that more treats a rubout in response to its prompt
the same way it treats a q.  It probably should check for your
current interrupt character instead of assuming the default rubout.
-- 
Perry Flinn
Ga Tech School of ICS, Atlanta
perry.gatech@rand-relay		allegra!gatech!perry

chris@umcp-cs.UUCP (10/24/83)

Actually, the entire issue of breaks, framing errors, and interrupt
characters is thorougly mishandled by the Berkeley newtty driver.
The device drivers carefully convert framing errors to the appropriate
character from tp->t_chr (I don't know what they've called it in
4.2).  It should just pass the break as a special magic code, on
up into the higher level protocols.  There should be flags for
ignoring BREAK/FEs, and for generating interrupts regardless of
the interrupt character (or lack thereof, even in RAW mode) when
a BREAK/FE is detected.  (They look the same to most hardware.)

Berkeley should throw the whole thing out and write a new one that's
basically compatible with the System 5 setup, with the addition (of
course) of those ever-so-fun job control characters.

In the meantime, you have two options:  suffer with the noise, or
turn off your interrupt completely (``stty intr u'') -- this will
make all the device drivers ignore BREAK/FEs.

Chris
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci
UUCP:	{seismo,allegra,brl-bmd}!umcp-cs!chris
CSNet:	chris@umcp-cs		ARPA:	chris.umcp-cs@CSNet-Relay

dmmartindale@watcgl.UUCP (Dave Martindale) (10/27/83)

More has the character RUBOUT compiled into it as one of the cases in
a switch statement.  The code is prettier this way than if an IF
was used to check against your current interrupt character, but is
thus braindamaged.  Lesson to all programmers: avoid compiling things
like RUBOUT as the interrupt character into your program if it in fact
can be changed by the user.

Vi suffers from a related problem:  if one of your arrow keys transmits ^Z,
you can't use it and still be able to suspend your program, even if you
reassign your suspend character.  The reason is that ^Z is compiled in
(a case of a switch again) as the suspend character, and if you pick
another suspend character vi will arrange to map it to ^Z internally,
which means that you can't map the ^Z from the arrow key into one of hjkl
because that would remap the suspend character too.

thomas@utah-gr.UUCP (Spencer W. Thomas) (10/31/83)

I understand that you will have to have a System V license in order to
get 4.3Bsd.

=Spencer