diff lisp/gnus/nnml.el @ 26:441bb1e64a06 r19-15b96

Import from CVS: tag r19-15b96
author cvs
date Mon, 13 Aug 2007 08:51:32 +0200
parents 4103f0995bd7
children 1917ad0d78d7
line wrap: on
line diff
--- a/lisp/gnus/nnml.el	Mon Aug 13 08:51:05 2007 +0200
+++ b/lisp/gnus/nnml.el	Mon Aug 13 08:51:32 2007 +0200
@@ -101,17 +101,11 @@
 	    beg article)
 	(if (stringp (car sequence))
 	    'headers
-	  (unless nnml-article-file-alist
-	    (setq nnml-article-file-alist
-		  (nnheader-article-to-file-alist nnml-current-directory)))
 	  (if (nnml-retrieve-headers-with-nov sequence fetch-old)
 	      'nov
 	    (while sequence
 	      (setq article (car sequence))
-	      (setq file 
-		    (concat nnml-current-directory 
-			    (or (cdr (assq article nnml-article-file-alist))
-				"")))
+	      (setq file (nnml-article-to-file article))
 	      (when (and (file-exists-p file)
 			 (not (file-directory-p file)))
 		(insert (format "221 %d Article retrieved.\n" article))
@@ -261,15 +255,8 @@
 	 article rest mod-time number)
     (nnmail-activate 'nnml)
 
-    (unless nnml-article-file-alist
-      (setq nnml-article-file-alist
-	    (nnheader-article-to-file-alist nnml-current-directory)))
-
     (while (and articles is-old)
-      (when (setq article
-		  (assq (setq number (pop articles)) 
-			nnml-article-file-alist))
-	(setq article (concat nnml-current-directory (cdr article)))
+      (when (setq article (nnml-article-to-file (setq number (pop articles))))
 	(when (setq mod-time (nth 5 (file-attributes article)))
 	  (if (and (nnml-deletable-article-p group number)
 		   (setq is-old 
@@ -299,9 +286,7 @@
   (let ((buf (get-buffer-create " *nnml move*"))
 	result)
     (nnml-possibly-change-directory group server)
-    (unless nnml-article-file-alist
-      (setq nnml-article-file-alist
-	    (nnheader-article-to-file-alist nnml-current-directory)))
+    (nnml-update-file-alist)
     (and 
      (nnml-deletable-article-p group article)
      (nnml-request-article article group server)
@@ -315,8 +300,7 @@
        (nnml-possibly-change-directory group server)
        (condition-case ()
 	   (funcall nnmail-delete-file-function
-		    (concat nnml-current-directory 
-			    (int-to-string article)))
+		    (nnml-article-to-file  article))
 	 (file-error nil))
        (nnml-nov-delete-article group article)
        (when last
@@ -357,8 +341,9 @@
 		(progn
 		  (nnmail-write-region 
 		   (point-min) (point-max)
-		   (concat nnml-current-directory
-			   (int-to-string article))
+		   (or (nnml-article-to-file article)
+		       (concat nnml-current-directory
+			       (int-to-string article)))
 		   nil (if (nnheader-be-verbose 5) nil 'nomesg))
 		  t)
 	      (error nil))
@@ -466,18 +451,15 @@
 ;;; Internal functions.
 
 (defun nnml-article-to-file (article)
-  (unless nnml-article-file-alist
-    (setq nnml-article-file-alist
-	  (nnheader-article-to-file-alist nnml-current-directory)))
+  (nnml-update-file-alist)
   (let (file)
     (when (setq file (cdr (assq article nnml-article-file-alist)))
       (concat nnml-current-directory file))))
 
 (defun nnml-deletable-article-p (group article)
   "Say whether ARTICLE in GROUP can be deleted."
-  (let (file path)
-    (when (setq file (cdr (assq article nnml-article-file-alist)))
-      (setq path (concat nnml-current-directory file))
+  (let (path)
+    (when (setq path (nnml-article-to-file article))
       (when (file-writable-p path)
 	(or (not nnmail-keep-last-article)
 	    (not (eq (cdr (nth 1 (assoc group nnml-group-alist)))
@@ -790,6 +772,11 @@
 		(setf (car active) num)))))))
     t))
 
+(defun nnml-update-file-alist ()
+  (unless nnml-article-file-alist
+    (setq nnml-article-file-alist
+	  (nnheader-article-to-file-alist nnml-current-directory))))
+
 (provide 'nnml)
 
 ;;; nnml.el ends here