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

[freewnn:00722] Re: uum patch for 1.1.1-a018



小野寛生です

青野 = aono@cc.osaka-kyoiku.ac.jp (Tomoki AONO) wrote:

>> あと、jhlp.c の
>> 
>>  184           if (strlen (p) >= 4)
>>  185             {
>>  186               strncpy (lang_dir, p, LANGDIRLEN-1);
>>  187               lang_dir[LANGDIRLEN-1] = '\0';
>>  188             }
>>  189           else
>>  190             {
>>  191               strcpy (lang_dir, p);
>>  192             }
>>  193         }
>> 
>> って何故分岐しているのでしょう?

もともとが、

    if(*lang_dir == '\0') {
        if ((p = getenv("LANG")) != NULL) {
            if (strlen(p) >= 4) {
                strncpy(lang_dir, p, 5);
                lang_dir[5] = '\0';
            } else {
                strcpy(lang_dir, p);
            }
        }
    }

となっているので、

青野> もう少しソースを見ると、直後に比較する function_db[] (in
青野> Wnn/uum/header.c) でのWnnの言語名が最大五文字(ex. ja_JP)に
青野> なっているので、それ以上環境変数LANGから取り出すと比較に支
青野> 障が出ると考えたのでしょうか…。

ということのようですね。つまり、
ja_JP だったら、ja_JP.eucJP、ja_JP.EUC、ja_JP.SJIS、ja_JP.UJIS とか、
のどれでも、lang_dir に "ja_JP" がはいるという意図のようです。
でもって、LIBDIR/lang_dir eq @prefix/lib/wnn/ja_JP 下のファイルを読み
にゆく、と。
なので、現在の修正はうまく行かない可能性があります。
% つまり、lang_dir[32] である理由はない…のかな?

最近の Linux だと、LANG 環境変数に指定するのは ja_JP.なんたら ではなく、
EUC-JP とかになっているという話を聞いたことがあるのですが、それが本当
なら (はい、確認していません) もとのアプローチもまずいんですが。

ちょっと、どうするか考えさせて下さい。
(1) もとに戻す。
(2) 「最近の Linux」云々が本当だった場合は他の方法考えたほうがいいのかな。
(2.1) LANG の値に応じて適当な値を function_db[] からコピーとか。

p.s.
本当は人にお見せ出来る状態ではないのですが、混乱してきてなにをどうした
のかわからなくなりつつあるので、
    <URL:http://homepage2.nifty.com/onlife/FreeWnn/>
なんてのを作り始めています。
% 少しはみられるものになってから…と思っていると、また消えてしまいそう
% なので、出しておこう。


http://www.freewnn.org/ FreeWnn Project