[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: mail/ja-mh package
- Subject: Re: mail/ja-mh package
- From: Masanori Mikawa <mikawa@terra.dti.ne.jp>
- To: tech-pkg-ja@jp.netbsd.org
- Date: Sat, 09 Oct 2004 18:33:40 +0900
- Message-Id: <200410090933.i999XfNG029355@smtp1.dti.ne.jp>
- In-Reply-To: Message from Takahiro Kambe <taca@back-street.net>of "Thu, 23 Sep 2004 00:24:55 JST."<20040923.002455.126759884.taca@back-street.net>
- Delivered-To: mailing list tech-pkg-ja@jp.netbsd.org
- Mailing-List: contact tech-pkg-ja-help@jp.netbsd.org; run by ezmlm-idx
三河と申します。こんにちは。
vmh のパッチを作ってみました。
NetBSD curses を使ったものと、ncurses を使ったものの両方添付しています。
pkgsrc/mail/ja-mh-curses が NetBSD curses、
pkgsrc/mail/ja-mh-ncurses が ncurses を使ったものです。
(h/mh.h のパッチが無かったためコンパイルに失敗していましたので、patch-at
も足しています。)
NetBSD-2.0G, ncurses-5.4, kterm, kinput2 で確認しています。
日本語関係以外の curses/ncurses の確認に、wscons の vt100 エミュレート
(termcap の vt100 と vt100-nav) も使っています。
> A. 実は、wscanw(3)を使って書き換えできる。
構造体メンバの参照については、winch(3) を使って書き換えています。
mvwinnstr(3) でも書き換えられますが、NetBSD-1.6 あたりが必要なようでした
ので winch() にしています。(CVSWeb の src/lib/libcurses/curses.h を見たと
ころ、mvwinnstr() は revision 1.52 で追加されていました。)
> B. ncursesを使う; 日本語表示に問題はあるのか、ないのか?
ncurses の場合も、隠蔽されている WINDOW 構造体のメンバにアクセスしていま
した。こちらは mvwinnstr() で書き換えています。ncurses 固有の日本語表示問
題は特になさそうです。
他、vmh 自体に以下の問題と思える箇所がありました。
i. 日本語入力できない。
ii. スクロール等でスクリーンに上書きする際に、元の文字列を消去していない
ため文字化けする。
iii. コマンド入力バッファが固定長なので、(termcap co >= BUFSIZ) の場合、
バッファオーバーフローする可能性がある。
iv. EUC-JP のコードセット2/3 に対応していない。
v. (ncurses のみ) devel/ncurses/buildlink3.mk をインクルードすると、
mh-6.8.4-JP-3.03/uip 以下のプログラムのリンクに失敗する。(以下のエラ
ーメッセージ)
vi. コマンド入力時に、画面端で折り返し等の処理を行っていない。
vii. X 上のターミナル等、リサイズ可能なターミナルを考慮に入れていない。
[snip]
gcc -L../sbr -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -Xlinker -rpath -Xlinker /usr/pkg/lib -o xali ali.o aliasbr.o ../config/config.o -lmh ../mts/libmts.a ../zotnet/libzot.a ../config/version.o
../sbr/libmh.so: warning: getwd() possibly used unsafely, consider using getcwd()
../sbr/libmh.so: warning: mktemp() possibly used unsafely, use mkstemp() or mkdtemp()
../sbr/libmh.so: undefined reference to `dparsetime'
../sbr/libmh.so: undefined reference to `set_dotw'
../sbr/libmh.so: undefined reference to `getadrx'
../sbr/libmh.so: undefined reference to `dtimezone'
../sbr/libmh.so: undefined reference to `tw_moty'
../sbr/libmh.so: undefined reference to `dlocaltime'
../sbr/libmh.so: undefined reference to `tw_dotw'
../sbr/libmh.so: undefined reference to `twclock'
../sbr/libmh.so: undefined reference to `dgmtime'
../sbr/libmh.so: undefined reference to `dasctime'
../sbr/libmh.so: undefined reference to `legal_person'
../sbr/libmh.so: undefined reference to `tw_ldotw'
*** Error code 1 (continuing)
[snip]
元の問題も含め、vii. 以外は直してるつもりです。iv. はちょっと中途半端です
が (WINputc() のことです)。
vi. については画面端まで入力された後、入力を切り捨てるようにしてます。折
り返すかスクロールする方が望ましいと思うのですが、vii. と一緒に直そうかと
思い手を付けていません。
NetBSD 以外のことも考えると ncurses の方が良いような気がしますが、どちら
か決めて頂ければこの辺も直したいと思います。
ja-mh.tgz