User: viteno  
  Date: 05/12/19 14:35:36
  Modified:    packages/xemacs-packages/gnus/texi ChangeLog.upstream
                        emacs-mime.texi gnus.texi message.texi
Log:
Commit Steve Young's sync to upstream.
Revision  Changes    Path
1.96      +5 -0      XEmacs/packages/xemacs-packages/gnus/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/ChangeLog,v
retrieving revision 1.95
retrieving revision 1.96
diff -u -p -r1.95 -r1.96
--- ChangeLog	2005/11/15 06:35:47	1.95
+++ ChangeLog	2005/12/19 13:35:21	1.96
@@ -1,3 +1,8 @@
+2005-12-19  Steve Youngs  <steve(a)sxemacs.org>
+
+	* Sync with upstream stable branch.
+	Please see the ChangeLog.upstream files for details.
+
 2005-11-15  Norbert Koch  <viteno(a)xemacs.org>
 
 	* Makefile (VERSION): XEmacs package 1.87 released.
1.8       +210 -0    XEmacs/packages/xemacs-packages/gnus/lisp/ChangeLog.upstream
Index: ChangeLog.upstream
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/ChangeLog.upstream,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -p -r1.7 -r1.8
--- ChangeLog.upstream	2005/11/15 03:45:41	1.7
+++ ChangeLog.upstream	2005/12/19 13:35:24	1.8
@@ -1,3 +1,172 @@
+2005-12-18  Lars Magne Ingebrigtsen  <larsi(a)gnus.org>
+
+	* dns.el (query-dns): Make sure we check the buffer size before
+	removing tcp headers.
+
+2005-12-16  Katsumi Yamaoka  <yamaoka(a)jpl.org>
+
+	* gnus-art.el (gnus-signature-separator): Fix custom type.
+
+	* mm-decode.el (mm-inlined-types): Fix custom type.
+	(mm-keep-viewer-alive-types): Ditto.
+	(mm-automatic-display): Ditto.
+	(mm-attachment-override-types): Ditto.
+	(mm-inline-override-types): Ditto.
+	(mm-automatic-external-display): Ditto.
+
+2005-12-12  Katsumi Yamaoka  <yamaoka(a)jpl.org>
+
+	* gnus-art.el (gnus-buttonized-mime-types): Mention addition of
+	multipart/alternative and add xref to mm-discouraged-alternatives
+	in doc string.
+
+	* mm-decode.el (mm-discouraged-alternatives): Add xref to
+	gnus-buttonized-mime-types in doc string.
+
+2005-12-12  Katsumi Yamaoka  <yamaoka(a)jpl.org>
+
+	* rfc2047.el (rfc2047-charset-to-coding-system): Recognize
+	us-ascii as a MIME charset.
+
+	* mm-bodies.el (mm-decode-content-transfer-encoding): Protect
+	against the case where the 2nd arg TYPE is nil.
+
+2005-12-09  Reiner Steib  <Reiner.Steib(a)gmx.de>
+
+	* gnus-start.el (gnus-no-server-1): Mention
+	`gnus-level-default-subscribed' in doc string.
+
+2005-11-26  Dave Love  <fx(a)gnu.org>
+
+	* tls.el (open-tls-stream): Rename arg SERVICE to PORT.
+	(tls-program, tls-success): Provide openssl alternative.
+
+	* starttls.el: Doc fixes.
+	(starttls-open-stream-gnutls, starttls-open-stream): Rename arg
+	SERVICE to PORT.
+
+2005-12-09  Reiner Steib  <Reiner.Steib(a)gmx.de>
+
+	* gnus-start.el (gnus-start-draft-setup): Enforce
+	`gnus-draft-mode' for nndraft:drafts at startup.
+
+	* gnus.el (gnus-splash): Change custom group.
+	(gnus-group-get-parameter, gnus-group-parameter-value): Describe
+	allow-list argument.
+
+	* gnus-agent.el (gnus-agent-article-alist-save-format): Format doc
+	string.
+
+2005-12-09  ARISAWA Akihiro  <ari(a)mbf.ocn.ne.jp>  (tiny change)
+
+	* mm-decode.el (mm-display-external): Add lacked cdr.
+
+2005-12-08  Reiner Steib  <Reiner.Steib(a)gmx.de>
+
+	* mm-decode.el (mm-discouraged-alternatives): Fix custom type.
+	Suggest image/.* in the doc string.
+
+2005-12-07  Katsumi Yamaoka  <yamaoka(a)jpl.org>
+
+	* mm-decode.el (mm-display-external): Use nametemplate (defined in
+	RFC1524) if it is in mailcap or add a suffix according to
+	mailcap-mime-extensions when generating a temp filename; postpone
+	deleting a temp file for 2 seconds for some wrappers, shell
+	scripts, and so on, which might exit right after having started a
+	viewer command as a background job.
+
+2005-12-06  Reiner Steib  <Reiner.Steib(a)gmx.de>
+
+	* gnus-art.el (gnus-default-article-saver): Add user-defined
+	`function' to custom type.
+
+2005-12-02  ARISAWA Akihiro  <ari(a)mbf.ocn.ne.jp>  (tiny change)
+
+	* mm-view.el (mm-inline-text-html-render-with-w3m): Fix misplaced
+	parens.
+
+2005-12-01  Katsumi Yamaoka  <yamaoka(a)jpl.org>
+
+	* gnus-xmas.el (gnus-use-toolbar): Revert.
+	(gnus-xmas-setup-toolbar): Use global default-toolbar if
+	gnus-use-toolbar is default.
+
+	* messagexmas.el (message-use-toolbar): Revert.
+	(message-setup-toolbar): Use global default-toolbar if
+	message-use-toolbar is default.
+
+2005-11-30  Katsumi Yamaoka  <yamaoka(a)jpl.org>
+
+	* gnus-xmas.el (gnus-use-toolbar): Determine the default value
+	according to default-toolbar-visible-p.
+
+	* messagexmas.el (message-use-toolbar): Ditto.
+
+2005-11-29  Reiner Steib  <Reiner.Steib(a)gmx.de>
+
+	* gnus-cache.el (gnus-cache-rename-group): Wrap doc strings and
+	long lines.
+	(gnus-cache-delete-group): Wrap doc strings.
+
+	* gnus-agent.el (gnus-agent-rename-group)
+	(gnus-agent-delete-group): Wrap doc strings.
+
+2005-11-24  Pascal Rigaux  <pixel(a)mandriva.com>  (tiny change)
+
+	* rfc2231.el (rfc2231-parse-string): Support non-ascii chars.
+
+2005-11-22  Katsumi Yamaoka  <yamaoka(a)jpl.org>
+
+	* nnmail.el (nnmail-fancy-expiry-target): Use current-time instead
+	of current-time-string.
+
+2005-11-20  Stefan Schimanski  <schimmi(a)debian.org>  (tiny change)
+
+	* nnmail.el (nnmail-fancy-expiry-target): Protect against invalid
+	date header.
+
+2005-11-16  Boris Samorodov <bsam(a)ipt.ru>  (tiny patch)
+
+	* imap.el (imap-kerberos4-open): Ignore SSL stuff.
+
+2005-11-14  Kevin Greiner  <kevin.greiner(a)compsol.cc>
+
+	* gnus-agent.el (gnus-agent-article-alist-save-format): Changed
+	internal variable to a custom variable.  Changed default value
+	from compressed(2) to uncompressed(1).
+	(gnus-agent-read-agentview): Reversed revision 7.8 to restore
+	support for uncompressed agentview files.  Taken together, reading
+	the agentview file should now be 6-7 times faster.
+	(gnus-agent-long-article,
+	gnus-agent-short-article, gnus-agent-score): Renamed category
+	keywords to match gnus-cus.
+	(gnus-agent-summary-fetch-series): Modified to protect against
+	gnus-agent-summary-fetch-group clearing processable flags.
+	(gnus-agent-synchronize-group-flags): Update live group buffer as
+	synchronization may occur due to the user toggling the plugged
+	status.
+	(gnus-agent-braid-nov): Now tests new nov entries
+	for duplicates which are removed.  The invalid sort check then
+	triggers a rescan after the sort as sorting may have moved
+	duplicate entries such that they can be cheaply detected.
+	(gnus-agent-read-local): Trivial fix to format of
+	error message to display actual error condition.
+	(gnus-agent-save-local): Avoid saving symbols that are bound to
+	nil as they simply result in a warning message in
+	gnus-agent-read-local.
+	(gnus-agent-fetch-group-1): Clear downloadable flag when article
+	successfully downloaded.
+	(gnus-agent-regenerate-group): Use
+	gnus-agent-synchronize-group-flags to reset read status in both
+	gnus and server.
+
+	* nntp.el (nntp-end-of-line): Doc fix.
+	(nntp-authinfo-rejected): New error condition.
+	(nntp-wait-for): Use new error condition to signal authentication
+	error.
+	(nntp-retrieve-data): Rethrow new error condition to break out of
+	recursive call to nntp-send-authinfo.
+	
 2005-11-13  Katsumi Yamaoka  <yamaoka(a)jpl.org>
 
 	* gnus-start.el (gnus-dribble-read-file): Use make-local-variable
@@ -126,6 +295,47 @@
 	(gnus-xmas-setup-toolbar): New function.
 	(gnus-xmas-setup-group-toolbar): Use it.
 	(gnus-xmas-setup-summary-toolbar): Use it.
+
+2005-11-30  Stefan Monnier  <monnier(a)iro.umontreal.ca>
+
+	* gnus-delay.el (gnus-delay-group): Don't autoload.
+	It's useless and could trigger a bug in cus-dep.el causing ldefs-boot
+	to be re-loaded when customizing the `gnus-delay' group.
+
+2005-11-19  Chong Yidong  <cyd(a)stupidchicken.com>
+
+	* message.el: Revert last changes.
+	(message-insert-citation-line): Use newlines.
+
+2005-11-17  Chong Yidong  <cyd(a)stupidchicken.com>
+
+	* message.el (message-courtesy-message)
+	(message-mark-insert-begin, message-mark-insert-end)
+	(message-elide-ellipsis, message-cancel-message)
+	(message-add-header, message-change-subject)
+	(message-cross-post-followup-to-header)
+	(message-cross-post-insert-note, message-reduce-to-to-cc)
+	(message-widen-reply, message-delete-not-region)
+	(message-kill-to-signature, message-insert-signature)
+	(message-insert-importance-high, message-insert-importance-low)
+	(message-insert-or-toggle-importance)
+	(message-insert-disposition-notification-to)
+	(message-indent-citation, message-yank-original)
+	(message-cite-original-without-signature, message-cite-original)
+	(message-insert-citation-line, message-position-on-field)
+	(message-fix-before-sending, message-send-mail-partially)
+	(message-send-mail, message-send-mail-with-sendmail)
+	(message-send-mail-with-qmail, message-send-news)
+	(message-check-news-header-syntax, message-generate-headers)
+	(message-insert-courtesy-copy, message-fill-address)
+	(message-fill-header, message-shorten-references)
+	(message-setup-1, message-cancel-news)
+	(message-forward-make-body-plain) (message-forward-make-body-mime)
+	(message-forward-make-body-mml) (message-encode-message-body)
+	(message-forward-make-body-digest-plain)
+	(message-forward-make-body-digest-mime)
+	(message-use-alternative-email-as-from): Insert `hard-newline'
+	instead of ordinary newlines.
 
 2005-11-09  Katsumi Yamaoka  <yamaoka(a)jpl.org>
 
1.9       +82 -42    XEmacs/packages/xemacs-packages/gnus/lisp/gnus-agent.el
Index: gnus-agent.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-agent.el,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -p -r1.8 -r1.9
--- gnus-agent.el	2005/11/15 03:45:43	1.8
+++ gnus-agent.el	2005/12/19 13:35:24	1.9
@@ -213,6 +213,18 @@ unplugged."
   :group 'gnus-agent
   :type 'boolean)
 
+(defcustom gnus-agent-article-alist-save-format 1
+  "Indicates whether to use compression(2), versus no
+compression(1), when writing agentview files.  The compressed
+files do save space but load times are 6-7 times higher.  A group
+must be opened then closed for the agentview to be updated using
+the new format."
+  ;; Wouldn't symbols instead numbers be nicer?  --rsteib
+:version "22.1"
+:group 'gnus-agent
+:type '(radio (const :format "Compressed" 2)
+		(const :format "Uncompressed" 1)))
+
 ;;; Internal variables
 
 (defvar gnus-agent-history-buffers nil)
@@ -357,17 +369,17 @@ manipulated as follows:
 (gnus-agent-cat-defaccessor
  gnus-agent-cat-high-score                 agent-high-score)
 (gnus-agent-cat-defaccessor
- gnus-agent-cat-length-when-long           agent-length-when-long)
+ gnus-agent-cat-length-when-long           agent-long-article)
 (gnus-agent-cat-defaccessor
- gnus-agent-cat-length-when-short          agent-length-when-short)
+ gnus-agent-cat-length-when-short          agent-short-article)
 (gnus-agent-cat-defaccessor
  gnus-agent-cat-low-score                  agent-low-score)
 (gnus-agent-cat-defaccessor
  gnus-agent-cat-predicate                  agent-predicate)
 (gnus-agent-cat-defaccessor
- gnus-agent-cat-score-file                 agent-score-file)
+ gnus-agent-cat-score-file                 agent-score)
 (gnus-agent-cat-defaccessor
- gnus-agent-cat-enable-undownloaded-faces agent-enable-undownloaded-faces)
+ gnus-agent-cat-enable-undownloaded-faces  agent-enable-undownloaded-faces)
 
 
 ;; This form is equivalent to defsetf except that it calls make-symbol
@@ -858,9 +870,11 @@ be a select method."
 
 ;;;###autoload
 (defun gnus-agent-rename-group (old-group new-group)
-  "Rename fully-qualified OLD-GROUP as NEW-GROUP.  Always updates the agent, even
when
-disabled, as the old agent files would corrupt gnus when the agent was
-next enabled. Depends upon the caller to determine whether group renaming is
supported."
+  "Rename fully-qualified OLD-GROUP as NEW-GROUP.
+Always updates the agent, even when disabled, as the old agent
+files would corrupt gnus when the agent was next enabled.
+Depends upon the caller to determine whether group renaming is
+supported."
   (let* ((old-command-method (gnus-find-method-for-group old-group))
 	 (old-path           (directory-file-name
 			      (let (gnus-command-method old-command-method)
@@ -888,9 +902,11 @@ next enabled. Depends upon the caller to
 
 ;;;###autoload
 (defun gnus-agent-delete-group (group)
-  "Delete fully-qualified GROUP.  Always updates the agent, even when
-disabled, as the old agent files would corrupt gnus when the agent was
-next enabled. Depends upon the caller to determine whether group deletion is
supported."
+  "Delete fully-qualified GROUP.
+Always updates the agent, even when disabled, as the old agent
+files would corrupt gnus when the agent was next enabled.
+Depends upon the caller to determine whether group deletion is
+supported."
   (let* ((command-method (gnus-find-method-for-group group))
 	 (path           (directory-file-name
 			  (let (gnus-command-method command-method)
@@ -1134,20 +1150,22 @@ downloadable."
   (when gnus-newsgroup-processable
     (setq gnus-newsgroup-downloadable
           (let* ((dl gnus-newsgroup-downloadable)
-                 (gnus-newsgroup-downloadable
-		  (sort (gnus-copy-sequence gnus-newsgroup-processable) '<))
-                 (fetched-articles (gnus-agent-summary-fetch-group)))
-            ;; The preceeding call to (gnus-agent-summary-fetch-group)
-            ;; updated gnus-newsgroup-downloadable to remove each
-            ;; article successfully fetched.
+		 (processable (sort (gnus-copy-sequence gnus-newsgroup-processable) '<))
+                 (gnus-newsgroup-downloadable processable))
+	    (gnus-agent-summary-fetch-group)
+
+            ;; For each article that I processed that is no longer
+            ;; undownloaded, remove its processable mark.
 
-            ;; For each article that I processed, remove its
-            ;; processable mark IF the article is no longer
-            ;; downloadable (i.e. it's already downloaded)
-            (dolist (article gnus-newsgroup-processable)
-              (unless (memq article gnus-newsgroup-downloadable)
-                (gnus-summary-remove-process-mark article)))
-            (gnus-sorted-ndifference dl fetched-articles)))))
+	    (mapc #'gnus-summary-remove-process-mark 
+		  (gnus-sorted-ndifference gnus-newsgroup-processable gnus-newsgroup-undownloaded))
+
+            ;; The preceeding call to (gnus-agent-summary-fetch-group)
+            ;; updated the temporary gnus-newsgroup-downloadable to
+            ;; remove each article successfully fetched.  Now, I
+            ;; update the real gnus-newsgroup-downloadable to only
+            ;; include undownloaded articles.
+	    (gnus-sorted-ndifference dl (gnus-sorted-ndifference processable
gnus-newsgroup-undownloaded))))))
 
 (defun gnus-agent-summary-fetch-group (&optional all)
   "Fetch the downloadable articles in the group.
@@ -1240,7 +1258,13 @@ This can be added to `gnus-select-articl
 				  'gnus-range-add
 				'gnus-remove-from-range)
 			      (cdr info-marks)
-			      range)))))))))
+			      range))))))))
+
+      ;;Marks can be synchronized at any time by simply toggling from
+      ;;unplugged to plugged.  If that is what is happening right now, make
+      ;;sure that the group buffer is up to date.
+          (when (gnus-buffer-live-p gnus-group-buffer)
+            (gnus-group-update-group group t)))
     nil))
 
 (defun gnus-agent-save-active (method)
@@ -1330,7 +1354,7 @@ downloaded into the agent."
           (when (re-search-forward
                  (concat "^" (regexp-quote group) " ") nil t)
             (save-excursion
-	      (setq oactive-max (read (current-buffer)) ;; max
+              (setq oactive-max (read (current-buffer))	;; max
                     oactive-min (read (current-buffer)))) ;; min
             (gnus-delete-line)))
 	(when active
@@ -1824,7 +1848,7 @@ article numbers will be returned."
 (defsubst gnus-agent-read-article-number ()
   "Reads the article number at point.  Returns nil when a valid article number can
not be read."
 
-  ;; It is unfortunite but the read function quietly overflows
+  ;; It is unfortunate but the read function quietly overflows
   ;; integer.  As a result, I have to use string operations to test
   ;; for overflow BEFORE calling read.
   (when (looking-at "[0-9]+\t")
@@ -1913,6 +1937,7 @@ doesn't exist, to valid the overview buf
 	(goto-char p))
 
       (setq last (or last -134217728))
+      (while (catch 'problems
       (let (sort art)
 	(while (not (eobp))
 	  (setq art (gnus-agent-read-article-number))
@@ -1924,12 +1949,27 @@ doesn't exist, to valid the overview buf
 		 ;; Art num out of order - enable sort
 		 (setq sort t)
 		 (forward-line 1))
+			 ((= art last)
+			  ;; Bad repeat of art number - delete this line
+			  (beginning-of-line)
+			  (delete-region (point) (progn (forward-line 1) (point))))
 		(t
 		 ;; Good art num
 		 (setq last art)
 		 (forward-line 1))))
 	(when sort
-	  (sort-numeric-fields 1 (point-min) (point-max)))))))
+		   ;; something is seriously wrong as we simply shouldn't see out-of-order data.
+		   ;; First, we'll fix the sort.
+		   (sort-numeric-fields 1 (point-min) (point-max))
+
+		   ;; but now we have to consider that we may have duplicate rows...	  
+		   ;; so reset to beginning of file
+		   (goto-char (point-min))
+		   (setq last -134217728)
+	  
+		   ;; and throw a code that restarts this scan
+		   (throw 'problems t))
+		 nil))))))
 
 ;; Keeps the compiler from warning about the free variable in
 ;; gnus-agent-read-agentview.
@@ -1946,11 +1986,6 @@ doesn't exist, to valid the overview buf
            'gnus-agent-file-loading-cache
            'gnus-agent-read-agentview))))
 
-;; Save format may be either 1 or 2.  Two is the new, compressed
-;; format that is still being tested.  Format 1 is uncompressed but
-;; known to be reliable.
-(defconst gnus-agent-article-alist-save-format 2)
-
 (defun gnus-agent-read-agentview (file)
   "Load FILE and do a `read' there."
   (with-temp-buffer
@@ -1964,8 +1999,6 @@ doesn't exist, to valid the overview buf
               changed-version)
 
           (cond
-           ((< version 2)
-            (error "gnus-agent-read-agentview no longer supports version %d.  Stop
gnus, manually evaluate gnus-agent-convert-to-compressed-agentview, then restart
gnus." version))
            ((= version 0)
             (let ((inhibit-quit t)
                   entry)
@@ -1996,7 +2029,8 @@ doesn't exist, to valid the overview buf
                              (setq uncomp (cons (cons article-id state) uncomp)))
                            sequence)))
                alist)
-              (setq alist (sort uncomp 'car-less-than-car)))))
+		(setq alist (sort uncomp 'car-less-than-car)))
+	      (setq changed-version (not (= 2 gnus-agent-article-alist-save-format)))))
           (when changed-version
             (let ((gnus-agent-article-alist alist))
               (gnus-agent-save-alist gnus-agent-read-agentview)))
@@ -2110,7 +2144,7 @@ modified) original contents, they are fi
               ;; NOTE: The '+ 0' ensure that min and max are both numerics.
               (set group (cons (+ 0 min) (+ 0 max))))
           (error
-           (gnus-message 3 "Warning - invalid agent local: %s on line %d: "
+           (gnus-message 3 "Warning - invalid agent local: %s on line %d: %s"
                          file line (error-message-string err))))
         (forward-line 1)
         (setq line (1+ line))))
@@ -2141,13 +2175,14 @@ modified) original contents, they are fi
 				((member (symbol-name symbol) '("+dirty" "+method"))
 				 nil)
 				(t
-				 (prin1 symbol)
 				 (let ((range (symbol-value symbol)))
+				   (when range
+				 (prin1 symbol)
 				   (princ " ")
 				   (princ (car range))
 				   (princ " ")
 				   (princ (cdr range))
-				   (princ "\n")))))
+				     (princ "\n"))))))
 			my-obarray))))))))
 
 (defun gnus-agent-get-local (group &optional gmane method)
@@ -2402,7 +2437,9 @@ modified) original contents, they are fi
                         (dolist (article marked-articles)
                           (gnus-summary-set-agent-mark article t))
                         (dolist (article fetched-articles)
-                          (if gnus-agent-mark-unread-after-downloaded
+                          (when gnus-agent-mark-unread-after-downloaded
+			    (setq gnus-newsgroup-downloadable
+				  (delq article gnus-newsgroup-downloadable))
                               (gnus-summary-mark-article
 			       article gnus-unread-mark))
                           (when (gnus-summary-goto-subject article nil t)
@@ -3191,7 +3228,7 @@ missing NOV entry.  Run gnus-agent-regen
 	       ((setq type
 		      (cond
 		       ((not (integerp fetch-date))
-			'read) ;; never fetched article (may expire
+			 'read)	;; never fetched article (may expire
 		       ;; right now)
 		       ((not (file-exists-p
 			      (concat dir (number-to-string
@@ -3871,8 +3908,9 @@ If REREAD is not nil, downloaded article
                 (gnus-agent-possibly-alter-active group group-active)))))
 
         (when (and reread gnus-agent-article-alist)
-          (gnus-make-ascending-articles-unread
+	(gnus-agent-synchronize-group-flags 
            group
+	 (list (list
            (if (listp reread)
                reread
              (delq nil (mapcar (function (lambda (c)
@@ -3880,7 +3918,9 @@ If REREAD is not nil, downloaded article
                                                   (car c))
                                                  ((cdr c)
                                                   (car c)))))
-                               gnus-agent-article-alist))))
+				    gnus-agent-article-alist)))
+		'del '(read)))
+	 gnus-command-method)
 
           (when (gnus-buffer-live-p gnus-group-buffer)
             (gnus-group-update-group group t)))
1.8       +8 -3      XEmacs/packages/xemacs-packages/gnus/lisp/gnus-art.el
Index: gnus-art.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-art.el,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -p -r1.7 -r1.8
--- gnus-art.el	2005/11/15 03:45:43	1.7
+++ gnus-art.el	2005/12/19 13:35:24	1.8
@@ -225,7 +225,9 @@ only of boring text.  Boring text is con
 This can also be a list of regexps.  In that case, it will be checked
 from head to tail looking for a separator.  Searches will be done from
 the end of the buffer."
-:type '(repeat string)
+:type '(choice :format "%{%t%}: %[Value Menu%]\n%v"
+		 (regexp)
+		 (repeat :tag "List of regexp" regexp))
   :group 'gnus-article-signature)
 
 (defcustom gnus-signature-limit nil
@@ -535,7 +537,8 @@ Gnus provides the following functions:
 		(function-item gnus-summary-save-in-file)
 		(function-item gnus-summary-save-body-in-file)
 		(function-item gnus-summary-save-in-vm)
-		(function-item gnus-summary-write-to-file)))
+		(function-item gnus-summary-write-to-file)
+		(function)))
 
 (defcustom gnus-rmail-save-name 'gnus-plain-save-name
   "A function generating a file name to save articles in Rmail format.
@@ -821,7 +824,9 @@ This variable is only used when `gnus-in
   "List of MIME types that should be given buttons when rendered inline.
 If set, this variable overrides `gnus-unbuttonized-mime-types'.
 To see e.g. security buttons you could set this to
-`(\"multipart/signed\")'.
+`(\"multipart/signed\")'.  You could also add
\"multipart/alternative\" to
+this list to display radio buttons that allow you to choose one of two
+media types those mails include.  See also `mm-discouraged-alternatives'.
 This variable is only used when `gnus-inhibit-mime-unbuttonizing' is nil."
   :version "22.1"
   :group 'gnus-article-mime
1.7       +16 -9     XEmacs/packages/xemacs-packages/gnus/lisp/gnus-cache.el
Index: gnus-cache.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-cache.el,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -p -r1.6 -r1.7
--- gnus-cache.el	2005/11/15 03:45:44	1.6
+++ gnus-cache.el	2005/12/19 13:35:24	1.7
@@ -730,9 +730,11 @@ If GROUP is non-nil, also cater to `gnus
 
 ;;;###autoload
 (defun gnus-cache-rename-group (old-group new-group)
-  "Rename OLD-GROUP as NEW-GROUP.  Always updates the cache, even when
-disabled, as the old cache files would corrupt gnus when the cache was
-next enabled. Depends upon the caller to determine whether group renaming is
supported."
+  "Rename OLD-GROUP as NEW-GROUP.
+Always updates the cache, even when disabled, as the old cache
+files would corrupt Gnus when the cache was next enabled.  It
+depends on the caller to determine whether group renaming is
+supported."
   (let ((old-dir (gnus-cache-file-name old-group ""))
 	(new-dir (gnus-cache-file-name new-group "")))
     (gnus-rename-file old-dir new-dir t))
@@ -740,9 +742,12 @@ next enabled. Depends upon the caller to
   (let ((no-save gnus-cache-active-hashtb))
     (unless gnus-cache-active-hashtb
       (gnus-cache-read-active))
-    (let* ((old-group-hash-value (gnus-gethash old-group gnus-cache-active-hashtb))
-	   (new-group-hash-value (gnus-gethash new-group gnus-cache-active-hashtb))
-	   (delta                (or old-group-hash-value new-group-hash-value)))
+    (let* ((old-group-hash-value
+	    (gnus-gethash old-group gnus-cache-active-hashtb))
+	   (new-group-hash-value
+	    (gnus-gethash new-group gnus-cache-active-hashtb))
+	   (delta
+	    (or old-group-hash-value new-group-hash-value)))
       (gnus-sethash new-group old-group-hash-value gnus-cache-active-hashtb)
       (gnus-sethash old-group nil gnus-cache-active-hashtb)
 
@@ -752,9 +757,11 @@ next enabled. Depends upon the caller to
 
 ;;;###autoload
 (defun gnus-cache-delete-group (group)
-  "Delete GROUP.  Always updates the cache, even when
-disabled, as the old cache files would corrupt gnus when the cache was
-next enabled. Depends upon the caller to determine whether group deletion is
supported."
+  "Delete GROUP from the cache.
+Always updates the cache, even when disabled, as the old cache
+files would corrupt gnus when the cache was next enabled.
+Depends upon the caller to determine whether group deletion is
+supported."
   (let ((dir (gnus-cache-file-name group "")))
     (gnus-delete-directory dir))
 
1.5       +1 -2      XEmacs/packages/xemacs-packages/gnus/lisp/gnus-delay.el
Index: gnus-delay.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-delay.el,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -p -r1.4 -r1.5
--- gnus-delay.el	2005/11/15 03:45:44	1.4
+++ gnus-delay.el	2005/12/19 13:35:24	1.5
@@ -39,7 +39,6 @@
 (require 'gnus-draft)
 (autoload 'parse-time-string "parse-time" nil nil)
 
-;;;###autoload
 (defgroup gnus-delay nil
   "Arrange for sending postings later."
   :version "22.1"
@@ -195,5 +194,5 @@ Checking delayed messages is skipped if 
 ;; coding: iso-8859-1
 ;; End:
 
-;;; arch-tag: fb2ad634-a897-4142-a503-f5991ec2349d
+;; arch-tag: fb2ad634-a897-4142-a503-f5991ec2349d
 ;;; gnus-delay.el ends here
1.8       +11 -6     XEmacs/packages/xemacs-packages/gnus/lisp/gnus-start.el
Index: gnus-start.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-start.el,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -p -r1.7 -r1.8
--- gnus-start.el	2005/11/15 03:45:49	1.7
+++ gnus-start.el	2005/12/19 13:35:25	1.8
@@ -717,11 +717,12 @@ the first newsgroup."
 
 (defun gnus-no-server-1 (&optional arg slave)
   "Read network news.
-If ARG is a positive number, Gnus will use that as the
-startup level.	If ARG is nil, Gnus will be started at level 2.
-If ARG is non-nil and not a positive number, Gnus will
-prompt the user for the name of an NNTP server to use.
-As opposed to `gnus', this command will not connect to the local server."
+If ARG is a positive number, Gnus will use that as the startup
+level.  If ARG is nil, Gnus will be started at level 2
+\(`gnus-level-default-subscribed' minus one).  If ARG is non-nil
+and not a positive number, Gnus will prompt the user for the name
+of an NNTP server to use.  As opposed to \\[gnus], this command
+will not connect to the local server."
   (interactive "P")
   (let ((val (or arg (1- gnus-level-default-subscribed))))
     (gnus val t slave)
@@ -805,8 +806,12 @@ prompt the user for the name of an NNTP 
   "Make sure the draft group exists."
   (gnus-request-create-group "drafts" '(nndraft ""))
   (unless (gnus-gethash "nndraft:drafts" gnus-newsrc-hashtb)
+    (gnus-message 3 "Subscribing drafts group")
     (let ((gnus-level-default-subscribed 1))
-      (gnus-subscribe-group "nndraft:drafts" nil '(nndraft "")))
+      (gnus-subscribe-group "nndraft:drafts" nil '(nndraft
""))))
+  (unless (equal (gnus-group-get-parameter "nndraft:drafts" 'gnus-dummy t)
+		 '((gnus-draft-mode)))
+    (gnus-message 3 "Setting up drafts group")
     (gnus-group-set-parameter
      "nndraft:drafts" 'gnus-dummy '((gnus-draft-mode)))))
 
1.8       +39 -32    XEmacs/packages/xemacs-packages/gnus/lisp/gnus-xmas.el
Index: gnus-xmas.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-xmas.el,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -p -r1.7 -r1.8
--- gnus-xmas.el	2005/11/15 03:45:51	1.7
+++ gnus-xmas.el	2005/12/19 13:35:25	1.8
@@ -681,38 +681,45 @@ the width is used for the toolbar displa
   (when (featurep 'toolbar)
     (if (and gnus-use-toolbar
 	     (message-xmas-setup-toolbar toolbar nil "gnus"))
-	(let* ((bar (or (intern-soft (format "%s-toolbar" gnus-use-toolbar))
-			'default-toolbar))
-	       (bars (delq bar (list 'top-toolbar 'bottom-toolbar
-				     'right-toolbar 'left-toolbar)))
-	       hw)
-	  (while bars
-	    (remove-specifier (symbol-value (pop bars)) (current-buffer)))
-	  (unless (eq bar 'default-toolbar)
-	    (set-specifier default-toolbar nil (current-buffer)))
-	  (set-specifier (symbol-value bar) toolbar (current-buffer))
-	  (when (setq hw (cdr (assq gnus-use-toolbar
-				    '((default . default-toolbar-height)
-				      (top . top-toolbar-height)
-				      (bottom . bottom-toolbar-height)))))
-	    (set-specifier (symbol-value hw) (car gnus-toolbar-thickness)
-			   (current-buffer)))
-	  (when (setq hw (cdr (assq gnus-use-toolbar
-				    '((default . default-toolbar-width)
-				      (right . right-toolbar-width)
-				      (left . left-toolbar-width)))))
-	    (set-specifier (symbol-value hw) (cdr gnus-toolbar-thickness)
-			   (current-buffer))))
-      (set-specifier default-toolbar nil (current-buffer))
-      (remove-specifier top-toolbar (current-buffer))
-      (remove-specifier bottom-toolbar (current-buffer))
-      (remove-specifier right-toolbar (current-buffer))
-      (remove-specifier left-toolbar (current-buffer)))
-    (set-specifier default-toolbar-visible-p t (current-buffer))
-    (set-specifier top-toolbar-visible-p t (current-buffer))
-    (set-specifier bottom-toolbar-visible-p t (current-buffer))
-    (set-specifier right-toolbar-visible-p t (current-buffer))
-    (set-specifier left-toolbar-visible-p t (current-buffer))))
+	(let ((bar (or (intern-soft (format "%s-toolbar" gnus-use-toolbar))
+		       'default-toolbar))
+	      (height (car gnus-toolbar-thickness))
+	      (width (cdr gnus-toolbar-thickness))
+	      (cur (current-buffer))
+	      bars)
+	  (set-specifier (symbol-value bar) toolbar cur)
+	  (set-specifier default-toolbar-height height cur)
+	  (set-specifier default-toolbar-width width cur)
+	  (set-specifier top-toolbar-height height cur)
+	  (set-specifier bottom-toolbar-height height cur)
+	  (set-specifier right-toolbar-width width cur)
+	  (set-specifier left-toolbar-width width cur)
+	  (if (eq bar 'default-toolbar)
+	      (progn
+		(remove-specifier default-toolbar-visible-p cur)
+		(remove-specifier top-toolbar cur)
+		(remove-specifier top-toolbar-visible-p cur)
+		(remove-specifier bottom-toolbar cur)
+		(remove-specifier bottom-toolbar-visible-p cur)
+		(remove-specifier right-toolbar cur)
+		(remove-specifier right-toolbar-visible-p cur)
+		(remove-specifier left-toolbar cur)
+		(remove-specifier left-toolbar-visible-p cur))
+	    (set-specifier (symbol-value (intern (format "%s-visible-p" bar)))
+			   t cur)
+	    (setq bars (delq bar (list 'default-toolbar
+				       'bottom-toolbar 'top-toolbar
+				       'right-toolbar 'left-toolbar)))
+	    (while bars
+	      (set-specifier (symbol-value (intern (format "%s-visible-p"
+							   (pop bars))))
+			     nil cur))))
+      (let ((cur (current-buffer)))
+	(set-specifier default-toolbar-visible-p nil cur)
+	(set-specifier top-toolbar-visible-p nil cur)
+	(set-specifier bottom-toolbar-visible-p nil cur)
+	(set-specifier right-toolbar-visible-p nil cur)
+	(set-specifier left-toolbar-visible-p nil cur)))))
 
 (defun gnus-xmas-setup-group-toolbar ()
   (gnus-xmas-setup-toolbar gnus-group-toolbar))
1.10      +4 -2      XEmacs/packages/xemacs-packages/gnus/lisp/gnus.el
Index: gnus.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus.el,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -p -r1.9 -r1.10
--- gnus.el	2005/11/15 03:45:51	1.9
+++ gnus.el	2005/12/19 13:35:25	1.10
@@ -934,7 +934,7 @@ be set in `.emacs' instead."
     (t
      ()))
   "Face for the splash screen."
-:group 'gnus)
+:group 'gnus-start)
 ;; backward-compatibility alias
 (put 'gnus-splash-face 'face-alias 'gnus-splash)
 
@@ -3820,6 +3820,7 @@ If you call this function inside a loop,
 (defun gnus-group-get-parameter (group &optional symbol allow-list)
   "Return the group parameters for GROUP.
 If SYMBOL, return the value of that symbol in the group parameters.
+If ALLOW-LIST, also allow list as a result.
 Most functions should use `gnus-group-find-parameter', which
 also examines the topic parameters."
   (let ((params (gnus-info-params (gnus-get-info group))))
@@ -3829,7 +3830,8 @@ also examines the topic parameters."
 
 (defun gnus-group-parameter-value (params symbol &optional
 					  allow-list present-p)
-  "Return the value of SYMBOL in group PARAMS."
+  "Return the value of SYMBOL in group PARAMS.
+If ALLOW-LIST, also allow list as a result."
   ;; We only wish to return group parameters (dotted lists) and
   ;; not local variables, which may have the same names.
   ;; But first we handle single elements...
1.7       +7 -0      XEmacs/packages/xemacs-packages/gnus/lisp/imap.el
Index: imap.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/imap.el,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -p -r1.6 -r1.7
--- imap.el	2005/11/15 03:45:52	1.6
+++ imap.el	2005/12/19 13:35:25	1.7
@@ -591,6 +591,13 @@ sure of changing the value of `foo'."
 	    (while (and (memq (process-status process) '(open run))
 			(set-buffer buffer) ;; XXX "blue moon" nntp.el bug
 			(goto-char (point-min))
+			;; Athena IMTEST can output SSL verify errors
+			(or (while (looking-at "^verify error:num=")
+			      (forward-line))
+			    t)
+			(or (while (looking-at "^TLS connection established")
+			      (forward-line))
+			    t)
 			;; cyrus 1.6.x (13? < x <= 22) queries capabilities
 			(or (while (looking-at "^C:")
 			      (forward-line))
1.8       +3 -1      XEmacs/packages/xemacs-packages/gnus/lisp/message.el
Index: message.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/message.el,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -p -r1.7 -r1.8
--- message.el	2005/11/15 03:45:53	1.7
+++ message.el	2005/12/19 13:35:25	1.8
@@ -3317,7 +3317,9 @@ prefix, and don't delete any headers."
 (defun message-insert-citation-line ()
   "Insert a simple citation line."
   (when message-reply-headers
-    (insert (mail-header-from message-reply-headers) " writes:\n\n")))
+    (insert (mail-header-from message-reply-headers) " writes:")
+    (newline)
+    (newline)))
 
 (defun message-position-on-field (header &rest afters)
   (let ((case-fold-search t))
1.5       +39 -32    XEmacs/packages/xemacs-packages/gnus/lisp/messagexmas.el
Index: messagexmas.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/messagexmas.el,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -p -r1.4 -r1.5
--- messagexmas.el	2005/11/15 03:45:53	1.4
+++ messagexmas.el	2005/12/19 13:35:25	1.5
@@ -95,38 +95,45 @@ the width is used for the toolbar displa
   (when (featurep 'toolbar)
     (if (and message-use-toolbar
 	     (message-xmas-setup-toolbar message-toolbar))
-	(let* ((bar (or (intern-soft (format "%s-toolbar" message-use-toolbar))
-			'default-toolbar))
-	       (bars (delq bar (list 'top-toolbar 'bottom-toolbar
-				     'right-toolbar 'left-toolbar)))
-	       hw)
-	  (while bars
-	    (remove-specifier (symbol-value (pop bars)) (current-buffer)))
-	  (unless (eq bar 'default-toolbar)
-	    (set-specifier default-toolbar nil (current-buffer)))
-	  (set-specifier (symbol-value bar) message-toolbar (current-buffer))
-	  (when (setq hw (cdr (assq message-use-toolbar
-				    '((default . default-toolbar-height)
-				      (top . top-toolbar-height)
-				      (bottom . bottom-toolbar-height)))))
-	    (set-specifier (symbol-value hw) (car message-toolbar-thickness)
-			   (current-buffer)))
-	  (when (setq hw (cdr (assq message-use-toolbar
-				    '((default . default-toolbar-width)
-				      (right . right-toolbar-width)
-				      (left . left-toolbar-width)))))
-	    (set-specifier (symbol-value hw) (cdr message-toolbar-thickness)
-			   (current-buffer))))
-      (set-specifier default-toolbar nil (current-buffer))
-      (remove-specifier top-toolbar (current-buffer))
-      (remove-specifier bottom-toolbar (current-buffer))
-      (remove-specifier right-toolbar (current-buffer))
-      (remove-specifier left-toolbar (current-buffer)))
-    (set-specifier default-toolbar-visible-p t (current-buffer))
-    (set-specifier top-toolbar-visible-p t (current-buffer))
-    (set-specifier bottom-toolbar-visible-p t (current-buffer))
-    (set-specifier right-toolbar-visible-p t (current-buffer))
-    (set-specifier left-toolbar-visible-p t (current-buffer))))
+	(let ((bar (or (intern-soft (format "%s-toolbar" message-use-toolbar))
+		       'default-toolbar))
+	      (height (car message-toolbar-thickness))
+	      (width (cdr message-toolbar-thickness))
+	      (cur (current-buffer))
+	      bars)
+	  (set-specifier (symbol-value bar) message-toolbar cur)
+	  (set-specifier default-toolbar-height height cur)
+	  (set-specifier default-toolbar-width width cur)
+	  (set-specifier top-toolbar-height height cur)
+	  (set-specifier bottom-toolbar-height height cur)
+	  (set-specifier right-toolbar-width width cur)
+	  (set-specifier left-toolbar-width width cur)
+	  (if (eq bar 'default-toolbar)
+	      (progn
+		(remove-specifier default-toolbar-visible-p cur)
+		(remove-specifier top-toolbar cur)
+		(remove-specifier top-toolbar-visible-p cur)
+		(remove-specifier bottom-toolbar cur)
+		(remove-specifier bottom-toolbar-visible-p cur)
+		(remove-specifier right-toolbar cur)
+		(remove-specifier right-toolbar-visible-p cur)
+		(remove-specifier left-toolbar cur)
+		(remove-specifier left-toolbar-visible-p cur))
+	    (set-specifier (symbol-value (intern (format "%s-visible-p" bar)))
+			   t cur)
+	    (setq bars (delq bar (list 'default-toolbar
+				       'bottom-toolbar 'top-toolbar
+				       'right-toolbar 'left-toolbar)))
+	    (while bars
+	      (set-specifier (symbol-value (intern (format "%s-visible-p"
+							   (pop bars))))
+			     nil cur))))
+      (let ((cur (current-buffer)))
+	(set-specifier default-toolbar-visible-p nil cur)
+	(set-specifier top-toolbar-visible-p nil cur)
+	(set-specifier bottom-toolbar-visible-p nil cur)
+	(set-specifier right-toolbar-visible-p nil cur)
+	(set-specifier left-toolbar-visible-p nil cur)))))
 
 (defun message-xmas-exchange-point-and-mark ()
   "Exchange point and mark, but allow for XEmacs' optional argument."
1.8       +1 -0      XEmacs/packages/xemacs-packages/gnus/lisp/mm-bodies.el
Index: mm-bodies.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mm-bodies.el,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -p -r1.7 -r1.8
--- mm-bodies.el	2005/11/15 03:45:53	1.7
+++ mm-bodies.el	2005/12/19 13:35:25	1.8
@@ -227,6 +227,7 @@ If TYPE is `text/plain' CRLF->LF transla
 	 (message "Error while decoding: %s" error)
 	 nil))
     (when (and
+	   type
 	   (memq encoding '(base64 x-uuencode x-uue x-binhex x-yenc))
 	   (string-match "\\`text/" type))
       (goto-char (point-min))
1.8       +61 -27    XEmacs/packages/xemacs-packages/gnus/lisp/mm-decode.el
Index: mm-decode.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mm-decode.el,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -p -r1.7 -r1.8
--- mm-decode.el	2005/11/15 03:45:53	1.7
+++ mm-decode.el	2005/12/19 13:35:25	1.8
@@ -283,7 +283,7 @@ before the external MIME handler is invo
   "List of media types that are to be displayed inline.
 See also `mm-inline-media-tests', which says how to display a media
 type inline."
-:type '(repeat string)
+:type '(repeat regexp)
   :group 'mime-display)
 
 (defcustom mm-keep-viewer-alive-types
@@ -292,7 +292,7 @@ type inline."
   "List of media types for which the external viewer will not be killed
 when selecting a different article."
   :version "22.1"
-:type '(repeat string)
+:type '(repeat regexp)
   :group 'mime-display)
 
 (defcustom mm-automatic-display
@@ -304,7 +304,7 @@ when selecting a different article."
     "application/pkcs7-signature" "application/x-pkcs7-mime"
     "application/pkcs7-mime")
   "A list of MIME types to be displayed automatically."
-:type '(repeat string)
+:type '(repeat regexp)
   :group 'mime-display)
 
 (defcustom mm-attachment-override-types '("text/x-vcard"
@@ -313,17 +313,17 @@ when selecting a different article."
 					  "application/pkcs7-signature"
 					  "application/x-pkcs7-signature")
   "Types to have \"attachment\" ignored if they can be displayed
inline."
-:type '(repeat string)
+:type '(repeat regexp)
   :group 'mime-display)
 
 (defcustom mm-inline-override-types nil
   "Types to be treated as attachments even if they can be displayed inline."
-:type '(repeat string)
+:type '(repeat regexp)
   :group 'mime-display)
 
 (defcustom mm-automatic-external-display nil
   "List of MIME type regexps that will be displayed externally automatically."
-:type '(repeat string)
+:type '(repeat regexp)
   :group 'mime-display)
 
 (defcustom mm-discouraged-alternatives nil
@@ -335,8 +335,13 @@ for instance, text/html parts are very u
 somewhat unwanted, then the value of this variable should be set
 to:
 
- (\"text/html\" \"text/richtext\")"
-:type '(repeat string)
+ (\"text/html\" \"text/richtext\")
+
+Adding \"image/.*\" might also be useful.  Spammers use it as the
+prefered part of multipart/alternative messages.  See also
+`gnus-buttonized-mime-types', to which adding \"multipart/alternative\"
+enables you to choose manually one of two types those mails include."
+:type '(repeat regexp) ;; See `mm-preferred-alternative-precedence'.
   :group 'mime-display)
 
 (defcustom mm-tmp-directory
@@ -761,7 +766,19 @@ external if displayed external."
 			  (gnus-map-function mm-file-name-rewrite-functions
 					     (file-name-nondirectory filename))
 			  dir))
-	    (setq file (mm-make-temp-file (expand-file-name "mm." dir))))
+	    (setq file (mm-make-temp-file (expand-file-name "mm." dir)))
+	    (let ((newname
+		   ;; Use nametemplate (defined in RFC1524) if it is
+		   ;; specified in mailcap.
+		   (if (assoc "nametemplate" mime-info)
+		       (format (cdr (assoc "nametemplate" mime-info)) file)
+		     ;; Add a suffix according to `mailcap-mime-extensions'.
+		     (concat file (car (rassoc (mm-handle-media-type handle)
+					       mailcap-mime-extensions))))))
+	      (unless (string-equal file newname)
+		(when (file-exists-p file)
+		  (rename-file file newname))
+		(setq file newname))))
 	  (let ((coding-system-for-write mm-binary-coding-system))
 	    (write-region (point-min) (point-max) file nil 'nomesg))
 	  (message "Viewing with %s" method)
@@ -819,6 +836,9 @@ external if displayed external."
 		   (ignore-errors (kill-buffer buffer))))))
 	    'inline)
 	   (t
+	    ;; Deleting the temp file should be postponed for some wrappers,
+	    ;; shell scripts, and so on, which might exit right after having
+	    ;; started a viewer command as a background job.
 	    (let ((command (mm-mailcap-command
 			    method file (mm-handle-type handle))))
 	      (unwind-protect
@@ -830,24 +850,38 @@ external if displayed external."
 				   shell-command-switch command)
 		    (set-process-sentinel
 		     (get-buffer-process buffer)
-		     `(lambda (process state)
-			(when (eq 'exit (process-status process))
-			  ;; Don't use `ignore-errors'.
-			  (condition-case nil
-			      (delete-file ,file)
-			    (error))
-			  (condition-case nil
-			      (delete-directory ,(file-name-directory file))
-			    (error))
-			  (condition-case nil
-			      (kill-buffer ,buffer)
-			    (error))
-			  (condition-case nil
-			      ,(macroexpand (list 'mm-handle-set-undisplayer
-						  (list 'quote handle)
-						  nil))
-			    (error))
-			  (message "Displaying %s...done" ,command)))))
+		     (lexical-let ;; Don't use `let'.
+			 ;; Function used to remove temp file and directory.
+			 ((fn `(lambda nil
+				 ;; Don't use `ignore-errors'.
+				 (condition-case nil
+				     (delete-file ,file)
+				   (error))
+				 (condition-case nil
+				     (delete-directory
+				      ,(file-name-directory file))
+				   (error))))
+			  ;; Form uses to kill the process buffer and
+			  ;; remove the undisplayer.
+			  (fm `(progn
+				 (kill-buffer ,buffer)
+				 ,(macroexpand
+				   (list 'mm-handle-set-undisplayer
+					 (list 'quote handle)
+					 nil))))
+			  ;; Message to be issued when the process exits.
+			  (done (format "Displaying %s...done" command))
+			  ;; In particular, the timer object (which is
+			  ;; a vector in Emacs but is a list in XEmacs)
+			  ;; requires that it is lexically scoped.
+			  (timer (run-at-time 2.0 nil 'ignore)))
+		       (lambda (process state)
+			 (when (eq 'exit (process-status process))
+			   (if (memq timer timer-list)
+			       (timer-set-function timer fn)
+			     (funcall fn))
+			   (ignore-errors (eval fm))
+			   (message "%s" done))))))
 		(mm-handle-set-external-undisplayer
 		 handle (cons file buffer)))
 	      (message "Displaying %s..." command))
1.7       +13 -13    XEmacs/packages/xemacs-packages/gnus/lisp/mm-view.el
Index: mm-view.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mm-view.el,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -p -r1.6 -r1.7
--- mm-view.el	2005/11/15 03:45:54	1.6
+++ mm-view.el	2005/12/19 13:35:25	1.7
@@ -250,19 +250,19 @@
 	   (point-min) (point-max)
 	   (list 'keymap w3m-minor-mode-map
 		 ;; Put the mark meaning this part was rendered by emacs-w3m.
-		 'mm-inline-text-html-with-w3m t))))
-      (mm-handle-set-undisplayer
-       handle
-       `(lambda ()
-	  (let (buffer-read-only)
-	    (if (functionp 'remove-specifier)
-		(mapcar (lambda (prop)
-			  (remove-specifier
-			   (face-property 'default prop)
-			   (current-buffer)))
-			'(background background-pixmap foreground)))
-	    (delete-region ,(point-min-marker)
-			   ,(point-max-marker))))))))
+		 'mm-inline-text-html-with-w3m t)))
+	(mm-handle-set-undisplayer
+	 handle
+	 `(lambda ()
+	    (let (buffer-read-only)
+	      (if (functionp 'remove-specifier)
+		  (mapcar (lambda (prop)
+			    (remove-specifier
+			     (face-property 'default prop)
+			     (current-buffer)))
+			  '(background background-pixmap foreground)))
+	      (delete-region ,(point-min-marker)
+			     ,(point-max-marker)))))))))
 
 (defun mm-links-remove-leading-blank ()
   ;; Delete the annoying three spaces preceding each line of links
1.7       +8 -2      XEmacs/packages/xemacs-packages/gnus/lisp/nnmail.el
Index: nnmail.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnmail.el,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -p -r1.6 -r1.7
--- nnmail.el	2005/11/15 03:45:57	1.6
+++ nnmail.el	2005/12/19 13:35:26	1.7
@@ -1872,9 +1872,15 @@ See the Info node `(gnus)Fancy Mail Spli
 	 (case-fold-search nil)
 	 (from (or (message-fetch-field "from") ""))
 	 (to (or (message-fetch-field "to") ""))
-	 (date (date-to-time
-		(or (message-fetch-field "date") (current-time-string))))
+	 (date (message-fetch-field "date"))
 	 (target 'delete))
+    (setq date (if date
+		   (condition-case err
+		       (date-to-time date)
+		     (error
+		      (message "%s" (error-message-string err))
+		      (current-time)))
+		 (current-time)))
     (dolist (regexp-target-pair (reverse nnmail-fancy-expiry-targets) target)
       (setq header (car regexp-target-pair))
       (cond
1.7       +17 -5     XEmacs/packages/xemacs-packages/gnus/lisp/nntp.el
Index: nntp.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nntp.el,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -p -r1.6 -r1.7
--- nntp.el	2005/11/15 03:45:58	1.6
+++ nntp.el	2005/12/19 13:35:26	1.7
@@ -102,7 +102,7 @@ This command is used by the various nntp
 (defvoo nntp-end-of-line "\r\n"
   "*String to use on the end of lines when talking to the NNTP server.
 This is \"\\r\\n\" by default, but should be \"\\n\" when
-using and indirect connection method (nntp-open-via-*).")
+using an indirect connection method (nntp-open-via-*).")
 
 (defvoo nntp-via-rlogin-command "rsh"
   "*Rlogin command used to connect to an intermediate host.
@@ -259,6 +259,13 @@ Within a string, %s is replaced with the
 port number on server.  The program should accept IMAP commands on
 stdin and return responses to stdout.")
 
+(defvar nntp-authinfo-rejected nil
+"A custom error condition used to report 'Authentication Rejected' errors. 
+Condition handlers that match just this condition ensure that the nntp 
+backend doesn't catch this error.")
+(put 'nntp-authinfo-rejected 'error-conditions '(error
nntp-authinfo-rejected))
+(put 'nntp-authinfo-rejected 'error-message "Authorization Rejected")
+
 
 
 ;;; Internal functions.
@@ -313,12 +320,15 @@ be restored and the command retried."
     (set-buffer (process-buffer process))
     (goto-char (point-min))
     (while (and (or (not (memq (char-after (point)) '(?2 ?3 ?4 ?5)))
-		    (looking-at "480"))
+		    (looking-at "48[02]"))
 		(memq (process-status process) '(open run)))
-      (when (looking-at "480")
+      (cond ((looking-at "480")
 	(nntp-handle-authinfo process))
-      (when (looking-at "^.*\n")
-	(delete-region (point) (progn (forward-line 1) (point))))
+	    ((looking-at "482")
+	     (nnheader-report 'nntp (get 'nntp-authinfo-rejected 'error-message))
+	     (signal 'nntp-authinfo-rejected nil))
+	    ((looking-at "^.*\n")
+	     (delete-region (point) (progn (forward-line 1) (point)))))
       (nntp-accept-process-output process)
       (goto-char (point-min)))
     (prog1
@@ -411,6 +421,8 @@ be restored and the command retried."
                  (wait-for
                   (nntp-wait-for process wait-for buffer decode))
                  (t t)))
+	    (nntp-authinfo-rejected
+	     (signal 'nntp-authinfo-rejected (cdr err)))
             (error
              (nnheader-report 'nntp "Couldn't open connection to %s:
%s"
                               address err))
1.8       +2 -2      XEmacs/packages/xemacs-packages/gnus/lisp/rfc2047.el
Index: rfc2047.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/rfc2047.el,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -p -r1.7 -r1.8
--- rfc2047.el	2005/11/15 03:46:00	1.7
+++ rfc2047.el	2005/12/19 13:35:26	1.8
@@ -831,11 +831,11 @@ If your Emacs implementation can't decod
 	    (memq 'gnus-all mail-parse-ignored-charsets)
 	    (memq charset mail-parse-ignored-charsets))
     (setq charset mail-parse-charset))
-  (let ((cs (mm-coding-system-p (mm-charset-to-coding-system charset))))
+  (let ((cs (mm-charset-to-coding-system charset)))
     (cond ((eq cs 'ascii)
 	   (setq cs (or (mm-charset-to-coding-system mail-parse-charset)
 			'raw-text)))
-	  (cs)
+	  ((setq cs (mm-coding-system-p cs)))
 	  ((and charset
 		(listp mail-parse-ignored-charsets)
 		(memq 'gnus-unknown mail-parse-ignored-charsets))
1.7       +11 -1     XEmacs/packages/xemacs-packages/gnus/lisp/rfc2231.el
Index: rfc2231.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/rfc2231.el,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -p -r1.6 -r1.7
--- rfc2231.el	2005/11/15 03:46:00	1.6
+++ rfc2231.el	2005/12/19 13:35:26	1.7
@@ -127,7 +127,17 @@ The list will be on the form
 		       (> c ?\177)) ;; EXTENSION: Support non-ascii chars.
 		   (not (memq c stoken)))
 	      (setq value (buffer-substring
-			   (point) (progn (forward-sexp) (point)))))
+			   (point)
+			   (progn
+			     (forward-sexp)
+			     ;; We might not have reached at the end of
+			     ;; the value because of non-ascii chars,
+			     ;; so we should jump over them if any.
+			     (while (and (not (eobp))
+					 (> (char-after) ?\177))
+			       (forward-char 1)
+			       (forward-sexp))
+			     (point)))))
 	     (t
 	      (error "Invalid header: %s" string)))
 	    (if number
1.8       +47 -0     XEmacs/packages/xemacs-packages/gnus/texi/ChangeLog.upstream
Index: ChangeLog.upstream
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/texi/ChangeLog.upstream,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -p -r1.7 -r1.8
--- ChangeLog.upstream	2005/11/15 03:46:31	1.7
+++ ChangeLog.upstream	2005/12/19 13:35:32	1.8
@@ -1,3 +1,50 @@
+2005-12-12  Katsumi Yamaoka  <yamaoka(a)jpl.org>
+
+	* gnus.texi (MIME Commands): Mention addition of
+	multipart/alternative to gnus-buttonized-mime-types and add xref
+	to mm-discouraged-alternatives.
+
+	* emacs-mime.texi (Display Customization): Mention addition of
+	"image/.*" and add xref to gnus-buttonized-mime-types in the
+	mm-discouraged-alternatives section.
+
+2005-12-05  Katsumi Yamaoka  <yamaoka(a)jpl.org>
+
+	* pgg.texi (User Commands): Fix description of pgg-verify-region.
+	(Selecting an implementation): Fix descriptions.
+
+2005-11-30  Katsumi Yamaoka  <yamaoka(a)jpl.org>
+
+	* message.texi (Various Message Variables): Addition.
+
+2005-11-29  Katsumi Yamaoka  <yamaoka(a)jpl.org>
+
+	* message.texi: Fix default values.
+
+2005-11-25  Katsumi Yamaoka  <yamaoka(a)jpl.org>
+
+	* message.texi (Header Commands): Clarify descriptions of
+	message-cross-post-followup-to, message-reduce-to-to-cc, and
+	message-insert-wide-reply.
+	(Various Commands): Fix kindex for message-kill-to-signature;
+	clarify description of message-tab.
+
+2005-11-22  Katsumi Yamaoka  <yamaoka(a)jpl.org>
+
+	* message.texi (Mailing Lists): Fix description about MFT.
+
+	* gnus.texi (Emacs Lisp): Use ~/.gnus.el instead of ~/.emacs.
+
+2005-11-17  Katsumi Yamaoka  <yamaoka(a)jpl.org>
+
+	* gnus.texi (Slow Terminal Connection): Replace old description
+	with new one.
+
+2005-11-16  Katsumi Yamaoka  <yamaoka(a)jpl.org>
+
+	* gnus.texi (Oort Gnus): Use ~/.gnus.el instead of ~/.emacs;
+	replace X-Draft-Headers with X-Draft-From.
+
 2005-11-14  Katsumi Yamaoka  <yamaoka(a)jpl.org>
 
 	* gnus.texi (Various Various): Fix the default value of
1.7       +6 -0      XEmacs/packages/xemacs-packages/gnus/texi/emacs-mime.texi
Index: emacs-mime.texi
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/texi/emacs-mime.texi,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -p -r1.6 -r1.7
--- emacs-mime.texi	2005/11/15 03:46:32	1.6
+++ emacs-mime.texi	2005/12/19 13:35:32	1.7
@@ -322,6 +322,12 @@ you could say something like:
       (remove "text/html" mm-automatic-display))
 @end lisp
 
+Adding @code{"image/.*"} might also be useful.  Spammers use it as the
+prefered part of @samp{multipart/alternative} messages.  See also
+@code{gnus-buttonized-mime-types} (@pxref{MIME Commands, ,MIME Commands,
+gnus, Gnus Manual}), to which adding @code{"multipart/alternative"}
+enables you to choose manually one of two types those mails include.
+
 @item mm-inline-large-images
 @vindex mm-inline-large-images
 When displaying inline images that are larger than the window, Emacs
1.10      +22 -13    XEmacs/packages/xemacs-packages/gnus/texi/gnus.texi
Index: gnus.texi
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/texi/gnus.texi,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -p -r1.9 -r1.10
--- gnus.texi	2005/11/15 03:46:33	1.9
+++ gnus.texi	2005/12/19 13:35:32	1.10
@@ -9319,6 +9319,12 @@ To see e.g. security buttons but no othe
 variable to @code{("multipart/signed")} and leave
 @code{gnus-unbuttonized-mime-types} at the default value.
 
+You could also add @code{"multipart/alternative"} to this list to
+display radio buttons that allow you to choose one of two media types
+those mails include.  See also @code{mm-discouraged-alternatives}
+(@pxref{Display Customization, ,Display Customization, emacs-mime, The
+Emacs MIME Manual}).
+
 @item gnus-inhibit-mime-unbuttonizing
 @vindex gnus-inhibit-mime-unbuttonizing
 If this is non-@code{nil}, then all @acronym{MIME} parts get buttons.  The
@@ -26032,7 +26038,7 @@ The new variable @code{gnus-parameters} 
 Earlier this was done only via @kbd{G p} (or @kbd{G c}), which stored
 the parameters in @file{~/.newsrc.eld}, but via this variable you can
 enjoy the powers of customize, and simplified backups since you set the
-variable in @file{~/.emacs} instead of @file{~/.newsrc.eld}.  The
+variable in @file{~/.gnus.el} instead of @file{~/.newsrc.eld}.  The
 variable maps regular expressions matching group names to group
 parameters, a'la:
 @lisp
@@ -26047,7 +26053,7 @@ parameters, a'la:
 @item
 Smileys (@samp{:-)}, @samp{;-)} etc) are now iconized for Emacs too.
 
-Put @code{(setq gnus-treat-display-smileys nil)} in @file{~/.emacs} to
+Put @code{(setq gnus-treat-display-smileys nil)} in @file{~/.gnus.el} to
 disable it.
 
 @item
@@ -26074,8 +26080,8 @@ appropriate headers and a note in the bo
 followups (see the variables @code{message-cross-post-@var{*}}).
 
 @item
-References and X-Draft-Headers are no longer generated when you start
-composing messages and @code{message-generate-headers-first} is
+References and X-Draft-From headers are no longer generated when you
+start composing messages and @code{message-generate-headers-first} is
 @code{nil}.
 
 @item
@@ -26316,7 +26322,8 @@ It was aliased to @kbd{Y c}
 (@code{gnus-summary-insert-cached-articles}).  The new function filters
 out other articles.
 
-@item Some limiting commands accept a @kbd{C-u} prefix to negate the match.
+@item
+Some limiting commands accept a @kbd{C-u} prefix to negate the match.
 
 If @kbd{C-u} is used on subject, author or extra headers, i.e., @kbd{/
 s}, @kbd{/ a}, and @kbd{/ x}
@@ -26767,7 +26774,7 @@ minimum.  You can, in fact, make do with
 useful data is in the summary buffer, anyway.  Set this variable to
 @samp{^NEVVVVER} or @samp{From:}, or whatever you feel you need.
 
-Set this hook to all the available hiding commands:
+Use the following to enable all the available hiding features:
 @lisp
 (setq gnus-treat-hide-headers 'head
       gnus-treat-hide-signature t
@@ -28495,8 +28502,10 @@ interpreted.)  If you decide that you do
 certain things, it's trivial to have it do something a different way.
 (Well, at least if you know how to write Lisp code.)  However, that's
 beyond the scope of this manual, so we are simply going to talk about
-some common constructs that you normally use in your @file{.emacs} file
-to customize Gnus.
+some common constructs that you normally use in your @file{~/.gnus.el}
+file to customize Gnus.  (You can also use the @file{~/.emacs} file, but
+in order to set things of Gnus up, it is much better to use the
+(a)file{~/.gnus.el} file, @xref{Startup Files}.)
 
 If you want to set the variable @code{gnus-florgbnize} to four (4), you
 write the following:
@@ -28507,12 +28516,12 @@ write the following:
 
 This function (really ``special form'') @code{setq} is the one that can
 set a variable to some value.  This is really all you need to know.  Now
-you can go and fill your @file{.emacs} file with lots of these to change
-how Gnus works.
+you can go and fill your @file{~/.gnus.el} file with lots of these to
+change how Gnus works.
 
-If you have put that thing in your @file{.emacs} file, it will be read
-and @code{eval}ed (which is lisp-ese for ``run'') the next time you
-start Emacs.  If you want to change the variable right away, simply say
+If you have put that thing in your @file{~/.gnus.el} file, it will be
+read and @code{eval}ed (which is Lisp-ese for ``run'') the next time you
+start Gnus.  If you want to change the variable right away, simply say
 @kbd{C-x C-e} after the closing parenthesis.  That will @code{eval} the
 previous ``form'', which is a simple @code{setq} statement here.
 
1.8       +57 -32    XEmacs/packages/xemacs-packages/gnus/texi/message.texi
Index: message.texi
===================================================================
RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/texi/message.texi,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -p -r1.7 -r1.8
--- message.texi	2005/11/15 03:46:36	1.7
+++ message.texi	2005/12/19 13:35:33	1.8
@@ -249,7 +249,10 @@ supersede the message in the current buf
 Headers matching the @code{message-ignored-supersedes-headers} are
 removed before popping up the new message buffer.  The default is@*
 @samp{^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|@*
-^Received:\\|^X-From-Line:\\|Return-Path:\\|^Supersedes:}.
+^Received:\\|^X-From-Line:\\|^X-Trace:\\|^X-Complaints-To:\\|@*
+Return-Path:\\|^Supersedes:\\|^NNTP-Posting-Date:\\|^X-Trace:\\|@*
+^X-Complaints-To:\\|^Cancel-Lock:\\|^Cancel-Key:\\|^X-Hashcash:\\|@*
+^X-Payment:}.
 
 
 
@@ -330,7 +333,7 @@ undeliverable.
 @vindex message-ignored-bounced-headers
 Headers that match the @code{message-ignored-bounced-headers} regexp
 will be removed before popping up the buffer.  The default is
-@samp{^\\(Received\\|Return-Path\\):}.
+@samp{^\\(Received\\|Return-Path\\|Delivered-To\\):}.
 
 
 @node Mailing Lists
@@ -339,7 +342,7 @@ will be removed before popping up the bu
 @cindex Mail-Followup-To
 Sometimes while posting to mailing lists, the poster needs to direct
 followups to the post to specific places.  The Mail-Followup-To (MFT)
-was created to enable just this.  Two example scenarios where this is
+was created to enable just this.  Three example scenarios where this is
 useful:
 
 @itemize @bullet
@@ -681,26 +684,30 @@ stripped on replying, see @code{message-
 @kindex C-c C-f x
 @findex message-cross-post-followup-to
 @vindex message-cross-post-default
+@vindex message-cross-post-note-function
 @cindex X-Post
 @cindex cross-post
-Ask for an additional @samp{Newsgroups} and @samp{FollowUp-To} for a
-cross-post.  @code{message-cross-post-followup-to} mangles
-@samp{FollowUp-To} and @samp{Newsgroups} header to point to group.
-If @code{message-cross-post-default} is @code{nil} or if called with a
-prefix-argument @samp{Follow-Up} is set, but the message is not
-cross-posted.
+Set up the @samp{FollowUp-To} header with a target newsgroup for a
+cross-post, add that target newsgroup to the @samp{Newsgroups} header if
+it is not a member of @samp{Newsgroups}, and insert a note in the body.
+If @code{message-cross-post-default} is @code{nil} or if this command is
+called with a prefix-argument, only the @samp{FollowUp-To} header will
+be set but the the target newsgroup will not be added to the
+@samp{Newsgroups} header.  The function to insert a note is controlled
+by the @code{message-cross-post-note-function} variable.
 
 @item C-c C-f t
 @kindex C-c C-f t
 @findex message-reduce-to-to-cc
 Replace contents of @samp{To} header with contents of @samp{Cc} or
-@samp{Bcc} header.
+@samp{Bcc} header.  (Iff @samp{Cc} header is not present, @samp{Bcc}
+header will be used instead.)
 
 @item C-c C-f w
 @kindex C-c C-f w
 @findex message-insert-wide-reply
 Insert @samp{To} and @samp{Cc} headers as if you were doing a wide
-reply.
+reply even if the message was not made for a wide reply first.
 
 @item C-c C-f a
 @kindex C-c C-f a
@@ -839,8 +846,8 @@ typed a non-@acronym{ASCII} domain name.
 The @code{message-use-idna} variable control whether @acronym{IDNA} is
 used.  If the variable is @code{nil} no @acronym{IDNA} encoding will
 ever happen, if it is set to the symbol @code{ask} the user will be
-queried, and if set to @code{t} @acronym{IDNA} encoding happens
-automatically (the default).
+queried, and if set to @code{t} (which is the default if @acronym{IDNA}
+is fully available) @acronym{IDNA} encoding happens automatically.
 
 @findex message-idna-to-ascii-rhs
 If you want to experiment with the @acronym{IDNA} encoding, you can
@@ -1081,7 +1088,7 @@ The text is killed and replaced with the
 (@samp{[...]}).
 
 @item C-c C-z
-@kindex C-c C-x
+@kindex C-c C-z
 @findex message-kill-to-signature
 Kill all the text up to the signature, or if that's missing, up to the
 end of the message (@code{message-kill-to-signature}).
@@ -1125,9 +1132,9 @@ prompt for a new buffer name.
 @kindex TAB
 @findex message-tab
 @vindex message-tab-body-function
-If non-@code{nil} execute the function specified in
-@code{message-tab-body-function}.  Otherwise use the function bound to
-@kbd{TAB} in @code{text-mode-map} or @code{global-map}.
+If @code{message-tab-body-function} is non-@code{nil}, execute the
+function it specifies.  Otherwise use the function bound to @kbd{TAB} in
+@code{text-mode-map} or @code{global-map}.
 
 @end table
 
@@ -1417,13 +1424,14 @@ header when the message is already @code
 @item message-required-mail-headers
 @vindex message-required-mail-headers
 @xref{News Headers}, for the syntax of this variable.  It is
-@code{(From Date Subject (optional . In-Reply-To) Message-ID Lines
+@code{(From Subject Date (optional . In-Reply-To) Message-ID
 (optional . User-Agent))} by default.
 
 @item message-ignored-mail-headers
 @vindex message-ignored-mail-headers
-Regexp of headers to be removed before mailing.  The default is
-@samp{^[GF]cc:\\|^Resent-Fcc:\\|^Xref:\\|^X-Draft-From:}.
+Regexp of headers to be removed before mailing.  The default is@*
+@samp{^[GF]cc:\\|^Resent-Fcc:\\|^Xref:\\|^X-Draft-From:\\|@*
+^X-Gnus-Agent-Meta-Information:}.
 
 @item message-default-mail-headers
 @vindex message-default-mail-headers
@@ -1694,7 +1702,8 @@ All these conditions are checked by defa
 @item message-ignored-news-headers
 @vindex message-ignored-news-headers
 Regexp of headers to be removed before posting.  The default is@*
-@samp{^NNTP-Posting-Host:\\|^Xref:\\|^[BGF]cc:\\|^Resent-Fcc:\\|^X-Draft-From:}.
+@samp{^NNTP-Posting-Host:\\|^Xref:\\|^[BGF]cc:\\|^Resent-Fcc:\\|@*
+^X-Draft-From:\\|^X-Gnus-Agent-Meta-Information:}.
 
 @item message-default-news-headers
 @vindex message-default-news-headers
@@ -1847,12 +1856,13 @@ say.
 @item message-default-charset
 @vindex message-default-charset
 @cindex charset
-Symbol naming a @acronym{MIME} charset.  Non-@acronym{ASCII}
-characters in messages are assumed to be encoded using this charset.
-The default is @code{nil}, which means ask the user.  (This variable
-is used only on non-@sc{mule} Emacsen.  @xref{Charset Translation, ,
-Charset Translation, emacs-mime, Emacs MIME Manual}, for details on
-the @sc{mule}-to-@acronym{MIME} translation process.
+Symbol naming a @acronym{MIME} charset.  Non-@acronym{ASCII} characters
+in messages are assumed to be encoded using this charset.  The default
+is @code{iso-8859-1} on non-@sc{mule} Emacsen; otherwise @code{nil},
+which means ask the user.  (This variable is used only on non-@sc{mule}
+Emacsen.)  @xref{Charset Translation, , Charset Translation, emacs-mime,
+Emacs MIME Manual}, for details on the @sc{mule}-to-@acronym{MIME}
+translation process.
 
 @item message-signature-separator
 @vindex message-signature-separator
@@ -1954,9 +1964,12 @@ message composition doesn't break too ba
 
 @item message-send-method-alist
 @vindex message-send-method-alist
+@findex message-mail-p
+@findex message-news-p
+@findex message-send-via-mail
+@findex message-send-via-news
+Alist of ways to send outgoing messages.  Each element has the form:
 
-Alist of ways to send outgoing messages.  Each element has the form
-
 @lisp
 (@var{type} @var{predicate} @var{function})
 @end lisp
@@ -1967,20 +1980,32 @@ A symbol that names the method.
 
 @item predicate
 A function called without any parameters to determine whether the
-message is a message of type @var{type}.
+message is a message of type @var{type}.  The function will be called in
+the buffer where the message is.
 
 @item function
 A function to be called if @var{predicate} returns non-@code{nil}.
 @var{function} is called with one parameter -- the prefix.
 @end table
 
+The default is:
+
 @lisp
 ((news message-news-p message-send-via-news)
  (mail message-mail-p message-send-via-mail))
 @end lisp
-
-
 
+The @code{message-news-p} function returns non-@code{nil} if the message
+looks like news, and the @code{message-send-via-news} function sends the
+message according to the @code{message-send-news-function} variable
+(@pxref{News Variables}).  The @code{message-mail-p} function returns
+non-@code{nil} if the message looks like mail, and the
+@code{message-send-via-mail} function sends the message according to the
+@code{message-send-mail-function} variable (@pxref{Mail Variables}).
+
+All the elements in this alist will be tried in order, so a message
+containing both a valid @samp{Newsgroups} header and a valid @samp{To}
+header, for example, will be sent as news, and then as mail.
 @end table