From e91c10ee49f6004b1fb70b0ec14fe1c226c7b4a7 Mon Sep 17 00:00:00 2001 From: yamaoka Date: Thu, 3 Apr 2003 08:17:05 +0000 Subject: [PATCH] * pop3.el (pop3-uidl-support): Default to nil; change the meaning of a value which it may contain into an alist of servers and flags of whether they support UIDLs. (pop3-get-message-numbers): Synch it with the change of `pop3-uidl-support'. (pop3-get-uidl): Ditto. --- ChangeLog | 9 +++++++-- lisp/pop3.el | 28 +++++++++++++++------------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index be64bfb..bd0e5a6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,12 @@ 2003-04-03 Katsumi Yamaoka - * lisp/pop3.el (pop3-get-message-numbers): Don't check uidls when - `pop3-leave-mail-on-server' is nil. + * lisp/pop3.el (pop3-uidl-support): Default to nil; change the + meaning of a value which it may contain into an alist of servers + and flags of whether they support UIDLs. + (pop3-get-message-numbers): Don't check uidls when + `pop3-leave-mail-on-server' is nil; synch it with the change of + `pop3-uidl-support'. + (pop3-get-uidl): Synch it with the change of `pop3-uidl-support'. 2003-03-31 Katsumi Yamaoka diff --git a/lisp/pop3.el b/lisp/pop3.el index 17eaaee..f2230c4 100644 --- a/lisp/pop3.el +++ b/lisp/pop3.el @@ -89,9 +89,9 @@ Used for APOP authentication.") (defvar pop3-uidl-file-name "~/.uidls" "File in which to store the UIDL of processed messages.") -(defvar pop3-uidl-support 'dont-know - "Whether the server supports UIDL. -Nil means no, t means yes, not-nil-or-t means yet to be determined.") +(defvar pop3-uidl-support nil + "Alist of servers and flags of whether they support UIDLs. +Users don't have to set this value.") (defvar pop3-uidl-obarray (make-vector 31 0) "Uidl hash table.") @@ -415,7 +415,7 @@ If NOW, use that time instead." (when (and ;; remove elements not in the uidl, this assumes the uidl is short (or (not (and pop3-leave-mail-on-server - (eq pop3-uidl-support t))) + (cdr (assoc pop3-mailhost pop3-uidl-support)))) (memq (caar messages) uidl)) (caar messages) ;; don't download messages that are too large @@ -426,14 +426,18 @@ If NOW, use that time instead." (pop3-top process (caar messages) 0))))) (push (car messages) out)) (setq messages (cdr messages))) - (cons total (reverse out)))) + (cons total (nreverse out)))) (defun pop3-get-uidl (process) "Use PROCESS to get a list of unread message numbers." - (let ((messages (pop3-uidl process)) uidl) - (if (or (null messages) (null pop3-uidl-support)) - (setq pop3-uidl-support nil) - (setq pop3-uidl-support t) + (let ((messages (pop3-uidl process)) + (support (assoc pop3-mailhost pop3-uidl-support)) + uidl) + (if support + (setcdr support (and messages t)) + (push (cons pop3-mailhost (and messages t)) + pop3-uidl-support)) + (when messages (save-excursion (with-temp-buffer (when (file-readable-p pop3-uidl-file-name) @@ -442,15 +446,13 @@ If NOW, use that time instead." (while (looking-at "\\([^ \n\t]+\\)") (set (intern (match-string 1) pop3-uidl-obarray) (cons nil t)) - (forward-line 1)) - )) + (forward-line 1)))) (dolist (message (cdr messages)) (if (setq uidl (intern-soft (cdr message) pop3-uidl-obarray)) (setcar (symbol-value uidl) (car message)) (set (intern (cdr message) pop3-uidl-obarray) (cons (car message) nil)))) - (pop3-get-unread-message-numbers)) - )) + (pop3-get-unread-message-numbers)))) (defun pop3-get-unread-message-numbers () "Return a sorted list of unread msg numbers to retrieve." -- 1.7.10.4