[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 メーリングリストの案内