KIHARA Hideto
deton****@m1*****
2003年 10月 10日 (金) 21:29:18 JST
Fri, Oct 10, 2003 at 02:24:14AM +0900 において TOKUNAGA Hiroyuki さん曰く: > の部分を除いてapplyさせていただきました。さすがにtest.shを実行した際に > あれだけ大量のメッセージが流れるとちょっと不便なので…。 環境変数LIBUIM_VERBOSEに設定する値でメッセージの表示量を調整できるように、 siod_verbose_levelをLIBUIM_VERBOSEの値をもとに設定するようにしてみました (uim.c:uim_init_scm())。 5以上に設定すると大量にメッセージが出ます。 > .uimに関する望ましい解決策は、.uimの処理に失敗した場合は、.uimは無視し > て、無視した旨エラーメッセージを吐く、というものだと思います。 ~/.uim読み込み時のエラーを*catchするようにしてみました(uim.c:load_conf())。 ~/.uim読み込み時にエラーが発生すると、~/.uimの読み込みはそこで中止します。 ~/.uim中で、エラーが発生するより前の部分は実行されますが、 エラー以降の部分は実行されません。 エラーメッセージを表示するため、~/.uim読み込み時に 一時的にsiod_verbose_levelを1に設定しています。 (ちなみに、3にすると、"loading /home/deton/.uim"のような メッセージも表示されるようになります。) diff -urp uim-0.1.0.old/uim/uim.c uim-0.1.0/uim/uim.c --- uim-0.1.0.old/uim/uim.c Fri Oct 10 20:45:24 2003 +++ uim-0.1.0/uim/uim.c Fri Oct 10 20:39:30 2003 @@ -323,16 +323,23 @@ load_conf() struct passwd *pw; char *hd; FILE *fp; + long svl = siod_verbose_level; + long ret; + pw = getpwuid(getuid()); - hd = alloca(strlen(pw->pw_dir)+10); + hd = alloca(strlen(pw->pw_dir)+40); sprintf(hd, "%s/.uim", pw->pw_dir); fp = fopen(hd, "r"); - if (fp) { - fclose(fp); - vload(hd, 0, 1); - return 0; - } - return -1; + if (fp == NULL) + return -1; + fclose(fp); + + if (siod_verbose_level < 1) + siod_verbose_level = 1; /* to show error message of SIOD */ + sprintf(hd, "(*catch 'errobj (load \"%s/.uim\" #f #f))", pw->pw_dir); + ret = repl_c_string(hd, 0, 0, 0); + siod_verbose_level = svl; + return ret; } int uim_set_candidate_cb(uim_context uc, @@ -393,7 +400,18 @@ uim_init_scm() "-n2048", "-v0", }; + char verbose_argv[4] = "-v4"; + char *env; + if ((env = getenv("LIBUIM_VERBOSE"))) { + if (isdigit(*env)) { + if (isdigit(*(env+1))) + verbose_argv[2] = '9'; /* SIOD's max verbose level is 5 */ + else + verbose_argv[2] = *env; + } + siod_argv[6] = verbose_argv; + } /* init siod */ siod_output = stderr; process_cla (7, siod_argv, 1); * uim.c:uim_init_scm()で環境変数LIBUIM_VERBOSEの値をもとに siod_verbose_levelを設定するようにしたので、LIBUIM_VERBOSEの値を変更。 diff -urp uim-0.1.0.old/test.sh.in uim-0.1.0/test.sh.in --- uim-0.1.0.old/test.sh.in Fri Oct 10 20:45:17 2003 +++ uim-0.1.0/test.sh.in Fri Oct 10 20:40:19 2003 @@ -1,7 +1,7 @@ #!/bin/sh -LIBUIM_VERBOSE=1; export LIBUIM_VERBOSE +LIBUIM_VERBOSE=4; export LIBUIM_VERBOSE LD_LIBRARY_PATH=uim/.libs/; export LD_LIBRARY_PATH # not to read ~/.uim LIBUIM_VANILLA=1; export LIBUIM_VANILLA -- 木原 英人 / KIHARA, Hideto / deton****@m1***** http://www1.interq.or.jp/~deton/