(delete-process (elmo-network-session-process-internal session))))
(defun elmo-pop3-get-session (folder &optional if-exists)
+ "Get POP3 session for FOLDER.
+If IF-EXISTS is non-nil, don't get new session.
+If IF-EXISTS is `any-exists', get BIFF session or normal session if exists."
(let ((elmo-pop3-use-uidl-internal (if elmo-inhibit-number-mapping
nil
(elmo-pop3-folder-use-uidl-internal
folder))))
- (elmo-network-get-session 'elmo-pop3-session
- (concat
- (if (elmo-folder-biff-internal folder)
- "BIFF-")
- "POP3")
- folder if-exists)))
+ (if (eq if-exists 'any-exists)
+ (or (elmo-network-get-session 'elmo-pop3-session
+ "POP3"
+ folder if-exists)
+ (elmo-network-get-session 'elmo-pop3-session
+ "BIFF-POP3"
+ folder if-exists))
+ (elmo-network-get-session 'elmo-pop3-session
+ (concat
+ (if (elmo-folder-biff-internal folder)
+ "BIFF-")
+ "POP3")
+ folder if-exists))))
(defun elmo-pop3-send-command (process command &optional no-erase no-log)
(with-current-buffer (process-buffer process)
return-value)))
(defun elmo-pop3-process-filter (process output)
- (with-current-buffer (process-buffer process)
- (goto-char (point-max))
- (insert output)
- (elmo-pop3-debug "RECEIVED: %s\n" output)
- (if (and elmo-pop3-total-size
- (> elmo-pop3-total-size
- (min elmo-display-retrieval-progress-threshold 100)))
- (elmo-display-progress
- 'elmo-display-retrieval-progress
- (format "Retrieving (%d/%d bytes)..."
- (buffer-size)
- elmo-pop3-total-size)
- (/ (buffer-size) (/ elmo-pop3-total-size 100))))))
+ (when (buffer-live-p (process-buffer process))
+ (with-current-buffer (process-buffer process)
+ (goto-char (point-max))
+ (insert output)
+ (elmo-pop3-debug "RECEIVED: %s\n" output)
+ (if (and elmo-pop3-total-size
+ (> elmo-pop3-total-size
+ (min elmo-display-retrieval-progress-threshold 100)))
+ (elmo-display-progress
+ 'elmo-display-retrieval-progress
+ (format "Retrieving (%d/%d bytes)..."
+ (buffer-size)
+ elmo-pop3-total-size)
+ (/ (buffer-size) (/ elmo-pop3-total-size 100)))))))
(defun elmo-pop3-auth-user (session)
(let ((process (elmo-network-session-process-internal session)))
(copy-to-buffer tobuffer (point-min) (point-max)))))
(luna-define-method elmo-folder-msgdb-create ((folder elmo-pop3-folder)
- numlist new-mark
- already-mark seen-mark
- important-mark seen-list)
+ numlist flag-table)
(let ((process (elmo-network-session-process-internal
(elmo-pop3-get-session folder))))
(with-current-buffer (process-buffer process)
(elmo-pop3-msgdb-create-by-header
process
numlist
- new-mark already-mark
- seen-mark seen-list
+ flag-table
(if (elmo-pop3-folder-use-uidl-internal folder)
(elmo-pop3-folder-location-alist-internal folder)))))))
elmo-pop3-size-hash))
(defun elmo-pop3-msgdb-create-by-header (process numlist
- new-mark already-mark
- seen-mark
- seen-list
+ flag-table
loc-alist)
(let ((tmp-buffer (get-buffer-create " *ELMO Overview TMP*")))
(with-current-buffer (process-buffer process)
process
(length numlist)
numlist
- new-mark already-mark seen-mark seen-list loc-alist)
+ flag-table loc-alist)
(kill-buffer tmp-buffer)))))
(defun elmo-pop3-msgdb-create-message (buffer
process
num
- numlist new-mark already-mark
- seen-mark
- seen-list
+ numlist
+ flag-table
loc-alist)
(save-excursion
(let (beg overview number-alist mark-alist
(elmo-msgdb-overview-entity-get-number entity)
(car entity)))
(setq message-id (car entity))
- (setq seen (member message-id seen-list))
(if (setq gmark (or (elmo-msgdb-global-mark-get message-id)
- (if (elmo-file-cache-status
- (elmo-file-cache-get message-id))
- (if seen
- nil
- already-mark)
- (if seen
- (if elmo-pop3-use-cache
- seen-mark)
- new-mark))))
+ (elmo-msgdb-mark
+ (elmo-flag-table-get flag-table message-id)
+ (elmo-file-cache-status
+ (elmo-file-cache-get message-id))
+ 'new)))
(setq mark-alist
(elmo-msgdb-mark-append
mark-alist