[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00232] Re: patchのインストールについて
- Subject: [FDclone-users:00232] Re: patchのインストールについて
- From: "Akira Asahina" <a_akira_1975@hotmail.com>
- Date: Sat, 6 Sep 2003 09:00:25 +0900
あさひな と申します。
> しらいです。
>
> うちでは全然再現しなかったので、もしやと思って libncurses
> の source を紐解いてみたところ、どうやら libncurses の独自仕
> 様が原因のようですね。
>
> 端末を持たない環境では当然 $TERM も設定されていない訳で、
> そういうケースでは TERM=unknown と見なして処理するというのが
> 定石になっています。
> ところが、libncurses では unknown 端末は entry が存在しな
> いことになってしまっています。これは unknown が generic_type
> (gn) 属性を持っているせいです。
> この属性は汎用端末に規定されているもので、line printer だ
> とかパンチカードだとか、そういう今風の端末以外の端末を表すフ
> ラグです。
>
> 一般には、そういう端末であっても entry は存在するので、こ
> れを扱うアプリ側では、一応端末として存在を認識した上で、この
> フラグを見て「使えない」と判断するべきなんですが、libncurses
> の実装では entry が存在しないことにされてしまっています。
> このため、$TERM が未設定の環境では「unknown」と見なして処
> 理させたくても、「そんなものは無い」として蹴られてしまう訳で
> す。
> tset や tic など libncurses 附属のコマンド類でも、端末名不
> 明の際には「unknown」を使うようにしている癖に、この仕様では
> 「unknown」はてんで使いものになりませんね。
複雑なんですね。
詳しい解説まで書いて頂き、大変勉強になります。
> という訳で、対症療法的な解決策としては、「unknown」以外の
> 端末名を $TERM に設定してから fdsh を起動すれば、cron 内の処
> 理でも「entry 無し」扱いにされないと思います。
> 端末入出力は発生しないので、ここで設定する端末名は gn 属性
> さえ無ければ何でも構わない訳ですが、「unknown」とほぼ同内容
> の「dumb」辺りを設定しておけば無難なのではないでしょうか。
> fdsh を呼ぶ直前に「TERM=dumb; export TERM」という行を用意
> するか、もしくは「TERM=dumb fdsh ...」のように環境変数指定を
> 冠して fdsh を呼ぶか、そのどちらかでしょうね。
crontabに「TERM=dumb」という行を追加し実行したところ
無事、成功致しました。
ありがとうございました。
> 恒久的な対策としては、端末名が未定義の場合には「unknown」
> 「un」「dumb」の順に entry を調べてみて、どれかが見つかれば
> その名前を端末名にするように実装します。
> その上で、cron 内のように端末を持たない場合にはそもそも端
> 末設定を行なわせないようにしておきますね。上記の 3 つともが
> gn 属性になっていたとしても、少なくとも端末の無い場合の対処
> だけは出来るでしょう。
>
> 一応 FreeBSD 環境で libncurses を link して確認してみた限
> りでは、この実装で特に支障なさそうでした。他の環境でも暫く様
> 子を見た上で、今月中くらいを目処に新版を release する予定で
> す。
release される日をお待ちしております。
この度は迅速・親切丁寧なご対応ありがとうございました。
非常に感謝しております。誠にありがとうございました。
-------
Akira Asahina