Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 12 Oct 1999 15:20:55 -0400 (EDT)
From:      Mikhail Teterin <mi@misha.cisco.com>
To:        FreeBSD-gnats-submit@freebsd.org
Cc:        brett@peloton.runet.edu, billf@freebsd.org
Subject:   ports/14292: tkfont does not work with XiG X-server
Message-ID:  <199910121920.PAA52138@misha.cisco.com>

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

>Number:         14292
>Category:       ports
>Synopsis:       tkfont does not work with XiG X-server
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-ports
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Oct 12 12:30:01 PDT 1999
>Closed-Date:
>Last-Modified:
>Originator:     Mikhail Teterin
>Release:        FreeBSD 3.3-STABLE i386
>Organization:
Virtual Estates, Inc.
>Environment:

	An X-server from XiG.

>Description:

	An X-server without an XFree86-MISC extension (or ANY other
	X-server on which `xset -q' writes ANYTHING to stderr) will
	prevent tkfont from starting up. This is because TCL's exec
	treats non-empty stderr as an indication of error. A script
	is supposed to catch it and analize errorCode to avoid it.

	Also, the  tkfont relies  on the presense  of awk  (not too
	dangerous),  and on  the  fact  that at  least  one of  the
	font-dirs  will have  the the  "fonts" component  in it  --
	quite dangerous.

	Also, the current port does not make sure the references to
	/usr/local are replaced with ${LOCALBASE}.

>How-To-Repeat:

	See description.
>Fix:

	The patch below  fixes the crash by  replacing the original
	(very silly) GetFontDirs-procedure  with a more intelligent
	one. This one  only execs xset and does the  parsing of the
	output  inside TCL,  which also  happens to  be faster.  It
	detects the fontpath  component of `xset -q'  output by the
	words "Font Dirs:". The  auxiliary shell script GetFontDirs
	is no longer installed.
	
diff -r -P -U1 /lan/bummer/home/mi/ports/x11-fonts/tkfont/Makefile ./Makefile
--- /lan/bummer/home/mi/ports/x11-fonts/tkfont/Makefile	Thu Sep 16 11:31:19 1999
+++ ./Makefile	Tue Oct 12 14:48:32 1999
@@ -20,3 +20,5 @@
 post-patch:
-	${SED} -e "s,#!/usr/X11/bin/wish,#!$(LOCALBASE)/bin/wish8.0," < ${WRKSRC}/tkfont > ${WRKSRC}/tkfont.new
+	${SED} -e "s,/usr/local,${LOCALBASE}," \
+		-e "s,#!/usr/X11/bin/wish,#!$(LOCALBASE)/bin/wish8.0," \
+		 < ${WRKSRC}/tkfont > ${WRKSRC}/tkfont.new
 	${MV} ${WRKSRC}/tkfont.new ${WRKSRC}/tkfont
@@ -26,3 +28,2 @@
 	@${MKDIR} ${PREFIX}/lib/tkfont
-	@${INSTALL_SCRIPT} ${WRKSRC}/GetFontDirs ${PREFIX}/lib/tkfont
 	@for file in COPYING Bugs.txt FileMenu.txt FindFont FontDirs.txt FontTypes.txt HelpText.txt README WhatsNew.txt; do \
@@ -30,2 +31,3 @@
 	done
+
 .include <bsd.port.mk>
diff -r -P -U1 /lan/bummer/home/mi/ports/x11-fonts/tkfont/patches/patch-aa ./patches/patch-aa
--- /lan/bummer/home/mi/ports/x11-fonts/tkfont/patches/patch-aa	Wed Dec 31 19:00:00 1969
+++ ./patches/patch-aa	Tue Oct 12 14:35:52 1999
@@ -0,0 +1,32 @@
+--- /usr/local/bin/tkfont	Tue Oct 12 13:37:45 1999
++++ tkfont	Tue Oct 12 14:27:43 1999
+@@ -33,11 +33,4 @@
+-proc GetFontDirs { } {
+-	global FontDirList
+-	set TempFileName "/tmp/dirs.list.[pid]"
+-	exec /usr/local/lib/tkfont/GetFontDirs > $TempFileName
+-	list FontDirList_a
+-
+-	set Chan [open $TempFileName r]
+-	set chars 1
+-	while {$chars > 0} {
+-		set chars [gets $Chan onedirname]
+-		lappend FontDirList_a $onedirname
++proc GetFontDirs {} {
++	global FontDirList errorCode
++	if {[catch {exec xset -q} result] && $errorCode != "NONE"} {
++		error $result
+@@ -45,5 +38,8 @@
+-	close $Chan
+-	exec rm $TempFileName
+-	set FontDirList [lreplace $FontDirList_a 0 0 \
+-		[string trim [lindex $FontDirList_a 0]]]
+-	set FontDirList [lreplace $FontDirList end end]
++	set lines [split $result \n]
++	set i [lsearch -exact $lines "Font Path:"]
++	if {$i == -1} {
++		error "Output of `xset -q' did not contain\
++			`Font Path:'\n$result"
++	}
++	set dirLine [string trim [lindex $lines [incr i]]]
++	set FontDirList [split $dirLine ,]
diff -r -P -U1 /lan/bummer/home/mi/ports/x11-fonts/tkfont/pkg/PLIST ./pkg/PLIST
--- /lan/bummer/home/mi/ports/x11-fonts/tkfont/pkg/PLIST	Sun Jan  3 13:25:22 1999
+++ ./pkg/PLIST	Tue Oct 12 14:48:38 1999
@@ -8,3 +8,2 @@
 lib/tkfont/Bugs.txt
-lib/tkfont/GetFontDirs
 lib/tkfont/FindFont

>Release-Note:
>Audit-Trail:
>Unformatted:


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




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