t)
(signal 'elmo-authenticate-error
'(elmo-pop3-auth-apop))))
- (signal 'elmo-open-error '(elmo-pop-auth-apop))))
-
+ (signal 'elmo-open-error '(elmo-pop3-auth-apop))))
+
(luna-define-method elmo-network-initialize-session-buffer :after
((session elmo-pop3-session) buffer)
(with-current-buffer buffer
(defalias 'elmo-pop3-msgdb-create 'elmo-pop3-msgdb-create-as-numlist)
+(defun elmo-pop3-sort-overview-by-original-number (overview loc-alist)
+ (if loc-alist
+ (sort overview
+ (lambda (ent1 ent2)
+ (< (elmo-pop3-uidl-to-number
+ (cdr (assq (elmo-msgdb-overview-entity-get-number ent1)
+ loc-alist)))
+ (elmo-pop3-uidl-to-number
+ (cdr (assq (elmo-msgdb-overview-entity-get-number ent2)
+ loc-alist))))))
+ overview))
+
+(defun elmo-pop3-sort-msgdb-by-original-number (msgdb)
+ (message "Sorting...")
+ (let ((overview (elmo-msgdb-get-overview msgdb)))
+ (setq overview (elmo-pop3-sort-overview-by-original-number
+ overview
+ (elmo-msgdb-get-location msgdb)))
+ (message "Sorting...done")
+ (list overview (nth 1 msgdb)(nth 2 msgdb)(nth 3 msgdb)(nth 4 msgdb))))
+
(defun elmo-pop3-msgdb-create-as-numlist (spec numlist new-mark
already-mark seen-mark
important-mark seen-list
(setq loc-alist (if msgdb (elmo-msgdb-get-location msgdb)
(elmo-msgdb-location-load
(elmo-msgdb-expand-path spec)))))
- (elmo-pop3-msgdb-create-by-header process numlist
- new-mark already-mark
- seen-mark seen-list
- loc-alist))))
+ (with-current-buffer (process-buffer process)
+ (elmo-pop3-sort-msgdb-by-original-number
+ (elmo-pop3-msgdb-create-by-header process numlist
+ new-mark already-mark
+ seen-mark seen-list
+ loc-alist))))))
(defun elmo-pop3-uidl-to-number (uidl)
(string-to-number (elmo-get-hash-val uidl
(insert-buffer-substring (process-buffer process) start (- end 3))
(elmo-delete-cr-get-content-type)))))
-(defun elmo-pop3-read-msg (spec number outbuf &optional msgdb)
+(defun elmo-pop3-read-msg (spec number outbuf &optional msgdb unread)
(let* ((loc-alist (if elmo-pop3-use-uidl
(if msgdb
(elmo-msgdb-get-location msgdb)