Subject: kern/7124: wsemul_vt100 botches tabs.
To: None <gnats-bugs@gnats.netbsd.org>
From: Bill Sommerfeld <sommerfeld@orchard.arlington.ma.us>
List: netbsd-bugs
Date: 03/10/1999 18:17:32
>Number:         7124
>Category:       kern
>Synopsis:       wsemul_vt100 botches tabs.
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    kern-bug-people (Kernel Bug People)
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Mar 10 10:20:02 1999
>Last-Modified:
>Originator:     Bill Sommerfeld
>Organization:
	none
>Release:        19990309
>Environment:
	
System: NetBSD orchard.arlington.ma.us 1.3K NetBSD 1.3K (ORCHARDII) #28: Wed Mar 10 01:46:31 EST 1999 sommerfeld@orchard.arlington.ma.us:/usr/src/sys/arch/i386/compile/ORCHARDII i386


>Description:
	When printing tabs, the vt100 emulation erases the characters 
	moved over.
	I am certain that, on real vt100's, a tab does *not* erase the
	characters moved over; it merely moves the cursor
	(this is based on fairly vivid memories of how emacs behaved on
	a vt100 which had hard tabs set every 10 characters...).

>How-To-Repeat:
	run emacs on console while stty -oxtabs is in effect. 
	note that it often overwrites parts of the screen with spaces.

	investigate, notice that its display optimization code uses
	TAB for non-destructive forward cursor motion when moving the
	cursor to a tab stop.
>Fix:
	remove code which does the erasing.

Index: wsemul_vt100.c
===================================================================
RCS file: /cvsroot/src/sys/dev/wscons/wsemul_vt100.c,v
retrieving revision 1.10
diff -u -r1.10 wsemul_vt100.c
--- wsemul_vt100.c	1999/01/17 15:44:57	1.10
+++ wsemul_vt100.c	1999/03/10 18:06:47
@@ -394,8 +394,10 @@
 		} else {
 			n = edp->ccol + min(8 - (edp->ccol & 7), COLS_LEFT);
 		}
+#if 0
 		ERASECOLS(edp->ccol, n - edp->ccol,
 			  kernel ? edp->kernattr : edp->curattr);
+#endif
 		edp->ccol = n;
 		break;
 	    case ASCII_SO: /* LS1 */
	
>Audit-Trail:
>Unformatted: