+Thu Nov 19 04:37:45 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+       * gnus.el: Gnus v5.6.45 is released.
+
+1998-11-08 00:42:58  Andrew Innes  <andrewi@harlequin.co.uk>
+
+       * nntp.el (nntp-request-group): Allow for error codes.
+
+1998-10-12  Andrew Innes  <andrewi@harlequin.co.uk>
+
+       * gnus/nntp.el (nntp-possibly-change-group): Allow for unexpected
+       responses to GROUP command, since this may be called from a timer
+       with quit inhibited.
+
+1998-10-11 01:16:14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-agent.el (gnus-agent-expire): Check (car expired).
+
+1998-10-02 04:49:27  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-cache.el (gnus-cache-generate-active): Ignore directories
+       that start with a dot.
+
+1998-10-01 07:42:40  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * nnmail.el (nnmail-article-group): Expand properly.
+
+       * gnus-group.el (gnus-group-apropos): Also do non-active groups. 
+
+1998-09-29 13:12:31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-async.el (gnus-make-async-article-function): Don't use
+       push. 
+
 Thu Sep 24 19:29:43 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus.el: Gnus v5.6.44 is released.
 
               ;; 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)
 
        (when arg
         (gnus-async-set-buffer)
         (gnus-async-with-semaphore
-         (push (list ',(intern (format "%s-%d" group article)
-                               gnus-asynch-obarray)
-                     ,mark (set-marker (make-marker) (point-max))
-                     ,group ,article)
-               gnus-async-article-alist)))
+         (setq
+          gnus-async-article-alist
+          (cons (list ',(intern (format "%s-%d" group article)
+                                gnus-asynch-obarray)
+                      ,mark (set-marker (make-marker) (point-max))
+                      ,group ,article)
+                gnus-async-article-alist))))
        (if (not (gnus-buffer-live-p ,summary))
           (gnus-async-with-semaphore
            (setq gnus-async-fetch-list nil))
 
     (when top
       (gnus-message 5 "Generating the cache active file...")
       (setq gnus-cache-active-hashtb (gnus-make-hashtable 123)))
+    (when (string-match "^\\(nn[^_]+\\)_" group)
+      (setq group (replace-match "\\1:" t t group)))
     ;; Separate articles from all other files and directories.
     (while files
       (if (string-match "^[0-9]+$" (file-name-nondirectory (car files)))
     ;; Go through all the other files.
     (while alphs
       (when (and (file-directory-p (car alphs))
-                (not (string-match "^\\.\\.?$"
+                (not (string-match "^\\."
                                    (file-name-nondirectory (car alphs)))))
        ;; We descend directories.
        (gnus-cache-generate-active (car alphs)))
 
       (mapatoms
        (lambda (group)
         (and (string-match regexp (symbol-value group))
-             (gnus-active (symbol-name group))
              (push (symbol-name group) groups)))
        gnus-description-hashtb))
     (if (not groups)
 
 (require 'nnheader)
 (require 'timezone)
 (require 'message)
+(eval-when-compile (require 'rmail))
 
 (eval-and-compile
   (autoload 'nnmail-date-to-time "nnmail")
   (setq filename (expand-file-name filename))
   (setq rmail-default-rmail-file filename)
   (let ((artbuf (current-buffer))
-       (tmpbuf (gnus-get-buffer-create " *Gnus-output*")))
+       (tmpbuf (get-buffer-create " *Gnus-output*")))
     (save-excursion
       (or (get-file-buffer filename)
          (file-exists-p filename)
   "Append the current article to a mail file named FILENAME."
   (setq filename (expand-file-name filename))
   (let ((artbuf (current-buffer))
-       (tmpbuf (gnus-get-buffer-create " *Gnus-output*")))
+       (tmpbuf (get-buffer-create " *Gnus-output*")))
     (save-excursion
       ;; Create the file, if it doesn't exist.
       (when (and (not (get-file-buffer filename))
 
 (defconst gnus-product-name "Semi-gnus"
   "Product name of this version of gnus.")
 
-(defconst gnus-version-number "6.8.19"
+(defconst gnus-version-number "6.8.20"
   "Version number for this version of gnus.")
 
 (defconst gnus-version
-  (format "%s %s (based on Gnus 5.6.44; for SEMI 1.8, FLIM 1.8/1.9)"
+  (format "%s %s (based on Gnus 5.6.45; for SEMI 1.8, FLIM 1.8/1.9)"
           gnus-product-name gnus-version-number)
   "Version string for this version of gnus.")
 
       timezone-make-sortable-date timezone-make-time-string)
      ("rmailout" rmail-output)
      ("rmail" rmail-insert-rmail-file-header rmail-count-new-messages
-      rmail-show-message)
+      rmail-show-message rmail-summary-exists
+      rmail-select-summary rmail-update-summary)
      ("gnus-audio" :interactive t gnus-audio-play)
      ("gnus-xmas" gnus-xmas-splash)
      ("gnus-soup" :interactive t
 
 The default is `abbrev', which uses mailabbrev.  nil switches
 mail aliases off.")
 
-(defcustom message-autosave-directory
+(defcustom message-auto-save-directory
   (nnheader-concat message-directory "drafts/")
-  "*Directory where Message autosaves buffers if Gnus isn't running.
-If nil, Message won't autosave."
+  "*Directory where Message auto-saves buffers if Gnus isn't running.
+If nil, Message won't auto-save."
   :group 'message-buffers
   :type 'directory)
 
        ;; (mail-hist-put-headers-into-history))
        (run-hooks 'message-sent-hook)
        (message "Sending...done")
-       ;; Mark the buffer as unmodified and delete autosave.
+       ;; Mark the buffer as unmodified and delete auto-save.
        (set-buffer-modified-p nil)
        (delete-auto-save-file-if-necessary t)
        (message-disassociate-draft)
 
 (defun message-set-auto-save-file-name ()
   "Associate the message buffer with a file in the drafts directory."
-  (when message-autosave-directory
+  (when message-auto-save-directory
     (if (gnus-alive-p)
        (setq message-draft-article
              (nndraft-request-associate-buffer "drafts"))
       (setq buffer-file-name (expand-file-name "*message*"
-                                              message-autosave-directory))
+                                              message-auto-save-directory))
       (setq buffer-auto-save-file-name (make-auto-save-file-name)))
     (clear-visited-file-modtime)))
 
 
 
 ;;; Code:
 
+(eval-when-compile (require 'cl))
 (require 'nnoo)
 (require 'message)
 
 
                       ;; group twice.
                       (not (assoc (car method) group-art)))
                  (push (cons (if regrepp
-                                 (replace-match
-                                  (car method) nil nil (car method))
+                                 (nnmail-expand-newtext (car method))
                                (car method))
                              (funcall func (car method)))
                        group-art))
 
 
 (deffoo nntp-request-group (group &optional server dont-check)
   (nntp-possibly-change-group nil server)
-  (when (nntp-send-command "^21.*\n" "GROUP" group)
+  (when (nntp-send-command "^[245].*\n" "GROUP" group)
     (let ((entry (nntp-find-connection-entry nntp-server-buffer)))
       (setcar (cddr entry) group))))
 
          (set-buffer (process-buffer (car entry)))
          (erase-buffer)
          (nntp-send-string (car entry) (concat "GROUP " group))
-         (nntp-wait-for-string "^2.*\n")
+         ;; allow for unexpected responses, since this can be called
+         ;; from a timer with quit inhibited
+         (nntp-wait-for-string "^[245].*\n")
          (setcar (cddr entry) group)
          (erase-buffer))))))
 
 
 ;;; pop3.el --- Post Office Protocol (RFC 1460) interface
 
-;; Copyright (C) 1996,97,98 Free Software Foundation, Inc.
+;; Copyright (C) 1996,1997,1998 Free Software Foundation, Inc.
 
 ;; Author: Richard L. Pieri <ratinox@peorth.gweep.net>
 ;; Keywords: mail, pop3
-;; Version: 1.3l+
+;; Version: 1.3m+
 
 ;; This file is part of GNU Emacs.
 
 (require 'mail-utils)
 (provide 'pop3)
 
-(defconst pop3-version "1.3l+")
+(defconst pop3-version "1.3m+")
 
 (defvar pop3-maildrop (or (user-login-name) (getenv "LOGNAME") (getenv "USER") nil)
   "*POP3 maildrop.")
   (let ((process-buffer
         (get-buffer-create (format "trace of POP session to %s" mailhost)))
        (process)
-       (coding-system-for-read 'binary))
+       (coding-system-for-read 'binary)   ;; because 0000n0000 S000l 0a0
+       (coding-system-for-write 'binary)  ;; is st00pid
+       )
     (save-excursion
       (set-buffer process-buffer)
       (erase-buffer)