X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=elmo%2Fmodb-standard.el;h=62fc5b6ed880ce4bf777509fd10cad1d081c42be;hb=155747a555b72bd11eb29c8f99f9399ddcd73dfa;hp=8f44be816c3e9fb10448d5ef6799ee57e6ad8fee;hpb=3678d8404ccd083a4e1296ef665b80b3648b34fc;p=elisp%2Fwanderlust.git diff --git a/elmo/modb-standard.el b/elmo/modb-standard.el index 8f44be8..62fc5b6 100644 --- a/elmo/modb-standard.el +++ b/elmo/modb-standard.el @@ -247,6 +247,23 @@ entities)) (ignore-errors (delete-file filename))))) +(defun modb-standard-cleanup-stale-entities (modb path) + (message "Removing stale entities...") + (let* ((entity-regex + (concat "^" modb-standard-entity-filename "-\\([0-9]+\\)")) + (entities (elmo-uniq-list + (mapcar + (lambda (x) (/ x modb-standard-divide-number)) + (modb-standard-number-list-internal modb)))) + (files (mapcar (lambda(x) + (when (string-match entity-regex x) + (string-to-number (match-string 1 x)))) + (directory-files path nil entity-regex)))) + (dolist (entity (car (elmo-list-diff-nonsortable files entities))) + (ignore-errors (delete-file + (expand-file-name + (modb-standard-entity-filename entity) path)))))) + (defun modb-standard-save-entity (modb path) (let ((modified (modb-generic-message-modified-internal modb))) (cond ((listp modified) @@ -259,7 +276,7 @@ (dolist (section sections) (modb-standard-save-entity-1 modb path section)))) (modified - (modb-standard-save-entity-1 modb path))))) + (modb-standard-cleanup-stale-entities modb path))))) ;;; Implement ;; @@ -478,7 +495,7 @@ (msg-id (elmo-msgdb-message-entity-field (elmo-message-entity-handler entity) entity 'message-id)) duplicate) - (when msg-id + (when (and number msg-id) ;; number-list (modb-standard-set-number-list-internal msgdb