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

[mgp-users-jp 00418] Magic Point on NetBSD-current



	IRI 許です。

	NetBSD-current (1998/01/23) の上で MagicPoint が動かないので、調べて
	みて、とりあえず無理矢理動かす方法は判りましたので、報告します。
	ちょっと長いですが、かんべんして下さい。

	症状
% mgp sample.mgp
Can't open vffont minsl (vfcap=/usr/local/share/VFlib/vfontcap)

	mgp1.04a でも snap でもこうなります。
	使っている VFlib は 2.24.1 です。
	OS は NetBSD-current 1998/01/23 です。1.3.3 は試してません。

# なお、configure 段階から libVFlib が無いと言われて悲しいので、libVFlib2 を 
# libVFlib にlinkしてとりあえず試しています。

	まず、FreeBSD で試しました。これは全く問題なく動きました。
	NetBSD のせいか?と思いちょっと詳しく調べてみました。

	とりあえず、mgp の font.c を調べて、Error が出ているところを調べると、
	VF_OpenFont 呼ぶところで落ちています。
	まず vfontcap を疑って見ましたが、これは間違っていません。
	(VFlib付属のtoolを使って調べたところ問題なくfontはopenできる)
	そこで、font.c にちょいと手を入れて open している font を表示させて
	みたところminslを2回呼びに行っていて、2度目で落ちます。

	これは、VFlibが悪いのか?と思い、VFlib の方の src/VFlib.c から
	VF_OpenFontでPrintf debugをしたところ、1度目にVF_OpenFontする時には
	VF_init済みと判断して、問題なく処理するのですが、2度目(つまりエラー
	を出す時)は VF_init されていないと判断するようです。

	1度目の VF_OpenFontでは
		VFlibInited=1
	ですが、2度目で
		VFlibInited=0
	となっていて、VF_OpenFontからVF_Initを呼びに行ってしまう状態と言う事
	がわかりました。

	もう一度 font.c を見ると、vfont_fd >= 0 で VF_Deinit() しています。
	VF_Deinit すると VFlib は font table をfreeして完全に clear してしま
	います。
	そこで、とりあえずの対処として、VF_Deinit を comment out すると
	mgp が動作しました。

	ここまで見てみて、なぜ FreeBSD で動くのか良く判らなくなってしまいま
	したが、とりあえずご報告まで。