;;; elmo-dop.el -- Modules for Disconnected Operations on ELMO.
-;; Copyright 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
+;; Copyright (C) 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
;; Author: Yuuichi Teranishi <teranisi@gohome.org>
;; Keywords: mail, net news
Automatically loaded/saved.")
(defun elmo-dop-queue-append (folder function argument)
- (let ((operation (list (format "%s" 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
(setq queue (cdr queue)))
(when (> count 0)
(if (elmo-y-or-n-p
- (format "%d pending operation(s) exists. Perform now?" count)
+ (format "%d pending operation(s) exists. Perform now? " count)
(not elmo-dop-flush-confirm) t)
(progn
(message "")
(when (and (string= func "create-folder-maybe")
(elmo-y-or-n-p
(format
- "Create folder %s failed. Abort creating?"
+ "Create folder %s failed. Abort creating? "
folder)
(not elmo-dop-flush-confirm) t))
(elmo-dop-save-pending-messages folder)
performed num)
(sit-for 1) ;
(elmo-dop-queue-save)))
- (if (elmo-y-or-n-p "Clear all pending operations?"
+ (if (elmo-y-or-n-p "Clear all pending operations? "
(not elmo-dop-flush-confirm) t)
(let ((queue elmo-dop-queue))
(while queue
(setq numbers (cdr numbers)))
(cons appended deleting-msgids)))
+(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)) folder)
+ (string= (nth 1 (car queue)) "delete-msgids"))
+ (setq numbers
+ (nconc numbers
+ (delq nil (mapcar
+ (lambda (x)
+ (mapcar 'car
+ (elmo-string-rassoc-all
+ x number-alist)))
+ (nth 2 (car queue)))))))
+ (setq queue (cdr queue)))
+ (elmo-uniq-list (elmo-flatten numbers))))
+
(defun elmo-dop-delete-msgs (folder msgs msgdb)
(save-match-data
(let ((folder-numbers (elmo-make-folder-numbers-list folder msgs))
(save-match-data
(elmo-dop-queue-append folder "prefetch-msgs" msgs)))
-(defun elmo-dop-list-folder (folder)
+(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))))
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
matched)
(if (eq (elmo-folder-get-type folder) 'imap4)
(progn
-;; (while append-list
-;; (if (setq matched (car (rassoc (car append-list) number-alist)))
-;; (setq msgs (delete matched msgs)))
-;; (setq append-list (cdr append-list)))
+;;; (while append-list
+;;; (if (setq matched (car (rassoc (car append-list) number-alist)))
+;;; (setq msgs (delete matched msgs)))
+;;; (setq append-list (cdr append-list)))
(if msgs
(elmo-dop-queue-append folder func-name msgs)))
;; maildir... XXX hard coding.....
(if (eq (elmo-folder-get-type folder) 'imap4)
(if elmo-enable-disconnected-operation
(let* ((number-alist (elmo-msgdb-number-load
- (elmo-msgdb-expand-path folder)))
+ (elmo-msgdb-expand-path folder)))
(number-list (mapcar 'car number-alist))
(append-list (elmo-dop-append-list-load folder))
(append-num (length append-list))
(elmo-dop-unlock-message (car append-list)))
(setq append-list (cdr append-list))
(elmo-dop-append-list-save folder nil)))
- (message (format "Saving queued message in %s...done."
+ (message (format "Saving queued message in %s...done"
elmo-lost+found-folder)))
(defun elmo-dop-flush-pending-append-operations (folder &optional appends resume)
(when resume
;; Resume msgdb changed by elmo-dop-msgdb-create.
(let* ((resumed-list (elmo-dop-append-list-load folder t))
- (number-alist (elmo-msgdb-number-load
+ (number-alist (elmo-msgdb-number-load
(elmo-msgdb-expand-path folder)))
(appendings append-list)
pair dels)
(setq appendings (cdr appendings)))
(elmo-dop-append-list-save folder resumed-list t)))
(while appendings
- (let* ((seen-list (elmo-msgdb-seen-load
+ (let* ((seen-list (elmo-msgdb-seen-load
(elmo-msgdb-expand-path folder))))
(setq failure nil)
(setq file-string (elmo-get-file-string ; message string
(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))
(setq elmo-dop-queue (delete (list folder "append-operations" nil)
elmo-dop-queue))
(elmo-dop-queue-save))))
- (message "Appending queued messages...done."))
+ (message "Appending queued messages...done"))
(defun elmo-dop-folder-exists-p (folder)
(or (file-exists-p (elmo-msgdb-expand-path folder))