Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Feb 2008 14:19:21 -0800 (PST)
From:      Jeremy Chadwick <koitsu@FreeBSD.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   conf/121064: Use ASCII characters for box/line characters in frames.4th
Message-ID:  <20080224221921.CE6FF1CC033@mx01.sc1.parodius.com>
Resent-Message-ID: <200802242220.m1OMK1cN069792@freefall.freebsd.org>

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

>Number:         121064
>Category:       conf
>Synopsis:       Use ASCII characters for box/line characters in frames.4th
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Sun Feb 24 22:20:01 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     Jeremy Chadwick
>Release:        FreeBSD 6.3-PRERELEASE i386
>Organization:
>Environment:
System: FreeBSD eos.sc1.parodius.com 6.3-PRERELEASE FreeBSD 6.3-PRERELEASE #0: Mon Jan 14 17:48:12 PST 2008 root@eos.sc1.parodius.com:/usr/obj/usr/src/sys/EOS i386
>Description:
	The existing /boot/frames.4th framework assumes users are on a CP437
	(PC ANSI)-capable or PC98-capable console  The character set used will
	be generally incompatible on systems using serial console, where the user
	attached is using a VT100 terminal, xterm, xterm via PuTTY, or anything
	else that doesn't use a CP437 or PC98 charset.  The result is that the
	box/line characters appear incorrect, as shown here:
	http://lists.freebsd.org/pipermail/freebsd-hackers/2007-June/020851.html

	I've come up with a patch which addresses this, using ASCII characters
	to do the line drawing -- but only when the serial port is chosen as an
	output device for loader (via -h in /boot.config or console="comconsole"
	in loader.conf).

	Patch tested successfully on RELENG_7, but should work on RELENG_6 too.

	Full discussion of said issue:
	http://lists.freebsd.org/pipermail/freebsd-hackers/2008-February/023534.html

	Much thanks to Oliver Fromme for all the help!  :-)
>How-To-Repeat:
	See description.
>Fix:
	Apply below patch, then enable serial console.



--- frames.4th.orig	2008-02-12 00:20:18.000000000 -0800
+++ frames.4th	2008-02-24 14:11:38.000000000 -0800
@@ -56,6 +56,11 @@
 	178 constant fill_bright
 [then]
 
+\ Used when serial console is detected (-|+ characters)
+45 constant ascii_dash
+124 constant ascii_pipe
+43 constant ascii_plus
+
 : hline	( len x y -- )	\ Draw horizontal single line
 	at-xy		\ move cursor
 	0 do
@@ -108,5 +113,35 @@
 	2drop
 ;
 
+: set_serial_charset	( -- )
+	s" console" getenv
+	dup -1 = if
+		drop exit
+	then
+	s" comconsole" compare-insensitive 0= if
+		drop
+		ascii_dash h_el !
+		ascii_pipe v_el !
+		ascii_plus lt_el !
+		ascii_plus lb_el !
+		ascii_plus rt_el !
+		ascii_plus rb_el !
+	then
+	s" boot_serial" getenv
+	dup -1 = if
+		drop exit
+	then
+	s" YES" compare-insensitive 0= if
+		drop
+		ascii_dash h_el !
+		ascii_pipe v_el !
+		ascii_plus lt_el !
+		ascii_plus lb_el !
+		ascii_plus rt_el !
+		ascii_plus rb_el !
+	then
+;
+
 f_single
+set_serial_charset
 fill_none fill !
>Release-Note:
>Audit-Trail:
>Unformatted:



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