[Anthy-dev 778] siodの出力先をstderrから変更したい

Back to archive index

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();




Anthy-dev メーリングリストの案内
Back to archive index