2003-06-15 TAKAHASHI Kaoru <kaoru@kaisei.org>
+ * elmo-maildir.el (elmo-folder-rename-internal): New method,
+ copied from localdir's one.
+
+ * elmo-pipe.el (elmo-folder-rename): New method, rename
+ destination folder with leaving source folder as it is.
+
* elmo.el (elmo-folder-rename-internal): New method to cause error.
* elmo-nntp.el (elmo-folder-search): Body search is to search from
t)
(error nil))))
+(luna-define-method elmo-folder-rename-internal ((folder elmo-maildir-folder)
+ new-folder)
+ (let* ((old (elmo-maildir-folder-directory-internal folder))
+ (new (elmo-maildir-folder-directory-internal new-folder))
+ (new-dir (directory-file-name (file-name-directory new))))
+ (unless (file-directory-p old)
+ (error "No such directory: %s" old))
+ (when (file-exists-p new)
+ (error "Already exists directory: %s" new))
+ (unless (file-directory-p new-dir)
+ (elmo-make-directory new-dir))
+ (rename-file old new)
+ t))
+
(require 'product)
(product-provide (provide 'elmo-maildir) (require 'elmo-version))
;(luna-define-method elmo-folder-pack-numbers ((folder elmo-pipe-folder))
; (elmo-folder-pack-numbers (elmo-pipe-folder-dst-internal folder)))
+(luna-define-method elmo-folder-rename ((folder elmo-pipe-folder) new-name)
+ (let* ((new-folder (elmo-make-folder new-name)))
+ (unless (string= (elmo-folder-name-internal
+ (elmo-pipe-folder-src-internal folder))
+ (elmo-folder-name-internal
+ (elmo-pipe-folder-src-internal new-folder)))
+ (error "Source folder differ"))
+ (unless (eq (elmo-folder-type-internal
+ (elmo-pipe-folder-dst-internal folder))
+ (elmo-folder-type-internal
+ (elmo-pipe-folder-dst-internal new-folder)))
+ (error "Not same folder type"))
+ (if (or (file-exists-p (elmo-folder-msgdb-path
+ (elmo-pipe-folder-dst-internal new-folder)))
+ (elmo-folder-exists-p
+ (elmo-pipe-folder-dst-internal new-folder)))
+ (error "Already exists folder: %s" new-name))
+ (elmo-folder-send (elmo-pipe-folder-dst-internal folder)
+ 'elmo-folder-rename-internal
+ (elmo-pipe-folder-dst-internal new-folder))
+ (elmo-msgdb-rename-path folder new-folder)))
+
(require 'product)
(product-provide (provide 'elmo-pipe) (require 'elmo-version))