This commit was generated by cvs2svn to compensate for changes in r6137,
[elisp/gnus.git-] / lisp / gnus-agent.el
index aaa700b..d37bd7b 100644 (file)
@@ -1,4 +1,4 @@
-;;; gnus-agent.el --- unplugged support for Gnus
+;;; gnus-agent.el --- unplugged support for Semi-gnus
 ;; Copyright (C) 1997,98 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
@@ -92,7 +92,7 @@ If nil, only read articles will be expired."
 (defvar gnus-agent-spam-hashtb nil)
 (defvar gnus-agent-file-name nil)
 (defvar gnus-agent-send-mail-function nil)
-(defvar gnus-agent-article-file-coding-system 'no-conversion)
+(defvar gnus-agent-file-coding-system 'no-conversion)
 
 ;; Dynamic variables
 (defvar gnus-headers)
@@ -517,8 +517,8 @@ the actual number of articles toggled is returned."
     (let* ((gnus-command-method method)
           (file (gnus-agent-lib-file "active")))
       (gnus-make-directory (file-name-directory file))
-      (let ((coding-system-for-write gnus-agent-article-file-coding-system))
-       (write-region (point-min) (point-max) file nil 'silent))
+      (write-region-as-coding-system
+       gnus-agent-file-coding-system (point-min) (point-max) file nil 'silent)
       (when (file-exists-p (gnus-agent-lib-file "groups"))
        (delete-file (gnus-agent-lib-file "groups"))))))
 
@@ -526,9 +526,10 @@ the actual number of articles toggled is returned."
   (let* ((gnus-command-method method)
         (file (gnus-agent-lib-file "groups")))
     (gnus-make-directory (file-name-directory file))
-    (write-region (point-min) (point-max) file nil 'silent))
+    (write-region-as-coding-system
+     gnus-agent-file-coding-system (point-min) (point-max) file nil 'silent)
     (when (file-exists-p (gnus-agent-lib-file "active"))
-      (delete-file (gnus-agent-lib-file "active"))))
+      (delete-file (gnus-agent-lib-file "active")))))
 
 (defun gnus-agent-save-group-info (method group active)
   (when (gnus-agent-method-p method)
@@ -547,7 +548,7 @@ the actual number of articles toggled is returned."
                     (concat "^" (regexp-quote group) " ") nil t)
                (gnus-delete-line))
              (insert group " " (number-to-string (cdr active)) " "
-                     (number-to-string (car active)) "\n"))
+                     (number-to-string (car active)) " y\n"))
          (when (re-search-forward (concat (regexp-quote group) " ") nil t)
            (gnus-delete-line))
          (insert-buffer-substring nntp-server-buffer))))))
@@ -597,8 +598,9 @@ the actual number of articles toggled is returned."
   (save-excursion
     (set-buffer gnus-agent-current-history)
     (gnus-make-directory (file-name-directory gnus-agent-file-name))
-    (write-region (1+ (point-min)) (point-max)
-                 gnus-agent-file-name nil 'silent)))
+    (write-region-as-coding-system
+     gnus-agent-file-coding-system
+     (1+ (point-min)) (point-max) gnus-agent-file-name nil 'silent)))
 
 (defun gnus-agent-close-history ()
   (when (gnus-buffer-live-p gnus-agent-current-history)
@@ -644,7 +646,7 @@ the actual number of articles toggled is returned."
     ;; Prune off articles that we have already fetched.
     (while (and articles
                (cdr (assq (car articles) gnus-agent-article-alist)))
-     (pop articles))
+      (pop articles))
     (let ((arts articles))
       (while (cdr arts)
        (if (cdr (assq (cadr arts) gnus-agent-article-alist))
@@ -695,11 +697,10 @@ the actual number of articles toggled is returned."
            (if (not (re-search-forward "^Message-ID: *<\\([^>\n]+\\)>" nil t))
                (setq id "No-Message-ID-in-article")
              (setq id (buffer-substring (match-beginning 1) (match-end 1))))
-           (let ((coding-system-for-write
-                  gnus-agent-article-file-coding-system))
-             (write-region (point-min) (point-max)
-                           (concat dir (number-to-string (caar pos)))
-                           nil 'silent))
+           (write-region-as-coding-system
+            gnus-agent-file-coding-system
+            (point-min) (point-max)
+            (concat dir (number-to-string (caar pos))) nil 'silent)
            (when (setq elem (assq (caar pos) gnus-agent-article-alist))
              (setcdr elem t))
            (gnus-agent-enter-history
@@ -739,10 +740,12 @@ the actual number of articles toggled is returned."
   (save-excursion
     (while gnus-agent-buffer-alist
       (set-buffer (cdar gnus-agent-buffer-alist))
-      (write-region (point-min) (point-max)
-                   (gnus-agent-article-name ".overview"
-                                            (caar gnus-agent-buffer-alist))
-                    nil 'silent)
+      (write-region-as-coding-system
+       gnus-agent-file-coding-system
+       (point-min) (point-max)
+       (gnus-agent-article-name ".overview"
+                               (caar gnus-agent-buffer-alist))
+       nil 'silent)
       (pop gnus-agent-buffer-alist))
     (while gnus-agent-group-alist
       (nnheader-temp-write (caar gnus-agent-group-alist)
@@ -773,7 +776,9 @@ the actual number of articles toggled is returned."
            (gnus-agent-braid-nov group articles file))
          (gnus-make-directory (nnheader-translate-file-chars
                                (file-name-directory file)))
-         (write-region (point-min) (point-max) file nil 'silent)
+         (write-region-as-coding-system
+          gnus-agent-file-coding-system
+          (point-min) (point-max) file nil 'silent)
          (gnus-agent-save-alist group articles nil)
          (gnus-agent-enter-history
           "last-header-fetched-for-session"
@@ -1305,14 +1310,14 @@ The following commands are available:
                                  (cdr (assq 'dormant
                                             (gnus-info-marks info)))))
                   nov-file (gnus-agent-article-name ".overview" group))
-            (gnus-agent-load-alist group)
+            (gnus-agent-load-alist group)
             (gnus-message 5 "Expiring articles in %s" group)
             (set-buffer overview)
             (erase-buffer)
             (when (file-exists-p nov-file)
               (nnheader-insert-file-contents nov-file))
             (goto-char (point-min))
-            (setq article 0)
+            (setq article 0)
             (while (setq elem (pop articles))
               (setq article (car elem))
               (when (or (null low)
@@ -1343,7 +1348,9 @@ The following commands are available:
                 ;; Schedule the history line for nuking.
                 (push (cdr elem) histories)))
             (gnus-make-directory (file-name-directory nov-file))
-            (write-region (point-min) (point-max) nov-file nil 'silent)
+            (write-region-as-coding-system
+             gnus-agent-file-coding-system
+             (point-min) (point-max) nov-file nil 'silent)
             ;; Delete the unwanted entries in the alist.
             (setq gnus-agent-article-alist
                   (sort gnus-agent-article-alist 'car-less-than-car))
@@ -1365,10 +1372,9 @@ The following commands are available:
                   (setq prev alist
                         alist (cdr alist))))
               (setq gnus-agent-article-alist (cdr first))
-              (gnus-agent-save-alist group)
-               ;; Mark all articles up to the first article
-              ;; in `gnus-article-alist' as read.
-              (when (caar gnus-agent-article-alist)
+              ;;; Mark all articles up to the first article
+              ;;; in `gnus-article-alist' as read.
+              (when (and info (caar gnus-agent-article-alist))
                 (setcar (nthcdr 2 info)
                         (gnus-range-add
                          (nth 2 info)
@@ -1376,12 +1382,14 @@ The following commands are available:
               ;; Maybe everything has been expired from `gnus-article-alist'
               ;; and so the above marking as read could not be conducted,
               ;; or there are expired article within the range of the alist.
-              (when (or (not (caar gnus-agent-article-alist))
-                        (> (car expired) (caar gnus-agent-article-alist)))  
-              (setcar (nthcdr 2 info)
-                      (gnus-add-to-range
-                       (nth 2 info)
-                       (nreverse expired))))
+              (when (and (car expired)
+                         (or (not (caar gnus-agent-article-alist))
+                             (> (car expired)
+                                (caar gnus-agent-article-alist))) )
+                (setcar (nthcdr 2 info)
+                        (gnus-add-to-range
+                         (nth 2 info)
+                         (nreverse expired))))
               (gnus-dribble-enter
                (concat "(gnus-group-set-info '"
                        (gnus-prin1-to-string info)