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

[freewnn:01003] wnnstat for AF_UNIX



RedHat で頑張って使っているので、
この手の問題とのつき合いはは1年以上になるのですが、

RH9 標準の FreeWnn-1.11-34 では AF_UNIX 経由でのみ、jserverが使えるようです。
余談として、今だかつて私は FreeWnn-1.11-34 を使っての変換に成功したことがないのですが、それが何故かを時間が少しとれる度に調べようとしています。

調べる手段の1つである wnnstat は、接続先 jserver を次のように判別しますね。
これは man ページと、ソースの双方で確認しました。

1. 引数に jserver 指定があれば、それを使う。
2. 環境変数(JSERVER)に指定があれば、それを使う。
3. serverdefs ファイルの指定言語レコードに jserver ホスト名があれば、それを使う。

FreeWnn-1.11-34 では、 /etc/FreeWnn/serverdefs に、

ja		jserver		/tmp/jd_sockV4		wnn4		22273
japanese	jserver		/tmp/jd_sockV4		wnn4		22273
nihongo		jserver		/tmp/jd_sockV4		wnn4		22273

という指定があります。

そのため、
    引数に jserver を指定せず、かつ、環境変数 JSERVER も指定しない
という形で AF_UNIX を参照させようとしても、
ルール 3. によって、jserver という名前のホストを探しにいってしまいます。

なので、AF_UNIXでしか立ち上がらないように build されている FreeWnn-1.11-34 では、 wnnstat は使えません。


これは、どう直すのが良いのでしょうね?

wnnstat を改変するのは、例えば以下のようなパッチで AF_UNIX を強制するオプションを増やす、という方法がありますね?



--- /usr/src/redhat/BUILD/FreeWnn-1.1.1-a017/Xsi/Wnn/jutil/wnnstat.c.org	2003-08-25 05:14:44.000000000 +0900
+++ /usr/src/redhat/BUILD/FreeWnn-1.1.1-a017/Xsi/Wnn/jutil/wnnstat.c	2003-08-25 05:14:15.000000000 +0900
@@ -85,7 +85,7 @@ main (argc, argv)
      int argc;
      char **argv;
 {
-  char *serv;
+  char *serv    = "";
   int c, i, j;
   WNN_ENV_INFO *w;
   static char lang[64] = { 0 };
@@ -114,13 +114,13 @@ main (argc, argv)
 
 
 #ifdef JAPANESE
-#  define OPTSTRING "weEdDfFUSJVL:"
+#  define OPTSTRING "zweEdDfFUSJVL:"
 #endif
 #ifdef  CHINESE
-#  define OPTSTRING "weEdDfFUBCVL:"
+#  define OPTSTRING "zweEdDfFUBCVL:"
 #endif
 # ifdef KOREAN
-#  define OPTSTRING "weEdDfFUKVL:"
+#  define OPTSTRING "zweEdDfFUKVL:"
 #endif
 
 
@@ -128,6 +128,9 @@ main (argc, argv)
     {
       switch (c)
         {
+        case 'z':
+          serv = NULL;                          /* force AF_UNIX */
+          break;
         case 'w':
           com = W_WHO;
           break;
@@ -204,6 +207,9 @@ main (argc, argv)
     {
       server_env = WNN_DEF_SERVER_ENV;
     }
+
+  if (serv)                                     /* check option -z */
+      {
   if (argc > 1)
     {
       serv = argv[1];
@@ -223,6 +229,10 @@ main (argc, argv)
             }
         }
     }
+      }
+  else
+      serv  = "";                               /* force AF_UNIX */
+  
   if (js == NULL && (js = js_open_lang (serv, lang, WNN_TIMEOUT)) == NULL)
     {
       out ("%s:", prog);


-- 
	   亀井 信義