Import No Gnus v0.3.
[elisp/gnus.git-] / lisp / nnspool.el
index cafc796..004b875 100644 (file)
@@ -44,7 +44,10 @@ This is most commonly `inews' or `injnews'.")
   "Switches for nnspool-request-post to pass to `inews' for posting news.
 If you are using Cnews, you probably should set this variable to nil.")
 
-(defvoo nnspool-spool-directory (file-name-as-directory news-path)
+(defvoo nnspool-spool-directory
+    (file-name-as-directory (if (boundp 'news-directory)
+                               (symbol-value 'news-directory)
+                             news-path))
   "Local news spool directory.")
 
 (defvoo nnspool-nov-directory (concat nnspool-spool-directory "over.view/")
@@ -248,8 +251,7 @@ there.")
        (if dir
            (nnheader-insert
             "211 %d %d %d %s\n" (length dir) (car dir)
-            (progn (while (cdr dir) (setq dir (cdr dir))) (car dir))
-            group)
+            (car (last dir)) group)
          (nnheader-report 'nnspool "Empty group %s" group)
          (nnheader-insert "211 0 0 0 %s\n" group))))))
 
@@ -308,9 +310,8 @@ there.")
                            groups)
                      (zerop (forward-line -1))))
          (erase-buffer)
-         (while groups
-           (insert (car groups) " 0 0 y\n")
-           (setq groups (cdr groups))))
+         (dolist (group groups)
+           (insert group " 0 0 y\n")))
        t)
     nil))
 
@@ -397,8 +398,7 @@ there.")
                                (<= last (car arts)))
                      (pop arts))
                    ;; The articles in `arts' are missing from the buffer.
-                   (while arts
-                     (nnspool-insert-nov-head (pop arts)))
+                   (mapc 'nnspool-insert-nov-head arts)
                    t))))))))))
 
 (defun nnspool-insert-nov-head (article)
@@ -418,8 +418,7 @@ there.")
 
 (defun nnspool-sift-nov-with-sed (articles file)
   (let ((first (car articles))
-       (last (progn (while (cdr articles) (setq articles (cdr articles)))
-                    (car articles))))
+       (last (car (last articles))))
     (call-process "awk" nil t nil
                  (format "BEGIN {firstmsg=%d; lastmsg=%d;}\n $1 >= firstmsg && $1 <= lastmsg {print;}"
                          (1- first) (1+ last))
@@ -428,16 +427,12 @@ there.")
 ;; Fixed by fdc@cliwe.ping.de (Frank D. Cringle).
 ;; Find out what group an article identified by a Message-ID is in.
 (defun nnspool-find-id (id)
-  (save-excursion
-    (set-buffer (get-buffer-create " *nnspool work*"))
-    (erase-buffer)
+  (with-temp-buffer
     (ignore-errors
       (call-process "grep" nil t nil (regexp-quote id) nnspool-history-file))
     (goto-char (point-min))
-    (prog1
-       (when (looking-at "<[^>]+>[ \t]+[-0-9~]+[ \t]+\\([^ /\t\n]+\\)/\\([0-9]+\\)[ \t\n]")
-         (cons (match-string 1) (string-to-int (match-string 2))))
-      (kill-buffer (current-buffer)))))
+    (when (looking-at "<[^>]+>[ \t]+[-0-9~]+[ \t]+\\([^ /\t\n]+\\)/\\([0-9]+\\)[ \t\n]")
+      (cons (match-string 1) (string-to-int (match-string 2))))))
 
 (defun nnspool-find-file (file)
   "Insert FILE in server buffer safely."
@@ -464,4 +459,5 @@ there.")
 
 (provide 'nnspool)
 
+;;; arch-tag: bdac8d27-2934-4eee-bad0-49e6b90c0d05
 ;;; nnspool.el ends here