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))
	     (cl-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))
      (cl-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))
	(cl-decf i))
      (when uidl
	(pop3-send-streaming-command process "DELE" uidl nil)))
    mod))