[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:15588] Processing comments in vfontmap (was: current xdvi-pl depends on perl-5.8)



debian-devel ML で報告されたのですが,xdvik-22.40v-j1.13 では 
vfontmap のコメントの処理が正しく行われていないため,ある種の条件を満
たすエントリが vfontmap に含まれていると,

    , There is too much argument.

というエラーメッセージが出力されます.例えば,

    ### GT type face 2000

という行を vfontmap に追加して試してみてください.

ただし,これは strtok() の実装に依存した問題かもしれません.手元の 
glibc-2.3.1 では行頭に # がある状態で strtok(line, "#") しても行頭に 
\0 が代入されません.そのため,この行がコメントのみであると扱われず,
かつ,3つ以上の token からなる行と解釈されるために,上述のエラーメッセー
ジが出力されるわけです.

とりあえず,コメントについては strtok() を使わないように修正すると,メッ
セージが出力されないようになりました.

-- 
土屋 雅稔 ( TSUCHIYA Masatoshi )

--- vfontmap.c.orig	2003-03-10 23:04:34.000000000 +0900
+++ vfontmap.c	2003-03-10 23:33:51.000000000 +0900
@@ -84,7 +84,7 @@
 {
     FILE *map;
     _Xconst char *vfontmapf;
-    char *jfmname, *vfname, line[BUFSIZ];
+    char *jfmname, *vfname, *comment, line[BUFSIZ];
     int i, tate;
 
 #if defined(USE_ZEIT) && defined(USE_VFONTMAP)
@@ -95,7 +95,8 @@
     } else {
 	while (fgets(line, BUFSIZ, map) != NULL) {
 	    tate = 0;
-	    strtok(line, "#");  /* break comment */
+	    if ((comment = strchr(line, '#')) != NULL) /* break comment */
+		*comment = '\0';
 	    jfmname = strtok(line, " \t\n");
 	    vfname = strtok(NULL, " \t\n");
 #ifdef PTEX