私も、主にLinux環境において、ありがたく利用させていただいております。 特に、Xを起動するのがはばかられるようなpoorなマシンを何台か所有している 身としましては手放せないツールと成っております。
ただ、こんなに有用なcanfepなのですが、非常に残念な事に、利用する環境 (タイミング?)により、画面が乱れたり、変換が旨くできなかったりという 問題も有るようです。
# 特に、私の場合は、NetBSD(hpcmips, x68k)環境で顕著に問題が出ました。
そこで、インターネット上の情報や、ソースを探るうちに、どうやらcanfep 自身のtermcap library(特にtgetstr, tgoto辺り)の扱いに若干の難が有るこ とが判って来ました。
で、本来ならば、修正内容をcanfepへのパッチとして、オリジナルの作者様に 御報告するべきところなのですが、いかんせん、私がC++を理解していない為 (特に、変数のスコープの扱い辺り)、canfepへの修正は断念いたしました。
その代わりにcanfepのソースをベースにし、Cで書き直して完成させたものを、
として、公開したいと思います。
host "*" { server_timeout 5000; };...と言いたかったのですが、実はcanna APIルーチンは特定の条件下でrkc.confを正常に 読み込めない場合があるようです。これを修正するには下記のパッチを当ててCanna37p?を make && make installし直す必要があります。ご注意ください。
===== CUT HERE CUT HERE CUT HERE CUT HERE CUT HERE ===== *** ./lib/RKindep/strops.c.ORG 2008-08-26 01:32:16.000000000 +0900 --- ./lib/RKindep/strops.c 2008-08-26 01:33:40.000000000 +0900 *************** *** 59,65 **** if (used + size < oldsize) return 0; newsize = oldsize ? (oldsize * 2 + size) : (size < 20) ? 20 : size; ! tmp = realloc(sb->sb_buf, newsize); if (!tmp) return -1; sb->sb_buf = tmp; --- 59,69 ---- if (used + size < oldsize) return 0; newsize = oldsize ? (oldsize * 2 + size) : (size < 20) ? 20 : size; ! if (sb->sb_buf){ ! tmp = realloc(sb->sb_buf, newsize); ! }else{ ! tmp = calloc(1, newsize); ! } if (!tmp) return -1; sb->sb_buf = tmp; ===== CUT HERE CUT HERE CUT HERE CUT HERE CUT HERE =====もし、重要なcannaserverにunofficialなパッチは当てれないと仰る場合は
1493 const NumberDefaultRec top_num_defaults[] = { 1494 { CONF_DUMMYCODE, 0u }, 1495 }; 1496 1497 const NumberDefaultRec host_num_defaults[] = { 1498 { CONF_SERVER_TIMEOUT, 1500u }, 1499 }; 1500 1501 const char * 1502 RkcConfMgr_get_string(cx, item, hostname) 1503 const RkcConfMgr *cx; 1504 ConfItem item; 1505 const char *hostname;上記(lib/RKC/conf.c)の「1500u」の部分を適当に書き換えてmake && make install しても(タイムアウトに関しては)いけるかもしれません。