[Mew-Win32 01205] Re: mew-fake-cdp

Shun-ichi GOTO gotoh at example.com
1999年 2月 19日 (金) 14:18:24 JST


後藤@太陽計測です

Cc: mew-dist

>>>>> at Fri, 19 Feb 1999 10:37:48 +0900 (JST)
>>>>> 金子 <kaneko at example.com> said,

金子> rev. 1.12なのですが,生JISファイル名がうまく処理できなくなっているよ
金子> うに思います.

正解です (^^;
直しました。(Rev. 1.13)

http://www.imasy.or.jp/~gotoh/lisp/mew-fake-cdp.el


金子> また,これはmew-fake-cdpを使用しなくてもそうなのですが,
金子> 以下のようなケースで,
金子> Error: '(error Stack overflow in regrep matcher)'
金子> となり,マルチパートメールとしてすら表示されません.

金子> Content-Type: application/octet-stream; name="
金子> 	=?ISO-2022-JP?B?GyRCNjUwaTx1OVZKczlwPXEbKEI=?=.doc"

金子> これは次のように修正すれば正しく処理されるものです.
金子> Content-Type: application/octet-stream; name="=?ISO-2022-JP?B?GyRCNjUwaTx1OVZKczlwPXEbKEI=?=.doc"

金子> これも何とかならないですかね? (^^;;;;

ふぅむ。こっちの件は mew-fake-cdp.elの外の Mew本体の話しですね。

うちではそのエラーメッセージは出ないですが、別のエラーが発生し、結果マ
ルチパートにならないという症状でした。探ってみたところ、先にレポートし
たmew-param-analyzeと同様の絡みで、=の直後が"でその直後が\nというレア
ケース(?)の事故のようですね。name="\n ....." が name="になって、これを
unquoteしようとして、mew-param-analyzeがエラーというオチ。


正しい方法かどうかは、ちょっと自信がないのですが、以下のパッチをMew本
体に当てることで、うちでは表示できるようになりました。いかがでしょうか?

#mew-param-analyzeやらmew-param-decodeあたりにはkazuさんの最近の修
#正と重複するかもしれませんが、一応つけておきます。

mew-1.94b7に当てて、makeしてください。

修正点は
 (1) mew-header-unfold関数を追加(in mew-header.el)
 (2) mew-decode-mime-headerはunfoldしたものを処理する (in mew-decode.el)
 (3) mew-param-analyzeでのunquote処理をsafetyにした (in mew-bq.el)

いじょう

--- Regards,
 Shun-ichi Goto  <gotoh at example.com>
   R&D Group, TAIYO Corp., Tokyo, JAPAN


-------------- next part --------------
--- mew-header.el.orig	Tue Feb 16 12:15:17 1999
+++ mew-header.el	Fri Feb 19 04:30:57 1999
@@ -36,6 +36,12 @@
        (mew-header-goto-end)
        (forward-line))))
 
+(defun mew-header-unfold (str)
+  (while (string-match "\n\\([ \t]\\)" str)
+    (setq str (concat (substring str 0 (match-beginning 0))
+		      (substring str (match-beginning 1)))))
+  str)
+
 (defun mew-header-get-value (field)
   "currently, when no match, it returns nil."
   ;; maybe called in narrowed region.
--- mew-decode.el.orig	Tue Feb 16 12:15:17 1999
+++ mew-decode.el	Fri Feb 19 04:34:49 1999
@@ -128,7 +128,7 @@
 	      ()
 	    (setq n (nth 1 attr))
 	    (setq act (nth 2 attr))
-	    (setq value (buffer-substring med (1- (point))))
+	    (setq value (mew-header-unfold (buffer-substring med (1- (point)))))
 	    (cond
 	     ((equal act 'analyze)
 	      (setq value (mew-param-decode value)))
--- mew-bq.el.orig	Tue Feb 16 12:15:17 1999
+++ mew-bq.el	Fri Feb 19 04:14:05 1999
@@ -722,7 +722,8 @@
 	(setq section (string-to-int (substring section 1 nil))))
       (if (null asterisk)
 	  ;; delete quote
-	  (if (and (char-equal (aref value 0) 34)
+	  (if (and (< 1 (length value))
+		   (char-equal (aref value 0) 34)
 		   (char-equal (aref value (1- (length value))) 34))
 	      (setq value (substring value 1 -1)))
 	(if (and (equal section 0)


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