[mew-dist 24601] Re: spamcを使ってSPAMメールに D マークを付けたい

Hideyuki SHIRAI ( 白井秀行 ) shirai at example.com
2004年 2月 17日 (火) 15:55:49 JST


From: Kazu Yamamoto (山本和彦) <kazu at example.com> さん曰く
Subject: [mew-dist 24594] Re: spamcを使ってSPAMメールに D マークを付けたい
Message-ID: <20040216.182932.127351092.kazu at example.com>
Date: Mon, 16 Feb 2004 18:29:32 +0900 (JST)

> とりあえず、実装してみました。'"' では指定したコマンド(+オプション)がシェ
> ル経由で起動されます。どうでしょう?

(1) この入力形式で grep するのだと、わざわざ pattern を別に聞か
    れるのに違和感があるし、pattern が最後ではないコマンドもある
    と思います。また、bogofilter を動かすなら pattern は必要ない
    のでじゃまに感じます。
        
(2) こうやって call-process を動かすなら、coding-system-for-write
    は束縛せずに default-process-coding-system にまかせた方がよい
    のでは?
    というか、ぼくの手元の環境(Solaris, Windows とも)では shell
    経由で符号化した文字列を mg に渡しても動きませんでした。
    
という理由で以下のパッチはどうでしょう。

# shell 経由だから process-coding-system-alist が使えないのから
# 多言語化は無理かな?

-- 
白井秀行 (mailto:shirai at example.com)

Index: mew-pick.el
===================================================================
RCS file: /cvsmew/mew/mew-pick.el,v
retrieving revision 1.34
diff -u -u -r1.34 mew-pick.el
--- mew-pick.el	17 Feb 2004 04:50:41 -0000	1.34
+++ mew-pick.el	17 Feb 2004 06:43:12 -0000
@@ -53,14 +53,14 @@
 	 (mew-inherit-grep-cmd (read-string "Grep command: "
                                             (car mew-input-cmd-hist)
                                             'mew-input-cmd-hist)))
-     (mew-summary-pick-body func arg nil))))
+     (mew-summary-pick-body func arg nil 'nopattern))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;
 ;;; Pick body
 ;;;
 
-(defun mew-summary-pick-body (func regionp internalp)
+(defun mew-summary-pick-body (func regionp internalp &optional nopattern)
   (let* ((folder (mew-summary-folder-name))
 	 (dir (mew-expand-folder folder))
 	 (default-directory dir) ;; buffer local
@@ -93,7 +93,8 @@
 	  (progn
 	    (setq pattern (mew-input-pick-pattern))
 	    (mew-sinfo-set-find-key nil)) ;; force to ask a user
-	(setq pattern (mew-input-grep-pattern))
+	(unless nopattern
+	  (setq pattern (mew-input-grep-pattern)))
 	(mew-sinfo-set-find-key pattern))
       (mew-summary-pick-body1 func msgs pattern))))
 
@@ -228,18 +229,15 @@
 	 msgs nxt arg)
     ;; no sort here
     (if (= (length src-msgs) 1) (setq src-msgs (cons "/dev/null" src-msgs)))
-    (setq pattern (mew-cs-encode-arg pattern))
     (with-temp-buffer
       (cd dir)
-      (mew-piolet
-       mew-cs-text-for-read mew-cs-text-for-write
-       (while src-msgs
-	 (goto-char (point-max))
-	 (setq nxt (nthcdr mew-prog-grep-max-msgs src-msgs))
-	 (if nxt (setcdr (nthcdr (1- mew-prog-grep-max-msgs) src-msgs) nil))
-	 (setq arg (mapconcat 'identity (cons cmd (cons pattern src-msgs)) " "))
-	 (call-process shell-file-name nil t nil shell-command-switch arg)
-	 (setq src-msgs nxt)))
+      (while src-msgs
+	(goto-char (point-max))
+	(setq nxt (nthcdr mew-prog-grep-max-msgs src-msgs))
+	(if nxt (setcdr (nthcdr (1- mew-prog-grep-max-msgs) src-msgs) nil))
+	(setq arg (mapconcat 'identity (cons cmd src-msgs) " "))
+	(call-process shell-file-name nil t nil shell-command-switch arg)
+	(setq src-msgs nxt))
       (goto-char (point-min))
       (while (not (eobp))
 	(if (looking-at mew-regex-message-files2)



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