(elmo-archive-message-fetch-internal folder number))
(luna-define-method elmo-folder-append-buffer ((folder elmo-archive-folder)
- &optional flag number)
- (elmo-archive-folder-append-buffer folder flag number))
+ &optional flags number)
+ (elmo-archive-folder-append-buffer folder flags number))
;; verrrrrry slow!!
-(defun elmo-archive-folder-append-buffer (folder flag number)
+(defun elmo-archive-folder-append-buffer (folder flags number)
(let* ((type (elmo-archive-folder-archive-type-internal folder))
(prefix (elmo-archive-folder-archive-prefix-internal folder))
(arc (elmo-archive-get-archive-name folder))
(copy-to-buffer dst-buffer (point-min) (point-max)))
(as-binary-output-file
(write-region (point-min) (point-max) newfile nil 'no-msg))
- (elmo-archive-call-method method (list arc newfile))
- t)
+ (when (elmo-archive-call-method method (list arc newfile))
+ (elmo-folder-preserve-flags
+ folder
+ (with-current-buffer src-buffer
+ (elmo-msgdb-get-message-id-from-buffer))
+ flags)
+ t))
nil))))))
(luna-define-method elmo-folder-append-messages :around
(elmo-folder-message-file-p src-folder)
(elmo-folder-message-file-number-p src-folder))
;; same-number(localdir, localnews) -> archive
- (elmo-archive-append-files folder
- (elmo-folder-message-file-directory src-folder)
- numbers)
+ (unless (elmo-archive-append-files folder
+ (elmo-folder-message-file-directory src-folder)
+ numbers)
+ (setq numbers nil))
(elmo-progress-notify 'elmo-folder-move-messages (length numbers))
numbers)
((elmo-folder-message-make-temp-file-p src-folder)
(if (elmo-archive-append-files folder
base-dir
files)
- (elmo-delete-directory temp-dir)))
+ (elmo-delete-directory temp-dir)
+ (setq numbers nil)))
(elmo-progress-notify 'elmo-folder-move-messages (length numbers))
numbers)
(t (luna-call-next-method)))))
(elmo-archive-exec-msgs-subr2
n-prog (append n-prog-arg (list arc)) files (length arc)))))))))
-(luna-define-method elmo-folder-delete-messages ((folder elmo-archive-folder)
- numbers)
+(luna-define-method elmo-folder-delete-messages-internal ((folder
+ elmo-archive-folder)
+ numbers)
(let* ((type (elmo-archive-folder-archive-type-internal folder))
(prefix (elmo-archive-folder-archive-prefix-internal folder))
(arc (elmo-archive-get-archive-name folder))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; MessageDB functions (from elmo-localdir.el)
-(defsubst elmo-archive-msgdb-create-entity-subr (number)
+(defsubst elmo-archive-msgdb-create-entity-subr (msgdb number)
(let (header-end)
- (elmo-set-buffer-multibyte default-enable-multibyte-characters)
+ (set-buffer-multibyte default-enable-multibyte-characters)
(goto-char (point-min))
(if (re-search-forward "\\(^--.*$\\)\\|\\(\n\n\\)" nil t)
(setq header-end (point))
(setq header-end (point-max)))
(narrow-to-region (point-min) header-end)
- (elmo-msgdb-create-overview-from-buffer number)))
+ (elmo-msgdb-create-message-entity-from-buffer
+ (elmo-msgdb-message-entity-handler msgdb) number)))
;; verrrry slow!!
-(defsubst elmo-archive-msgdb-create-entity (method archive number type &optional prefix)
+(defsubst elmo-archive-msgdb-create-entity (msgdb
+ method
+ archive number type
+ &optional prefix)
(let* ((msg (elmo-concat-path prefix (int-to-string number)))
(arg-list (list archive msg)))
(when (elmo-archive-article-exists-p archive msg type)
;; insert article.
(as-binary-process
(elmo-archive-call-method method arg-list t))
- (elmo-archive-msgdb-create-entity-subr number))))
+ (elmo-archive-msgdb-create-entity-subr msgdb number))))
(luna-define-method elmo-folder-msgdb-create ((folder elmo-archive-folder)
numbers flag-table)
(file (elmo-archive-get-archive-name folder))
(method (elmo-archive-get-method type 'cat))
(new-msgdb (elmo-make-msgdb))
- entity i percent num message-id)
+ entity i percent num message-id flags)
(with-temp-buffer
(setq num (length numlist))
(setq i 0)
(erase-buffer)
(setq entity
(elmo-archive-msgdb-create-entity
+ new-msgdb
method file (car numlist) type
(elmo-archive-folder-archive-prefix-internal folder)))
(when entity
- (setq message-id (elmo-msgdb-overview-entity-get-id entity))
- (elmo-msgdb-append-entity
- new-msgdb
- entity
- (elmo-flag-table-get flag-table message-id)))
+ (setq message-id (elmo-message-entity-field entity 'message-id)
+ flags (elmo-flag-table-get flag-table message-id))
+ (elmo-global-flags-set flags folder (car numlist) message-id)
+ (elmo-msgdb-append-entity new-msgdb entity flags))
(when (> num elmo-display-progress-threshold)
(setq i (1+ i))
(setq percent (/ (* i 100) num))
((looking-at delim1) ;; MMDF
(elmo-msgdb-append
new-msgdb
- (elmo-archive-parse-mmdf msgs flag-table)))
+ (elmo-archive-parse-mmdf folder msgs flag-table)))
;;; ((looking-at delim2) ;; UNIX MAIL
;;; (elmo-msgdb-append
;;; new-msgdb
percent))))
new-msgdb))
-(defun elmo-archive-parse-mmdf (msgs flag-table)
+(defun elmo-archive-parse-mmdf (folder msgs flag-table)
(let ((delim elmo-mmdf-delimiter)
(new-msgdb (elmo-make-msgdb))
number sp ep rest entity
- message-id)
+ message-id flags)
(goto-char (point-min))
(setq rest msgs)
(while (and rest (re-search-forward delim nil t)
() ; nop
(save-excursion
(narrow-to-region sp ep)
- (setq entity (elmo-archive-msgdb-create-entity-subr number))
- (setq message-id (elmo-msgdb-overview-entity-get-id entity))
- (elmo-msgdb-append-entity
- new-msgdb
- entity
- (elmo-flag-table-get flag-table message-id))
+ (setq entity (elmo-archive-msgdb-create-entity-subr new-msgdb number)
+ message-id (elmo-message-entity-field entity 'message-id)
+ flags (elmo-flag-table-get flag-table message-id))
+ (elmo-global-flags-set flags folder number message-id)
+ (elmo-msgdb-append-entity new-msgdb entity flags)
(widen)))
(forward-line 1)
(setq rest (cdr rest)))
(when (file-exists-p arc)
(as-binary-process
(elmo-archive-call-method method args t))
- (elmo-set-buffer-multibyte default-enable-multibyte-characters)
+ (set-buffer-multibyte default-enable-multibyte-characters)
(decode-mime-charset-region (point-min)(point-max) elmo-mime-charset)
(elmo-buffer-field-condition-match condition number number-list))))))