(elmo-message-field): Define.
[elisp/wanderlust.git] / elmo / elmo-archive.el
index 452ff4d..d18cae1 100644 (file)
@@ -578,11 +578,11 @@ TYPE specifies the archiver's symbol."
   (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))
@@ -616,8 +616,13 @@ TYPE specifies the archiver's symbol."
                   (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
@@ -629,9 +634,10 @@ TYPE specifies the archiver's symbol."
           (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)
@@ -666,7 +672,8 @@ TYPE specifies the archiver's symbol."
        (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)))))
@@ -759,8 +766,9 @@ TYPE specifies the archiver's symbol."
           (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))
@@ -895,7 +903,7 @@ TYPE specifies the archiver's symbol."
 
 (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))
@@ -1057,7 +1065,7 @@ TYPE specifies the archiver's symbol."
        (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))))))