[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freewnn:01000] Re: merge from canuum
- To: freewnn@XXXX
- Subject: [freewnn:01000] Re: merge from canuum
- From: aono@XXXX
- Date: Thu, 31 Jul 2003 19:49:59 JST
- In-reply-to: Your message of "Sun, 27 Jul 2003 15:50:20 +0900". <863cgsh39v.wl@chrysanthe.oikumene.gcd.org>
- Reply-to: freewnn@XXXX
青野です。こんばんは。
<863cgsh39v.wl@XXXX>の記事において
hiroo@XXXXさんは書きました。
>> At Fri, 25 Jul 2003 16:55:52 JST,
>> aono@XXXX wrote:
>> > 「以前ftp.tohoku.ac.jpに置いてあったSolaris/HPUX用パッチを
>> > ベースに」書き直したそうですが、この場合従来のパッチを作成
>> > された方の了承まで得ないと取り込めないのでしょうか…? 青
>> > 野も(多分その流れを汲む)Wnn4.2用のパッチは持っているのです
>> > が、連絡を怠ってマージできずじまいです…。
>>
>> かべさんに連絡をとりました。
>> もとの作者は、西村浩二さん <kouji@XXXX> だそうですが、
>> 「ほとんど原型を止めていない」そうです。
>> すぐではないですが、西村さんにも連絡します。
原型を止めていないのであればいいのかな、という気もしますが、
引き続きよろしくお願いします。
#同じ分野で2つパッチが出たのは珍しいのでなんとか取り込みたいですね。
>> At Wed, 23 Jul 2003 10:51:12 JST,
>> aono@XXXX wrote:
>> > Solaris 2.4/8で試してみました(ただしbuilddirをsrcdirと分離
>> > するための修正を加えています)が、jhlp.cが
>> >
>> > In file included from ../../../current/Wnn/uum/sdefine.h:66,
>> > from ../../../current/Wnn/uum/jhlp.c:105:
>> > /usr/include/term.h:1040: field `Ottyb' has incomplete type
>> > /usr/include/term.h:1041: field `Nttyb' has incomplete type
>> >
>> > といった感じになってコンパイルできません。テストした環境で
…の部分をもう少し詳しく書いてみます。
#都合によりSolaris 2.4の方で…。
>> ・termios.h, termio.h の両方が存在する。
はい。さらにはsys/termio.h や sgtty.hも存在します。
>> ・term.h が利用しているのは termio.h で定義される struct termio の方。
はい。実際のtypedefはcurses.hの中で行われているのですが、
VINTRが定義されていない場合はtermio.hを #include するよう
です。それで、そのVINTRは(grep -r VINTR /usr/include で調
べた限りは)termios.hでのみ定義されているようです。
#以上は定数SYSVが定義されている場合です。そうでない場合は
#sgtty.hが基準になるようです。
>> ・term.h は termio.h を include しない。
はい。#include文はないようです。
ですので、Solarisのことだけを考えれば jhlp.c の termios.h
などの #include部分を#include "sdefine.h"の後にすれば
(termio.hはcurses.h内で#includeされるので)コンパイルは通る
ようです。
#余談ですが、configure中のAC_CHECK_HEADERS(term.h)でも他
#のヘッダに依存する型があるせいで、
#> WARNING: term.h: present but cannot be compiled
#> WARNING: term.h: check for missing prerequisite headers?
#> WARNING: term.h: proceeding with the preprocessor's result
#とconfigureにお叱りを受けます。ただし存在するものとして
#先へ進むので今のところ実害はありません。
似た部分がWnn/conv/cvt_read.c にもあるのですが、
#include <curses.h> などの後に持ってくればいけそうです(未
確認)。でもそもそもtermios.h などincludeしなくてもコンパイ
ルは通るようです。
書いててもややこしいのですが、まとめると
curses.h -> (#ifndef VINTRの場合のみ)#include <termio.h> する
term.h -> #includeはないが そこで記述されている型定義がある
curses.h / termio.hに依存
termio.h -> #define VINTR している。(調査不足のため必要性について不詳)
…という風になっているようです。
上記のjhlp.c / cvt_read.c のほか、いくつかいじってようやく
uumが動作するようになりました。でも(Solaris付属の)cshのファ
イル名補完機能を使うと一文字辺り2〜8倍に膨れ上がってしまう
のが謎です。(ex. 「less 」の後で補完するようにC-dを使うと
「lleessss 」と表示され、入力も表示通りになってしまいます。)
20030726版パッチを適用して青野が変更したところを一応挙げて
おきます。
- Wnn/uum/epilogue.c で #ifdef TERMINFO → HAVE_TERMINFOに変更。
- configureでTCP wrapperが検出できた場合、LIBSに「-lwrap」
が入るが、その場合uumのリンク時にallow/deny_severityがない
といわれる。とりあえずMakefileをいじって消しますが、サーバ
固有のライブラリだけ別にした方がいいと思います。というか、
今そういう変更を加えてるので近くcommitしたいです。
あと、configure.inで ターミナルライブラリのチェックルーチ
ンがありますが、そこの
> lname=translit(${libname}, 'a-z', 'A-Z')
という行がうまく働かないみたいです。autoconfかけた後では
「lname=${LIBNAME}」になってしまいます。そのせいかは分から
ないのですが、その次の行のAC_DEFINEもうまく変換されないみ
たいです。config.logをみると、以下の行が記録されていました。
> In file included from configure:18921:
> confdefs.h:39: warning: missing white space after `#define HAVE_$'
----
どうすれば最適解に近づけるかは分かりませんが、参考になれば
幸いです。
----
青野智樹 (aono@XXXX)
Personal opinion only..