* gnus-fun.el (gnus-convert-gray-x-face-to-xpm): Improved to speed
[gnus] / lisp / nnagent.el
index 3d7ac9a..a65bbfd 100644 (file)
@@ -1,6 +1,6 @@
 ;;; nnagent.el --- offline backend for Gnus
 
-;; Copyright (C) 1997, 1998, 1999, 2000, 2001
+;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
 ;;        Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 
 (deffoo nnagent-retrieve-headers (articles &optional group server fetch-old)
   (let ((file (gnus-agent-article-name ".overview" group))
-       (arts articles) n)
+       arts n)
     (save-excursion
+      (gnus-agent-load-alist group)
+      (setq arts (gnus-sorted-difference 
+                 articles (mapcar 'car gnus-agent-article-alist)))
       (set-buffer nntp-server-buffer)
       (erase-buffer)
-      (nnheader-insert-file-contents file)
-      (goto-char (point-min)) 
-      (while (and arts (not (eobp)))
-       (cond 
-        ((looking-at "[0-9]")
+      (nnheader-insert-nov-file file (car articles))
+      (goto-char (point-min))
+      (gnus-parse-without-error
+       (while (and arts (not (eobp)))
          (setq n (read (current-buffer)))
-         (if (> n (car arts))
-             (beginning-of-line))
+         (when (> n (car arts))
+           (beginning-of-line))
          (while (and arts (> n (car arts)))
            (insert (format 
                     "%d\t[Undownloaded article %d]\tGnus Agent\t\t\t\n"
                     (car arts) (car arts)))
            (pop arts))
-         (if (= n (car arts))
-           (pop arts))))
-       (forward-line 1))
-      (while (and arts)
+         (when (and arts (= n (car arts)))
+           (pop arts))
+         (forward-line 1)))
+      (while arts
        (insert (format
                 "%d\t[Undownloaded article %d]\tGnus Agent\t\t\t\n"
                 (car arts) (car arts)))
        t)
       'nov)))
 
+(deffoo nnagent-request-expire-articles (articles group &optional server force)
+  articles)
+
 (deffoo nnagent-request-group (group &optional server dont-check)
   (nnoo-parent-function 'nnagent 'nnml-request-group
                        (list group (nnagent-server server) dont-check)))
   (nnoo-parent-function 'nnagent 'nnml-request-delete-group
                        (list group force (nnagent-server server))))
 
-(deffoo nnagent-request-expire-articles (articles group &optional server force)
-  (nnoo-parent-function 'nnagent 'nnml-request-expire-articles
-                       (list articles group (nnagent-server server) force)))
-
 (deffoo nnagent-request-list (&optional server)
   (nnoo-parent-function 'nnagent 'nnml-request-list
                        (list (nnagent-server server))))