* elmo-pipe.el (elmo-pipe-drain): Bind `elmo-inhibit-read-cache' as t
[elisp/wanderlust.git] / elmo / elmo-maildir.el
index 43d70e1..6c83f5d 100644 (file)
@@ -1,6 +1,6 @@
 ;;; elmo-maildir.el -- Maildir interface for ELMO.
 
-;; Copyright 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
+;; Copyright (C) 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
 
 ;; Author: Yuuichi Teranishi <teranisi@gohome.org>
 ;; Keywords: mail, net news
@@ -52,7 +52,7 @@ This variable should not be used in elsewhere.")
   (expand-file-name
    (let ((file (file-name-completion (symbol-name location)
                                     (expand-file-name "cur" dir))))
-     (if (eq file t) location file))
+     (if (eq file t) (symbol-name location) file))
    (expand-file-name "cur" dir)))
 
 (defsubst elmo-maildir-list-location (dir &optional child-dir)
@@ -105,7 +105,7 @@ This variable should not be used in elsewhere.")
                             "^[^.].*$" t))))
 
 (defun elmo-maildir-update-current (spec)
-  "Move all new msgs to cur in the maildir"
+  "Move all new msgs to cur in the maildir."
   (let* ((maildir (elmo-maildir-get-folder-directory spec))
         (news (directory-files (expand-file-name "new"
                                                  maildir)
@@ -114,26 +114,29 @@ This variable should not be used in elsewhere.")
     ;; cleanup tmp directory.
     (elmo-maildir-cleanup-temporal maildir)
     ;; move new msgs to cur directory.
-    (mapcar (lambda (x)
-             (rename-file
-              (expand-file-name x (expand-file-name "new" maildir))
-              (expand-file-name (concat x ":2,")
-                                (expand-file-name "cur" maildir))))
-           news)))
+    (while news
+      (rename-file
+       (expand-file-name (car news) (expand-file-name "new" maildir))
+       (expand-file-name (concat (car news) ":2,")
+                        (expand-file-name "cur" maildir)))
+      (setq news (cdr news)))))
 
 (defun elmo-maildir-set-mark (filename mark)
-  "Mark the file in the maildir. MARK is a character."
-  (if (string-match "^\\([^:]+:2,\\)\\(.*\\)$" filename)
+  "Mark the FILENAME file in the maildir.  MARK is a character."
+  (if (string-match "^\\([^:]+:[12],\\)\\(.*\\)$" filename)
       (let ((flaglist (string-to-char-list (elmo-match-string
                                            2 filename))))
        (unless (memq mark flaglist)
          (setq flaglist (sort (cons mark flaglist) '<))
          (rename-file filename
                       (concat (elmo-match-string 1 filename)
-                              (char-list-to-string flaglist)))))))
+                              (char-list-to-string flaglist)))))
+    ;; Rescue no info file in maildir.
+    (rename-file filename
+                (concat filename ":2," (char-to-string mark)))))
 
 (defun elmo-maildir-delete-mark (filename mark)
-  "Mark the file in the maildir. MARK is a character."
+  "Mark the FILENAME file in the maildir.  MARK is a character."
   (if (string-match "^\\([^:]+:2,\\)\\(.*\\)$" filename)
       (let ((flaglist (string-to-char-list (elmo-match-string
                                            2 filename))))
@@ -290,7 +293,8 @@ file name for maildir directories."
     (unless (file-exists-p (file-name-directory filename))
       (make-directory (file-name-directory filename)))
     (while (file-exists-p filename)
-      ;; (sleep-for 2) ; I don't want to wait.
+;;; I don't want to wait.
+;;;   (sleep-for 2)
       (setq filename
            (expand-file-name
             (concat "tmp/" (elmo-maildir-make-unique-string))