Kouhei Sutou
kou****@cozmi*****
2004年 4月 23日 (金) 01:49:44 JST
須藤です. 今回,uim-shなどを少しいじってみて思ったのですが,uim-shから 使っている場合のsiodの出力先は標準出力になっていると嬉しいで す(goshやシェルのエラーメッセージとsiodのメッセージを分離し づらい).もちろん,従来のように使用する場合は,現状通り標準 エラー出力の方がいいと思います. ということで,現在,uim_init_scm()に埋め込まれているstderrを 変更できるようになると嬉しいです. Index: uim/uim.h =================================================================== --- uim/uim.h (revision 740) +++ uim/uim.h (working copy) @@ -200,6 +200,9 @@ void (*release)(void *obj); }; +FILE *get_uim_output(void); +void set_uim_output(FILE *fp); + int uim_init (void); Index: uim/uim-sh.c =================================================================== --- uim/uim-sh.c (revision 740) +++ uim/uim-sh.c (working copy) @@ -50,6 +50,8 @@ main(int argc, char *argv[]) { uim_lisp args, null_list, form; + set_uim_output(stdout); + /* TODO: be able to suppress ordinary initialization process */ uim_init(); Index: uim/uim.c =================================================================== --- uim/uim.c (revision 740) +++ uim/uim.c (working copy) @@ -68,8 +68,19 @@ int uim_nr_im; static int uim_initialized; static int uim_siod_fatal; +static FILE *uim_output = NULL; +FILE * +get_uim_output(void) { + return uim_output; +} + void +set_uim_output(FILE *fp) { + uim_output = fp; +} + +void uim_set_preedit_cb(uim_context uc, void (*clear_cb)(void *ptr), void (*pushback_cb)(void *ptr, @@ -508,7 +519,7 @@ siod_argv[5] = verbose_argv; } /* init siod */ - siod_init (6, siod_argv, 1, stderr); + siod_init (6, siod_argv, 1, uim_output); set_fatal_exit_hook(exit_hook); /**/ uim_init_im_subrs(); @@ -554,6 +565,9 @@ if (uim_initialized) { return 0; } + if (!uim_output) { + uim_output = stderr; + } uim_im_array = NULL; uim_nr_im = 0; uim_init_scm();