Synch up with main trunk.
[elisp/wanderlust.git] / elmo / elmo-archive.el
index 2156f3f..8437532 100644 (file)
@@ -33,7 +33,9 @@
 
 ;;; Code:
 ;;
+(eval-when-compile (require 'cl))
 
+(require 'elmo)
 (require 'elmo-msgdb)
 (require 'emu)
 (require 'std11)
@@ -616,13 +618,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))
-                (elmo-folder-preserve-falgs
-                 folder
-                 (with-current-buffer src-buffer
-                   (elmo-msgdb-get-message-id-from-buffer))
-                 flags)
-                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
@@ -634,9 +636,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)
@@ -671,7 +674,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)))))
@@ -764,8 +768,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))
@@ -900,7 +905,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))
@@ -1062,7 +1067,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))))))