Function: pop3-uidl-dele
pop3-uidl-dele is a byte-compiled function defined in pop3.el.gz.
Signature
(pop3-uidl-dele PROCESS)
Documentation
Delete messages according to pop3-leave-mail-on-server.
Return non-nil if it is necessary to update the local UIDL file.
Source Code
;; Defined in /usr/src/emacs/lisp/net/pop3.el.gz
(defun pop3-uidl-dele (process)
"Delete messages according to `pop3-leave-mail-on-server'.
Return non-nil if it is necessary to update the local UIDL file."
(let* ((ctime (time-convert nil 'list))
(age-limit (and (numberp pop3-leave-mail-on-server)
(* 86400 pop3-leave-mail-on-server)))
(srvr (assoc pop3-mailhost pop3-uidl-saved))
(saved (assoc pop3-maildrop (cdr srvr)))
i uidl mod new tstamp dele)
(setcdr (cdr ctime) nil)
;; Add new messages to the data to be saved.
(cond ((and pop3-uidl saved)
(setq i (1- (length pop3-uidl)))
(while (>= i 0)
(unless (member (setq uidl (nth i pop3-uidl)) (cdr saved))
(push ctime new)
(push uidl new))
(decf i)))
(pop3-uidl
(setq new (mapcan (lambda (elt) (list elt ctime)) pop3-uidl))))
(when new (setq mod t))
;; List expirable messages and delete them from the data to be saved.
(setq i (1- (length saved)))
(while (> i 0)
(if (member (setq uidl (nth (1- i) saved)) pop3-uidl)
(progn
(setq tstamp (nth i saved))
(if (and age-limit
(time-less-p age-limit (time-subtract ctime tstamp)))
;; Mails to delete.
(progn
(setq mod t)
(push uidl dele))
;; Mails to keep.
(push tstamp new)
(push uidl new)))
;; Mails having been deleted in the server.
(setq mod t))
(decf i 2))
(cond (saved
(setcdr saved new))
(srvr
(setcdr (last srvr) (list (cons pop3-maildrop new))))
(t
(add-to-list 'pop3-uidl-saved
(list pop3-mailhost (cons pop3-maildrop new))
t)))
;; Actually delete the messages in the server.
(when dele
(setq uidl nil
i (length pop3-uidl))
(while (> i 0)
(when (member (nth (1- i) pop3-uidl) dele)
(push i uidl))
(decf i))
(when uidl
(pop3-send-streaming-command process "DELE" uidl nil)))
mod))