;;; Code:
;;
-(require 'elmo)
(require 'elmo-vars)
(require 'elmo-msgdb)
(require 'elmo-util)
+(eval-when-compile
+ (require 'elmo-imap4)
+ (require 'elmo-localdir))
;; global variable.
(defvar elmo-dop-queue nil
Automatically loaded/saved.")
(defun elmo-dop-queue-append (folder function argument)
- (let ((operation (list (elmo-folder-name-internal folder)
- function argument)))
+ (let ((operation (list (elmo-string folder) function argument)))
(elmo-dop-queue-load)
(unless (member operation elmo-dop-queue) ;; don't append same operation
(setq elmo-dop-queue
(count 0)
len)
(while queue
- (if (or force (elmo-folder-plugged-p (elmo-make-folder (caar queue))))
+ (if (or force (elmo-folder-plugged-p (caar queue)))
(setq count (1+ count)))
(setq queue (cdr queue)))
(when (> count 0)
(expand-file-name (if resume
elmo-msgdb-resume-list-filename
elmo-msgdb-append-list-filename)
- (elmo-folder-msgdb-path folder))))
+ (elmo-msgdb-expand-path folder))))
(defun elmo-dop-append-list-save (folder append-list &optional resume)
(if append-list
(expand-file-name (if resume
elmo-msgdb-resume-list-filename
elmo-msgdb-append-list-filename)
- (elmo-folder-msgdb-path folder))
+ (elmo-msgdb-expand-path folder))
append-list)
(condition-case ()
(delete-file (expand-file-name (if resume
elmo-msgdb-resume-list-filename
elmo-msgdb-append-list-filename)
- (elmo-folder-msgdb-path folder)))
+ (elmo-msgdb-expand-path folder)))
(error))))
(defun elmo-dop-deleting-numbers-to-msgids (alist numbers appended)
(setq numbers (cdr numbers)))
(cons appended deleting-msgids)))
-(defun elmo-dop-list-deleted (name number-alist)
- "List message numbers to be deleted on folder with NAME from NUMBER-ALIST."
+(defun elmo-dop-list-deleted (folder number-alist)
+ "List message numbers to be deleted on FOLDER from NUMBER-ALIST."
(elmo-dop-queue-load)
(let ((queue elmo-dop-queue)
numbers matches nalist)
(while queue
- (if (and (string= (nth 0 (car queue)) name)
+ (if (and (string= (nth 0 (car queue)) folder)
(string= (nth 1 (car queue)) "delete-msgids"))
(setq numbers
(nconc numbers
(save-match-data
(elmo-dop-queue-append folder "prefetch-msgs" msgs)))
-(defun elmo-dop-list-messages (folder)
- (let* ((path (elmo-msgdb-expand-path folder))
- (number-alist (elmo-msgdb-number-load path))
- (number-list (mapcar 'car number-alist))
- (append-list (elmo-dop-append-list-load folder))
- (append-num (length append-list))
- alreadies
- killed
- max-num
- (i 0))
- (setq killed (elmo-dop-list-deleted folder number-alist))
- (while append-list
- (if (rassoc (car append-list) number-alist)
- (setq alreadies (append alreadies
- (list (car append-list)))))
- (setq append-list (cdr append-list)))
- (setq append-num (- append-num (length alreadies)))
- (setq max-num
- (or (nth (max (- (length number-list) 1) 0)
- number-list) 0))
- (while (< i append-num)
- (setq number-list
- (append number-list
- (list (+ max-num i 1))))
- (setq i (+ 1 i)))
- (elmo-living-messages number-list killed)))
+(defun elmo-dop-list-folder (folder &optional nohide)
+ (if (or (memq (elmo-folder-get-type folder)
+ '(imap4 nntp pop3 filter pipe))
+ (and (elmo-multi-p folder) (not (elmo-folder-local-p folder))))
+ (if elmo-enable-disconnected-operation
+ (let* ((path (elmo-msgdb-expand-path folder))
+ (number-alist (elmo-msgdb-number-load path))
+ (number-list (mapcar 'car number-alist))
+ (append-list (elmo-dop-append-list-load folder))
+ (append-num (length append-list))
+ (killed (and elmo-use-killed-list
+ (elmo-msgdb-killed-list-load path)))
+ alreadies
+ max-num
+ (i 0))
+ (setq killed (nconc (elmo-dop-list-deleted folder number-alist)
+ killed))
+ (while append-list
+ (if (rassoc (car append-list) number-alist)
+ (setq alreadies (append alreadies
+ (list (car append-list)))))
+ (setq append-list (cdr append-list)))
+ (setq append-num (- append-num (length alreadies)))
+ (setq max-num
+ (or (nth (max (- (length number-list) 1) 0)
+ number-list) 0))
+ (while (< i append-num)
+ (setq number-list
+ (append number-list
+ (list (+ max-num i 1))))
+ (setq i (+ 1 i)))
+ (elmo-living-messages number-list killed))
+ (error "Unplugged"))
+ ;; not imap4 folder...list folder
+ (elmo-call-func folder "list-folder")))
(defun elmo-dop-count-appended (folder)
(length (elmo-dop-append-list-load folder)))
(elmo-folder-get-spec folder)
msgs msgdb))))
-(defun elmo-dop-folder-status (folder)
- (let* ((number-alist (elmo-msgdb-number-load
- (elmo-folder-msgdb-path folder)))
- (number-list (mapcar 'car number-alist))
- (append-list (elmo-dop-append-list-load folder))
- (append-num (length append-list))
- alreadies
- (i 0)
- max-num)
- (while append-list
- (if (rassoc (car append-list) number-alist)
- (setq alreadies (append alreadies
- (list (car append-list)))))
- (setq append-list (cdr append-list)))
- (setq max-num
- (or (nth (max (- (length number-list) 1) 0) number-list)
- 0))
- (cons (- (+ max-num append-num) (length alreadies))
- (- (+ (length number-list) append-num) (length alreadies)))))
-
(defun elmo-dop-max-of-folder (folder)
(if (eq (elmo-folder-get-type folder) 'imap4)
(if elmo-enable-disconnected-operation
(car appendings))))
(when file-string
(condition-case ()
- (elmo-append-msg folder file-string (car appendings) nil
- (not (member (car appendings) seen-list)))
+ (setq failure (not
+ (elmo-append-msg
+ folder file-string (car appendings) nil
+ (not (member (car appendings) seen-list)))))
(quit (setq failure t))
(error (setq failure t)))
(setq i (+ 1 i))