[Mew-Win32 01125] Re: imget and imls runs endless(With PPP)
Hideyuki SHIRAI ( 白井秀行 )
shirai at example.com
1999年 1月 19日 (火) 12:49:59 JST
こんにちは、しらいです。
From: Yoshitaka Sainomoto <sainmt at example.com> さん曰く
Subject: [Mew-Win32 01124] imget and imls runs endless(With PPP)
Message-ID: <19990119104155U.sainmt at example.com>
Date: Tue, 19 Jan 1999 10:41:55 +0900
sainmt> PPP 接続ですので、C-c C-c 時にはqueuingしてimget時に自動的に
sainmt> queueをflushするように設定しています。
sainmt> 併せてRasconとmew-offlineとで自動的にダイヤルアップに行くように
sainmt> しています。
sainmt> このような環境下で、
sainmt> (1)Summery Modeで「i」-> (2)ダイヤルアップ -> (3)接続完了
sainmt> -> (4)queueのflush -> (5)imget
sainmt> (4)の手順において「Sending message ... faild」となり
sainmt> (しかし実際にメールは送れている)
sainmt> (5)のimgetから制御が戻ってきません。
sainmt> C-c C-kでimgetは殺せますが、以降二度imgetをしても正常に動作しません。
imput で spool に入れている最中に
imput --processqueue=on したり
imput --queuestatus=on すると、めちゃくちゃになることがありまし
た。これは、運用面でカバーしています。^^;
sainmt> (さらにmew-win32-mvm.el 0.08+movemail.exeを組み込んでmovemailで
sainmt> 取り込もうとしたときは更に悪い事に(3)〜(4)のあたりでMeadowが
sainmt> 完全に凍りついてしまいます。)
が〜〜〜ん、DialKeeper が導入されてから rascon + mew-win32-mvm
でおかしくなったことはないです。win95 なのですが……
T-Gnus の人で、Win98 + rascon + movemail.exe の人は知っているの
ですが、DialKeeper 以来大丈夫なようです。
imput を使った queue の flush のエラー処理が弱いのかも?
sainmt> そこで質問です。
sainmt> 私のような運用をなさっている方で、安定した環境を構築しておられる方が
sainmt> おられましたらぜひご教示頂きたく思います。
sainmt> RAS Control Packageでかなり安定して接続できるのにimput -q とかを
sainmt> コマンドラインからってのもなんか悲しいです(;_;)
私自身は、mew-offline.el を使っていなくて、.emacs に以下のものを
書いて運用しています。
-------------- next part --------------
;; dialup + mew + movemail + hangup
(defun mew-win32-get-mail (&optional arg entry config)
"mew を立ち上げて、dialup して、mail を取って、hangup する"
(interactive "P")
(if (null rascon-entry-list)
(rascon-get-entry))
(if (not entry)
(setq entry (completing-read "Select dialup entry: "
rascon-entry-list
nil t nil)))
(if (not config)
(setq config (mew-input-config mew-config-imget)))
(rascon-set-current-entry entry)
(mew)
(if (not rascon-mode-indicator)
(rascon-dialup))
(if rascon-mode-indicator
(let ((config-default mew-config-imget))
(setq mew-config-imget config)
(if (not arg)
(add-hook 'mew-win32-mvm-finish-hook
'(lambda ()
(rascon-hangup t))))
(mew-win32-mvm-get)
(setq mew-config-imget config-default)
(remove-hook 'mew-win32-mvm-finish-hook
'(lambda ()
(rascon-hangup t))))))
(defun mew-get-hoge (&optional arg)
"Dialup to HOST & Movemail hoge."
(interactive "P")
(mew-win32-get-mail arg "HOST-Name" "USER-Name"))
-------------- next part --------------
そこで、お昼休みに mew-offline.el を見て、mew-win32-mvm.el の最
新版と同期を取りました。以下にパッチをつけておきます。
これで、imget を使うときと同様に、メールの取得が終ったら hangup
します。
# あとは、dialup に失敗したら次に進まない判定を入れました。
-------------- next part --------------
--- mew-offline.el.orig Thu Dec 24 04:05:58 1998
+++ mew-offline.el Tue Jan 19 12:26:07 1999
@@ -42,8 +42,6 @@
"*If not nil, use offline mode with mew-win32-mvm.")
;; setup
-(if mew-offline-use-mvm-p
- (require 'mew-win32-mvm))
(setq mew-auto-get nil)
(setq mew-auto-flush-queue t)
@@ -60,6 +58,19 @@
(if rascon-mode-indicator
(rascon-hangup))))))
+;; for mew-win32-mvm
+(if mew-offline-use-mvm-p
+ (progn
+ (require 'mew-win32-mvm)
+ (if (boundp 'mew-win32-mvm-finish-hook)
+ (add-hook 'mew-win32-mvm-finish-hook
+ (lambda ()
+ (if mew-offline-hangup-p
+ (progn
+ (rascon-generate-entry-table)
+ (if rascon-mode-indicator
+ (rascon-hangup)))))))))
+
;; dial-up, message get/put
(defun mew-offline-summary-get ()
(interactive)
@@ -68,9 +79,10 @@
(rascon-generate-entry-table)
(if (not rascon-mode-indicator)
(rascon-dialup))))
- (if mew-offline-use-mvm-p
- (mew-win32-mvm-get)
- (mew-summary-get)))
+ (if rascon-mode-indicator
+ (if mew-offline-use-mvm-p
+ (mew-win32-mvm-get)
+ (mew-summary-get))))
(provide 'mew-offline)
-------------- next part --------------
--- mew-win32-mvm.el.orig Tue Dec 15 16:35:03 1998
+++ mew-win32-mvm.el Tue Jan 19 10:54:53 1999
@@ -4,7 +4,7 @@
;;
;; Author: "Hideyuki SHIRAI" <Shirai at example.com>
;; Created: <10/15/1998>
-;; Revised: Time-stamp: <12/01/1998 18:48 shirai>
+;; Revised: Time-stamp: <01/19/1999 10:54 shirai>
;;
;; Usage.
;; Type "M-x mew-win32-mvm-get" at mew summary mode, get mail used movemail.
@@ -32,7 +32,7 @@
(eval-when-compile
(require 'mew))
-(defconst mew-win32-mvm-version "0.08")
+(defconst mew-win32-mvm-version "0.09")
(defvar mew-win32-mvm-config-list
'((list "default" "default.co.jp" "po:default" "-up")
@@ -44,6 +44,8 @@
4th cell: Movemail parameters.
\"(car (car mew-win32-mvm-config-list))\" must return \"default\".")
+(defvar mew-win32-mvm-finish-hook nil)
+
;; Internal variables.
(defvar mew-win32-mvm-prog (mew-which "movemail.exe" exec-path))
(defvar mew-win32-mvm-imstore mew-use-imap)
@@ -88,6 +90,13 @@
(set-marker mew-summary-inbox-position (point) (current-buffer))
;; for C-xC-x
(or arg (goto-char (point-max)))
+ ;; On PPP environment, executing "imget" lets the dial be up.
+ ;; So, it's a good idea to flush queue at this time
+ ;; if messages to be sent exist.
+ (if (and mew-auto-flush-queue
+ mew-queue-path (file-directory-p mew-queue-path)
+ (> (length (directory-files mew-queue-path)) 2))
+ (mew-summary-flush-queue))
;; movemail procedure follow.
(let ((crashbuf (get-buffer-create "*mew movemail*"))
(crashbox (expand-file-name (concat mew-temp-dir "/crashbox"))))
@@ -98,13 +107,6 @@
(delete-file crashbox))
(setq mailget (mew-win32-mvm-movemail crashbox crashbuf))
(kill-buffer crashbuf)))
- ;; On PPP environment, executing "imget" lets the dial be up.
- ;; So, it's a good idea to flush queue at this time
- ;; if messages to be sent exist.
- (if (and mew-auto-flush-queue
- mew-queue-path (file-directory-p mew-queue-path)
- (> (length (directory-files mew-queue-path)) 2))
- (mew-summary-flush-queue))
(if (not mailget)
()
;; imls for new mail.
@@ -114,7 +116,7 @@
mew-inbox-folder
mew-cs-scan
(mew-update-range)))))
-
+
(defun mew-win32-mvm-movemail (crashbox crashbuf)
"Get mail use movemail."
(interactive "FCrashbox: \nBCrashbuf: ") ;; for Debug.
@@ -162,8 +164,8 @@
(list mew-win32-mvm-usr
crashbox
mew-win32-mvm-passwd))
-
;; movemail result check.
+ (run-hooks 'mew-win32-mvm-finish-hook)
(save-excursion
(set-buffer crashbuf)
(goto-char (point-min))
-------------- next part --------------
まさか、
(defun mew-offline-summary-get ()
(interactive)
(if mew-offline-dialup-p
(progn
(rascon-generate-entry-table)
(if (not rascon-mode-indicator)
(progn
(rascon-dialup)
(sleep-for 10))))) ;; <- ここ
(if rascon-mode-indicator
(if mew-offline-use-mvm-p
(mew-win32-mvm-get)
(mew-summary-get))))
とかすると OK になっちゃうなんてことはないですよねぇ。
ちなみに、同時に立ち上げる process の個数的には mew-summary-get
より mew-win32-mvm-get の方がやさしいです。
-------------- next part --------------
こういうメールが書きにくいのが Mew の弱点かもしれない :-)
--
白井秀行 (mailto:Shirai at example.com)
Mew-win32 メーリングリストの案内