[Mew-dist 04167] Filename from CT:

Shun-ichi GOTO gotoh at example.com
1998年 3月 11日 (水) 18:58:44 JST


後藤@太陽計測です

Mewはいつの頃からか 
>* Ad-hoc Content-Disposition: support.
ということで、Content-Disposition:の filename=xxx より、
ファイル名の取得が行えるようになりましたが、残念ながら
CT:のname=は見てくれません。

うちの会社のメイン環境はNotesなので、CT:のname=のみの添付ファイル
が横行している為、このままではとても不便なため、ちょっと修正して
みました。

ついでですが、漢字のファイル名も横行しているため、
filename="=?iso-2022-jp?B?GyRCNEE7ehsoQg==?=.txt"といった
(正式でないエンコードでの)漢字ファイル名もデコードする
ようにしてみました。
# mew-header-decode-addressを使っています

あと、添付ファイルの名前が*Mew Message*に出るように、微々たる修正もね。

というわけで、添付ファイルをセーブするとき、自分としてはちょっと
シアワセになれたのでご報告。


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


-------------- next part --------------
--- mew-1.93b24.orig/mew-decode.el	Tue Feb 24 15:04:56 1998
+++ mew-1.93b24/mew-decode.el	Wed Mar 11 06:40:36 1998
@@ -152,6 +152,11 @@
 	    (setq value (mew-buffer-substring val (point)))
 	    (cond
 	     ((equal attr 'analyze)
+	      (save-restriction
+		(narrow-to-region val (point))
+		(mew-header-decode-address)
+		(goto-char (point-max)))
+	      (setq value (mew-buffer-substring val (point)))
 	      (setq value (mew-header-syntax-list value))) ;; list
 	     ((equal attr 'extract)
 	      (setq value (mew-header-syntax value)))
--- mew-1.93b24.orig/mew-summary.el	Mon Mar 10 21:38:58 1997
+++ mew-1.93b24/mew-summary.el	Wed Mar 11 09:01:35 1998
@@ -846,7 +846,9 @@
 		  "#       #     # #######  #####  #     # #     # #     #\n"
 		  "\n\n")
 	  (insert (format "Content-Type:\t%s\n" ct))
-	  (insert (format "Size:\t\t%dbytes\n" (- end begin)))
+	  (insert (format "Size:\t\t%d bytes\n" (- end begin)))
+	  (if (setq file (mew-syntax-get-filename syntax))
+	      (insert (format "Filename:\t%s\n" file)))
 	  (insert (format "Program:\t%s\n" program))
 	  (if (not execute)
 	      (progn
@@ -1682,8 +1684,9 @@
 	 file)
     (if (not (or msg part))
 	(message "No message or part here")
-      (if (and (car cdpl) (equal (downcase (car cdpl)) "attachment"))
-	  (setq file (mew-syntax-get-member cdpl "filename")))
+;;;   (if (and (car cdpl) (equal (downcase (car cdpl)) "attachment"))
+;;;	  (setq file (mew-syntax-get-member cdpl "filename")))
+      (setq file (mew-syntax-get-filename syntax))
       (setq file (mew-input-file-name nil file))
       (if (not (file-exists-p file))
 	  (setq doit t)
--- mew-1.93b24.orig/mew-syntax.el	Mon Mar 10 20:42:48 1997
+++ mew-1.93b24/mew-syntax.el	Wed Mar 11 09:04:03 1998
@@ -577,7 +577,7 @@
 	 (cte (mew-syntax-get-cte syntax)) ;; cte may be nil
 	 (cd (mew-syntax-get-cd syntax))
 	 (cdpl (mew-syntax-get-cdp syntax))
-	 (filename (mew-syntax-get-member cdpl "filename"))
+	 (filename (mew-syntax-get-filename syntax))
 	 (decrypters (mew-syntax-get-decrypters syntax))
 	 (cd-or-dec cd)
 	 (privacy (mew-syntax-get-privacy syntax))
@@ -705,6 +705,23 @@
 (defun mew-syntax-get-icon-spec ()
   (nreverse mew-syntax-icon-spec))
 
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Get filename
+;;
+(defun mew-syntax-get-filename (syntax)
+  "Get filename of attachment from CDP: or CT:"
+  (let ((cdpl (if syntax (mew-syntax-get-cdp syntax)))
+	(ctl (if syntax (mew-syntax-get-ct syntax)))
+	file)
+    (or (and (car cdpl)
+	     (equal (downcase (car cdpl)) "attachment")
+	     (mew-syntax-get-member cdpl "filename"))
+	(and (car ctl)
+	     (mew-syntax-get-member ctl "name"))
+	)))
+  
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 ;; decode privacy


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