Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Jun 2002 09:10:36 +1000 (EST)
From:      Peter Jeremy <peter.jeremy@alcatel.com.au>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   kern/39252: Syscons doesn't support 8-bit control characters
Message-ID:  <200206132310.g5DNAahd043859@gsmx07.alcatel.com.au>

next in thread | raw e-mail | index | archive | help

>Number:         39252
>Category:       kern
>Synopsis:       Syscons doesn't support 8-bit control characters
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jun 13 16:20:02 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Peter Jeremy
>Release:        FreeBSD 4.6-PRERELEASE, 5.0-CURRENT i386
>Organization:
Alcatel Australia Limited
>Environment:
System: FreeBSD gsmx07.alcatel.com.au 5.0-CURRENT FreeBSD 5.0-CURRENT #2: Tue May 7 08:15:34 EST 2002 root@:/usr/obj/3.0/cvs/src/sys/gsmx i386
System: FreeBSD aalp03.alcatel.com.au 4.6-PRERELEASE FreeBSD 4.6-PRERELEASE #0: Wed May  8 03:17:26 EST 2002     root@aalp03.alcatel.com.au:/usr/obj/usr/src/sys/wansim  i386

>Description:
	syscons supports a subset of ANSI x3.64 (see screen(4)) control
	sequences beginning with 'ESC [' but does not support the 8-bit
	equivalent of 'ESC [' (0x9b).  This causes problems when using
	syscons as a terminal emulator in 8-bit mode.

>How-To-Repeat:
	The following two sequences should be equivalent - displaying
	"hello" in reverse video.  The first works correctly with syscons
	but the second displays " 7mhello m".

	$ printf '\033[7mhello\033[m\n'
	$ printf '\2337mhello\233m\n'

>Fix:

Index: scterm-sc.c
===================================================================
RCS file: /usr/ncvs/src/sys/dev/syscons/scterm-sc.c,v
retrieving revision 1.4.2.10
diff -u -r1.4.2.10 scterm-sc.c
--- scterm-sc.c	11 Jun 2001 09:05:39 -0000	1.4.2.10
+++ scterm-sc.c	7 Feb 2002 22:38:25 -0000
@@ -645,6 +645,7 @@
 scterm_puts(scr_stat *scp, u_char *buf, int len)
 {
 	term_stat *tcp;
+	int i;
 
 	tcp = scp->ts;
 outloop:
@@ -661,6 +662,13 @@
 			tcp->num_param = 0;
 			buf++;
 			len--;
+			break;
+                case 0x9b:
+                        tcp->esc = 2;
+                        tcp->last_param = -1;
+                        for (i = tcp->num_param; i < MAX_ESC_PAR; i++)
+                                tcp->param[i] = 1;
+                        tcp->num_param = 0;
 			break;
 		default:
 			sc_term_gen_print(scp, &buf, &len, tcp->cur_attr);
>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200206132310.g5DNAahd043859>