[Mew-Win32 02096] Re: [Mew-dist 11135] Re: gnuserv

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
1999年 11月 1日 (月) 12:44:41 JST


白井です。

From: Masaru Fukunaka <fukunaka at example.com> さん曰く
Subject: [Mew-Win32 02095] Re: [Mew-dist 11135] Re: gnuserv
Message-ID: <19991101120925E.0 at example.com>
Date: Mon, 01 Nov 1999 12:09:25 +0900 (JST)

福中> > 元記事は Mew-dist に流されましたが、Windows にのみ関係する話題なので
福中> >   To: mew-win32 at example.com
福中> >   cc: mew-dist at example.com
福中> > にしました。
福中> > 問題無ければ、このスレッドは mew-dist からはずしても良いかと思います。
福中> 
福中> というわけでこちらに移動してきました.みなさんよろしくお願いします.

こちらこそ、よろしくお願いします。

福中> > (ドライブとディレクトリ)\gnudoitw.exe "(gnuserv-mailto \"%1\")"
福中> 
福中> としてみましたがうまくいきません.
福中> 
福中> mini buffer には
福中> 
福中>   error in process filter: End of file during parsing [2 times]
福中> 
福中> と出てきます.

実は私も一緒なのです。だから、

From: Hideyuki SHIRAI (白井秀行) <shirai at example.com> 曰く
Subject: [Mew-Win32 02091] Re: [Mew-dist 11120] gnuserv
Message-ID: <19991031191906O.shirai at example.com>
Date: Sun, 31 Oct 1999 19:19:06 +0900 (JST)

白井> じつは、IE はうまくいっていない私でした。普段は NetScape なので
白井> あんまり追求していません。

だったのです。だれも何にも言わないから、これは世界中で私一人だと
思っていました。:-)


1. dos窓で 
   gnudoitw "(mew-url-mailto \"hoge at example.com\")"
はうまくいく。


2. エクスプローラの [表示]-[フォルダオプション] のファイルタイプの設定で
   (ドライブとディレクトリ)\gnudoitw.exe "(mew-url-mailto \"%1\")"
だと、

福中>   error in process filter: End of file during parsing [2 times]

となるなら、きっと私と一緒の原因でしょう。mew-url-mailto でなく
てもなんでも一緒です。Win-NT4.0SP5 も 95OSR2.1 も同じでした。;_;


その後いろいろ調べてみたのですが、"*sever*" という buffer を作り、
そこをみると、どんな string が gnudoitw から来たかわかるのですが、
その中身が *なんと*

○ 180 (server-eval '(progn (mew-url-mailto "hoge at example.com") ))^D
× 180 (server-eval '(progn (mew-url-mailto "hoge at example.com ))^D

というように『")』が落ちていることがわかりました。

# これじゃ、エクスプローラで何をやっても動かないぞぉぉぉぉ。

というわけで、とってもアドホックなのですが、gnuserv.el の
server-process-filter() を改造して『×』パターンなら『")』を無理
やりつけるようにしてしまいました。おそらく、正解は他にあると思う
のですが、とりあえず、です。

# 正解は、meadow-users-jp ML でも聞いてみますので、それまでのつ
# なぎと考えてください。だから、オリジナルの gnuserv.el は取って
# おいてくださいね。

-- 
白井秀行 (mailto:shirai at example.com)

--- gnuserv.el.old	Mon Nov 01 10:20:53 1999
+++ gnuserv.el	Mon Nov 01 12:39:16 1999
@@ -127,22 +127,35 @@
   (setq server-string (concat server-string string))
   (if (string-match "\^D$" server-string) ; requests end with ctrl-D
       (if (string-match "^[0-9]+" server-string) ; client request id
-	(progn
-	  (server-log server-string)
-	  (let ((header (read-from-string server-string)))
-	    (setq current-client (car header))
-	    (condition-case oops
-		(eval (car (read-from-string server-string 
-					     (cdr header))))
-	      (error (setq server-string "")
-		     (server-write-to-client current-client oops)
-		     (setq current-client nil)
-		     (signal (car oops) (cdr oops)))
-	      (quit (setq server-string "")
-		    (server-write-to-client current-client oops)
-		    (setq current-client nil)
-		    (signal 'quit nil)))
-	    (setq server-string "")))
+	  (let ((str0 server-string) ;; add. shirai 11/1/1999 why? ;_;
+		str1 str2)
+	    (if (string-match "\"" str0)
+		(progn
+		  (setq str1 (substring str0 0 (match-end 0)))
+		  (setq str0 (substring str0 (match-end 0)))
+		  (if (and (not (string-match "\"" str0))
+			   (string-match " ))" str0))
+		      (progn
+			(setq str2 (concat (substring str0 0 (match-beginning 0))
+					   "\") ))"))
+			(setq server-string (concat str1
+						    str2
+						    (substring str0 (match-end 0))))))))
+	    (server-log server-string)
+	    (let ((header (read-from-string server-string)))
+	      (setq current-client (car header))
+	      (condition-case oops
+		  (eval (car (read-from-string server-string 
+					       (cdr header))))
+		(error (setq server-string "")
+		       (server-write-to-client current-client oops)
+		       (setq current-client nil)
+		       (signal (car oops) (cdr oops)))
+		(quit (setq server-string "")
+		      (server-write-to-client current-client oops)
+		      (setq current-client nil)
+		      (signal 'quit nil)))
+	      (setq server-string "")))
 	(progn				;error string from server
 	  (server-process-display-error server-string)
 	  (setq server-string "")))))



Mew-win32 メーリングリストの案内