Changes committed gnus/lisp (151 files)

"Miles Bader" <[email protected]>
Newsgroups gmane.emacs.gnus.commits
Message-ID <[email protected]>
Modified: ChangeLog ChangeLog.2 binhex.el canlock.el compface.el
          deuglify.el dig.el dns.el earcon.el flow-fill.el format-spec.el
          gnus-agent.el gnus-art.el gnus-async.el gnus-audio.el
          gnus-bcklg.el gnus-bookmark.el gnus-cache.el gnus-cite.el
          gnus-cus.el gnus-demon.el gnus-diary.el gnus-dired.el
          gnus-draft.el gnus-dup.el gnus-eform.el gnus-ems.el gnus-fun.el
          gnus-group.el gnus-int.el gnus-kill.el gnus-logic.el gnus-mh.el
          gnus-ml.el gnus-mlspl.el gnus-move.el gnus-msg.el gnus-nocem.el
          gnus-picon.el gnus-range.el gnus-registry.el gnus-score.el
          gnus-setup.el gnus-sieve.el gnus-soup.el gnus-spec.el
          gnus-srvr.el gnus-sum.el gnus-topic.el gnus-undo.el gnus-util.el
          gnus-uu.el gnus-vm.el gnus-win.el gnus.el hashcash.el
          hmac-def.el hmac-md5.el html2text.el ietf-drums.el imap.el
          mail-parse.el mail-prsvr.el mail-source.el mailcap.el md4.el
          message.el messcompat.el mm-bodies.el mm-decode.el mm-encode.el
          mm-extern.el mm-partial.el mm-url.el mm-util.el mm-uu.el
          mm-view.el mml-sec.el mml-smime.el mml.el mml1991.el mml2015.el
          netrc.el nnagent.el nnbabyl.el nndb.el nndiary.el nndir.el
          nndoc.el nndraft.el nneething.el nnfolder.el nngateway.el
          nnheader.el nnimap.el nnkiboze.el nnlistserv.el nnmail.el
          nnmaildir.el nnmbox.el nnmh.el nnml.el nnnil.el nnoo.el nnrss.el
          nnslashdot.el nnsoup.el nnspool.el nntp.el nnultimate.el
          nnvirtual.el nnwarchive.el nnweb.el nnwfm.el ntlm.el
          parse-time.el password-cache.el pgg-def.el pgg-gpg.el
          pgg-parse.el pgg-pgp5.el pgg.el pop3.el qp.el rfc1843.el
          rfc2045.el rfc2047.el rfc2104.el rfc2231.el sasl-cram.el
          sasl-digest.el sasl-ntlm.el sasl.el score-mode.el sha1.el
          sieve-manage.el sieve-mode.el sieve.el smiley.el smime.el
          spam-report.el spam-stat.el spam-wash.el spam.el starttls.el
          time-date.el tls.el utf7.el uudecode.el webmail.el yenc.el

Merge from emacs--devo--0, emacs--rel--22

Patches applied:

 * emacs--devo--0  (patch 1092-1093, 1095, 1097, 1099-1104, 1106, 1108, 1110, 1113, 1118-1119, 1121)

   - Update from CVS
   - Merge from emacs--rel--22
   - Merge from gnus--devo--0

 * emacs--rel--22  (patch 241-243, 245-246, 249, 254)

   - Update from CVS
   - Merge from gnus--rel--5.10

2008-04-22  Juri Linkov  <[email protected]>

   * lisp/mailcap.el (mailcap-file-default-commands): New function.

2008-04-08  Katsumi Yamaoka  <[email protected]>

   * lisp/compface.el (uncompface): Make buffer unibyte.

2008-04-05  Glenn Morris  <[email protected]>

   * lisp/gnus-ems.el (mm-disable-multibyte): Autoload it.

2008-04-05  Stefan Monnier  <[email protected]>

   * lisp/mm-util.el (mm-with-unibyte-buffer, mm-with-multibyte-buffer): Prefer
   mm-(en|dis)able-multibyte to default-enable-multibyte-characters.

   * lisp/nnheader.el (nnheader-init-server-buffer): Change buffer's
   multibyteness after rather than before erasing it.

   * lisp/gnus-art.el (gnus-mime-replace-part): Remove unnecessary use of
   mm-with-multibyte.
   (gnus-request-article-this-buffer): Make sure the proper decoding is
   used if gnus-original-article-buffer happens to be unibyte.

   * lisp/gnus-ems.el (gnus-x-splash): Prefer mm-disable-multibyte to
   default-enable-multibyte-characters.

   * lisp/gnus-fun.el (gnus-display-x-face-in-from): Remove unnecessary use of
   default-enable-multibyte-characters.

   * lisp/mm-decode.el (mm-inline-media-tests): Add entry for x-diff.

   * lisp/nnweb.el (nnweb-init): Avoid nn-with-unibyte.

2008-03-31  Glenn Morris  <[email protected]>

   * lisp/message.el (mml2015-use): Declare for compiler.
   (message-info): Require mml2015 when appropriate.

2008-03-30  Stefan Monnier  <[email protected]>

   * lisp/nntp.el (nntp-netcat-command): Rename from nntp-via-netcat-command.
   (nntp-netcat-switches): Rename from nntp-via-netcat-switches.
   (nntp-open-telnet, nntp-open-rlogin): Use with-current-buffer.
   (nntp-service-to-port): New function.
   (nntp-open-via-rlogin-and-netcat, nntp-open-via-telnet-and-telnet)
   (nntp-open-telnet-stream, nntp-open-via-rlogin-and-telnet): Use it.
   (nntp-open-netcat-stream): New function.
   (nntp-open-via-rlogin-and-netcat): Don't use a pty.

2008-03-29  Stefan Monnier  <[email protected]>

   * lisp/message.el (message-make-in-reply-to): Use mm-with-multibyte-buffer.

2008-03-28  Magnus Henoch  <[email protected]>

   * lisp/net/dns.el (dns-write): Use set-buffer-multibyte.

2008-03-14  Stefan Monnier  <[email protected]>

   * texi/gnus.texi (Example Methods, Direct Functions, Indirect Functions)
   (Common Variables): Give precedence to the netcat methods over the
   telnet methods, and mention that they are more reliable.

Revision: [email protected]/gnus--devo--0--patch-481


Index: ChangeLog
diff -u gnus/lisp/ChangeLog:7.1833 gnus/lisp/ChangeLog:7.1834
--- ChangeLog:7.1833	Mon Apr 21 01:38:57 2008
+++ ChangeLog	Thu Apr 24 06:19:21 2008
@@ -1,3 +1,7 @@
+2008-04-22  Juri Linkov  <[email protected]>
+
+	* mailcap.el (mailcap-file-default-commands): New function.
+
 2008-04-13  Reiner Steib  <[email protected]>
 
 	* message.el (message-signature-separator, message-cite-function):
@@ -61,6 +65,37 @@
 	* gnus-registry.el: Initialize the registry when gnus-registry-install
 	is t.
 
+2008-04-08  Katsumi Yamaoka  <[email protected]>
+
+	* compface.el (uncompface): Make buffer unibyte.
+
+2008-04-05  Glenn Morris  <[email protected]>
+
+	* gnus-ems.el (mm-disable-multibyte): Autoload it.
+
+2008-04-05  Stefan Monnier  <[email protected]>
+
+	* mm-util.el (mm-with-unibyte-buffer, mm-with-multibyte-buffer): Prefer
+	mm-(en|dis)able-multibyte to default-enable-multibyte-characters.
+
+	* nnheader.el (nnheader-init-server-buffer): Change buffer's
+	multibyteness after rather than before erasing it.
+
+	* gnus-art.el (gnus-mime-replace-part): Remove unnecessary use of
+	mm-with-multibyte.
+	(gnus-request-article-this-buffer): Make sure the proper decoding is
+	used if gnus-original-article-buffer happens to be unibyte.
+
+	* gnus-ems.el (gnus-x-splash): Prefer mm-disable-multibyte to
+	default-enable-multibyte-characters.
+
+	* gnus-fun.el (gnus-display-x-face-in-from): Remove unnecessary use of
+	default-enable-multibyte-characters.
+
+	* mm-decode.el (mm-inline-media-tests): Add entry for x-diff.
+
+	* nnweb.el (nnweb-init): Avoid nn-with-unibyte.
+
 2008-04-02  Simon Josefsson  <[email protected]>
 
 	* imap.el (imap-enable-exchange-bug-workaround): New variable.
@@ -81,23 +116,47 @@
 	to enable bug workaround or not.
 	(nnimap-find-minmax-uid): Only enable workaround conditionally.
 
+2008-03-31  Glenn Morris  <[email protected]>
+
+	* message.el (mml2015-use): Declare for compiler.
+	(message-info): Require mml2015 when appropriate.
+
 2008-03-31  Katsumi Yamaoka  <[email protected]>
 
 	* Makefile.in (EMACS_COMP): Quote directory name that might contain
 	whitespace.
 
+2008-03-30  Stefan Monnier  <[email protected]>
+
+	* nntp.el (nntp-netcat-command): Rename from nntp-via-netcat-command.
+	(nntp-netcat-switches): Rename from nntp-via-netcat-switches.
+	(nntp-open-telnet, nntp-open-rlogin): Use with-current-buffer.
+	(nntp-service-to-port): New function.
+	(nntp-open-via-rlogin-and-netcat, nntp-open-via-telnet-and-telnet)
+	(nntp-open-telnet-stream, nntp-open-via-rlogin-and-telnet): Use it.
+	(nntp-open-netcat-stream): New function.
+	(nntp-open-via-rlogin-and-netcat): Don't use a pty.
+
 2008-03-29  Sven Joachim  <[email protected]>
 
 	* gnus-sum.el (gnus-summary-make-menu-bar): Add missing dots.
 
+2008-03-29  Stefan Monnier  <[email protected]>
+
+	* message.el (message-make-in-reply-to): Use mm-with-multibyte-buffer.
+
+2008-03-28  Magnus Henoch  <[email protected]>
+
+	* net/dns.el (dns-write): Use set-buffer-multibyte.
+
 2008-03-28  Michael Harnois  <[email protected]>  (tiny change)
 
 	* nnimap.el (nnimap-find-minmax-uid): Fix Exchange 2007 IMAP problem.
 
 2008-03-24  Reiner Steib  <[email protected]>
 
-	* message.el (message-signature-separator): Change default.  Improve
-	custom type.
+	* message.el (message-signature-separator): Change default.
+	Improve custom type.
 	(message-cite-function): Change default to
 	message-cite-original-without-signature.
 
@@ -143,6 +202,11 @@
 
 	* message.el (message-simplify-recipients): Fix previous commit.
 
+2008-03-20  Stefan Monnier  <[email protected]>
+
+	* mm-util.el (mm-set-buffer-multibyte): New function.
+	* mm-decode.el (mm-copy-to-buffer): Use it.
+
 2008-03-19  Glenn Morris  <[email protected]>
 
 	* tls.el (open-tls-stream): Restore use of `tls-end-of-info'.
@@ -150,8 +214,8 @@
 
 2008-03-19  Reiner Steib  <[email protected]>
 
-	* message.el (message-alter-recipients-discard-bogus-full-name): New
-	function.
+	* message.el (message-alter-recipients-discard-bogus-full-name):
+	New function.
 	(message-alter-recipients-function): New variable.
 	(message-get-reply-headers): Use it.
 	(message-replace-header): New helper function.
@@ -198,6 +262,10 @@
 	(gnus-button-alist): Extend gnus-button-handle-info-keystrokes entry.
 	(gnus-button-handle-info-keystrokes): Handle index entries.
 
+2008-03-15  Glenn Morris  <[email protected]>
+
+	* calendar/parse-time.el (parse-time-string): Simplify.
+
 2008-03-14  Katsumi Yamaoka  <[email protected]>
 
 	* mail-source.el (mail-source-delete-old-incoming) Fix regexp to find
@@ -208,6 +276,14 @@
 	* auth-source.el (auth-sources): Renamed from auth-source-choices.
 	(auth-source-pick): Use it.
 
+2008-03-12  Stefan Monnier  <[email protected]>
+
+	* binhex.el (binhex-decode-region-internal):
+	* mail/uudecode.el (uudecode-decode-region-internal):
+	* dns.el (dns-read-string-name, dns-read, dns-read-type, query-dns):
+	* sha1.el (sha1-string-external): Use set-buffer-multibyte rather than
+	setting default-enable-multibyte-characters.
+
 2008-03-12  Teodor Zlatanov  <[email protected]>
 
 	* auth-source.el (auth-source-protocols)
@@ -226,6 +302,53 @@
 	(nntp-open-via-rlogin-and-netcat, nntp-open-via-telnet-and-telnet):
 	Make sure the nntp port to specify is a string.
 
+2008-03-12  Stefan Monnier  <[email protected]>
+
+	* nntp.el: Use with-current-buffer.
+	(nntp-send-buffer): Just set the buffer to unibyte rather than use the
+	dubious mm-with-unibyte-current-buffer.
+	(nntp-with-open-group-function): New function extracted from
+	nntp-with-open-group macro.
+	(nntp-with-open-group): Use the function, so it's easier to debug.
+	Add indentation and debugging info.
+	(nntp-open-telnet-stream, nntp-open-via-rlogin-and-telnet): Recommend
+	the use of the netcat alternatives.
+
+	* rfc2047.el (rfc2047-decode-string): Don't use `m'.
+	Avoid mm-string-as-multibyte as well.
+
+	* nnweb.el (nnweb-insert-html):
+	Remove use of nnheader-string-as-multibyte.
+
+	* nnheader.el (nnheader-init-server-buffer): Use with-current-buffer.
+	(nnheader-string-as-multibyte): Remove.
+
+	* mm-view.el: Use inhibit-read-only.
+	(mm-inline-text-html-render-with-w3, mm-inline-message): Use dolist.
+	(mm-pkcs7-signed-magic, mm-pkcs7-enveloped-magic): Use just string
+	or unibyte-string.
+
+	* mm-uu.el (mm-uu-copy-to-buffer): Preserve (uni/multi)byteness.
+	(mm-uu-yenc-extract): Use with-current-buffer.
+
+	* gnus-soup.el (gnus-soup-send-packet): Don't use
+	mm-with-unibyte-current-buffer since the buffer is unibyte anyway.
+
+	* nnmh.el: Use with-current-buffer.
+	(nnmh-request-list-1): Use mm-string-to-multibyte rather than
+	mm-string-as-multibyte on the output of mm-encode-coding-string.
+
+	* nnimap.el (nnimap-retrieve-headers-progress): Use a unibyte buffer.
+	(nnimap-request-move-article): Use with-current-buffer.
+
+	* mm-decode.el (mm-with-part): Set the buffer to unibyte before
+	inserting the handle-buffer's text, so the implicit multibyte->unibyte
+	conversion uses string-make-unibyte rather than string-as-unibyte.
+
+	* gnus-msg.el: Use with-current-buffer.
+
+	* message.el (message-ignored-resent-headers): Add "Delivered-To".
+
 2008-03-10  Daiki Ueno  <[email protected]>
 
 	* mml2015.el (mml2015-epg-passphrase-callback): Type cast KEY-ID to a
@@ -235,10 +358,15 @@
 
 	* lpath.el: Consider the case without Emacs/W3.
 
+2008-03-08  Glenn Morris  <[email protected]>
+
+	* calendar/time-date.el (date-to-time, time-subtract, time-add)
+	(safe-date-to-time): Doc fixes.
+
 2008-03-08  Reiner Steib  <[email protected]>
 
-	* mail-source.el (mail-source-delete-old-incoming-confirm): Change
-	default to nil.
+	* mail-source.el (mail-source-delete-old-incoming-confirm):
+	Change default to nil.
 	(mail-source-delete-old-incoming): Make confirmation prompt more clear.
 
 2008-03-07  Katsumi Yamaoka  <[email protected]>
@@ -252,6 +380,12 @@
 
 	* mm-view.el (mm-w3m-standalone-supports-m17n-p): Fix typo.
 
+2008-03-07  Karl Fogel  <[email protected]>
+
+	* gnus-bookmark.el: Adjust for renames in bookmark.el.
+	(gnus-bookmark-make-record): Was `gnus-bookmark-make-cell'.
+	(gnus-bookmark-jump): Adjust some variable names.
+
 2008-03-06  Teodor Zlatanov  <[email protected]>
 
 	* auth-source.el: New package.
@@ -264,7 +398,7 @@
 
 	* gnus-registry.el (gnus-registry-install): Allow 'ask as an option.
 	(gnus-registry-initialize, gnus-registry-install-p): Use it.
-	(gnus-registry-install-shortcuts): Renamed from
+	(gnus-registry-install-shortcuts): Rename from
 	gnus-registry-install-shortcuts-and-menus.  Installs the shortcuts in
 	the `gnus-registry-mark-map' keymap dynamically from
 	`gnus-registry-marks'.  The generated functions update the summary line
@@ -275,11 +409,24 @@
 	* gnus-sum.el (gnus-summary-make-menu-bar): Add menu entries for all
 	the registry mark functions.
 
+2008-03-05  Glenn Morris  <[email protected]>
+
+	* gnus-art.el (gnus-article-mode-line-format-alist): Move to gnus-sum.
+	* gnus-sum.el (gnus-article-mode-line-format-alist): Move here from
+	gnus-art.
+	(top-level): No need to load own source when compiling.
+
 2008-03-04  Reiner Steib  <[email protected]>
 
 	* gnus-sum.el (gnus-print-buffer): Honor ps-print-color-p.
 	Suggested by <[email protected]>.
 
+2008-03-04  Glenn Morris  <[email protected]>
+
+	* gnus-sum.el (top-level): No need to require gnus when compiling,
+	since unconditionally required near start of file.
+	(gnus-summary-display-while-building): Move definition before use.
+
 2008-03-04  Teodor Zlatanov  <[email protected]>
 
 	* gnus-registry.el (gnus-registry-user-format-function-M): Add
@@ -297,6 +444,20 @@
 	* gnus-art.el (gnus-article-describe-bindings): Work for the version of
 	`where-is-internal' that returns a range of key sequences.
 
+2008-03-03  Stefan Monnier  <[email protected]>
+
+	* mm-bodies.el (mm-decode-content-transfer-encoding): Simplify.
+
+	* gnus-sum.el: Use inhibit-read-only and with-current-buffer.
+	(gnus-summary-jump-to-group): Consider windows on other displayed
+	frames as well.  Similar changes might be needed elsewhere, but that's
+	the one I've bumped into during my use.
+
+	* nndoc.el (nndoc-oe-dbx-type-p):
+	* gnus-msg.el (gnus-debug):
+	* gnus-group.el (gnus-update-group-mark-positions):
+	Use mm-string-to-multibyte.
+
 2008-03-02  Reiner Steib  <[email protected]>
 
 	* mml2015.el (mml2015-extract-cleartext-signature): Explain that it
@@ -446,9 +607,9 @@
 2008-02-11  Reiner Steib  <[email protected]>
 
 	* gnus-topic.el (gnus-topic-select-group, gnus-topic-read-group):
-	Document negativ prefix.
+	Document negative prefix.
 
-	* gnus-group.el (gnus-group-read-group): Document negativ prefix.
+	* gnus-group.el (gnus-group-read-group): Document negative prefix.
 
 2008-02-10  Lars Magne Ingebrigtsen  <[email protected]>
 
@@ -742,7 +903,7 @@
 	(gnus-mime-delete-part): Don't write description line if empty.
 	(gnus-article-encrypt-body): Add confirmation for gnus-novice-user.
 
-2007-12-14  Johan Bockg,Ae(Brd  <[email protected]>
+2007-12-14  Johan Bockgård  <[email protected]>
 
 	* gnus-sum.el (gnus-summary-mark-unread-as-read)
 	(gnus-summary-mark-read-and-unread-as-read)
@@ -1156,8 +1317,8 @@
 
 	* gnus-cache.el (gnus-jog-cache): Ditto.
 
-	* gnus-msg.el (gnus-summary-reply): Ignore
-	gnus-confirm-mail-reply-to-news for wide and very wide replies.
+	* gnus-msg.el (gnus-summary-reply):
+	Ignore gnus-confirm-mail-reply-to-news for wide and very wide replies.
 
 2007-11-24  Reiner Steib  <[email protected]>
 
@@ -1176,8 +1337,8 @@
 
 2007-11-24  Reiner Steib  <[email protected]>
 
-	* gnus-cache.el (gnus-cache-generate-nov-databases): Use
-	nnml-generate-nov-databases-directory instead of
+	* gnus-cache.el (gnus-cache-generate-nov-databases):
+	Use nnml-generate-nov-databases-directory instead of
 	nnml-generate-nov-databases-1.
 
 2007-11-24  Glenn Morris  <[email protected]>
@@ -1458,7 +1619,7 @@
 2007-10-26  Reiner Steib  <[email protected]>
 
 	* message.el (message-remove-blank-cited-lines): New function.
-	Suggested by Karl Pl,Ad(Bsterer.
+	Suggested by Karl Plästerer.
 
 2007-10-25  Katsumi Yamaoka  <[email protected]>
 
@@ -1940,7 +2101,7 @@
 	* mm-uu.el (mm-uu-type-alist): Refer to mm-uu-configure-list in doc
 	string.
 
-2007-07-20  Micha,Ak(Bl Cadilhac  <[email protected]>
+2007-07-20  Michaël Cadilhac  <[email protected]>
 
 	* nnrss.el (nnrss-ignore-article-fields): New variable.  List of fields
 	that should be ignored when comparing distant RSS articles with local
@@ -2289,8 +2450,8 @@
 
 2007-05-24  Katsumi Yamaoka  <[email protected]>
 
-	* message.el (message-narrow-to-headers-or-head): Ignore
-	mail-header-separator in the body.
+	* message.el (message-narrow-to-headers-or-head):
+	Ignore mail-header-separator in the body.
 
 2007-05-23  Katsumi Yamaoka  <[email protected]>
 
@@ -2308,7 +2469,7 @@
 	* dgnushack.el: Autoload ad-add-advice for XEmacs.  bbdb-com.el that
 	spam.el loads uses it in the compiled defadvice form.
 
-2007-05-12  Micha,Ak(Bl Cadilhac  <[email protected]>
+2007-05-12  Michaël Cadilhac  <[email protected]>
 
 	* gnus-sum.el (gnus-articles-to-read)
 	(gnus-summary-insert-old-articles): Don't truncate group name for
@@ -2319,7 +2480,7 @@
 	* gnus-sum.el (gnus-simplify-subject-fully): Use
 	`truncate-string-to-width' instead.
 
-2007-05-11  Micha,Ak(Bl Cadilhac  <[email protected]>
+2007-05-11  Michaël Cadilhac  <[email protected]>
 
 	* gnus-sum.el (gnus-summary-next-group-on-exit): New variable.  Tell
 	if, on summary exit, the next group has to be selected.
@@ -2669,7 +2830,7 @@
 
 	* smiley.el (smiley-regexp-alist): Add "dead" smiley.
 
-2007-02-14  Micha,Ak(Bl Cadilhac  <[email protected]>
+2007-02-14  Michaël Cadilhac  <[email protected]>
 
 	* nntp.el (nntp-send-command): Don't wait for echoes when
 	nntp-open-ssl-stream is used.
@@ -2907,7 +3068,7 @@
 
 	* gnus-cite.el (gnus-message-citation-mode): Don't define in XEmacs.
 
-2006-12-29  Jouni K. Sepp,Ad(Bnen  <[email protected]>
+2006-12-29  Jouni K. Seppänen  <[email protected]>
 
 	* nnimap.el (nnimap-expunge-search-string): Mention
 	nnimap-search-uids-not-since-is-evil in docstring.
@@ -3066,7 +3227,7 @@
 	* gnus-sum.el (gnus-sort-threads, gnus-summary-limit-children):
 	Use `max' to avoid the value of `max-lisp-eval-depth' decreasing.
 
-2006-12-04  Jouni K. Sepp,Ad(Bnen  <[email protected]>
+2006-12-04  Jouni K. Seppänen  <[email protected]>
 
 	* mm-url.el (mm-url-predefined-programs): Call curl with correct
 	options.
@@ -3682,7 +3843,7 @@
 
 	* pgg-def.el (pgg-truncate-key-identifier): Truncate the key ID to 8
 	letters from the end.  Thanks to "David Smith" <[email protected]> and
-	[email protected] (Andreas V,Av(Bgele).
+	[email protected] (Andreas Vögele).
 
 	FIXME: Use `tiny change'?
 
@@ -4035,7 +4196,7 @@
 
 	* nnrss.el (nnrss-check-group): Bind hash-index.
 
-2006-05-23  Micha,Ak(Bl Cadilhac  <[email protected]>
+2006-05-23  Michaël Cadilhac  <[email protected]>
 
 	* nnrss.el (nnrss-check-group): Use the md5sum of the whole RSS item as
 	its hash index.  Store this hash in `nnrss-group-data'.
@@ -4448,7 +4609,7 @@
 	* gnus-topic.el (gnus-topic-display-missing-topic): Skip past
 	groups in the parent topic.
 
-2006-04-16  Jo,Ac(Bo Cachopo  <[email protected]>  (tiny change)
+2006-04-16  João Cachopo  <[email protected]>  (tiny change)
 
 	* spam.el (spam-necessary-extra-headers): Add X-CRM114-Status.
 	(spam-extra-header-to-number): Return the CRM114 number as a
@@ -4637,7 +4798,7 @@
 	* gnus-art.el (gnus-button-valid-localpart-regexp): Exclude `@'.
 	(gnus-article-browse-delete-temp): Add :version.
 
-2006-04-11  Arne J,Ax(Brgensen  <[email protected]>
+2006-04-11  Arne Jørgensen  <[email protected]>
 
 	* gnus-sieve.el (gnus-sieve-generate): Delete from the start of
 	the sieve region.
@@ -5271,7 +5432,7 @@
 	Lisp error; give up parsing of parameters if it failed in
 	extracting type.
 
-2006-02-14  Arne J,Ax(Brgensen  <[email protected]>
+2006-02-14  Arne Jørgensen  <[email protected]>
 
 	* smime.el (smime-cert-by-ldap-1): Fix bug where
 	`smime-ldap-search' returns results without userCertificates.
@@ -6260,6 +6421,10 @@
 
 	* mml.el (mml-preview): Use it; doc fix.
 
+2005-10-30  Chong Yidong  <[email protected]>
+
+	* imap.el (imap-open): Handle case where buffer is a buffer object.
+
 2005-10-29  Romain Francoise  <[email protected]>
 
 	* message.el (message-fix-before-sending): Fix comment.
@@ -6283,7 +6448,7 @@
 	whitespace removed in revision 7.8.  Use concatenated string to
 	protect trailing whitespace.
 
-2005-10-27  Jouni K. Sepp,Ad(Bnen  <[email protected]>
+2005-10-27  Jouni K. Seppänen  <[email protected]>
 
 	* nnimap.el (nnimap-search-uids-not-since-is-evil): Add variable.
 	(nnimap-request-expire-articles): Use it to avoid sending 'UID
@@ -6296,7 +6461,7 @@
 	* gnus-group.el (gnus-group-compact-group): Invalidate original
 	article buffer.
 	* gnus-srvr.el (gnus-server-compact-server): Ditto.
-	* nnml.el (nnml-request-compact-group): handle self Xref: field in
+	* nnml.el (nnml-request-compact-group): Handle self Xref: field in
 	NOV database and in article itself.
 	Invalidate article backlog.
 
@@ -6314,7 +6479,6 @@
 	* message.el (message-display-completion-list): New function.
 	(message-expand-group): Use it; make sure the Completions buffer
 	is modifiable.
-
 2005-10-23  Chong Yidong  <[email protected]>
 
 	* gnus-sum.el (gnus-ignored-from-addresses): Handle case where
@@ -6574,7 +6738,7 @@
 
 	* message.el (message-idna-to-ascii-rhs-1): Reformat.
 
-2005-09-27  Arne J,Ax(Brgensen  <[email protected]>
+2005-09-27  Arne Jørgensen  <[email protected]>
 
 	* message.el (message-remove-duplicates): New function.
 	Implementation borrowed from `gnus-remove-duplicates'.
@@ -6796,8 +6960,7 @@
 
 2005-09-05  Reiner Steib  <[email protected]>
 
-	* message.el (message-tab-body-function): Fixed mismatched custom
-	type.
+	* message.el (message-tab-body-function): Fix mismatched custom type.
 
 	* gnus.el (gnus-group-change-level-function): Ditto.
 
@@ -7226,7 +7389,7 @@
 	* mm-extern.el (mm-extern-local-file, mm-inline-external-body):
 	* pop3.el (pop3-user): Don't use `format' on `error' arguments.
 
-2005-06-16  Arne J,Ax(Brgensen  <[email protected]>
+2005-06-16  Arne Jørgensen  <[email protected]>
 
 	* smime.el (smime-cert-by-ldap-1): Detect PEM format without
 	header by looking for magic "MII" at the beginnig.
@@ -7451,7 +7614,7 @@
 	* smime.el (smime-cert-by-ldap-1): Don't use
 	replace-regexp-in-string.
 
-2005-05-31  Arne J,Ax(Brgensen  <[email protected]>
+2005-05-31  Arne Jørgensen  <[email protected]>
 
 	* smime-ldap.el (smime-ldap-search): Add compatibility for XEmacs.
 
@@ -7894,7 +8057,7 @@
 
 	* nnimap.el (nnimap-retrieve-headers-from-server): Fix last change.
 
-2005-03-10  Arne J,Ax(Brgensen  <[email protected]>  (tiny change)
+2005-03-10  Arne Jørgensen  <[email protected]>  (tiny change)
 
 	* nnimap.el (nnimap-retrieve-headers-from-server): Fix off-by-one flaw.
 
@@ -8009,7 +8172,7 @@
 	* gnus-sum.el (gnus-summary-exit): Move point after displaying the
 	buffer, so it moves the window's cursor.
 
-2005-02-26  Arne J,Ax(Brgensen  <[email protected]>
+2005-02-26  Arne Jørgensen  <[email protected]>
 
 	* mm-decode.el (mm-dissect-buffer): Pass the from field on to
 	`mm-dissect-multipart' and receive the from field as an (optional)
@@ -8045,12 +8208,12 @@
 2005-02-22  Simon Josefsson  <[email protected]>
 
 	* encrypt.el (encrypt-password-cache-expiry): Remove (use
-	`password-cache-expiry' instead).  Reported by Arne J,Ax(Brgensen
+	`password-cache-expiry' instead).  Reported by Arne Jørgensen
 	<[email protected]>.
 	(encrypt): Add password-cache and password-cache-expiry as group
 	members.
 
-2005-02-22  Arne J,Ax(Brgensen  <[email protected]>
+2005-02-22  Arne Jørgensen  <[email protected]>
 
 	* smime.el (smime-ldap-host-list): Doc fix.
 	(smime-ask-passphrase): Use `password-read-and-add' to read (and
@@ -8070,7 +8233,7 @@
 
 	* mml.el (mml-parse-1): Use them.
 
-2005-02-21  Arne J,Ax(Brgensen  <[email protected]>
+2005-02-21  Arne Jørgensen  <[email protected]>
 
 	* nnrss.el (nnrss-verbose): Removed.
 	(nnrss-request-group): Use `nnheader-message' instead.
@@ -8134,7 +8297,7 @@
 	mml-smime-get-dns-ldap.
 	(mml-smime-encrypt-query): Use new function.  Default to ldap.
 
-2005-02-14  Arne J,Ax(Brgensen  <[email protected]>
+2005-02-14  Arne Jørgensen  <[email protected]>
 
 	* smime.el: Require smime-ldap.
 	(smime-ldap-host-list): New variable.
@@ -8402,8 +8565,8 @@
 
 2005-01-03  Reiner Steib  <[email protected]>
 
-	* gnus-score.el (gnus-decay-scores, gnus-score-load-file): Allow
-	to apply decay on score files matching a regexp.
+	* gnus-score.el (gnus-decay-scores, gnus-score-load-file):
+	Allow to apply decay on score files matching a regexp.
 
 2004-12-30  Katsumi Yamaoka  <[email protected]>
 
@@ -8781,7 +8944,7 @@
 
 	* gnus-art.el (gnus-header-button-alist): Handle URLs in OpenPGP:
 	headers separately.
-	(gnus-button-openpgp): New function, inspired by Jochen K,A|(Bpper
+	(gnus-button-openpgp): New function, inspired by Jochen Küpper
 	<[email protected]>.
 
 2004-11-14  Reiner Steib  <[email protected]>
@@ -9870,8 +10033,7 @@
 
 2004-08-26  Katsumi Yamaoka  <[email protected]>
 
-	* nndoc.el (nndoc-type-alist): Fix regexp in the rfc822-forward
-	entry.
+	* nndoc.el (nndoc-type-alist): Fix regexp in the rfc822-forward entry.
 
 	* gnus-group.el (gnus-group-line-format-alist): Convert the value
 	of gnus-tmp-news-method into string under XEmacs.  It will be
@@ -9885,8 +10047,8 @@
 	(gnus-pp): New function.
 	(gnus-pp-to-string): New function.
 
-	* gnus-cus.el (gnus-agent-cat-prepare-category-field): Replace
-	pp-to-string with gnus-pp-to-string.
+	* gnus-cus.el (gnus-agent-cat-prepare-category-field):
+	Replace pp-to-string with gnus-pp-to-string.
 	* gnus-eform.el (gnus-edit-form): Replace pp with gnus-pp.
 	* gnus-group.el (gnus-group-make-kiboze-group): Ditto.
 	* gnus-msg.el (gnus-debug): Ditto.
@@ -9900,13 +10062,13 @@
 
 2004-08-23  Katsumi Yamaoka  <[email protected]>
 
-	* gnus-art.el (article-display-face, article-display-x-face): Use
-	buffer-read-only.
+	* gnus-art.el (article-display-face, article-display-x-face):
+	Use buffer-read-only.
 
 2004-08-22  Katsumi Yamaoka  <[email protected]>
 
-	* gnus-art.el (article-hide-list-identifiers): Bind
-	inhibit-read-only as t.
+	* gnus-art.el (article-hide-list-identifiers):
+	Bind inhibit-read-only as t.
 
 2004-08-22  Reiner Steib  <[email protected]>
 
@@ -10509,7 +10671,7 @@
 	(spam-mark-junk-as-spam-routine): Use it.  Allow to disable
 	assigning the spam-mark to new messages.
 
-2004-05-26  Adam Sj,Ax(Bgren  <[email protected]>  (tiny change)
+2004-05-26  Adam Sjøgren  <[email protected]>  (tiny change)
 
 	(spam-ham-copy-or-move-routine): Don't declare `todo' twice.
 
@@ -10650,7 +10812,7 @@
 	(spam-crm114-unregister-spam-routine)
 	(spam-crm114-register-ham-routine)
 	(spam-crm114-unregister-ham-routine): Add CRM114 support.  From
-	[email protected] (Adam Sj,Ax(Bgren).
+	[email protected] (Adam Sjøgren).
 
 	* gnus.el: Add spam-use-crm114.
 
@@ -11042,59 +11204,37 @@
 
 2004-04-25  Jesper Harder  <[email protected]>
 
-	* spam-stat.el (spam-stat-score-buffer): Simplify mapcar usage.
-	Use mapc when appropriate.
-
-	* sieve-manage.el (sieve-manage-open): do.
-
-	* nnweb.el (nnweb-insert-html): do.
-
+	* sieve-manage.el (sieve-manage-open):
+	* nnweb.el (nnweb-insert-html):
 	* nnvirtual.el (nnvirtual-catchup-group, nnvirtual-partition-sequence)
-	(nnvirtual-partition-sequence, nnvirtual-create-mapping): do.
-
-	* nnspool.el (nnspool-request-group): do.
-
+	(nnvirtual-partition-sequence, nnvirtual-create-mapping):
+	* nnspool.el (nnspool-request-group):
 	* nnrss.el (nnrss-opml-export, nnrss-find-el, nnrss-order-hrefs):
-	do.
-
-	* nnml.el (nnml-request-update-info): do.
-
+	* nnml.el (nnml-request-update-info):
 	* nnmh.el (nnmh-request-group, nnmh-request-list-1, nnmh-active-number)
-	(nnmh-request-create-group, nnmh-update-gnus-unreads): do.
-
+	(nnmh-request-create-group, nnmh-update-gnus-unreads):
 	* nnimap.el (nnimap-request-close, nnimap-acl-edit)
-	(nnimap-request-set-mark): do.
-
-	* nnfolder.el (nnfolder-request-update-info): do.
-
+	(nnimap-request-set-mark):
+	* nnfolder.el (nnfolder-request-update-info):
 	* mm-view.el (mm-pkcs7-signed-magic, mm-pkcs7-enveloped-magic):
-	do.
-
-	* mml.el (mml-destroy-buffers, mml-compute-boundary-1): do.
-
-	* gnus-uu.el (gnus-uu-find-articles-matching): do.
-
+	* mml.el (mml-destroy-buffers, mml-compute-boundary-1):
+	* gnus-uu.el (gnus-uu-find-articles-matching):
 	* gnus-topic.el (gnus-topic-check-topology, gnus-topic-remove-group):
-	do.
-
 	* gnus-sum.el (gnus-summary-fetch-faq, gnus-read-move-group-name):
-	do.
-
-	* gnus-score.el (gnus-score-load-file, gnus-sort-score-files): do.
-
-	* gnus-nocem.el (gnus-nocem-scan-groups): do.
-
-	* gnus-int.el (gnus-start-news-server): do.
-
+	* gnus-score.el (gnus-score-load-file, gnus-sort-score-files):
+	* gnus-nocem.el (gnus-nocem-scan-groups):
+	* gnus-int.el (gnus-start-news-server):
 	* gnus-group.el (gnus-group-make-kiboze-group)
-	(gnus-group-browse-foreign-server): do.
+	(gnus-group-browse-foreign-server):
+	* spam-stat.el (spam-stat-score-buffer): Simplify mapcar usage.
+	Use mapc when appropriate.
 
 2004-04-22  Teodor Zlatanov  <[email protected]>
 
 	FIXME: Make separate entries for each person.
 
 	From Dan Christensen <[email protected]>, [email protected] (Adam
-	Sj,Ax(Bgren), Wes Hardaker <[email protected]>, and Michael Shields
+	Sjøgren), Wes Hardaker <[email protected]>, and Michael Shields
 	<[email protected]>:
 
 	* spam.el (spam-necessary-extra-headers): Get the extra headers we
@@ -11107,14 +11247,14 @@
 	header.
 	(spam-summary-score): Add function to  get a numeric score from the
 	headers.
-	(spam-generic-score): Fixed function doc, was in wrong place.
+	(spam-generic-score): Fix function doc, was in wrong place.
 	(spam-initialize): Take symbols when it's run, and install the
 	extra headers that spam-necessary-extra-headers thinks we need.
 
 2004-04-21  Teodor Zlatanov  <[email protected]>
 
 	* spam.el (spam-summary-prepare-exit): Add logic and message fix.
-	Reported by [email protected] (Johan Bockg,Ae(Brd).
+	Reported by [email protected] (Johan Bockgård).
 
 2004-04-17  Jesper Harder  <[email protected]>
 
@@ -11123,8 +11263,8 @@
 	(gnus-article-get-xrefs, gnus-summary-best-group)
 	(gnus-summary-next-article, gnus-summary-enter-digest-group)
 	(gnus-summary-set-bookmark, gnus-offer-save-summaries)
-	(gnus-summary-update-info, gnus-kill-or-deaden-summary): Use
-	with-current-buffer.
+	(gnus-summary-update-info, gnus-kill-or-deaden-summary):
+	Use with-current-buffer.
 
 2004-04-16  Teodor Zlatanov  <[email protected]>
 
@@ -11278,15 +11418,15 @@
 	(gnus-group-list-active): Let the agent store a server's active
 	list if currently plugged.
 
-	* gnus-int.el (gnus-request-delete-group): Use
-	gnus-cache-delete-group and gnus-agent-delete-group to keep the
+	* gnus-int.el (gnus-request-delete-group):
+	Use gnus-cache-delete-group and gnus-agent-delete-group to keep the
 	local disk in sync with the server.
-	(gnus-request-rename-group): Use
-	gnus-cache-rename-group and gnus-agent-rename-group to keep the
+	(gnus-request-rename-group):
+	Use gnus-cache-rename-group and gnus-agent-rename-group to keep the
 	local disk in sync with the server.
 
-	* gnus-start.el (gnus-get-unread-articles): Cosmetic
-	simplification to logic.
+	* gnus-start.el (gnus-get-unread-articles):
+	Cosmetic simplification to logic.
 
 	* gnus-util.el (gnus-rename-file): New function.
 
@@ -12257,7 +12397,7 @@
 
 	* gnus-score.el (gnus-score-edit-all-score): Fix prototype.
 	Invoke gnus-score-mode.  Reported by
-	[email protected] (Johan Bockg,Ae(Brd).
+	[email protected] (Johan Bockgård).
 
 	* gnus-range.el (gnus-compress-sequence): Doc fix.  Suggested by
 	Jim Blandy <[email protected]> (tiny change).
@@ -12292,8 +12432,7 @@
 
 2004-01-11  Jesper Harder  <[email protected]>
 
-	* gnus.sum.el (gnus-remove-odd-characters): Don't cons two new
-	strings.
+	* gnus.sum.el (gnus-remove-odd-characters): Don't cons two new strings.
 
 	* mm-util.el (mm-subst-char-in-string): Support inplace.
 
@@ -12302,24 +12441,11 @@
 
 2004-01-10  Jesper Harder  <[email protected]>
 
-	* gnus-start.el (gnus-subscribe-newsgroup, gnus-start-draft-setup)
-	(gnus-group-change-level, gnus-kill-newsgroup)
-	(gnus-check-bogus-newsgroups, gnus-get-unread-articles-in-group)
-	(gnus-get-unread-articles, gnus-make-articles-unread)
-	(gnus-make-ascending-articles-unread): Use accessor
-	macros (gnus-group-entry, gnus-group-unread, gnus-info-marks etc.)
-	to get group information for improved readability.
-
-	* gnus-srvr.el (gnus-browse-unsubscribe-group): do.
-
-	* gnus-soup.el (gnus-soup-group-brew): do.
-
-	* gnus-msg.el (gnus-put-message): do.
-
-	* gnus-move.el (gnus-group-move-group-to-server): do.
-
-	* gnus-kill.el (gnus-batch-score): do.
-
+	* gnus-srvr.el (gnus-browse-unsubscribe-group):
+	* gnus-soup.el (gnus-soup-group-brew):
+	* gnus-msg.el (gnus-put-message):
+	* gnus-move.el (gnus-group-move-group-to-server):
+	* gnus-kill.el (gnus-batch-score):
 	* gnus-group.el (gnus-group-prepare-flat, gnus-group-delete-group)
 	(gnus-group-update-group-line, gnus-group-insert-group-line-info)
 	(gnus-group-update-group, gnus-group-read-group)
@@ -12329,24 +12455,25 @@
 	(gnus-group-sort-by-unread, gnus-group-catchup)
 	(gnus-group-unsubscribe-group, gnus-group-kill-group)
 	(gnus-group-yank-group, gnus-group-set-info)
-	(gnus-group-list-groups): do.
-
-	* gnus.el (gnus-generate-new-group-name): do.
-
-	* gnus-delay.el (gnus-delay-send-queue): do.
-
-	* nnvirtual.el (nnvirtual-catchup-group): do.
-
+	(gnus-group-list-groups):
+	* gnus.el (gnus-generate-new-group-name):
+	* gnus-delay.el (gnus-delay-send-queue):
+	* nnvirtual.el (nnvirtual-catchup-group):
 	* nnkiboze.el (nnkiboze-generate-group, nnkiboze-generate-group):
-	do.
-
 	* gnus-topic.el (gnus-topic-find-groups, gnus-topic-clean-alist)
-	(gnus-group-prepare-topics, gnus-topic-check-topology): do.
-
+	(gnus-group-prepare-topics, gnus-topic-check-topology):
 	* gnus-sum.el (gnus-update-read-articles, gnus-select-newsgroup)
 	(gnus-mark-xrefs-as-read, gnus-compute-read-articles)
 	(gnus-summary-walk-group-buffer, gnus-summary-move-article)
-	(gnus-group-make-articles-read): do.
+	(gnus-group-make-articles-read):
+	* gnus-start.el (gnus-subscribe-newsgroup, gnus-start-draft-setup)
+	(gnus-group-change-level, gnus-kill-newsgroup)
+	(gnus-check-bogus-newsgroups, gnus-get-unread-articles-in-group)
+	(gnus-get-unread-articles, gnus-make-articles-unread)
+	(gnus-make-ascending-articles-unread): Use accessor
+	macros (gnus-group-entry, gnus-group-unread, gnus-info-marks etc.)
+	to get group information for improved readability.
+
 
 2004-01-09  Jesper Harder  <[email protected]>
 
@@ -12613,7 +12740,7 @@
 
 	* nnheaderxm.el: Remove definition of run-at-time.
 
-2004-01-05  Karl Pfl,Ad(Bsterer  <[email protected]>  (tiny change)
+2004-01-05  Karl Pflästerer  <[email protected]>  (tiny change)
 
 	* mml.el (mml-minibuffer-read-disposition): Show attachment type
 	in prompt.
@@ -12932,7 +13059,7 @@
   Boston, MA 02110-1301, USA.
 
 ;; Local Variables:
-;; coding: iso-2022-7bit
+;; coding: utf-8
 ;; fill-column: 79
 ;; add-log-time-zone-rule: t
 ;; End:
Index: ChangeLog.2
diff -u gnus/lisp/ChangeLog.2:7.19 gnus/lisp/ChangeLog.2:7.20
--- ChangeLog.2:7.19	Sun Jan 20 06:23:57 2008
+++ ChangeLog.2	Thu Apr 24 06:19:20 2008
@@ -4464,22 +4464,22 @@
 	performed by gnus-agent-request-article.
 	* gnus-cus.el (gnus-agent-parameters): New variable.  List of
 	customizable group/topic parameters that regulate the agent.
-	(gnus-group-customize): Uses gnus-agent-parameters.  Replaced
+	(gnus-group-customize): Uses gnus-agent-parameters.  Replace
 	kill-buffer with gnus-kill-buffer to remove the killed buffer from
 	the list of gnus buffers.
 	(gnus-trim-whitespace): Removes leading and trailing whitespace
 	from multiline strings.
-	(gnus-agent-cat-prepare-category-field,
-	gnus-agent-customize-category): Constructs a category
+	(gnus-agent-cat-prepare-category-field)
+	(gnus-agent-customize-category): Constructs a category
 	customization buffer.
-	* gnus-int.el (gnus-retrieve-headers,
-	gnus-request-expire-articles): No longer checks gnus-agent-cache
+	* gnus-int.el (gnus-retrieve-headers)
+	(gnus-request-expire-articles): No longer checks gnus-agent-cache
 	as it is handled internally by the agent.
 	(gnus-request-head, gnus-request-body): Conditional checks
 	surrounding gnus-agent-request-article removed; now performed by
 	gnus-agent-request-article.
 
-	* gnus-start.el (): Added defvar statements to resolve compilation
+	* gnus-start.el (): Add defvar statements to resolve compilation
 	warnings.
 	(gnus-long-file-names): New function.  Isolates platform dependent
 	msdos-long-file-names.
@@ -4488,17 +4488,17 @@
 	errors when .newsrc.eld is huge.
 	(gnus-save-newsrc-file): Uses new
 	gnus-save-startup-file-via-temp-buffer.
-	(gnus-gnus-to-quick-newsrc-format): Rewritten to write to
+	(gnus-gnus-to-quick-newsrc-format): Rewrite to write to
 	standard-output.
-	(gnus-display-time-event-handler): Changed to alias from a defun
+	(gnus-display-time-event-handler): Change to alias from a defun
 	to avoid a compile-time warning when display-time-event-handler is
 	not defined.
-	* gnus-util.el (gnus-with-output-to-file): New macro.  Binds
-	standard-output such that prin1 and princ will write directly to a
-	file.
+	* gnus-util.el (gnus-with-output-to-file): New macro.
+	Binds standard-output such that prin1 and princ will write directly
+	to a file.
 
-	* gnus.el (gnus-agent-cache): Expanded documentation.
-	(gnus-summary-high-undownloaded-face): Removed second bold keyword
+	* gnus.el (gnus-agent-cache): Expand documentation.
+	(gnus-summary-high-undownloaded-face): Remove second bold keyword
 	so that this face is actually bold.
 
 	* nnkiboze.el (nnkiboze-request-article): Only use the cache when
@@ -9162,8 +9162,8 @@
 
 2002-04-19  Jesper Harder  <[email protected]>
 
-	* nnkiboze.el (nnkiboze-request-scan): Call
-	nnkiboze-possibly-change-group.
+	* nnkiboze.el (nnkiboze-request-scan):
+	Call nnkiboze-possibly-change-group.
 	(nnkiboze-generate-group): Use mm-with-unibyte to avoid encoding
 	problems.
 	(nnkiboze-generate-group): Set newsrc to the *highest* article
Index: binhex.el
diff -u gnus/lisp/binhex.el:7.13 gnus/lisp/binhex.el:7.14
--- binhex.el:7.13	Sun Jan 20 06:23:57 2008
+++ binhex.el	Thu Apr 24 06:19:21 2008
@@ -222,8 +222,8 @@
 	(save-excursion
 	  (goto-char start)
 	  (when (re-search-forward binhex-begin-line end t)
-	    (let (default-enable-multibyte-characters)
-	      (setq work-buffer (generate-new-buffer " *binhex-work*")))
+            (setq work-buffer (generate-new-buffer " *binhex-work*"))
+            (with-current-buffer work-buffer (set-buffer-multibyte nil))
 	    (beginning-of-line)
 	    (setq bits 0 counter 0)
 	    (while tmp
@@ -329,5 +329,5 @@
 
 (provide 'binhex)
 
-;;; arch-tag: 8476badd-1e76-4f1d-a640-f9a38c72eed8
+;; arch-tag: 8476badd-1e76-4f1d-a640-f9a38c72eed8
 ;;; binhex.el ends here
Index: canlock.el
diff -u gnus/lisp/canlock.el:7.17 gnus/lisp/canlock.el:7.18
--- canlock.el:7.17	Sun Jan 20 06:23:57 2008
+++ canlock.el	Thu Apr 24 06:19:20 2008
@@ -249,5 +249,5 @@
 
 (provide 'canlock)
 
-;;; arch-tag: 033c4f09-b9f1-459d-bd0d-254430283f78
+;; arch-tag: 033c4f09-b9f1-459d-bd0d-254430283f78
 ;;; canlock.el ends here
Index: compface.el
diff -u gnus/lisp/compface.el:7.16 gnus/lisp/compface.el:7.17
--- compface.el:7.16	Sun Jan 20 06:23:57 2008
+++ compface.el	Thu Apr 24 06:19:21 2008
@@ -33,6 +33,7 @@
 GNU/Linux system these might be in packages with names like `compface'
 or `faces-xface' and `netpbm' or `libgr-progs', for instance."
   (with-temp-buffer
+    (unless (featurep 'xemacs) (set-buffer-multibyte nil))
     (insert face)
     (let ((coding-system-for-read 'raw-text)
 	  ;; At least "icontopbm" doesn't work with Windows because
@@ -59,5 +60,5 @@
 
 (provide 'compface)
 
-;;; arch-tag: f9c78e84-98c0-4142-9682-8ba4cf4c3441
+;; arch-tag: f9c78e84-98c0-4142-9682-8ba4cf4c3441
 ;;; compface.el ends here
Index: deuglify.el
diff -u gnus/lisp/deuglify.el:7.18 gnus/lisp/deuglify.el:7.19
--- deuglify.el:7.18	Sun Feb 24 16:39:37 2008
+++ deuglify.el	Thu Apr 24 06:19:21 2008
@@ -478,5 +478,5 @@
 ;; coding: iso-8859-1
 ;; End:
 
-;;; arch-tag: 5f895cc9-51a9-487c-b42e-28844d79eb73
+;; arch-tag: 5f895cc9-51a9-487c-b42e-28844d79eb73
 ;;; deuglify.el ends here
Index: dig.el
diff -u gnus/lisp/dig.el:7.11 gnus/lisp/dig.el:7.12
--- dig.el:7.11	Sun Jan 20 06:23:57 2008
+++ dig.el	Thu Apr 24 06:19:20 2008
@@ -192,5 +192,5 @@
 
 (provide 'dig)
 
-;;; arch-tag: 1d61726e-9400-4013-9ae7-4035e0c7f7d6
+;; arch-tag: 1d61726e-9400-4013-9ae7-4035e0c7f7d6
 ;;; dig.el ends here
Index: dns.el
diff -u gnus/lisp/dns.el:7.21 gnus/lisp/dns.el:7.22
--- dns.el:7.21	Sun Jan 20 06:23:57 2008
+++ dns.el	Thu Apr 24 06:19:21 2008
@@ -102,11 +102,11 @@
   (dns-write-bytes 0))
 
 (defun dns-read-string-name (string buffer)
-  (let (default-enable-multibyte-characters)
-    (with-temp-buffer
-      (insert string)
-      (goto-char (point-min))
-      (dns-read-name buffer))))
+  (with-temp-buffer
+    (set-buffer-multibyte nil)
+    (insert string)
+    (goto-char (point-min))
+    (dns-read-name buffer)))
 
 (defun dns-read-name (&optional buffer)
   (let ((ended nil)
@@ -137,6 +137,7 @@
   "Write a DNS packet according to SPEC.
 If TCP-P, the first two bytes of the package with be the length field."
   (with-temp-buffer
+    (set-buffer-multibyte nil)
     (dns-write-bytes (dns-get 'id spec) 2)
     (dns-write-bytes
      (logior
@@ -186,72 +187,72 @@
     (buffer-string)))
 
 (defun dns-read (packet)
-  (let (default-enable-multibyte-characters)
-    (with-temp-buffer
-      (let ((spec nil)
-            queries answers authorities additionals)
-        (insert packet)
-        (goto-char (point-min))
-        (push (list 'id (dns-read-bytes 2)) spec)
-        (let ((byte (dns-read-bytes 1)))
-          (push (list 'response-p (if (zerop (logand byte (lsh 1 7))) nil t))
-                spec)
-          (let ((opcode (logand byte (lsh 7 3))))
-            (push (list 'opcode
-                        (cond ((eq opcode 0) 'query)
-                              ((eq opcode 1) 'inverse-query)
-                              ((eq opcode 2) 'status)))
-                  spec))
-          (push (list 'authoritative-p (if (zerop (logand byte (lsh 1 2)))
-                                           nil t)) spec)
-          (push (list 'truncated-p (if (zerop (logand byte (lsh 1 2))) nil t))
-                spec)
-          (push (list 'recursion-desired-p
-                      (if (zerop (logand byte (lsh 1 0))) nil t)) spec))
-        (let ((rc (logand (dns-read-bytes 1) 15)))
-          (push (list 'response-code
-                      (cond
-                       ((eq rc 0) 'no-error)
-                       ((eq rc 1) 'format-error)
-                       ((eq rc 2) 'server-failure)
-                       ((eq rc 3) 'name-error)
-                       ((eq rc 4) 'not-implemented)
-                       ((eq rc 5) 'refused)))
+  (with-temp-buffer
+    (set-buffer-multibyte nil)
+    (let ((spec nil)
+          queries answers authorities additionals)
+      (insert packet)
+      (goto-char (point-min))
+      (push (list 'id (dns-read-bytes 2)) spec)
+      (let ((byte (dns-read-bytes 1)))
+        (push (list 'response-p (if (zerop (logand byte (lsh 1 7))) nil t))
+              spec)
+        (let ((opcode (logand byte (lsh 7 3))))
+          (push (list 'opcode
+                      (cond ((eq opcode 0) 'query)
+                            ((eq opcode 1) 'inverse-query)
+                            ((eq opcode 2) 'status)))
                 spec))
-        (setq queries (dns-read-bytes 2))
-        (setq answers (dns-read-bytes 2))
-        (setq authorities (dns-read-bytes 2))
-        (setq additionals (dns-read-bytes 2))
-        (let ((qs nil))
-          (dotimes (i queries)
+        (push (list 'authoritative-p (if (zerop (logand byte (lsh 1 2)))
+                                         nil t)) spec)
+        (push (list 'truncated-p (if (zerop (logand byte (lsh 1 2))) nil t))
+              spec)
+        (push (list 'recursion-desired-p
+                    (if (zerop (logand byte (lsh 1 0))) nil t)) spec))
+      (let ((rc (logand (dns-read-bytes 1) 15)))
+        (push (list 'response-code
+                    (cond
+                     ((eq rc 0) 'no-error)
+                     ((eq rc 1) 'format-error)
+                     ((eq rc 2) 'server-failure)
+                     ((eq rc 3) 'name-error)
+                     ((eq rc 4) 'not-implemented)
+                     ((eq rc 5) 'refused)))
+              spec))
+      (setq queries (dns-read-bytes 2))
+      (setq answers (dns-read-bytes 2))
+      (setq authorities (dns-read-bytes 2))
+      (setq additionals (dns-read-bytes 2))
+      (let ((qs nil))
+        (dotimes (i queries)
+          (push (list (dns-read-name)
+                      (list 'type (dns-inverse-get (dns-read-bytes 2)
+                                                   dns-query-types))
+                      (list 'class (dns-inverse-get (dns-read-bytes 2)
+                                                    dns-classes)))
+                qs))
+        (push (list 'queries qs) spec))
+      (dolist (slot '(answers authorities additionals))
+        (let ((qs nil)
+              type)
+          (dotimes (i (symbol-value slot))
             (push (list (dns-read-name)
-                        (list 'type (dns-inverse-get (dns-read-bytes 2)
-                                                     dns-query-types))
+                        (list 'type
+                              (setq type (dns-inverse-get (dns-read-bytes 2)
+                                                          dns-query-types)))
                         (list 'class (dns-inverse-get (dns-read-bytes 2)
-                                                      dns-classes)))
+                                                      dns-classes))
+                        (list 'ttl (dns-read-bytes 4))
+                        (let ((length (dns-read-bytes 2)))
+                          (list 'data
+                                (dns-read-type
+                                 (buffer-substring
+                                  (point)
+                                  (progn (forward-char length) (point)))
+                                 type))))
                   qs))
-          (push (list 'queries qs) spec))
-        (dolist (slot '(answers authorities additionals))
-          (let ((qs nil)
-                type)
-            (dotimes (i (symbol-value slot))
-              (push (list (dns-read-name)
-                          (list 'type
-                                (setq type (dns-inverse-get (dns-read-bytes 2)
-                                                            dns-query-types)))
-                          (list 'class (dns-inverse-get (dns-read-bytes 2)
-                                                        dns-classes))
-                          (list 'ttl (dns-read-bytes 4))
-                          (let ((length (dns-read-bytes 2)))
-                            (list 'data
-                                  (dns-read-type
-                                   (buffer-substring
-                                    (point)
-                                    (progn (forward-char length) (point)))
-                                   type))))
-                    qs))
-            (push (list slot qs) spec)))
-        (nreverse spec)))))
+          (push (list slot qs) spec)))
+      (nreverse spec))))
 
 (defun dns-read-int32 ()
   ;; Full 32 bit Integers can't be handled by Emacs.  If we use
@@ -263,40 +264,40 @@
   (let ((buffer (current-buffer))
 	(point (point)))
     (prog1
-        (let (default-enable-multibyte-characters)
-          (with-temp-buffer
-            (insert string)
-            (goto-char (point-min))
-            (cond
-             ((eq type 'A)
-              (let ((bytes nil))
-                (dotimes (i 4)
-                  (push (dns-read-bytes 1) bytes))
-                (mapconcat 'number-to-string (nreverse bytes) ".")))
-             ((eq type 'AAAA)
-              (let (hextets)
-                (dotimes (i 8)
-                  (push (dns-read-bytes 2) hextets))
-                (mapconcat (lambda (n) (format "%x" n))
-                           (nreverse hextets) ":")))
-             ((eq type 'SOA)
-              (list (list 'mname (dns-read-name buffer))
-                    (list 'rname (dns-read-name buffer))
-                    (list 'serial (dns-read-int32))
-                    (list 'refresh (dns-read-int32))
-                    (list 'retry (dns-read-int32))
-                    (list 'expire (dns-read-int32))
-                    (list 'minimum (dns-read-int32))))
-             ((eq type 'SRV)
-              (list (list 'priority (dns-read-bytes 2))
-                    (list 'weight (dns-read-bytes 2))
-                    (list 'port (dns-read-bytes 2))
-                    (list 'target (dns-read-name buffer))))
-             ((eq type 'MX)
-              (cons (dns-read-bytes 2) (dns-read-name buffer)))
-             ((or (eq type 'CNAME) (eq type 'NS) (eq type 'PTR))
-              (dns-read-string-name string buffer))
-             (t string))))
+        (with-temp-buffer
+          (set-buffer-multibyte nil)
+          (insert string)
+          (goto-char (point-min))
+          (cond
+           ((eq type 'A)
+            (let ((bytes nil))
+              (dotimes (i 4)
+                (push (dns-read-bytes 1) bytes))
+              (mapconcat 'number-to-string (nreverse bytes) ".")))
+           ((eq type 'AAAA)
+            (let (hextets)
+              (dotimes (i 8)
+                (push (dns-read-bytes 2) hextets))
+              (mapconcat (lambda (n) (format "%x" n))
+                         (nreverse hextets) ":")))
+           ((eq type 'SOA)
+            (list (list 'mname (dns-read-name buffer))
+                  (list 'rname (dns-read-name buffer))
+                  (list 'serial (dns-read-int32))
+                  (list 'refresh (dns-read-int32))
+                  (list 'retry (dns-read-int32))
+                  (list 'expire (dns-read-int32))
+                  (list 'minimum (dns-read-int32))))
+           ((eq type 'SRV)
+            (list (list 'priority (dns-read-bytes 2))
+                  (list 'weight (dns-read-bytes 2))
+                  (list 'port (dns-read-bytes 2))
+                  (list 'target (dns-read-name buffer))))
+           ((eq type 'MX)
+            (cons (dns-read-bytes 2) (dns-read-name buffer)))
+           ((or (eq type 'CNAME) (eq type 'NS) (eq type 'PTR))
+            (dns-read-string-name string buffer))
+           (t string)))
       (goto-char point))))
 
 (defun dns-parse-resolv-conf ()
@@ -378,53 +379,53 @@
 
   (if (not dns-servers)
       (message "No DNS server configuration found")
-    (let (default-enable-multibyte-characters)
-      (with-temp-buffer
-        (let ((process (condition-case ()
-                           (dns-make-network-process (car dns-servers))
-                         (error
-                          (message
-                           "dns: Got an error while trying to talk to %s"
-                           (car dns-servers))
-                          nil)))
-              (tcp-p (and (not (fboundp 'make-network-process))
-                          (not (featurep 'xemacs))))
-              (step 100)
-              (times (* dns-timeout 1000))
-              (id (random 65000)))
-          (when process
-            (process-send-string
-             process
-             (dns-write `((id ,id)
-                          (opcode query)
-                          (queries ((,name (type ,type))))
-                          (recursion-desired-p t))
-                        tcp-p))
-            (while (and (zerop (buffer-size))
-                        (> times 0))
-              (sit-for (/ step 1000.0))
-              (accept-process-output process 0 step)
-              (setq times (- times step)))
-            (condition-case nil
-                (delete-process process)
-              (error nil))
-            (when (and tcp-p
-                       (>= (buffer-size) 2))
-              (goto-char (point-min))
-              (delete-region (point) (+ (point) 2)))
-            (when (and (>= (buffer-size) 2)
-                       ;; We had a time-out.
-                       (> times 0))
-              (let ((result (dns-read (buffer-string))))
-                (if fullp
-                    result
-                  (let ((answer (car (dns-get 'answers result))))
-                    (when (eq type (dns-get 'type answer))
-                      (if (eq type 'TXT)
-                          (dns-get-txt-answer (dns-get 'answers result))
-                        (dns-get 'data answer)))))))))))))
+    (with-temp-buffer
+      (set-buffer-multibyte nil)
+      (let ((process (condition-case ()
+                         (dns-make-network-process (car dns-servers))
+                       (error
+                        (message
+                         "dns: Got an error while trying to talk to %s"
+                         (car dns-servers))
+                        nil)))
+            (tcp-p (and (not (fboundp 'make-network-process))
+                        (not (featurep 'xemacs))))
+            (step 100)
+            (times (* dns-timeout 1000))
+            (id (random 65000)))
+        (when process
+          (process-send-string
+           process
+           (dns-write `((id ,id)
+                        (opcode query)
+                        (queries ((,name (type ,type))))
+                        (recursion-desired-p t))
+                      tcp-p))
+          (while (and (zerop (buffer-size))
+                      (> times 0))
+            (sit-for (/ step 1000.0))
+            (accept-process-output process 0 step)
+            (setq times (- times step)))
+          (condition-case nil
+              (delete-process process)
+            (error nil))
+          (when (and tcp-p
+                     (>= (buffer-size) 2))
+            (goto-char (point-min))
+            (delete-region (point) (+ (point) 2)))
+          (when (and (>= (buffer-size) 2)
+                     ;; We had a time-out.
+                     (> times 0))
+            (let ((result (dns-read (buffer-string))))
+              (if fullp
+                  result
+                (let ((answer (car (dns-get 'answers result))))
+                  (when (eq type (dns-get 'type answer))
+                    (if (eq type 'TXT)
+                        (dns-get-txt-answer (dns-get 'answers result))
+                      (dns-get 'data answer))))))))))))
 
 (provide 'dns)
 
-;;; arch-tag: d0edd0c4-4cce-4538-ae92-06c3356ee80a
+;; arch-tag: d0edd0c4-4cce-4538-ae92-06c3356ee80a
 ;;; dns.el ends here
Index: earcon.el
diff -u gnus/lisp/earcon.el:7.8 gnus/lisp/earcon.el:7.9
--- earcon.el:7.8	Sun Jan 20 06:23:57 2008
+++ earcon.el	Thu Apr 24 06:19:20 2008
@@ -231,5 +231,5 @@
 
 (run-hooks 'earcon-load-hook)
 
-;;; arch-tag: 844dfeea-980c-4ed0-907f-a30bf139691c
+;; arch-tag: 844dfeea-980c-4ed0-907f-a30bf139691c
 ;;; earcon.el ends here
Index: flow-fill.el
diff -u gnus/lisp/flow-fill.el:7.23 gnus/lisp/flow-fill.el:7.24
--- flow-fill.el:7.23	Sun Jan 20 06:23:57 2008
+++ flow-fill.el	Thu Apr 24 06:19:20 2008
@@ -223,5 +223,5 @@
 
 (provide 'flow-fill)
 
-;;; arch-tag: addc0040-bc53-4f17-b4bc-1eb44eed6f0b
+;; arch-tag: addc0040-bc53-4f17-b4bc-1eb44eed6f0b
 ;;; flow-fill.el ends here
Index: format-spec.el
diff -u gnus/lisp/format-spec.el:7.11 gnus/lisp/format-spec.el:7.12
--- format-spec.el:7.11	Sun Jan 20 06:23:57 2008
+++ format-spec.el	Thu Apr 24 06:19:21 2008
@@ -78,5 +78,5 @@
 
 (provide 'format-spec)
 
-;;; arch-tag: c22d49cf-d167-445d-b7f1-2504d4173f53
+;; arch-tag: c22d49cf-d167-445d-b7f1-2504d4173f53
 ;;; format-spec.el ends here
Index: gnus-agent.el
diff -u gnus/lisp/gnus-agent.el:7.77 gnus/lisp/gnus-agent.el:7.78
--- gnus-agent.el:7.77	Sun Jan 20 06:23:57 2008
+++ gnus-agent.el	Thu Apr 24 06:19:21 2008
@@ -4226,5 +4226,5 @@
 
 (provide 'gnus-agent)
 
-;;; arch-tag: b0ba4afc-5229-4cee-ad25-9956daa4e91e
+;; arch-tag: b0ba4afc-5229-4cee-ad25-9956daa4e91e
 ;;; gnus-agent.el ends here
Index: gnus-art.el
diff -u gnus/lisp/gnus-art.el:7.271 gnus/lisp/gnus-art.el:7.272
--- gnus-art.el:7.271	Fri Mar 21 21:19:40 2008
+++ gnus-art.el	Thu Apr 24 06:19:20 2008
@@ -1703,11 +1703,6 @@
 
 (defvar gnus-save-article-buffer nil)
 
-(defvar gnus-article-mode-line-format-alist
-  (nconc '((?w (gnus-article-wash-status) ?s)
-	   (?m (gnus-article-mime-part-status) ?s))
-	 gnus-summary-mode-line-format-alist))
-
 (defvar gnus-number-of-articles-to-be-saved nil)
 
 (defvar gnus-inhibit-hiding nil)
@@ -4790,10 +4785,9 @@
   ;; Useful if file has already been saved to disk
   (interactive
    (list
-    (mm-with-multibyte
-      (read-file-name "Replace MIME part with file: "
-		      (or mm-default-directory default-directory)
-		      nil nil))))
+    (read-file-name "Replace MIME part with file: "
+                    (or mm-default-directory default-directory)
+                    nil nil)))
   (gnus-mime-save-part-and-strip file))
 
 (defun gnus-mime-save-part-and-strip (&optional file)
@@ -6591,7 +6585,13 @@
 		 (with-current-buffer gnus-original-article-buffer
 		   (and (equal (car gnus-original-article) group)
 			(eq (cdr gnus-original-article) article))))
-	    (insert-buffer-substring gnus-original-article-buffer)
+            ;; `insert-buffer-substring' would incorrectly use the
+            ;; equivalent of string-make-multibyte which amount to decoding
+            ;; with locale-coding-system, causing failure of
+            ;; subsequent decoding.
+            (insert (mm-string-to-multibyte
+                     (with-current-buffer gnus-original-article-buffer
+                       (buffer-substring (point-min) (point-max)))))
 	    'article)
 	   ;; Check the backlog.
 	   ((and gnus-keep-backlog
Index: gnus-async.el
diff -u gnus/lisp/gnus-async.el:7.14 gnus/lisp/gnus-async.el:7.15
--- gnus-async.el:7.14	Sun Jan 20 06:23:57 2008
+++ gnus-async.el	Thu Apr 24 06:19:20 2008
@@ -374,5 +374,5 @@
 
 (provide 'gnus-async)
 
-;;; arch-tag: fee61de5-3ea2-4de6-8578-2f90ce89391d
+;; arch-tag: fee61de5-3ea2-4de6-8578-2f90ce89391d
 ;;; gnus-async.el ends here
Index: gnus-audio.el
diff -u gnus/lisp/gnus-audio.el:7.9 gnus/lisp/gnus-audio.el:7.10
--- gnus-audio.el:7.9	Sun Jan 20 06:23:57 2008
+++ gnus-audio.el	Thu Apr 24 06:19:21 2008
@@ -148,5 +148,5 @@
 
 (run-hooks 'gnus-audio-load-hook)
 
-;;; arch-tag: 6f129e78-3416-4fc9-973f-6cf5ac8d654b
+;; arch-tag: 6f129e78-3416-4fc9-973f-6cf5ac8d654b
 ;;; gnus-audio.el ends here
Index: gnus-bcklg.el
diff -u gnus/lisp/gnus-bcklg.el:7.8 gnus/lisp/gnus-bcklg.el:7.9
--- gnus-bcklg.el:7.8	Sun Jan 20 06:23:57 2008
+++ gnus-bcklg.el	Thu Apr 24 06:19:20 2008
@@ -161,5 +161,5 @@
 
 (provide 'gnus-bcklg)
 
-;;; arch-tag: 66259e56-505a-4bba-8a0d-3552c5b94e39
+;; arch-tag: 66259e56-505a-4bba-8a0d-3552c5b94e39
 ;;; gnus-bcklg.el ends here
Index: gnus-bookmark.el
diff -u gnus/lisp/gnus-bookmark.el:7.14 gnus/lisp/gnus-bookmark.el:7.15
--- gnus-bookmark.el:7.14	Sun Mar  2 17:53:18 2008
+++ gnus-bookmark.el	Thu Apr 24 06:19:20 2008
@@ -215,13 +215,13 @@
       (setq gnus-bookmark-alist
 	    (cons
 	     (list (gnus-bookmark-remove-properties bmk-name)
-		   (gnus-bookmark-make-cell
+		   (gnus-bookmark-make-record
 		    group message-id author date subject annotation))
 	     gnus-bookmark-alist))))
   (gnus-bookmark-bmenu-surreptitiously-rebuild-list)
   (gnus-bookmark-write-file))
 
-(defun gnus-bookmark-make-cell
+(defun gnus-bookmark-make-record
   (group message-id author date subject annotation)
   "Return the record part of a new bookmark, given GROUP MESSAGE-ID AUTHOR DATE SUBJECT and ANNOTATION."
   (let ((the-record
@@ -296,9 +296,9 @@
   (let* ((bookmark (or bmk-name
 	  (completing-read "Jump to bookmarked article: "
 			   gnus-bookmark-alist)))
-	 (bmk-cell (cadr (assoc bookmark gnus-bookmark-alist)))
-	 (group (cdr (assoc 'group bmk-cell)))
-	 (message-id (cdr (assoc 'message-id bmk-cell))))
+	 (bmk-record (cadr (assoc bookmark gnus-bookmark-alist)))
+	 (group (cdr (assoc 'group bmk-record)))
+	 (message-id (cdr (assoc 'message-id bmk-record))))
     (when group
       (unless (get-buffer gnus-group-buffer)
 	(gnus-no-server))
Index: gnus-cache.el
diff -u gnus/lisp/gnus-cache.el:7.25 gnus/lisp/gnus-cache.el:7.26
--- gnus-cache.el:7.25	Sun Jan 20 06:23:57 2008
+++ gnus-cache.el	Thu Apr 24 06:19:21 2008
@@ -920,5 +920,5 @@
 
 (provide 'gnus-cache)
 
-;;; arch-tag: 05a79442-8c58-4e65-bd0a-3cbb1b89a33a
+;; arch-tag: 05a79442-8c58-4e65-bd0a-3cbb1b89a33a
 ;;; gnus-cache.el ends here
Index: gnus-cite.el
diff -u gnus/lisp/gnus-cite.el:7.38 gnus/lisp/gnus-cite.el:7.39
--- gnus-cite.el:7.38	Sun Jan 20 06:23:57 2008
+++ gnus-cite.el	Thu Apr 24 06:19:20 2008
@@ -1238,5 +1238,5 @@
 ;; coding: iso-8859-1
 ;; End:
 
-;;; arch-tag: 1997b044-6067-471e-8c8f-dc903093098a
+;; arch-tag: 1997b044-6067-471e-8c8f-dc903093098a
 ;;; gnus-cite.el ends here
Index: gnus-cus.el
diff -u gnus/lisp/gnus-cus.el:7.19 gnus/lisp/gnus-cus.el:7.20
--- gnus-cus.el:7.19	Sun Jan 20 06:23:57 2008
+++ gnus-cus.el	Thu Apr 24 06:19:20 2008
@@ -1120,5 +1120,5 @@
 
 (provide 'gnus-cus)
 
-;;; arch-tag: a37c285a-49bc-4235-8244-804536effeaf
+;; arch-tag: a37c285a-49bc-4235-8244-804536effeaf
 ;;; gnus-cus.el ends here
Index: gnus-demon.el
diff -u gnus/lisp/gnus-demon.el:7.16 gnus/lisp/gnus-demon.el:7.17
--- gnus-demon.el:7.16	Sun Jan 20 06:23:57 2008
+++ gnus-demon.el	Thu Apr 24 06:19:20 2008
@@ -321,5 +321,5 @@
 
 (provide 'gnus-demon)
 
-;;; arch-tag: 8dd5cd3d-6ae4-46b4-9b15-f5fca09fd392
+;; arch-tag: 8dd5cd3d-6ae4-46b4-9b15-f5fca09fd392
 ;;; gnus-demon.el ends here
Index: gnus-diary.el
diff -u gnus/lisp/gnus-diary.el:7.19 gnus/lisp/gnus-diary.el:7.20
--- gnus-diary.el:7.19	Mon Apr 21 01:38:57 2008
+++ gnus-diary.el	Thu Apr 24 06:19:20 2008
@@ -403,5 +403,5 @@
 
 (provide 'gnus-diary)
 
-;;; arch-tag: 98467e70-337e-4ddc-b92d-45d403ff1b4b
+;; arch-tag: 98467e70-337e-4ddc-b92d-45d403ff1b4b
 ;;; gnus-diary.el ends here
Index: gnus-dired.el
diff -u gnus/lisp/gnus-dired.el:7.11 gnus/lisp/gnus-dired.el:7.12
--- gnus-dired.el:7.11	Sat Mar  1 02:48:13 2008
+++ gnus-dired.el	Thu Apr 24 06:19:20 2008
@@ -258,5 +258,5 @@
 
 (provide 'gnus-dired)
 
-;;; arch-tag: 44737731-e445-4638-a31e-713c7590ec76
+;; arch-tag: 44737731-e445-4638-a31e-713c7590ec76
 ;;; gnus-dired.el ends here
Index: gnus-draft.el
diff -u gnus/lisp/gnus-draft.el:7.20 gnus/lisp/gnus-draft.el:7.21
--- gnus-draft.el:7.20	Sat Mar  1 02:48:13 2008
+++ gnus-draft.el	Thu Apr 24 06:19:21 2008
@@ -329,5 +329,5 @@
 
 (provide 'gnus-draft)
 
-;;; arch-tag: 3d92af58-8c97-4a5c-9db4-a98e85198022
+;; arch-tag: 3d92af58-8c97-4a5c-9db4-a98e85198022
 ;;; gnus-draft.el ends here
Index: gnus-dup.el
diff -u gnus/lisp/gnus-dup.el:7.11 gnus/lisp/gnus-dup.el:7.12
--- gnus-dup.el:7.11	Sun Jan 20 06:23:57 2008
+++ gnus-dup.el	Thu Apr 24 06:19:21 2008
@@ -161,5 +161,5 @@
 
 (provide 'gnus-dup)
 
-;;; arch-tag: 903e94db-7b00-4d19-83ee-cf34a81fa5fb
+;; arch-tag: 903e94db-7b00-4d19-83ee-cf34a81fa5fb
 ;;; gnus-dup.el ends here
Index: gnus-eform.el
diff -u gnus/lisp/gnus-eform.el:7.11 gnus/lisp/gnus-eform.el:7.12
--- gnus-eform.el:7.11	Sun Jan 20 06:23:57 2008
+++ gnus-eform.el	Thu Apr 24 06:19:21 2008
@@ -132,5 +132,5 @@
 
 (provide 'gnus-eform)
 
-;;; arch-tag: ef50678c-2c28-49ef-affc-e53b3b2c0bf6
+;; arch-tag: ef50678c-2c28-49ef-affc-e53b3b2c0bf6
 ;;; gnus-eform.el ends here
Index: gnus-ems.el
diff -u gnus/lisp/gnus-ems.el:7.25 gnus/lisp/gnus-ems.el:7.26
--- gnus-ems.el:7.25	Sun Jan 20 06:23:57 2008
+++ gnus-ems.el	Thu Apr 24 06:19:20 2008
@@ -162,6 +162,7 @@
   mark-active) ; aliased to region-exists-p in XEmacs.
 
 (autoload 'gnus-alive-p "gnus-util")
+(autoload 'mm-disable-multibyte "mm-util")
 
 (defun gnus-x-splash ()
   "Show a splash screen using a pixmap in the current buffer."
@@ -179,9 +180,9 @@
     (sit-for 0) ;; Necessary for measuring the window size correctly.
     (when (and file
 	       (ignore-errors
-		(let ((coding-system-for-read 'raw-text)
-		      default-enable-multibyte-characters)
+		(let ((coding-system-for-read 'raw-text))
 		  (with-temp-buffer
+                    (mm-disable-multibyte)
 		    (insert-file-contents file)
 		    (goto-char (point-min))
 		    (setq pixmap (read (current-buffer)))))))
@@ -307,5 +308,5 @@
 
 (provide 'gnus-ems)
 
-;;; arch-tag: e7360b45-14b5-4171-aa39-69a44aed3cdb
+;; arch-tag: e7360b45-14b5-4171-aa39-69a44aed3cdb
 ;;; gnus-ems.el ends here
Index: gnus-fun.el
diff -u gnus/lisp/gnus-fun.el:7.21 gnus/lisp/gnus-fun.el:7.22
--- gnus-fun.el:7.21	Sun Jan 20 06:23:57 2008
+++ gnus-fun.el	Thu Apr 24 06:19:20 2008
@@ -217,8 +217,7 @@
 (defun gnus-display-x-face-in-from (data)
   "Display the X-Face DATA in the From header."
   (require 'gnus-art)
-  (let ((default-enable-multibyte-characters nil)
-	pbm)
+  (let (pbm)
     (when (or (gnus-image-type-available-p 'xface)
 	      (and (gnus-image-type-available-p 'pbm)
 		   (setq pbm (uncompface data))))
@@ -293,5 +292,5 @@
 
 (provide 'gnus-fun)
 
-;;; arch-tag: 9d000a69-15cc-4491-9dc0-4627484f50c1
+;; arch-tag: 9d000a69-15cc-4491-9dc0-4627484f50c1
 ;;; gnus-fun.el ends here
Index: gnus-group.el
diff -u gnus/lisp/gnus-group.el:7.112 gnus/lisp/gnus-group.el:7.113
--- gnus-group.el:7.112	Mon Mar 24 19:10:58 2008
+++ gnus-group.el	Thu Apr 24 06:19:20 2008
@@ -1188,8 +1188,8 @@
       (goto-char (point-min))
       (setq gnus-group-mark-positions
 	    (list (cons 'process (and (search-forward
-				       (mm-string-as-multibyte "\200") nil t)
-				      (- (point) 2))))))))
+				       (mm-string-to-multibyte "\200") nil t)
+				      (- (point) (point-min) 1))))))))
 
 (defun gnus-mouse-pick-group (e)
   "Enter the group under the mouse pointer."
@@ -4791,5 +4791,5 @@
 
 (provide 'gnus-group)
 
-;;; arch-tag: 2eb5440f-0bca-4091-814c-e37817536af6
+;; arch-tag: 2eb5440f-0bca-4091-814c-e37817536af6
 ;;; gnus-group.el ends here
Index: gnus-int.el
diff -u gnus/lisp/gnus-int.el:7.27 gnus/lisp/gnus-int.el:7.28
--- gnus-int.el:7.27	Sun Jan 20 06:23:57 2008
+++ gnus-int.el	Thu Apr 24 06:19:21 2008
@@ -718,5 +718,5 @@
 
 (provide 'gnus-int)
 
-;;; arch-tag: bbc90087-9b7f-4017-a92c-3abf180ac86d
+;; arch-tag: bbc90087-9b7f-4017-a92c-3abf180ac86d
 ;;; gnus-int.el ends here
Index: gnus-kill.el
diff -u gnus/lisp/gnus-kill.el:7.13 gnus/lisp/gnus-kill.el:7.14
--- gnus-kill.el:7.13	Sun Jan 20 06:23:57 2008
+++ gnus-kill.el	Thu Apr 24 06:19:20 2008
@@ -717,5 +717,5 @@
 
 (provide 'gnus-kill)
 
-;;; arch-tag: b30c0f53-df1a-490b-b81e-17b13474f395
+;; arch-tag: b30c0f53-df1a-490b-b81e-17b13474f395
 ;;; gnus-kill.el ends here
Index: gnus-logic.el
diff -u gnus/lisp/gnus-logic.el:7.8 gnus/lisp/gnus-logic.el:7.9
--- gnus-logic.el:7.8	Sun Jan 20 06:23:57 2008
+++ gnus-logic.el	Thu Apr 24 06:19:20 2008
@@ -228,5 +228,5 @@
 
 (provide 'gnus-logic)
 
-;;; arch-tag: 9651a100-4a59-4b69-a55b-e511e67c0f8d
+;; arch-tag: 9651a100-4a59-4b69-a55b-e511e67c0f8d
 ;;; gnus-logic.el ends here
Index: gnus-mh.el
diff -u gnus/lisp/gnus-mh.el:7.10 gnus/lisp/gnus-mh.el:7.11
--- gnus-mh.el:7.10	Sun Jan 20 06:23:57 2008
+++ gnus-mh.el	Thu Apr 24 06:19:20 2008
@@ -111,5 +111,5 @@
 
 (provide 'gnus-mh)
 
-;;; arch-tag: 2d5696d3-b363-48e5-8749-c256be56acca
+;; arch-tag: 2d5696d3-b363-48e5-8749-c256be56acca
 ;;; gnus-mh.el ends here
Index: gnus-ml.el
diff -u gnus/lisp/gnus-ml.el:7.12 gnus/lisp/gnus-ml.el:7.13
--- gnus-ml.el:7.12	Sun Jan 20 06:23:57 2008
+++ gnus-ml.el	Thu Apr 24 06:19:20 2008
@@ -180,5 +180,5 @@
 
 (provide 'gnus-ml)
 
-;;; arch-tag: 936c0fe6-acce-4c16-87d0-eded88078896
+;; arch-tag: 936c0fe6-acce-4c16-87d0-eded88078896
 ;;; gnus-ml.el ends here
Index: gnus-mlspl.el
diff -u gnus/lisp/gnus-mlspl.el:7.10 gnus/lisp/gnus-mlspl.el:7.11
--- gnus-mlspl.el:7.10	Sun Jan 20 06:23:57 2008
+++ gnus-mlspl.el	Thu Apr 24 06:19:20 2008
@@ -229,5 +229,5 @@
 
 (provide 'gnus-mlspl)
 
-;;; arch-tag: 62b3381f-1e45-4b61-be1a-29fb27703322
+;; arch-tag: 62b3381f-1e45-4b61-be1a-29fb27703322
 ;;; gnus-mlspl.el ends here
Index: gnus-move.el
diff -u gnus/lisp/gnus-move.el:7.12 gnus/lisp/gnus-move.el:7.13
--- gnus-move.el:7.12	Sun Jan 20 06:23:57 2008
+++ gnus-move.el	Thu Apr 24 06:19:20 2008
@@ -179,5 +179,5 @@
 
 (provide 'gnus-move)
 
-;;; arch-tag: 503742b8-7d66-4d79-bb31-4a698070707b
+;; arch-tag: 503742b8-7d66-4d79-bb31-4a698070707b
 ;;; gnus-move.el ends here
Index: gnus-msg.el
diff -u gnus/lisp/gnus-msg.el:7.65 gnus/lisp/gnus-msg.el:7.66
--- gnus-msg.el:7.65	Sat Mar  1 02:48:13 2008
+++ gnus-msg.el	Thu Apr 24 06:19:20 2008
@@ -552,8 +552,7 @@
 		       (t nil))))
     (message-add-action
      `(when (gnus-buffer-exists-p ,buffer)
-	(save-excursion
-	  (set-buffer ,buffer)
+	(with-current-buffer ,buffer
 	  ,(when to-be-marked
 	     (if (eq config 'forward)
 		 `(gnus-summary-mark-article-as-forwarded ',to-be-marked)
@@ -588,8 +587,7 @@
 		  ""))
 	  ;; #### see comment in gnus-setup-message -- drv
 	  (gnus-setup-message 'message (message-mail)))
-      (save-excursion
-	(set-buffer buffer)
+      (with-current-buffer buffer
 	(setq gnus-newsgroup-name group)))))
 
 (defun gnus-group-news (&optional arg)
@@ -620,8 +618,7 @@
 	  ;; #### see comment in gnus-setup-message -- drv
 	  (gnus-setup-message 'message
 	    (message-news (gnus-group-real-name gnus-newsgroup-name))))
-      (save-excursion
-	(set-buffer buffer)
+      (with-current-buffer buffer
 	(setq gnus-newsgroup-name group)))))
 
 (defun gnus-group-post-news (&optional arg)
@@ -667,8 +664,7 @@
 		  gnus-newsgroup-name))
 	  ;; #### see comment in gnus-setup-message -- drv
 	  (gnus-setup-message 'message (message-mail)))
-      (save-excursion
-	(set-buffer buffer)
+      (with-current-buffer buffer
 	(setq gnus-newsgroup-name group)))))
 
 (defun gnus-summary-news-other-window (&optional arg)
@@ -704,8 +700,7 @@
 		   (remove
 		    (car (gnus-find-method-for-group gnus-newsgroup-name))
 		    gnus-discouraged-post-methods)))))
-      (save-excursion
-	(set-buffer buffer)
+      (with-current-buffer buffer
 	(setq gnus-newsgroup-name group)))))
 
 (defun gnus-summary-post-news (&optional arg)
@@ -828,8 +823,7 @@
       (push
        `((lambda ()
 	   (when (gnus-buffer-exists-p ,gnus-summary-buffer)
-	     (save-excursion
-	       (set-buffer ,gnus-summary-buffer)
+	     (with-current-buffer ,gnus-summary-buffer
 	       (gnus-cache-possibly-remove-article ,article nil nil nil t)
 	       (gnus-summary-mark-as-read ,article gnus-canceled-mark)))))
        message-send-actions)
@@ -845,16 +839,14 @@
   ;; if ARTICLE-BUFFER is nil, gnus-article-buffer is used
   ;; this buffer should be passed to all mail/news reply/post routines.
   (setq gnus-article-copy (gnus-get-buffer-create " *gnus article copy*"))
-  (save-excursion
-    (set-buffer gnus-article-copy)
+  (with-current-buffer gnus-article-copy
     (mm-enable-multibyte))
   (let ((article-buffer (or article-buffer gnus-article-buffer))
 	end beg)
     (if (not (and (get-buffer article-buffer)
 		  (gnus-buffer-exists-p article-buffer)))
 	(error "Can't find any article buffer")
-      (save-excursion
-	(set-buffer article-buffer)
+      (with-current-buffer article-buffer
 	(let ((gnus-newsgroup-charset (or gnus-article-charset
 					  gnus-newsgroup-charset))
 	      (gnus-newsgroup-ignored-charsets
@@ -1120,8 +1112,7 @@
 	    (gnus-summary-select-article)
 	  (dolist (article very-wide)
 	    (gnus-summary-select-article nil nil nil article)
-	    (save-excursion
-	      (set-buffer (gnus-copy-article-buffer))
+	    (with-current-buffer (gnus-copy-article-buffer)
 	      (gnus-msg-treat-broken-reply-to)
 	      (save-restriction
 		(message-narrow-to-head)
@@ -1144,8 +1135,7 @@
   "Check the various replysign variables and take action accordingly."
   (when (or gnus-message-replysign gnus-message-replyencrypt)
     (let (signed encrypted)
-      (save-excursion
-	(set-buffer gnus-article-buffer)
+      (with-current-buffer gnus-article-buffer
 	(setq signed (memq 'signed gnus-article-wash-types))
 	(setq encrypted (memq 'encrypted gnus-article-wash-types)))
       (cond ((and gnus-message-replyencrypt encrypted)
@@ -1276,8 +1266,7 @@
 	 current-prefix-arg))
   (dolist (article (gnus-summary-work-articles n))
     (gnus-summary-select-article nil nil nil article)
-    (save-excursion
-      (set-buffer gnus-original-article-buffer)
+    (with-current-buffer gnus-original-article-buffer
       (message-resend address))
     (gnus-summary-mark-article-as-forwarded article)))
 
@@ -1484,8 +1473,7 @@
       (insert nntp-server-type))
     (insert "\n\n\n\n\n")
     (let (text)
-      (save-excursion
-	(set-buffer (gnus-get-buffer-create " *gnus environment info*"))
+      (with-current-buffer (gnus-get-buffer-create " *gnus environment info*")
 	(erase-buffer)
 	(gnus-debug)
 	(setq text (buffer-string)))
@@ -1506,8 +1494,7 @@
   (gnus-summary-iterate n
     (let ((gnus-inhibit-treatment t))
       (gnus-summary-select-article))
-    (save-excursion
-      (set-buffer buffer)
+    (with-current-buffer buffer
       (message-yank-buffer gnus-article-buffer))))
 
 (defun gnus-debug ()
@@ -1520,8 +1507,7 @@
     (gnus-message 4 "Please wait while we snoop your variables...")
     (sit-for 0)
     ;; Go through all the files looking for non-default values for variables.
-    (save-excursion
-      (set-buffer (gnus-get-buffer-create " *gnus bug info*"))
+    (with-current-buffer (gnus-get-buffer-create " *gnus bug info*")
       (while files
 	(erase-buffer)
 	(when (and (setq file (locate-library (pop files)))
@@ -1562,7 +1548,7 @@
     ;; Remove any control chars - they seem to cause trouble for some
     ;; mailers.  (Byte-compiled output from the stuff above.)
     (goto-char point)
-    (while (re-search-forward (mm-string-as-multibyte
+    (while (re-search-forward (mm-string-to-multibyte
 			       "[\000-\010\013-\037\200-\237]") nil t)
       (replace-match (format "\\%03o" (string-to-char (match-string 0)))
 		     t t))))
@@ -2000,5 +1986,5 @@
 
 (provide 'gnus-msg)
 
-;;; arch-tag: 9f22b2f5-1c0a-49de-916e-4c88e984852b
+;; arch-tag: 9f22b2f5-1c0a-49de-916e-4c88e984852b
 ;;; gnus-msg.el ends here
Index: gnus-nocem.el
diff -u gnus/lisp/gnus-nocem.el:7.13 gnus/lisp/gnus-nocem.el:7.14
--- gnus-nocem.el:7.13	Sun Jan 20 06:23:57 2008
+++ gnus-nocem.el	Thu Apr 24 06:19:21 2008
@@ -396,5 +396,5 @@
 
 (provide 'gnus-nocem)
 
-;;; arch-tag: 0e0c74ea-2f8e-4f3e-8fff-09f767c1adef
+;; arch-tag: 0e0c74ea-2f8e-4f3e-8fff-09f767c1adef
 ;;; gnus-nocem.el ends here
Index: gnus-picon.el
diff -u gnus/lisp/gnus-picon.el:7.13 gnus/lisp/gnus-picon.el:7.14
--- gnus-picon.el:7.13	Sun Jan 20 06:23:57 2008
+++ gnus-picon.el	Thu Apr 24 06:19:20 2008
@@ -313,5 +313,5 @@
 
 (provide 'gnus-picon)
 
-;;; arch-tag: fe9aede0-1b1b-463a-b4ab-807f98bcb31f
+;; arch-tag: fe9aede0-1b1b-463a-b4ab-807f98bcb31f
 ;;; gnus-picon.el ends here
Index: gnus-range.el
diff -u gnus/lisp/gnus-range.el:7.11 gnus/lisp/gnus-range.el:7.12
--- gnus-range.el:7.11	Sun Jan 20 06:23:57 2008
+++ gnus-range.el	Thu Apr 24 06:19:21 2008
@@ -656,5 +656,5 @@
 
 (provide 'gnus-range)
 
-;;; arch-tag: 4780bdd8-5a15-4aff-be28-18727895b6ad
+;; arch-tag: 4780bdd8-5a15-4aff-be28-18727895b6ad
 ;;; gnus-range.el ends here
Index: gnus-registry.el
diff -u gnus/lisp/gnus-registry.el:7.56 gnus/lisp/gnus-registry.el:7.57
--- gnus-registry.el:7.56	Tue Apr  8 23:17:29 2008
+++ gnus-registry.el	Thu Apr 24 06:19:21 2008
@@ -1123,5 +1123,5 @@
 
 (provide 'gnus-registry)
 
-;;; arch-tag: 5cba0a32-718a-4a97-8c91-0a15af21da94
+;; arch-tag: 5cba0a32-718a-4a97-8c91-0a15af21da94
 ;;; gnus-registry.el ends here
Index: gnus-score.el
diff -u gnus/lisp/gnus-score.el:7.37 gnus/lisp/gnus-score.el:7.38
--- gnus-score.el:7.37	Sun Mar 16 16:49:30 2008
+++ gnus-score.el	Thu Apr 24 06:19:21 2008
@@ -3114,5 +3114,5 @@
 
 (provide 'gnus-score)
 
-;;; arch-tag: d3922589-764d-46ae-9954-9330fd192634
+;; arch-tag: d3922589-764d-46ae-9954-9330fd192634
 ;;; gnus-score.el ends here
Index: gnus-setup.el
diff -u gnus/lisp/gnus-setup.el:7.9 gnus/lisp/gnus-setup.el:7.10
--- gnus-setup.el:7.9	Sun Jan 20 06:23:57 2008
+++ gnus-setup.el	Thu Apr 24 06:19:20 2008
@@ -191,5 +191,5 @@
 
 (run-hooks 'gnus-setup-load-hook)
 
-;;; arch-tag: 08e4af93-8565-46bf-905c-36229400609d
+;; arch-tag: 08e4af93-8565-46bf-905c-36229400609d
 ;;; gnus-setup.el ends here
Index: gnus-sieve.el
diff -u gnus/lisp/gnus-sieve.el:7.10 gnus/lisp/gnus-sieve.el:7.11
--- gnus-sieve.el:7.10	Sun Jan 20 06:23:57 2008
+++ gnus-sieve.el	Thu Apr 24 06:19:20 2008
@@ -237,5 +237,5 @@
 
 (provide 'gnus-sieve)
 
-;;; arch-tag: 3b906527-c7f3-4c86-9e82-62e2697998a3
+;; arch-tag: 3b906527-c7f3-4c86-9e82-62e2697998a3
 ;;; gnus-sieve.el ends here
Index: gnus-soup.el
diff -u gnus/lisp/gnus-soup.el:7.12 gnus/lisp/gnus-soup.el:7.13
--- gnus-soup.el:7.12	Sun Jan 20 06:23:57 2008
+++ gnus-soup.el	Thu Apr 24 06:19:21 2008
@@ -594,9 +594,8 @@
 			      (mail-fetch-field "to"))
 		(sit-for 1)
 		(let ((mail-header-separator ""))
-		  (mm-with-unibyte-current-buffer
-		    (funcall (or message-send-mail-real-function
-				 message-send-mail-function)))))
+                  (funcall (or message-send-mail-real-function
+                               message-send-mail-function))))
 	       (t
 		(error "Unknown reply kind")))
 	      (set-buffer msg-buf)
@@ -610,5 +609,5 @@
 
 (provide 'gnus-soup)
 
-;;; arch-tag: eddfa69d-13e8-4aea-84ef-62a526ef185c
+;; arch-tag: eddfa69d-13e8-4aea-84ef-62a526ef185c
 ;;; gnus-soup.el ends here
Index: gnus-spec.el
diff -u gnus/lisp/gnus-spec.el:7.21 gnus/lisp/gnus-spec.el:7.22
--- gnus-spec.el:7.21	Sun Jan 20 06:23:57 2008
+++ gnus-spec.el	Thu Apr 24 06:19:21 2008
@@ -769,5 +769,5 @@
 ;; coding: iso-8859-1
 ;; End:
 
-;;; arch-tag: a4328fa1-1f84-4b09-97ad-4b5767cfd50f
+;; arch-tag: a4328fa1-1f84-4b09-97ad-4b5767cfd50f
 ;;; gnus-spec.el ends here
Index: gnus-srvr.el
diff -u gnus/lisp/gnus-srvr.el:7.33 gnus/lisp/gnus-srvr.el:7.34
--- gnus-srvr.el:7.33	Sun Jan 20 06:23:57 2008
+++ gnus-srvr.el	Thu Apr 24 06:19:20 2008
@@ -1029,5 +1029,5 @@
 
 (provide 'gnus-srvr)
 
-;;; arch-tag: c0117f64-27ca-475d-9406-8da6854c7a25
+;; arch-tag: c0117f64-27ca-475d-9406-8da6854c7a25
 ;;; gnus-srvr.el ends here
Index: gnus-sum.el
diff -u gnus/lisp/gnus-sum.el:7.220 gnus/lisp/gnus-sum.el:7.221
--- gnus-sum.el:7.220	Mon Apr 21 01:38:57 2008
+++ gnus-sum.el	Thu Apr 24 06:19:20 2008
@@ -1372,6 +1372,12 @@
     (?E gnus-newsgroup-expunged-tally ?d)
     (?s (gnus-current-score-file-nondirectory) ?s)))
 
+;; This is here rather than in gnus-art for compilation reasons.
+(defvar gnus-article-mode-line-format-alist
+  (nconc '((?w (gnus-article-wash-status) ?s)
+	   (?m (gnus-article-mime-part-status) ?s))
+	 gnus-summary-mode-line-format-alist))
+
 (defvar gnus-last-search-regexp nil
   "Default regexp for article search command.")
 
@@ -1563,22 +1569,10 @@
 	 \"^From:\\\\|^Newsgroups:\\\\|^Subject:\\\\|^Date:\\\\|^To:\")))
 ")
 
-;; Byte-compiler warning.  Specifically, this is responsible for:
-;; "Warning: the following functions might not be defined at runtime:
-;; gnus-build-sparse-threads, gnus-dead-summary-mode, gnus-summary-mark-below".
 (eval-when-compile
   ;; Bind features so that require will believe that gnus-sum has
   ;; already been loaded (avoids infinite recursion)
   (let ((features (cons 'gnus-sum features)))
-    ;; Several of the declarations in gnus-sum are needed to load the
-    ;; following files. Right now, these definitions have been
-    ;; compiled but not defined (evaluated).  We could either do a
-    ;; eval-and-compile about all of the declarations or evaluate the
-    ;; source file.
-    (if (boundp 'gnus-newsgroup-variables)
-        nil
-      (load "gnus-sum.el" t t t))
-    (require 'gnus)
     (require 'gnus-art)))
 
 ;; MIME stuff.
@@ -3393,7 +3387,7 @@
 (defun gnus-restore-hidden-threads-configuration (config)
   "Restore hidden threads configuration from CONFIG."
   (save-excursion
-    (let (point buffer-read-only)
+    (let (point (inhibit-read-only t))
       (while (setq point (pop config))
 	(when (and (< point (point-max))
 		   (goto-char point)
@@ -3716,7 +3710,7 @@
 	 (gnus-tmp-subject (mail-header-subject gnus-tmp-header))
 	 (gnus-tmp-opening-bracket (if gnus-tmp-dummy ?\< ?\[))
 	 (gnus-tmp-closing-bracket (if gnus-tmp-dummy ?\> ?\]))
-	 (buffer-read-only nil))
+	 (inhibit-read-only t))
     (when (string= gnus-tmp-name "")
       (setq gnus-tmp-name gnus-tmp-from))
     (unless (numberp gnus-tmp-lines)
@@ -4022,7 +4016,7 @@
 (defun gnus-summary-prepare ()
   "Generate the summary buffer."
   (interactive)
-  (let ((buffer-read-only nil))
+  (let ((inhibit-read-only t))
     (erase-buffer)
     (setq gnus-newsgroup-data nil
 	  gnus-newsgroup-data-reverse nil)
@@ -4430,8 +4424,7 @@
   (let ((deps gnus-newsgroup-dependencies)
 	found header)
     (prog1
-	(save-excursion
-	  (set-buffer nntp-server-buffer)
+	(with-current-buffer nntp-server-buffer
 	  (let ((case-fold-search nil))
 	    (goto-char (point-min))
 	    (while (and (not found)
@@ -4466,8 +4459,7 @@
 	(mail-parse-charset gnus-newsgroup-charset)
 	(dependencies gnus-newsgroup-dependencies)
 	header article)
-    (save-excursion
-      (set-buffer nntp-server-buffer)
+    (with-current-buffer nntp-server-buffer
       (let ((case-fold-search nil))
 	(goto-char (point-min))
 	(while (not (eobp))
@@ -4499,7 +4491,7 @@
     (gnus-summary-goto-subject article)
     (let* ((datal (gnus-data-find-list article))
 	   (data (car datal))
-	   (buffer-read-only nil)
+	   (inhibit-read-only t)
 	   (level (gnus-summary-thread-level)))
       (gnus-delete-line)
       (let ((inserted (- (point)
@@ -4550,7 +4542,7 @@
 			   (not (equal "" references)))
 		  references))
 	       "none")))
-	 (buffer-read-only nil)
+	 (inhibit-read-only t)
 	 (old (car thread)))
     (when thread
       (unless iheader
@@ -4566,7 +4558,7 @@
 (defun gnus-rebuild-thread (id &optional line)
   "Rebuild the thread containing ID.
 If LINE, insert the rebuilt thread starting on line LINE."
-  (let ((buffer-read-only nil)
+  (let ((inhibit-read-only t)
 	old-pos current thread data)
     (if (not gnus-show-threads)
 	(setq thread (list (car (gnus-id-to-thread id))))
@@ -5051,6 +5043,16 @@
   :type 'string
   :group 'gnus-thread)
 
+(defcustom gnus-summary-display-while-building nil
+  "If non-nil, show and update the summary buffer as it's being built.
+If the value is t, update the buffer after every line is inserted.  If
+the value is an integer (N), update the display every N lines."
+  :version "22.1"
+  :group 'gnus-thread
+  :type '(choice (const :tag "off" nil)
+		 number
+		 (const :tag "frequently" t)))
+
 (defun gnus-summary-prepare-threads (threads)
   "Prepare summary buffer from THREADS and indentation LEVEL.
 THREADS is either a list of `(PARENT [(CHILD1 [(GRANDCHILD ...]...) ...])'
@@ -5970,11 +5972,10 @@
 	     (symbol-value
 	      (intern (format "gnus-%s-mode-line-format-spec" where))))
     (let (mode-string)
-      (save-excursion
-	;; We evaluate this in the summary buffer since these
-	;; variables are buffer-local to that buffer.
-	(set-buffer gnus-summary-buffer)
-       ;; We bind all these variables that are used in the `eval' form
+      ;; We evaluate this in the summary buffer since these
+      ;; variables are buffer-local to that buffer.
+      (with-current-buffer gnus-summary-buffer
+        ;; We bind all these variables that are used in the `eval' form
 	;; below.
 	(let* ((mformat (symbol-value
 			 (intern
@@ -6179,12 +6180,11 @@
 	headers id end ref number
 	(mail-parse-charset gnus-newsgroup-charset)
 	(mail-parse-ignored-charsets
-	 (save-excursion (condition-case nil
-			     (set-buffer gnus-summary-buffer)
-			   (error))
-			 gnus-newsgroup-ignored-charsets)))
-    (save-excursion
-      (set-buffer nntp-server-buffer)
+	 (save-current-buffer (condition-case nil
+                                  (set-buffer gnus-summary-buffer)
+                                (error))
+                              gnus-newsgroup-ignored-charsets)))
+    (with-current-buffer nntp-server-buffer
       ;; Translate all TAB characters into SPACE characters.
       (subst-char-in-region (point-min) (point-max) ?\t ?  t)
       (subst-char-in-region (point-min) (point-max) ?\r ?  t)
@@ -6350,8 +6350,7 @@
 	       (t
 		nil)))
 	number headers header)
-    (save-excursion
-      (set-buffer nntp-server-buffer)
+    (with-current-buffer nntp-server-buffer
       (subst-char-in-region (point-min) (point-max) ?\r ?  t)
       ;; Allow the user to mangle the headers before parsing them.
       (gnus-run-hooks 'gnus-parse-headers-hook)
@@ -6475,8 +6474,7 @@
   "Return a list of articles to be worked upon.
 The prefix argument, the list of process marked articles, and the
 current article will be taken into consideration."
-  (save-excursion
-    (set-buffer gnus-summary-buffer)
+  (with-current-buffer gnus-summary-buffer
     (cond
      (n
       ;; A numerical prefix has been given.
@@ -6560,8 +6558,7 @@
 (defun gnus-summary-search-group (&optional backward use-level)
   "Search for next unread newsgroup.
 If optional argument BACKWARD is non-nil, search backward instead."
-  (save-excursion
-    (set-buffer gnus-group-buffer)
+  (with-current-buffer gnus-group-buffer
     (when (gnus-group-search-forward
 	   backward nil (if use-level (gnus-group-group-level) nil))
       (gnus-group-group-name))))
@@ -6747,7 +6744,7 @@
 	(gnus-group-jump-to-group newsgroup))
     (save-excursion
       ;; Take care of tree window mode.
-      (if (get-buffer-window gnus-group-buffer)
+      (if (get-buffer-window gnus-group-buffer 0)
 	  (pop-to-buffer gnus-group-buffer)
 	(set-buffer gnus-group-buffer))
       (gnus-group-jump-to-group newsgroup))))
@@ -6998,8 +6995,7 @@
   (interactive)
   (gnus-set-global-variables)
   (when (gnus-buffer-live-p gnus-article-buffer)
-    (save-excursion
-      (set-buffer gnus-article-buffer)
+    (with-current-buffer gnus-article-buffer
       (mm-destroy-parts gnus-article-mime-handles)
       ;; Set it to nil for safety reason.
       (setq gnus-article-mime-handle-alist nil)
@@ -7105,8 +7101,7 @@
       (gnus-async-halt-prefetch)
       (run-hooks 'gnus-summary-prepare-exit-hook)
       (when (gnus-buffer-live-p gnus-article-buffer)
-	(save-excursion
-	  (set-buffer gnus-article-buffer)
+	(with-current-buffer gnus-article-buffer
 	  (mm-destroy-parts gnus-article-mime-handles)
 	  ;; Set it to nil for safety reason.
 	  (setq gnus-article-mime-handle-alist nil)
@@ -7150,7 +7145,7 @@
     (cond ((eq major-mode 'gnus-summary-mode)
 	   (gnus-set-global-variables))
 	  ((eq major-mode 'gnus-article-mode)
-	   (save-excursion
+	   (save-current-buffer
 	     ;; The `gnus-summary-buffer' variable may point
 	     ;; to the old summary buffer when using a single
 	     ;; article buffer.
@@ -7245,14 +7240,12 @@
      (gnus-kill-summary-on-exit
       (when (and gnus-use-trees
 		 (gnus-buffer-exists-p buffer))
-	(save-excursion
-	  (set-buffer buffer)
+	(with-current-buffer buffer
 	  (gnus-tree-close gnus-newsgroup-name)))
       (gnus-kill-buffer buffer))
      ;; Deaden the buffer.
      ((gnus-buffer-exists-p buffer)
-      (save-excursion
-	(set-buffer buffer)
+      (with-current-buffer buffer
 	(gnus-deaden-summary))))))
 
 (defun gnus-summary-wake-up-the-dead (&rest args)
@@ -7533,8 +7526,7 @@
     (and (not pseudo)
 	 (gnus-summary-article-pseudo-p article)
 	 (error "This is a pseudo-article"))
-    (save-excursion
-      (set-buffer gnus-summary-buffer)
+    (with-current-buffer gnus-summary-buffer
       (if (or (and gnus-single-article-buffer
 		   (or (null gnus-current-article)
 		       (null gnus-article-current)
@@ -7643,8 +7635,7 @@
 		      (?\C-p (gnus-group-prev-unread-group 1))))
 	(cursor-in-echo-area t)
 	keve key group ended prompt)
-    (save-excursion
-      (set-buffer gnus-group-buffer)
+    (with-current-buffer gnus-group-buffer
       (goto-char start)
       (setq group
 	    (if (eq gnus-keep-same-level 'best)
@@ -8748,8 +8739,7 @@
 	  ;; References header, since this is slightly more
 	  ;; reliable than the References field we got from the
 	  ;; server.
-	  (save-excursion
-	    (set-buffer gnus-original-article-buffer)
+	  (with-current-buffer gnus-original-article-buffer
 	    (nnheader-narrow-to-headers)
 	    (unless (setq ref (message-fetch-field "references"))
 	      (when (setq ref (message-fetch-field "in-reply-to"))
@@ -8924,8 +8914,7 @@
 	   (case-fold-search t)
 	   (buf (current-buffer))
 	   dig to-address)
-      (save-excursion
-	(set-buffer gnus-original-article-buffer)
+      (with-current-buffer gnus-original-article-buffer
 	;; Have the digest group inherit the main mail address of
 	;; the parent article.
 	(when (setq to-address (or (gnus-fetch-field "reply-to")
@@ -8995,7 +8984,7 @@
 				     (nndoc-article-type guess))
 		       t nil t))
 		(progn
-	    ;; Make all postings to this group go to the parent group.
+                  ;; Make all postings to this group go to the parent group.
 		  (nconc (gnus-info-params (gnus-get-info egroup))
 			 params)
 		  (push egroup groups))
@@ -9150,6 +9139,7 @@
 This search includes all articles in the current group that Gnus has
 fetched headers for, whether they are displayed or not."
   (let ((articles nil)
+	;; Can't eta-reduce because it's a macro.
 	(func `(lambda (h) (,(intern (concat "mail-header-" header)) h)))
 	(case-fold-search t))
     (dolist (header gnus-newsgroup-headers)
@@ -9346,8 +9336,7 @@
       (gnus-summary-select-article nil 'force)
       (let ((deps gnus-newsgroup-dependencies)
 	    head header lines)
-	(save-excursion
-	  (set-buffer gnus-original-article-buffer)
+	(with-current-buffer gnus-original-article-buffer
 	  (save-restriction
 	    (message-narrow-to-head)
 	    (setq head (buffer-string))
@@ -9387,8 +9376,7 @@
 	  gnus-break-pages)
       ;; Destroy any MIME parts.
       (when (gnus-buffer-live-p gnus-article-buffer)
-	(save-excursion
-	  (set-buffer gnus-article-buffer)
+	(with-current-buffer gnus-article-buffer
 	  (mm-destroy-parts gnus-article-mime-handles)
 	  ;; Set it to nil for safety reason.
 	  (setq gnus-article-mime-handle-alist nil)
@@ -9425,7 +9413,7 @@
     (with-current-buffer gnus-article-buffer
       (widen)
       (article-narrow-to-head)
-      (let* ((buffer-read-only nil)
+      (let* ((inhibit-read-only t)
 	     (inhibit-point-motion-hooks t)
 	     (hidden (if (numberp arg)
 			 (>= arg 0)
@@ -9452,7 +9440,7 @@
 	(if gnus-break-pages
 	    (gnus-narrow-to-page)
 	  (when (gnus-visual-p 'page-marker)
-	    (let ((buffer-read-only nil))
+	    (let ((inhibit-read-only t))
 	      (gnus-remove-text-with-property 'gnus-prev)
 	      (gnus-remove-text-with-property 'gnus-next))))
 	(gnus-set-mode-line 'article)))))
@@ -9473,7 +9461,7 @@
       (save-restriction
 	(widen)
 	(let ((start (window-start))
-	      buffer-read-only)
+	      (inhibit-read-only t))
 	  (if (equal arg '(4))
 	      (message-caesar-buffer-body nil t)
 	    (message-caesar-buffer-body arg))
@@ -9519,7 +9507,7 @@
 	(save-restriction
 	  (widen)
 	  (let ((pos (window-start))
-		buffer-read-only)
+		(inhibit-read-only t))
 	    (goto-char (point-min))
 	    (when (message-goto-body)
 	      (gnus-narrow-to-body))
@@ -9537,7 +9525,7 @@
   (gnus-eval-in-buffer-window gnus-article-buffer
     (widen)
     (when (gnus-visual-p 'page-marker)
-      (let ((buffer-read-only nil))
+      (let ((inhibit-read-only t))
 	(gnus-remove-text-with-property 'gnus-prev)
 	(gnus-remove-text-with-property 'gnus-next))
       (setq gnus-page-broken nil))))
@@ -9662,8 +9650,7 @@
 	    move-is-internal)))		; is this move internal?
 	;; Copy the article.
 	((eq action 'copy)
-	 (save-excursion
-	   (set-buffer copy-buf)
+	 (with-current-buffer copy-buf
 	   (when (gnus-request-article-this-buffer article gnus-newsgroup-name)
 	     (save-restriction
 	       (nnheader-narrow-to-headers)
@@ -9686,8 +9673,7 @@
 			     (delete "Xref:" (delete new-xref xref))
 			     " ")
 		  " " new-xref))
-	   (save-excursion
-	     (set-buffer copy-buf)
+	   (with-current-buffer copy-buf
 	     ;; First put the article in the destination group.
 	     (gnus-request-article-this-buffer article gnus-newsgroup-name)
 	     (when (consp (setq art-group
@@ -9791,8 +9777,7 @@
 	  ;; Update the Xref header in this article to point to
 	  ;; the new crossposted article we have just created.
 	  (when (eq action 'crosspost)
-	    (save-excursion
-	      (set-buffer copy-buf)
+	    (with-current-buffer copy-buf
 	      (gnus-request-article-this-buffer article gnus-newsgroup-name)
 	      (nnheader-replace-header "Xref" new-xref)
 	      (gnus-request-replace-article
@@ -9817,8 +9802,7 @@
 
     (apply 'gnus-summary-remove-process-mark articles-to-update-marks)
     ;; Re-activate all groups that have been moved to.
-    (save-excursion
-      (set-buffer gnus-group-buffer)
+    (with-current-buffer gnus-group-buffer
       (let ((gnus-group-marked to-groups))
 	(gnus-group-get-new-news-this-group nil t)))
 
@@ -9848,16 +9832,6 @@
   :type 'symbol
   :group 'gnus-summary-mail)
 
-(defcustom gnus-summary-display-while-building nil
-  "If non-nil, show and update the summary buffer as it's being built.
-If the value is t, update the buffer after every line is inserted.  If
-the value is an integer (N), update the display every N lines."
-  :version "22.1"
-  :group 'gnus-thread
-  :type '(choice (const :tag "off" nil)
-		 number
-		 (const :tag "frequently" t)))
-
 (defun gnus-summary-respool-article (&optional n method)
   "Respool the current article.
 The article will be squeezed through the mail spooling process again,
@@ -9913,8 +9887,7 @@
     (or (file-readable-p file)
 	(not (file-regular-p file))
 	(error "Can't read %s" file))
-    (save-excursion
-      (set-buffer (gnus-get-buffer-create " *import file*"))
+    (with-current-buffer (gnus-get-buffer-create " *import file*")
       (erase-buffer)
       (nnheader-insert-file-contents file)
       (goto-char (point-min))
@@ -9952,8 +9925,7 @@
 	group-art)
     (unless (gnus-check-backend-function 'request-accept-article group)
       (error "%s does not support article importing" group))
-    (save-excursion
-      (set-buffer (gnus-get-buffer-create " *import file*"))
+    (with-current-buffer (gnus-get-buffer-create " *import file*")
       (erase-buffer)
       (goto-char (point-min))
       ;; This doesn't look like an article, so we fudge some headers.
@@ -10136,8 +10108,7 @@
 					     "nndraft:queue")))
       (error "Can't edit the raw article in group %s"
 	     gnus-newsgroup-name))
-    (save-excursion
-      (set-buffer gnus-summary-buffer)
+    (with-current-buffer gnus-summary-buffer
       (let ((mail-parse-charset gnus-newsgroup-charset)
 	    (mail-parse-ignored-charsets gnus-newsgroup-ignored-charsets))
 	(gnus-set-global-variables)
@@ -10244,8 +10215,7 @@
 		    (let ((nntp-server-buffer (current-buffer)))
 		      (setq header (car (gnus-get-newsgroup-headers
 					 nil t))))
-		    (save-excursion
-		      (set-buffer gnus-summary-buffer)
+		    (with-current-buffer gnus-summary-buffer
 		      (gnus-data-set-header
 		       (gnus-data-find (cdr gnus-article-current))
 		       header)
@@ -10263,8 +10233,7 @@
 	       (cdr gnus-article-current))))
 	;; Prettify the article buffer again.
 	(unless no-highlight
-	  (save-excursion
-	    (set-buffer gnus-article-buffer)
+	  (with-current-buffer gnus-article-buffer
 	    ;;;!!! Fix this -- article should be rehighlighted.
 	    ;;;(gnus-run-hooks 'gnus-article-display-hook)
 	    (set-buffer gnus-original-article-buffer)
@@ -10294,8 +10263,7 @@
   (interactive)
   (let (gnus-mark-article-hook)
     (gnus-summary-select-article)
-    (save-excursion
-      (set-buffer gnus-original-article-buffer)
+    (with-current-buffer gnus-original-article-buffer
       (let ((groups (nnmail-article-group 'identity trace)))
 	(unless silent
 	  (if groups
@@ -10456,7 +10424,7 @@
       (unless (numberp article)
 	(error "%s is not a number" article))
       (push article gnus-newsgroup-replied)
-      (let ((buffer-read-only nil))
+      (let ((inhibit-read-only t))
 	(when (gnus-summary-goto-subject article nil t)
 	  (gnus-summary-update-secondary-mark article))))))
 
@@ -10466,7 +10434,7 @@
   (let ((articles (if (listp article) article (list article))))
     (dolist (article articles)
       (push article gnus-newsgroup-forwarded)
-      (let ((buffer-read-only nil))
+      (let ((inhibit-read-only t))
 	(when (gnus-summary-goto-subject article nil t)
 	  (gnus-summary-update-secondary-mark article))))))
 
@@ -10685,7 +10653,7 @@
 		(= mark gnus-dormant-mark) (= mark gnus-unread-mark))))
 
 	(when (gnus-summary-goto-subject article nil t)
-	  (let ((buffer-read-only nil))
+	  (let ((inhibit-read-only t))
 	    (gnus-summary-show-thread)
 	    ;; Fix the mark.
 	    (gnus-summary-update-mark mark 'unread)
@@ -10729,7 +10697,7 @@
 
 (defun gnus-summary-update-mark (mark type)
   (let ((forward (cdr (assq type gnus-summary-mark-positions)))
-	(buffer-read-only nil))
+	(inhibit-read-only t))
     (re-search-backward "[\n\r]" (point-at-bol) 'move-to-limit)
     (when forward
       (when (looking-at "\r")
@@ -10914,8 +10882,7 @@
   (setq score (if score
 		  (prefix-numeric-value score)
 		(or gnus-summary-default-score 0)))
-  (save-excursion
-    (set-buffer gnus-summary-buffer)
+  (with-current-buffer gnus-summary-buffer
     (goto-char (point-min))
     (while
 	(progn
@@ -10944,8 +10911,7 @@
   (setq score (if score
 		  (prefix-numeric-value score)
 		(or gnus-summary-default-score 0)))
-  (save-excursion
-    (set-buffer gnus-summary-buffer)
+  (with-current-buffer gnus-summary-buffer
     (goto-char (point-min))
     (while (and (progn
 		  (when (> (gnus-summary-article-score) score)
@@ -10958,7 +10924,7 @@
 (defun gnus-summary-limit-include-expunged (&optional no-error)
   "Display all the hidden articles that were expunged for low scores."
   (interactive)
-  (let ((buffer-read-only nil))
+  (let ((inhibit-read-only t))
     (let ((scored gnus-newsgroup-scored)
 	  headers h)
       (while scored
@@ -11334,8 +11300,7 @@
 	(start (point))
 	(article (gnus-summary-article-number)))
     (goto-char start)
-    ;; Go forward until either the buffer ends or the subthread
-    ;; ends.
+    ;; Go forward until either the buffer ends or the subthread ends.
     (when (and (not (eobp))
 	       (or (zerop (gnus-summary-next-thread 1 t))
 		   (goto-char (point-max))))
@@ -11540,7 +11505,7 @@
   "Sort the summary buffer using the default sorting method.
 Argument REVERSE means reverse order."
   (interactive "P")
-  (let* ((buffer-read-only)
+  (let* ((inhibit-read-only t)
 	 (gnus-summary-prepare-hook nil))
     ;; We do the sorting by regenerating the threads.
     (gnus-summary-prepare)
@@ -11563,7 +11528,7 @@
 	      article
 	    `(lambda (t1 t2)
 	       (,article t2 t1))))
-	 (buffer-read-only)
+	 (inhibit-read-only t)
 	 (gnus-summary-prepare-hook nil))
     ;; We do the sorting by regenerating the threads.
     (gnus-summary-prepare)
@@ -11614,8 +11579,7 @@
 					     gnus-article-prepare-hook)))
 	    (gnus-summary-select-article t nil nil article)
 	    (gnus-summary-goto-subject article)))
-	(save-excursion
-	  (set-buffer save-buffer)
+	(with-current-buffer save-buffer
 	  (erase-buffer)
 	  (insert-buffer-substring (if decode
 				       gnus-article-buffer
@@ -11735,7 +11699,7 @@
       (save-restriction
 	(widen)
 	(let ((start (window-start))
-	      buffer-read-only)
+	      (inhibit-read-only t))
 	  (message-pipe-buffer-body program)
 	  (set-window-start (get-buffer-window (current-buffer)) start))))))
 
@@ -11743,8 +11707,7 @@
   "Return a value based on the split METHODS."
   (let (split-name method result match)
     (when methods
-      (save-excursion
-	(set-buffer gnus-original-article-buffer)
+      (with-current-buffer gnus-original-article-buffer
 	(save-restriction
 	  (nnheader-narrow-to-headers)
 	  (while (and methods (not split-name))
@@ -11857,8 +11820,7 @@
     (let ((gnus-display-mime-function nil)
 	  (gnus-inhibit-treatment t))
       (gnus-summary-select-article))
-    (save-excursion
-      (set-buffer gnus-article-buffer)
+    (with-current-buffer gnus-article-buffer
       (let ((handles (or gnus-article-mime-handles
 			 (mm-dissect-buffer nil gnus-article-loose-mime)
 			 (and gnus-article-emulate-mime
@@ -11896,7 +11858,7 @@
 ;; Summary extract commands
 
 (defun gnus-summary-insert-pseudos (pslist &optional not-view)
-  (let ((buffer-read-only nil)
+  (let ((inhibit-read-only t)
 	(article (gnus-summary-article-number))
 	after-article b e)
     (unless (gnus-summary-goto-subject article)
@@ -12024,8 +11986,7 @@
 	;; We have found the header.
 	header
       ;; We have to really fetch the header to this article.
-      (save-excursion
-	(set-buffer nntp-server-buffer)
+      (with-current-buffer nntp-server-buffer
 	(when (setq where (gnus-request-head id group))
 	  (nnheader-fold-continuation-lines)
 	  (goto-char (point-max))
@@ -12053,8 +12014,7 @@
 	      ;; a different group (or server), we fudge some bogus
 	      ;; article numbers for this article.
 	      (mail-header-set-number header gnus-reffed-article-number))
-	    (save-excursion
-	      (set-buffer gnus-summary-buffer)
+	    (with-current-buffer gnus-summary-buffer
 	      (decf gnus-reffed-article-number)
 	      (gnus-remove-header (mail-header-number header))
 	      (push header gnus-newsgroup-headers)
Index: gnus-topic.el
diff -u gnus/lisp/gnus-topic.el:7.23 gnus/lisp/gnus-topic.el:7.24
--- gnus-topic.el:7.23	Sun Feb 24 11:29:15 2008
+++ gnus-topic.el	Thu Apr 24 06:19:20 2008
@@ -1780,5 +1780,5 @@
 
 (provide 'gnus-topic)
 
-;;; arch-tag: bf176856-f30c-40f0-ae77-e41529a1134c
+;; arch-tag: bf176856-f30c-40f0-ae77-e41529a1134c
 ;;; gnus-topic.el ends here
Index: gnus-undo.el
diff -u gnus/lisp/gnus-undo.el:7.12 gnus/lisp/gnus-undo.el:7.13
--- gnus-undo.el:7.12	Sun Jan 20 06:23:57 2008
+++ gnus-undo.el	Thu Apr 24 06:19:20 2008
@@ -190,5 +190,5 @@
 
 (provide 'gnus-undo)
 
-;;; arch-tag: 0d787bc7-787d-499a-837f-211d2cb07f2e
+;; arch-tag: 0d787bc7-787d-499a-837f-211d2cb07f2e
 ;;; gnus-undo.el ends here
Index: gnus-util.el
diff -u gnus/lisp/gnus-util.el:7.77 gnus/lisp/gnus-util.el:7.78
--- gnus-util.el:7.77	Sat Mar  1 02:48:13 2008
+++ gnus-util.el	Thu Apr 24 06:19:20 2008
@@ -1793,5 +1793,5 @@
 
 (provide 'gnus-util)
 
-;;; arch-tag: f94991af-d32b-4c97-8c26-ca12a934de49
+;; arch-tag: f94991af-d32b-4c97-8c26-ca12a934de49
 ;;; gnus-util.el ends here
Index: gnus-uu.el
diff -u gnus/lisp/gnus-uu.el:7.34 gnus/lisp/gnus-uu.el:7.35
--- gnus-uu.el:7.34	Sun Jan 20 06:23:57 2008
+++ gnus-uu.el	Thu Apr 24 06:19:21 2008
@@ -2172,5 +2172,5 @@
 
 (provide 'gnus-uu)
 
-;;; arch-tag: 05312384-0a83-4720-9a58-b3160b888853
+;; arch-tag: 05312384-0a83-4720-9a58-b3160b888853
 ;;; gnus-uu.el ends here
Index: gnus-vm.el
diff -u gnus/lisp/gnus-vm.el:7.8 gnus/lisp/gnus-vm.el:7.9
--- gnus-vm.el:7.8	Sun Jan 20 06:23:57 2008
+++ gnus-vm.el	Thu Apr 24 06:19:20 2008
@@ -105,5 +105,5 @@
 
 (provide 'gnus-vm)
 
-;;; arch-tag: 42ca7f88-a12f-461d-be3e-cac7efb44866
+;; arch-tag: 42ca7f88-a12f-461d-be3e-cac7efb44866
 ;;; gnus-vm.el ends here
Index: gnus-win.el
diff -u gnus/lisp/gnus-win.el:7.14 gnus/lisp/gnus-win.el:7.15
--- gnus-win.el:7.14	Thu Apr 10 13:56:15 2008
+++ gnus-win.el	Thu Apr 24 06:19:21 2008
@@ -592,5 +592,5 @@
 
 (provide 'gnus-win)
 
-;;; arch-tag: ccd5a394-2ddf-4397-b8f8-6d80d3e46e2b
+;; arch-tag: ccd5a394-2ddf-4397-b8f8-6d80d3e46e2b
 ;;; gnus-win.el ends here
Index: gnus.el
diff -u gnus/lisp/gnus.el:7.81 gnus/lisp/gnus.el:7.82
--- gnus.el:7.81	Fri Apr 11 08:39:27 2008
+++ gnus.el	Thu Apr 24 06:19:20 2008
@@ -4375,5 +4375,5 @@
 
 (provide 'gnus)
 
-;;; arch-tag: acebeeab-f331-4f8f-a7ea-89c58c84f636
+;; arch-tag: acebeeab-f331-4f8f-a7ea-89c58c84f636
 ;;; gnus.el ends here
Index: hashcash.el
diff -u gnus/lisp/hashcash.el:7.25 gnus/lisp/hashcash.el:7.26
--- hashcash.el:7.25	Sun Jan 20 06:23:57 2008
+++ hashcash.el	Thu Apr 24 06:19:21 2008
@@ -377,4 +377,4 @@
 
 (provide 'hashcash)
 
-;;; arch-tag: 0e7fe983-a124-4392-9788-0dbcbd2c4d62
+;; arch-tag: 0e7fe983-a124-4392-9788-0dbcbd2c4d62
Index: hmac-def.el
diff -u gnus/lisp/hmac-def.el:7.7 gnus/lisp/hmac-def.el:7.8
--- hmac-def.el:7.7	Sun Jan 20 06:23:57 2008
+++ hmac-def.el	Thu Apr 24 06:19:21 2008
@@ -82,5 +82,5 @@
 
 (provide 'hmac-def)
 
-;;; arch-tag: 645adcef-b835-4900-a10a-11f636c982b9
+;; arch-tag: 645adcef-b835-4900-a10a-11f636c982b9
 ;;; hmac-def.el ends here
Index: hmac-md5.el
diff -u gnus/lisp/hmac-md5.el:7.7 gnus/lisp/hmac-md5.el:7.8
--- hmac-md5.el:7.7	Sun Jan 20 06:23:57 2008
+++ hmac-md5.el	Thu Apr 24 06:19:21 2008
@@ -81,5 +81,5 @@
 
 (provide 'hmac-md5)
 
-;;; arch-tag: 0ab3f4f6-3d4b-4167-a9fa-635b7fed7f27
+;; arch-tag: 0ab3f4f6-3d4b-4167-a9fa-635b7fed7f27
 ;;; hmac-md5.el ends here
Index: html2text.el
diff -u gnus/lisp/html2text.el:7.21 gnus/lisp/html2text.el:7.22
--- html2text.el:7.21	Sun Jan 20 06:23:57 2008
+++ html2text.el	Thu Apr 24 06:19:20 2008
@@ -510,5 +510,5 @@
 ;; </Interactive functions>
 ;;
 (provide 'html2text)
-;;; arch-tag: e9e57b79-35d4-4de1-a647-e7e01fe56d1e
+;; arch-tag: e9e57b79-35d4-4de1-a647-e7e01fe56d1e
 ;;; html2text.el ends here
Index: ietf-drums.el
diff -u gnus/lisp/ietf-drums.el:7.14 gnus/lisp/ietf-drums.el:7.15
--- ietf-drums.el:7.14	Sun Jan 20 06:23:57 2008
+++ ietf-drums.el	Thu Apr 24 06:19:20 2008
@@ -289,5 +289,5 @@
 
 (provide 'ietf-drums)
 
-;;; arch-tag: 379a0191-dbae-4ca6-a0f5-d4202c209ef9
+;; arch-tag: 379a0191-dbae-4ca6-a0f5-d4202c209ef9
 ;;; ietf-drums.el ends here
Index: imap.el
diff -u gnus/lisp/imap.el:7.45 gnus/lisp/imap.el:7.46
--- imap.el:7.45	Wed Apr  2 16:46:57 2008
+++ imap.el	Thu Apr 24 06:19:20 2008
@@ -3005,5 +3005,5 @@
 
 (provide 'imap)
 
-;;; arch-tag: 27369ed6-33e4-482f-96f1-8bb906ba70f7
+;; arch-tag: 27369ed6-33e4-482f-96f1-8bb906ba70f7
 ;;; imap.el ends here
Index: mail-parse.el
diff -u gnus/lisp/mail-parse.el:7.11 gnus/lisp/mail-parse.el:7.12
--- mail-parse.el:7.11	Sun Jan 20 06:23:57 2008
+++ mail-parse.el	Thu Apr 24 06:19:20 2008
@@ -76,5 +76,5 @@
 
 (provide 'mail-parse)
 
-;;; arch-tag: 3e63d75c-c962-4784-ab01-7ba07ca9d2d4
+;; arch-tag: 3e63d75c-c962-4784-ab01-7ba07ca9d2d4
 ;;; mail-parse.el ends here
Index: mail-prsvr.el
diff -u gnus/lisp/mail-prsvr.el:7.9 gnus/lisp/mail-prsvr.el:7.10
--- mail-prsvr.el:7.9	Sun Jan 20 06:23:57 2008
+++ mail-prsvr.el	Thu Apr 24 06:19:21 2008
@@ -43,5 +43,5 @@
 
 (provide 'mail-prsvr)
 
-;;; arch-tag: 9ba878cc-8b43-4f7a-85b1-69b1a9a5d9f5
+;; arch-tag: 9ba878cc-8b43-4f7a-85b1-69b1a9a5d9f5
 ;;; mail-prsvr.el ends here
Index: mail-source.el
diff -u gnus/lisp/mail-source.el:7.31 gnus/lisp/mail-source.el:7.32
--- mail-source.el:7.31	Thu Apr 10 13:56:15 2008
+++ mail-source.el	Thu Apr 24 06:19:20 2008
@@ -1114,5 +1114,5 @@
 
 (provide 'mail-source)
 
-;;; arch-tag: 72948025-1d17-4d6c-bb12-ef1aa2c490fd
+;; arch-tag: 72948025-1d17-4d6c-bb12-ef1aa2c490fd
 ;;; mail-source.el ends here
Index: mailcap.el
diff -u gnus/lisp/mailcap.el:7.14 gnus/lisp/mailcap.el:7.15
--- mailcap.el:7.14	Sun Jan 20 06:23:57 2008
+++ mailcap.el	Thu Apr 24 06:19:20 2008
@@ -1007,7 +1007,55 @@
 	       (cdr l))))
       mailcap-mime-data)))))
 
+;;;
+;;; Useful supplementary functions
+;;;
+
+(defun mailcap-file-default-commands (files)
+  "Return a list of default commands for FILES."
+  (mailcap-parse-mailcaps)
+  (mailcap-parse-mimetypes)
+  (let* ((all-mime-type
+	  ;; All unique MIME types from file extensions
+	  (delete-dups (mapcar (lambda (file)
+				 (mailcap-extension-to-mime
+				  (file-name-extension file t)))
+			       files)))
+	 (all-mime-info
+	  ;; All MIME info lists
+	  (delete-dups (mapcar (lambda (mime-type)
+				 (mailcap-mime-info mime-type 'all))
+			       all-mime-type)))
+	 (common-mime-info
+	  ;; Intersection of mime-infos from different mime-types;
+	  ;; or just the first MIME info for a single MIME type
+	  (if (cdr all-mime-info)
+	      (delq nil (mapcar (lambda (mi1)
+				  (unless (memq nil (mapcar
+						     (lambda (mi2)
+						       (member mi1 mi2))
+						     (cdr all-mime-info)))
+				    mi1))
+				(car all-mime-info)))
+	    (car all-mime-info)))
+	 (commands
+	  ;; Command strings from `viewer' field of the MIME info
+	  (delete-dups
+	   (delq nil (mapcar (lambda (mime-info)
+			       (let ((command (cdr (assoc 'viewer mime-info))))
+				 (if (stringp command)
+				     (replace-regexp-in-string
+				      ;; Replace mailcap's `%s' placeholder
+				      ;; with dired's `?' placeholder
+				      "%s" "?"
+				      (replace-regexp-in-string
+				       ;; Remove the final filename placeholder
+				       "\s*\\('\\)?%s\\1?\s*\\'" "" command nil t)
+				      nil t))))
+			     common-mime-info)))))
+    commands))
+
 (provide 'mailcap)
 
-;;; arch-tag: 1fd4f9c9-c305-4d2e-9747-3a4d45baa0bd
+;; arch-tag: 1fd4f9c9-c305-4d2e-9747-3a4d45baa0bd
 ;;; mailcap.el ends here
Index: md4.el
diff -u gnus/lisp/md4.el:7.9 gnus/lisp/md4.el:7.10
--- md4.el:7.9	Sun Jan 20 06:23:57 2008
+++ md4.el	Thu Apr 24 06:19:21 2008
@@ -224,5 +224,5 @@
 
 (provide 'md4)
 
-;;; arch-tag: 99d706fe-089b-42ea-9507-67ae41091e6e
+;; arch-tag: 99d706fe-089b-42ea-9507-67ae41091e6e
 ;;; md4.el ends here
Index: message.el
diff -u gnus/lisp/message.el:7.257 gnus/lisp/message.el:7.258
--- message.el:7.257	Mon Apr 21 01:38:57 2008
+++ message.el	Thu Apr 24 06:19:20 2008
@@ -569,7 +569,13 @@
   :link '(custom-manual "(message)Forwarding")
   :type 'boolean)
 
-(defcustom message-ignored-resent-headers "^Return-receipt\\|^X-Gnus\\|^Gnus-Warning:\\|^>?From "
+(defcustom message-ignored-resent-headers
+  ;; `Delivered-To' needs to be removed because some mailers use it to
+  ;; detect loops, so if you resend a message to an address that ultimately
+  ;; comes back to you (e.g. a mailing-list to which you subscribe, in which
+  ;; case you may be removed from the list on the grounds that mail to you
+  ;; bounced with a "mailing loop" error).
+  "^Return-receipt\\|^X-Gnus\\|^Gnus-Warning:\\|^>?From \\|^Delivered-To:"
   "*All headers that match this regexp will be deleted when resending a message."
   :group 'message-interface
   :link '(custom-manual "(message)Resending")
@@ -2484,6 +2490,7 @@
 
 
 (autoload 'Info-goto-node "info")
+(defvar mml2015-use)
 
 (defun message-info (&optional arg)
   "Display the Message manual.
@@ -2492,8 +2499,11 @@
 manual.  With two \\[universal-argument]'s, display the EasyPG or
 PGG manual, depending on the value of `mml2015-use'."
   (interactive "p")
+  ;; Why not `info', which is in loaddefs.el?
   (Info-goto-node (format "(%s)Top"
-			  (cond ((eq arg 16) mml2015-use)
+			  (cond ((eq arg 16)
+				 (require 'mml2015)
+				 mml2015-use)
 				((eq arg  4) 'emacs-mime)
 				;; `booleanp' only available in Emacs 22+
 				((and (not (memq arg '(nil t)))
@@ -5340,19 +5350,18 @@
 		   ;; Quote a string containing non-ASCII characters.
 		   ;; It will make the RFC2047 encoder cause an error
 		   ;; if there are special characters.
-		   (let ((default-enable-multibyte-characters t))
-		     (with-temp-buffer
-		       (insert (car name))
-		       (goto-char (point-min))
-		       (while (search-forward "\"" nil t)
-			 (when (prog2
-				   (backward-char)
-				   (zerop (% (skip-chars-backward "\\\\") 2))
-				 (goto-char (match-beginning 0)))
-			   (insert "\\"))
-			 (forward-char))
-		       ;; Those quotes will be removed by the RFC2047 encoder.
-		       (concat "\"" (buffer-string) "\"")))
+                   (mm-with-multibyte-buffer
+                     (insert (car name))
+                     (goto-char (point-min))
+                     (while (search-forward "\"" nil t)
+                       (when (prog2
+                                 (backward-char)
+                                 (zerop (% (skip-chars-backward "\\\\") 2))
+                               (goto-char (match-beginning 0)))
+                         (insert "\\"))
+                       (forward-char))
+                     ;; Those quotes will be removed by the RFC2047 encoder.
+                     (concat "\"" (buffer-string) "\""))
 		 (car name))
 	     (nth 1 name))
 	   "'s message of \""
Index: messcompat.el
diff -u gnus/lisp/messcompat.el:7.9 gnus/lisp/messcompat.el:7.10
--- messcompat.el:7.9	Sun Jan 20 06:23:57 2008
+++ messcompat.el	Thu Apr 24 06:19:20 2008
@@ -91,5 +91,5 @@
 
 (provide 'messcompat)
 
-;;; arch-tag: a76673be-905e-4bbd-8966-615370494a7b
+;; arch-tag: a76673be-905e-4bbd-8966-615370494a7b
 ;;; messcompat.el ends here
Index: mm-bodies.el
diff -u gnus/lisp/mm-bodies.el:7.18 gnus/lisp/mm-bodies.el:7.19
--- mm-bodies.el:7.18	Sun Jan 20 06:23:57 2008
+++ mm-bodies.el	Thu Apr 24 06:19:20 2008
@@ -203,10 +203,7 @@
 	       (when (re-search-backward "^[A-Za-z0-9+/]+=*[\t ]*$" nil t)
 		 (forward-line))
 	       (point))))
-	   ((memq encoding '(7bit 8bit binary))
-	    ;; Do nothing.
-	    t)
-	   ((null encoding)
+	   ((memq encoding '(nil 7bit 8bit binary))
 	    ;; Do nothing.
 	    t)
 	   ((memq encoding '(x-uuencode x-uue))
@@ -307,5 +304,5 @@
 
 (provide 'mm-bodies)
 
-;;; arch-tag: 41104bb6-4443-4ca9-8d5c-ff87ecf27d8d
+;; arch-tag: 41104bb6-4443-4ca9-8d5c-ff87ecf27d8d
 ;;; mm-bodies.el ends here
Index: mm-decode.el
diff -u gnus/lisp/mm-decode.el:7.65 gnus/lisp/mm-decode.el:7.66
--- mm-decode.el:7.65	Sun Apr 13 22:33:41 2008
+++ mm-decode.el	Thu Apr 24 06:19:20 2008
@@ -235,6 +235,9 @@
        ;; makes it possible to install another package which provides an
        ;; alternative implementation of diff-mode.  --Stef
        (fboundp 'diff-mode)))
+    ;; In case mime.types uses x-diff (as does Debian's mime-support-3.40).
+    ("text/x-diff" mm-display-patch-inline
+     (lambda (handle) (fboundp 'diff-mode)))
     ("application/emacs-lisp" mm-display-elisp-inline identity)
     ("application/x-emacs-lisp" mm-display-elisp-inline identity)
     ("text/dns" mm-display-dns-inline identity)
@@ -663,15 +666,16 @@
 
 (defun mm-copy-to-buffer ()
   "Copy the contents of the current buffer to a fresh buffer."
-    (let ((obuf (current-buffer))
-	  beg)
-      (goto-char (point-min))
-      (search-forward-regexp "^\n" nil t)
-      (setq beg (point))
+  (let ((obuf (current-buffer))
+        (mb (mm-multibyte-p))
+        beg)
+    (goto-char (point-min))
+    (search-forward-regexp "^\n" nil t)
+    (setq beg (point))
     (with-current-buffer
-       ;; Preserve the data's unibyteness (for url-insert-file-contents).
-       (let ((default-enable-multibyte-characters (mm-multibyte-p)))
-          (generate-new-buffer " *mm*"))
+          (generate-new-buffer " *mm*")
+      ;; Preserve the data's unibyteness (for url-insert-file-contents).
+      (mm-set-buffer-multibyte mb)
       (insert-buffer-substring obuf beg)
       (current-buffer))))
 
@@ -1131,17 +1135,15 @@
 
 (defmacro mm-with-part (handle &rest forms)
   "Run FORMS in the temp buffer containing the contents of HANDLE."
-  `(let* ((handle ,handle)
-	  ;; The multibyteness of the temp buffer should be turned on
-	  ;; if inserting a multibyte string.  Contrarily, the buffer's
-	  ;; multibyteness should be off if inserting a unibyte string,
-	  ;; especially if a string contains 8bit data.
-	  (default-enable-multibyte-characters
-	    (with-current-buffer (mm-handle-buffer handle)
-	      (mm-multibyte-p))))
+  ;; The handle-buffer's content is a sequence of bytes, not a sequence of
+  ;; chars, so the buffer should be unibyte.  It may happen that the
+  ;; handle-buffer is multibyte for some reason, in which case now is a good
+  ;; time to adjust it, since we know at this point that it should
+  ;; be unibyte.
+  `(let* ((handle ,handle))
      (with-temp-buffer
-       (insert-buffer-substring (mm-handle-buffer handle))
        (mm-disable-multibyte)
+       (insert-buffer-substring (mm-handle-buffer handle))
        (mm-decode-content-transfer-encoding
 	(mm-handle-encoding handle)
 	(mm-handle-media-type handle))
@@ -1238,10 +1240,9 @@
       (setq filename (gnus-map-function mm-file-name-rewrite-functions
 					(file-name-nondirectory filename))))
     (setq file
-	  (mm-with-multibyte
-	   (read-file-name (or prompt "Save MIME part to: ")
-			   (or mm-default-directory default-directory)
-			   nil nil (or filename ""))))
+          (read-file-name (or prompt "Save MIME part to: ")
+                          (or mm-default-directory default-directory)
+                          nil nil (or filename "")))
     (setq mm-default-directory (file-name-directory file))
     (and (or (not (file-exists-p file))
 	     (yes-or-no-p (format "File %s already exists; overwrite? "
Index: mm-encode.el
diff -u gnus/lisp/mm-encode.el:7.12 gnus/lisp/mm-encode.el:7.13
--- mm-encode.el:7.12	Sun Jan 20 06:23:57 2008
+++ mm-encode.el	Thu Apr 24 06:19:20 2008
@@ -206,5 +206,5 @@
 
 (provide 'mm-encode)
 
-;;; arch-tag: 7d01bba4-d469-4851-952b-dc863f84ed66
+;; arch-tag: 7d01bba4-d469-4851-952b-dc863f84ed66
 ;;; mm-encode.el ends here
Index: mm-extern.el
diff -u gnus/lisp/mm-extern.el:7.14 gnus/lisp/mm-extern.el:7.15
--- mm-extern.el:7.14	Sun Jan 20 06:23:57 2008
+++ mm-extern.el	Thu Apr 24 06:19:21 2008
@@ -171,5 +171,5 @@
 
 (provide 'mm-extern)
 
-;;; arch-tag: 9653808e-14d9-4172-86e6-adceaa05378e
+;; arch-tag: 9653808e-14d9-4172-86e6-adceaa05378e
 ;;; mm-extern.el ends here
Index: mm-partial.el
diff -u gnus/lisp/mm-partial.el:7.9 gnus/lisp/mm-partial.el:7.10
--- mm-partial.el:7.9	Sun Jan 20 06:23:57 2008
+++ mm-partial.el	Thu Apr 24 06:19:21 2008
@@ -152,5 +152,5 @@
 
 (provide 'mm-partial)
 
-;;; arch-tag: 460e7424-05f2-4a1d-a0f2-70ec081eff7d
+;; arch-tag: 460e7424-05f2-4a1d-a0f2-70ec081eff7d
 ;;; mm-partial.el ends here
Index: mm-url.el
diff -u gnus/lisp/mm-url.el:7.20 gnus/lisp/mm-url.el:7.21
--- mm-url.el:7.20	Sun Jan 20 06:23:57 2008
+++ mm-url.el	Thu Apr 24 06:19:21 2008
@@ -457,5 +457,5 @@
 
 (provide 'mm-url)
 
-;;; arch-tag: 0594f9b3-417c-48b0-adc2-5082e1e7917f
+;; arch-tag: 0594f9b3-417c-48b0-adc2-5082e1e7917f
 ;;; mm-url.el ends here
Index: mm-util.el
diff -u gnus/lisp/mm-util.el:7.76 gnus/lisp/mm-util.el:7.77
--- mm-util.el:7.76	Sun Feb 24 16:39:37 2008
+++ mm-util.el	Thu Apr 24 06:19:20 2008
@@ -105,6 +105,7 @@
      (multibyte-string-p . ignore)
      (insert-byte . insert-char)
      (multibyte-char-to-unibyte . identity)
+     (set-buffer-multibyte . ignore)
      (special-display-p
       . (lambda (buffer-name)
 	  "Returns non-nil if a buffer named BUFFER-NAME gets a special frame."
@@ -1052,16 +1053,18 @@
 (defmacro mm-with-unibyte-buffer (&rest forms)
   "Create a temporary buffer, and evaluate FORMS there like `progn'.
 Use unibyte mode for this."
-  `(let (default-enable-multibyte-characters)
-     (with-temp-buffer ,@forms)))
+  `(with-temp-buffer
+     (mm-disable-multibyte)
+     ,@forms))
 (put 'mm-with-unibyte-buffer 'lisp-indent-function 0)
 (put 'mm-with-unibyte-buffer 'edebug-form-spec '(body))
 
 (defmacro mm-with-multibyte-buffer (&rest forms)
   "Create a temporary buffer, and evaluate FORMS there like `progn'.
 Use multibyte mode for this."
-  `(let ((default-enable-multibyte-characters t))
-     (with-temp-buffer ,@forms)))
+  `(with-temp-buffer
+     (mm-enable-multibyte)
+     ,@forms))
 (put 'mm-with-multibyte-buffer 'lisp-indent-function 0)
 (put 'mm-with-multibyte-buffer 'edebug-form-spec '(body))
 
Index: mm-uu.el
diff -u gnus/lisp/mm-uu.el:7.56 gnus/lisp/mm-uu.el:7.57
--- mm-uu.el:7.56	Sat Mar  1 02:48:13 2008
+++ mm-uu.el	Thu Apr 24 06:19:20 2008
@@ -280,11 +280,14 @@
 see `set-text-properties'.  If PROPERTIES equals t, this means to
 apply the face `mm-uu-extract'."
   (let ((obuf (current-buffer))
+        (multi (and (boundp 'enable-multibyte-characters)
+                    enable-multibyte-characters))
 	(coding-system
          ;; Might not exist in non-MULE XEmacs
          (when (boundp 'buffer-file-coding-system)
            buffer-file-coding-system)))
     (with-current-buffer (generate-new-buffer " *mm-uu*")
+      (if multi (mm-enable-multibyte) (mm-disable-multibyte))
       (setq buffer-file-coding-system coding-system)
       (insert-buffer-substring obuf from to)
       (cond ((eq properties  t)
@@ -441,8 +444,7 @@
   ;; This might not be exactly correct, but we sure can't get the
   ;; binary data from the article buffer, since that's already in a
   ;; non-binary charset.  So get it from the original article buffer. 
-  (mm-make-handle (save-excursion
-		    (set-buffer gnus-original-article-buffer)
+  (mm-make-handle (with-current-buffer gnus-original-article-buffer
 		    (mm-uu-copy-to-buffer start-point end-point))
 		  (list (or (and file-name
 				 (string-match "\\.[^\\.]+$" file-name)
Index: mm-view.el
diff -u gnus/lisp/mm-view.el:7.54 gnus/lisp/mm-view.el:7.55
--- mm-view.el:7.54	Fri Mar  7 07:24:30 2008
+++ mm-view.el	Thu Apr 24 06:19:20 2008
@@ -86,14 +86,14 @@
 
 (defun mm-inline-image-emacs (handle)
   (let ((b (point-marker))
-	buffer-read-only)
+	(inhibit-read-only t))
     (put-image (mm-get-image handle) b)
     (insert "\n\n")
     (mm-handle-set-undisplayer
      handle
      `(lambda ()
 	(let ((b ,b)
-	      buffer-read-only)
+	      (inhibit-read-only t))
 	  (remove-images b b)
 	  (delete-region b (+ b 2)))))))
 
@@ -102,12 +102,12 @@
     (insert "\n\n")
     (forward-char -2)
     (let ((annot (make-annotation (mm-get-image handle) nil 'text))
-	  buffer-read-only)
+	(inhibit-read-only t))
       (mm-handle-set-undisplayer
        handle
        `(lambda ()
 	  (let ((b ,(point-marker))
-		buffer-read-only)
+	      (inhibit-read-only t))
 	    (delete-annotation ,annot)
 	    (delete-region (- b 2) b))))
       (set-extent-property annot 'mm t)
@@ -194,13 +194,12 @@
 	(mm-handle-set-undisplayer
 	 handle
 	 `(lambda ()
-	    (let (buffer-read-only)
+	    (let ((inhibit-read-only t))
 	      ,@(if (functionp 'remove-specifier)
-		    '((mapcar (lambda (prop)
-				(remove-specifier
-				 (face-property 'default prop)
-				 (current-buffer)))
-			      '(background background-pixmap foreground))))
+                    '((dolist (prop '(background background-pixmap foreground))
+                        (remove-specifier
+                         (face-property 'default prop)
+                         (current-buffer)))))
 	      (delete-region ,(point-min-marker)
 			     ,(point-max-marker)))))))))
 
@@ -389,7 +388,7 @@
 (defun mm-inline-text-html (handle)
   (let* ((func (or mm-inline-text-html-renderer mm-text-html-renderer))
 	 (entry (assq func mm-text-html-renderer-alist))
-	 buffer-read-only)
+	 (inhibit-read-only t))
     (if entry
 	(setq func (cdr entry)))
     (cond
@@ -399,7 +398,7 @@
       (apply (car func) handle (cdr func))))))
 
 (defun mm-inline-text-vcard (handle)
-  (let (buffer-read-only)
+  (let ((inhibit-read-only t))
     (mm-insert-inline
      handle
      (concat "\n-- \n"
@@ -415,7 +414,7 @@
 	(type (mm-handle-media-subtype handle))
 	(charset (mail-content-type-get
 		  (mm-handle-type handle) 'charset))
-	buffer-read-only)
+	(inhibit-read-only t))
     (if (or (eq charset 'gnus-decoded)
 	    ;; This is probably not entirely correct, but
 	    ;; makes rfc822 parts with embedded multiparts work.
@@ -437,15 +436,14 @@
 	(goto-char (point-max))))
     (save-restriction
       (narrow-to-region b (point))
-      (when (or (equal type "enriched")
-		(equal type "richtext"))
-	(set-text-properties (point-min) (point-max) nil)
+      (when (member type '("enriched" "richtext"))
+        (set-text-properties (point-min) (point-max) nil)
 	(ignore-errors
 	  (enriched-decode (point-min) (point-max))))
       (mm-handle-set-undisplayer
        handle
        `(lambda ()
-	  (let (buffer-read-only)
+          (let ((inhibit-read-only t))
 	    (delete-region ,(point-min-marker)
 			   ,(point-max-marker))))))))
 
@@ -458,9 +456,9 @@
     (mm-handle-set-undisplayer
      handle
      `(lambda ()
-	(let (buffer-read-only)
-	  (delete-region ,(set-marker (make-marker) b)
-			 ,(set-marker (make-marker) (point))))))))
+	(let ((inhibit-read-only t))
+	  (delete-region ,(copy-marker b)
+			 ,(copy-marker (point))))))))
 
 (defun mm-inline-audio (handle)
   (message "Not implemented"))
@@ -527,13 +525,12 @@
 	(mm-handle-set-undisplayer
 	 handle
 	 `(lambda ()
-	    (let (buffer-read-only)
+	    (let ((inhibit-read-only t))
 	      (if (fboundp 'remove-specifier)
 		  ;; This is only valid on XEmacs.
-		  (mapcar (lambda (prop)
-			    (remove-specifier
-			     (face-property 'default prop) (current-buffer)))
-			  '(background background-pixmap foreground)))
+		  (dolist (prop '(background background-pixmap foreground))
+		    (remove-specifier
+		     (face-property 'default prop) (current-buffer))))
 	      (delete-region ,(point-min-marker) ,(point-max-marker)))))))))
 
 (defun mm-display-inline-fontify (handle mode)
@@ -605,22 +602,20 @@
 ;;      id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
 ;;          us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 }
 (defvar mm-pkcs7-signed-magic
-  (mm-string-as-unibyte
-   (mapconcat 'char-to-string
-	      (list ?\x30 ?\x5c ?\x28 ?\x80 ?\x5c ?\x7c ?\x81 ?\x2e ?\x5c
-		    ?\x7c ?\x82 ?\x2e ?\x2e ?\x5c ?\x7c ?\x83 ?\x2e ?\x2e
-		    ?\x2e ?\x5c ?\x29 ?\x06 ?\x09 ?\x5c ?\x2a ?\x86 ?\x48
-		    ?\x86 ?\xf7 ?\x0d ?\x01 ?\x07 ?\x02) "")))
+  (funcall (if (fboundp 'unibyte-string) 'unibyte-string 'string)
+   ?\x30 ?\x5c ?\x28 ?\x80 ?\x5c ?\x7c ?\x81 ?\x2e ?\x5c
+   ?\x7c ?\x82 ?\x2e ?\x2e ?\x5c ?\x7c ?\x83 ?\x2e ?\x2e
+   ?\x2e ?\x5c ?\x29 ?\x06 ?\x09 ?\x5c ?\x2a ?\x86 ?\x48
+   ?\x86 ?\xf7 ?\x0d ?\x01 ?\x07 ?\x02))
 
 ;;      id-envelopedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
 ;;          us(840) rsadsi(113549) pkcs(1) pkcs7(7) 3 }
 (defvar mm-pkcs7-enveloped-magic
-  (mm-string-as-unibyte
-   (mapconcat 'char-to-string
-	      (list ?\x30 ?\x5c ?\x28 ?\x80 ?\x5c ?\x7c ?\x81 ?\x2e ?\x5c
-		    ?\x7c ?\x82 ?\x2e ?\x2e ?\x5c ?\x7c ?\x83 ?\x2e ?\x2e
-		    ?\x2e ?\x5c ?\x29 ?\x06 ?\x09 ?\x5c ?\x2a ?\x86 ?\x48
-		    ?\x86 ?\xf7 ?\x0d ?\x01 ?\x07 ?\x03) "")))
+  (funcall (if (fboundp 'unibyte-string) 'unibyte-string 'string)
+   ?\x30 ?\x5c ?\x28 ?\x80 ?\x5c ?\x7c ?\x81 ?\x2e ?\x5c
+   ?\x7c ?\x82 ?\x2e ?\x2e ?\x5c ?\x7c ?\x83 ?\x2e ?\x2e
+   ?\x2e ?\x5c ?\x29 ?\x06 ?\x09 ?\x5c ?\x2a ?\x86 ?\x48
+   ?\x86 ?\xf7 ?\x0d ?\x01 ?\x07 ?\x03))
 
 (defun mm-view-pkcs7-get-type (handle)
   (mm-with-unibyte-buffer
@@ -681,5 +676,5 @@
 
 (provide 'mm-view)
 
-;;; arch-tag: b60e749a-d05c-47f2-bccd-bdaa59327cb2
+;; arch-tag: b60e749a-d05c-47f2-bccd-bdaa59327cb2
 ;;; mm-view.el ends here
Index: mml-sec.el
diff -u gnus/lisp/mml-sec.el:7.22 gnus/lisp/mml-sec.el:7.23
--- mml-sec.el:7.22	Sun Jan 20 06:23:57 2008
+++ mml-sec.el	Thu Apr 24 06:19:21 2008
@@ -380,5 +380,5 @@
 
 (provide 'mml-sec)
 
-;;; arch-tag: 111c56e7-df5e-4287-87d7-93ed2911ec6c
+;; arch-tag: 111c56e7-df5e-4287-87d7-93ed2911ec6c
 ;;; mml-sec.el ends here
Index: mml-smime.el
diff -u gnus/lisp/mml-smime.el:7.21 gnus/lisp/mml-smime.el:7.22
--- mml-smime.el:7.21	Sun Jan 20 06:23:57 2008
+++ mml-smime.el	Thu Apr 24 06:19:20 2008
@@ -552,5 +552,5 @@
 
 (provide 'mml-smime)
 
-;;; arch-tag: f1bf94d4-f2cd-4c6f-b059-ad69492817e2
+;; arch-tag: f1bf94d4-f2cd-4c6f-b059-ad69492817e2
 ;;; mml-smime.el ends here
Index: mml.el
diff -u gnus/lisp/mml.el:7.65 gnus/lisp/mml.el:7.66
--- mml.el:7.65	Thu Mar 20 19:12:45 2008
+++ mml.el	Thu Apr 24 06:19:21 2008
@@ -1516,5 +1516,5 @@
 
 (provide 'mml)
 
-;;; arch-tag: 583c96cf-1ffe-451b-a5e5-4733ae9ddd12
+;; arch-tag: 583c96cf-1ffe-451b-a5e5-4733ae9ddd12
 ;;; mml.el ends here
Index: mml1991.el
diff -u gnus/lisp/mml1991.el:7.25 gnus/lisp/mml1991.el:7.26
--- mml1991.el:7.25	Sun Jan 20 06:23:57 2008
+++ mml1991.el	Thu Apr 24 06:19:20 2008
@@ -520,5 +520,5 @@
 ;; coding: iso-8859-1
 ;; End:
 
-;;; arch-tag: e542be18-ab28-4393-9b33-97fe9cf30706
+;; arch-tag: e542be18-ab28-4393-9b33-97fe9cf30706
 ;;; mml1991.el ends here
Index: mml2015.el
diff -u gnus/lisp/mml2015.el:7.53 gnus/lisp/mml2015.el:7.54
--- mml2015.el:7.53	Mon Mar 10 09:59:56 2008
+++ mml2015.el	Thu Apr 24 06:19:20 2008
@@ -1422,5 +1422,5 @@
 
 (provide 'mml2015)
 
-;;; arch-tag: b04701d5-0b09-44d8-bed8-de901bf435f2
+;; arch-tag: b04701d5-0b09-44d8-bed8-de901bf435f2
 ;;; mml2015.el ends here
Index: netrc.el
diff -u gnus/lisp/netrc.el:7.21 gnus/lisp/netrc.el:7.22
--- netrc.el:7.21	Mon Mar 10 01:53:11 2008
+++ netrc.el	Thu Apr 24 06:19:20 2008
@@ -210,5 +210,5 @@
 
 (provide 'netrc)
 
-;;; arch-tag: af9929cc-2d12-482f-936e-eb4366f9fa55
+;; arch-tag: af9929cc-2d12-482f-936e-eb4366f9fa55
 ;;; netrc.el ends here
Index: nnagent.el
diff -u gnus/lisp/nnagent.el:7.15 gnus/lisp/nnagent.el:7.16
--- nnagent.el:7.15	Sun Jan 20 06:23:57 2008
+++ nnagent.el	Thu Apr 24 06:19:20 2008
@@ -263,5 +263,5 @@
 
 (provide 'nnagent)
 
-;;; arch-tag: af710b77-f816-4969-af31-6fd94fb42245
+;; arch-tag: af710b77-f816-4969-af31-6fd94fb42245
 ;;; nnagent.el ends here
Index: nnbabyl.el
diff -u gnus/lisp/nnbabyl.el:7.11 gnus/lisp/nnbabyl.el:7.12
--- nnbabyl.el:7.11	Sun Jan 20 06:23:57 2008
+++ nnbabyl.el	Thu Apr 24 06:19:21 2008
@@ -665,5 +665,5 @@
 
 (provide 'nnbabyl)
 
-;;; arch-tag: aa7ddedb-8c07-4c0e-beb0-58e795c2b81b
+;; arch-tag: aa7ddedb-8c07-4c0e-beb0-58e795c2b81b
 ;;; nnbabyl.el ends here
Index: nndb.el
diff -u gnus/lisp/nndb.el:7.16 gnus/lisp/nndb.el:7.17
--- nndb.el:7.16	Sun Jan 20 06:23:57 2008
+++ nndb.el	Thu Apr 24 06:19:20 2008
@@ -323,5 +323,5 @@
 
 (provide 'nndb)
 
-;;; arch-tag: 83bd6fb4-58d9-4fed-a901-c6c625ad5f8a
+;; arch-tag: 83bd6fb4-58d9-4fed-a901-c6c625ad5f8a
 ;;; nndb.el ends here
Index: nndiary.el
diff -u gnus/lisp/nndiary.el:7.19 gnus/lisp/nndiary.el:7.20
--- nndiary.el:7.19	Sun Jan 20 06:23:57 2008
+++ nndiary.el	Thu Apr 24 06:19:21 2008
@@ -1587,5 +1587,5 @@
 (provide 'nndiary)
 
 
-;;; arch-tag: 9c542b95-92e7-4ace-a038-330ab296e203
+;; arch-tag: 9c542b95-92e7-4ace-a038-330ab296e203
 ;;; nndiary.el ends here
Index: nndir.el
diff -u gnus/lisp/nndir.el:7.9 gnus/lisp/nndir.el:7.10
--- nndir.el:7.9	Sun Jan 20 06:23:57 2008
+++ nndir.el	Thu Apr 24 06:19:21 2008
@@ -98,5 +98,5 @@
 
 (provide 'nndir)
 
-;;; arch-tag: 56f09f68-0e4e-4816-818a-df80b4a394c8
+;; arch-tag: 56f09f68-0e4e-4816-818a-df80b4a394c8
 ;;; nndir.el ends here
Index: nndoc.el
diff -u gnus/lisp/nndoc.el:7.13 gnus/lisp/nndoc.el:7.14
--- nndoc.el:7.13	Sun Jan 20 06:23:57 2008
+++ nndoc.el	Thu Apr 24 06:19:20 2008
@@ -689,7 +689,7 @@
   (looking-at "JMF"))
 
 (defun nndoc-oe-dbx-type-p ()
-  (looking-at (mm-string-as-multibyte "\317\255\022\376")))
+  (looking-at (mm-string-to-multibyte "\317\255\022\376")))
 
 (defun nndoc-read-little-endian ()
   (+ (prog1 (char-after) (forward-char 1))
@@ -1027,5 +1027,5 @@
 
 (provide 'nndoc)
 
-;;; arch-tag: f5c2970e-0387-47ac-a0b3-6cc317dffabe
+;; arch-tag: f5c2970e-0387-47ac-a0b3-6cc317dffabe
 ;;; nndoc.el ends here
Index: nndraft.el
diff -u gnus/lisp/nndraft.el:7.12 gnus/lisp/nndraft.el:7.13
--- nndraft.el:7.12	Sun Jan 20 06:23:57 2008
+++ nndraft.el	Thu Apr 24 06:19:20 2008
@@ -315,5 +315,5 @@
 
 (provide 'nndraft)
 
-;;; arch-tag: 3ce26ca0-41cb-48b1-8703-4dad35e188aa
+;; arch-tag: 3ce26ca0-41cb-48b1-8703-4dad35e188aa
 ;;; nndraft.el ends here
Index: nneething.el
diff -u gnus/lisp/nneething.el:7.12 gnus/lisp/nneething.el:7.13
--- nneething.el:7.12	Sun Jan 20 06:23:57 2008
+++ nneething.el	Thu Apr 24 06:19:20 2008
@@ -428,5 +428,5 @@
 
 (provide 'nneething)
 
-;;; arch-tag: 1277f386-88f2-4459-bb24-f3f45962a6c5
+;; arch-tag: 1277f386-88f2-4459-bb24-f3f45962a6c5
 ;;; nneething.el ends here
Index: nnfolder.el
diff -u gnus/lisp/nnfolder.el:7.21 gnus/lisp/nnfolder.el:7.22
--- nnfolder.el:7.21	Sun Jan 20 06:23:57 2008
+++ nnfolder.el	Thu Apr 24 06:19:20 2008
@@ -1302,5 +1302,5 @@
 
 (provide 'nnfolder)
 
-;;; arch-tag: a040d0f4-4f4e-445f-8972-839575c5f7e6
+;; arch-tag: a040d0f4-4f4e-445f-8972-839575c5f7e6
 ;;; nnfolder.el ends here
Index: nngateway.el
diff -u gnus/lisp/nngateway.el:7.8 gnus/lisp/nngateway.el:7.9
--- nngateway.el:7.8	Sun Jan 20 06:23:57 2008
+++ nngateway.el	Thu Apr 24 06:19:20 2008
@@ -91,5 +91,5 @@
 
 (provide 'nngateway)
 
-;;; arch-tag: f7ecb92e-b10c-43d5-9a9b-1314233341fc
+;; arch-tag: f7ecb92e-b10c-43d5-9a9b-1314233341fc
 ;;; nngateway.el ends here
Index: nnheader.el
diff -u gnus/lisp/nnheader.el:7.31 gnus/lisp/nnheader.el:7.32
--- nnheader.el:7.31	Sun Jan 20 06:23:57 2008
+++ nnheader.el	Thu Apr 24 06:19:21 2008
@@ -572,12 +572,11 @@
 
 (defun nnheader-init-server-buffer ()
   "Initialize the Gnus-backend communication buffer."
-  (save-excursion
-    (unless (gnus-buffer-live-p nntp-server-buffer)
-      (setq nntp-server-buffer (get-buffer-create " *nntpd*")))
-    (set-buffer nntp-server-buffer)
-    (mm-enable-multibyte)
+  (unless (gnus-buffer-live-p nntp-server-buffer)
+    (setq nntp-server-buffer (get-buffer-create " *nntpd*")))
+  (with-current-buffer nntp-server-buffer
     (erase-buffer)
+    (mm-enable-multibyte)
     (kill-all-local-variables)
     (setq case-fold-search t)		;Should ignore case.
     (set (make-local-variable 'nntp-process-response) nil)
@@ -1060,7 +1059,6 @@
 
 (defalias 'nnheader-cancel-timer 'cancel-timer)
 (defalias 'nnheader-cancel-function-timers 'cancel-function-timers)
-(defalias 'nnheader-string-as-multibyte 'string-as-multibyte)
 
 (defun nnheader-accept-process-output (process)
   (accept-process-output
@@ -1077,5 +1075,5 @@
 
 (provide 'nnheader)
 
-;;; arch-tag: a9c4b7d9-52ae-4ec9-b196-dfd93124d202
+;; arch-tag: a9c4b7d9-52ae-4ec9-b196-dfd93124d202
 ;;; nnheader.el ends here
Index: nnimap.el
diff -u gnus/lisp/nnimap.el:7.46 gnus/lisp/nnimap.el:7.47
--- nnimap.el:7.46	Wed Apr  2 16:46:57 2008
+++ nnimap.el	Thu Apr 24 06:19:20 2008
@@ -617,7 +617,9 @@
 	      lines (imap-body-lines (imap-message-body imap-current-message))
 	      chars (imap-message-get imap-current-message 'RFC822.SIZE)))
       (nnheader-insert-nov
-       (with-temp-buffer
+       ;; At this stage, we only have bytes, so let's use unibyte buffers
+       ;; to make it more clear.
+       (mm-with-unibyte-buffer
 	 (buffer-disable-undo)
 	 (insert headers)
 	 (let ((head (nnheader-parse-naked-head uid)))
@@ -1553,8 +1555,7 @@
 	;; request the article only when the move is NOT internal
 	(and (or move-is-internal
 		 (nnimap-request-article article group server))
-	     (save-excursion
-	       (set-buffer buf)
+	     (with-current-buffer buf
 	       (buffer-disable-undo (current-buffer))
 	       (insert-buffer-substring nntp-server-buffer)
 	       (setq result (eval accept-form))
Index: nnkiboze.el
diff -u gnus/lisp/nnkiboze.el:7.13 gnus/lisp/nnkiboze.el:7.14
--- nnkiboze.el:7.13	Sun Jan 20 06:23:57 2008
+++ nnkiboze.el	Thu Apr 24 06:19:20 2008
@@ -388,5 +388,5 @@
 
 (provide 'nnkiboze)
 
-;;; arch-tag: 66068271-bdc9-4801-bcde-779702e73a05
+;; arch-tag: 66068271-bdc9-4801-bcde-779702e73a05
 ;;; nnkiboze.el ends here
Index: nnlistserv.el
diff -u gnus/lisp/nnlistserv.el:7.11 gnus/lisp/nnlistserv.el:7.12
--- nnlistserv.el:7.11	Sun Jan 20 06:23:57 2008
+++ nnlistserv.el	Thu Apr 24 06:19:20 2008
@@ -150,5 +150,5 @@
 
 (provide 'nnlistserv)
 
-;;; arch-tag: 7705176f-d332-4a5e-a520-d0d319445617
+;; arch-tag: 7705176f-d332-4a5e-a520-d0d319445617
 ;;; nnlistserv.el ends here
Index: nnmail.el
diff -u gnus/lisp/nnmail.el:7.42 gnus/lisp/nnmail.el:7.43
--- nnmail.el:7.42	Sat Mar  1 02:48:13 2008
+++ nnmail.el	Thu Apr 24 06:19:20 2008
@@ -2049,5 +2049,5 @@
 
 (provide 'nnmail)
 
-;;; arch-tag: fe8f671a-50db-428a-bb5d-f00462f72ed7
+;; arch-tag: fe8f671a-50db-428a-bb5d-f00462f72ed7
 ;;; nnmail.el ends here
Index: nnmaildir.el
diff -u gnus/lisp/nnmaildir.el:7.18 gnus/lisp/nnmaildir.el:7.19
--- nnmaildir.el:7.18	Sun Dec 16 05:23:18 2007
+++ nnmaildir.el	Thu Apr 24 06:19:21 2008
@@ -1669,5 +1669,5 @@
 ;; fill-column: 77
 ;; End:
 
-;;; arch-tag: 0c4e44cd-dfde-4040-888e-5597ec771849
+;; arch-tag: 0c4e44cd-dfde-4040-888e-5597ec771849
 ;;; nnmaildir.el ends here
Index: nnmbox.el
diff -u gnus/lisp/nnmbox.el:7.11 gnus/lisp/nnmbox.el:7.12
--- nnmbox.el:7.11	Sun Jan 20 06:23:57 2008
+++ nnmbox.el	Thu Apr 24 06:19:21 2008
@@ -715,5 +715,5 @@
 
 (provide 'nnmbox)
 
-;;; arch-tag: 611dd95f-be37-413a-b3ae-8b059ba93659
+;; arch-tag: 611dd95f-be37-413a-b3ae-8b059ba93659
 ;;; nnmbox.el ends here
Index: nnmh.el
diff -u gnus/lisp/nnmh.el:7.13 gnus/lisp/nnmh.el:7.14
--- nnmh.el:7.13	Tue Mar 18 23:59:24 2008
+++ nnmh.el	Thu Apr 24 06:19:20 2008
@@ -77,8 +77,7 @@
 (nnoo-define-basics nnmh)
 
 (deffoo nnmh-retrieve-headers (articles &optional newsgroup server fetch-old)
-  (save-excursion
-    (set-buffer nntp-server-buffer)
+  (with-current-buffer nntp-server-buffer
     (erase-buffer)
     (let* ((file nil)
 	   (number (length articles))
@@ -225,8 +224,7 @@
     (let ((files (mapcar 'string-to-number
 			 (directory-files dir nil "^[0-9]+$" t))))
       (when files
-	(save-excursion
-	  (set-buffer nntp-server-buffer)
+	(with-current-buffer nntp-server-buffer
 	  (goto-char (point-max))
 	  (insert
 	   (format
@@ -237,7 +235,7 @@
 		(file-truename (file-name-as-directory
 				(expand-file-name nnmh-toplev))))
 	       dir)
-	      (mm-string-as-multibyte
+	      (mm-string-to-multibyte   ;Why?  Isn't it multibyte already?
 	       (mm-encode-coding-string
 		(nnheader-replace-chars-in-string
 		 (substring dir (match-end 0))
@@ -298,8 +296,7 @@
     (and
      (nnmh-deletable-article-p group article)
      (nnmh-request-article article group server)
-     (save-excursion
-       (set-buffer buf)
+     (with-current-buffer buf
        (erase-buffer)
        (insert-buffer-substring nntp-server-buffer)
        (setq result (eval accept-form))
@@ -339,8 +336,7 @@
 
 (deffoo nnmh-request-replace-article (article group buffer)
   (nnmh-possibly-change-directory group)
-  (save-excursion
-    (set-buffer buffer)
+  (with-current-buffer buffer
     (nnmh-possibly-create-directory group)
     (ignore-errors
       (nnmail-write-region
@@ -580,5 +576,5 @@
 
 (provide 'nnmh)
 
-;;; arch-tag: 36c12a98-3bad-44b3-9953-628078ef0e04
+;; arch-tag: 36c12a98-3bad-44b3-9953-628078ef0e04
 ;;; nnmh.el ends here
Index: nnml.el
diff -u gnus/lisp/nnml.el:7.28 gnus/lisp/nnml.el:7.29
--- nnml.el:7.28	Sun Jan 20 06:23:57 2008
+++ nnml.el	Thu Apr 24 06:19:20 2008
@@ -1309,5 +1309,5 @@
 
 (provide 'nnml)
 
-;;; arch-tag: 52c97dc3-9735-45de-b439-9e4d23b52004
+;; arch-tag: 52c97dc3-9735-45de-b439-9e4d23b52004
 ;;; nnml.el ends here
Index: nnnil.el
diff -u gnus/lisp/nnnil.el:7.6 gnus/lisp/nnnil.el:7.7
--- nnnil.el:7.6	Sun Dec  9 01:04:21 2007
+++ nnnil.el	Thu Apr 24 06:19:21 2008
@@ -81,4 +81,4 @@
 
 (provide 'nnnil)
 
-;;; arch-tag: a982a1a3-bc5e-4fb1-a233-d7657a3e3257
+;; arch-tag: a982a1a3-bc5e-4fb1-a233-d7657a3e3257
Index: nnoo.el
diff -u gnus/lisp/nnoo.el:7.9 gnus/lisp/nnoo.el:7.10
--- nnoo.el:7.9	Sun Jan 20 06:23:57 2008
+++ nnoo.el	Thu Apr 24 06:19:20 2008
@@ -324,5 +324,5 @@
 
 (provide 'nnoo)
 
-;;; arch-tag: 0196b5ed-6f34-4778-a455-73a971f837e7
+;; arch-tag: 0196b5ed-6f34-4778-a455-73a971f837e7
 ;;; nnoo.el ends here
Index: nnrss.el
diff -u gnus/lisp/nnrss.el:7.55 gnus/lisp/nnrss.el:7.56
--- nnrss.el:7.55	Sun Jan 20 06:23:57 2008
+++ nnrss.el	Thu Apr 24 06:19:21 2008
@@ -1131,7 +1131,5 @@
 
 (provide 'nnrss)
 
-
+;; arch-tag: 12910c07-0cdf-44fb-8d2c-416ded64c267
 ;;; nnrss.el ends here
-
-;;; arch-tag: 12910c07-0cdf-44fb-8d2c-416ded64c267
Index: nnslashdot.el
diff -u gnus/lisp/nnslashdot.el:7.15 gnus/lisp/nnslashdot.el:7.16
--- nnslashdot.el:7.15	Sun Jan 20 06:23:57 2008
+++ nnslashdot.el	Thu Apr 24 06:19:21 2008
@@ -503,5 +503,5 @@
 
 (provide 'nnslashdot)
 
-;;; arch-tag: aa73df7a-f7e6-4eef-bdea-5ce2f8c691b3
+;; arch-tag: aa73df7a-f7e6-4eef-bdea-5ce2f8c691b3
 ;;; nnslashdot.el ends here
Index: nnsoup.el
diff -u gnus/lisp/nnsoup.el:7.13 gnus/lisp/nnsoup.el:7.14
--- nnsoup.el:7.13	Sun Jan 20 06:23:57 2008
+++ nnsoup.el	Thu Apr 24 06:19:21 2008
@@ -810,5 +810,5 @@
 
 (provide 'nnsoup)
 
-;;; arch-tag: b0451389-5703-4450-9425-f66f6b38c828
+;; arch-tag: b0451389-5703-4450-9425-f66f6b38c828
 ;;; nnsoup.el ends here
Index: nnspool.el
diff -u gnus/lisp/nnspool.el:7.14 gnus/lisp/nnspool.el:7.15
--- nnspool.el:7.14	Sun Jan 20 06:23:57 2008
+++ nnspool.el	Thu Apr 24 06:19:20 2008
@@ -458,5 +458,5 @@
 
 (provide 'nnspool)
 
-;;; arch-tag: bdac8d27-2934-4eee-bad0-49e6b90c0d05
+;; arch-tag: bdac8d27-2934-4eee-bad0-49e6b90c0d05
 ;;; nnspool.el ends here
Index: nntp.el
diff -u gnus/lisp/nntp.el:7.46 gnus/lisp/nntp.el:7.47
--- nntp.el:7.46	Wed Mar 12 02:27:58 2008
+++ nntp.el	Thu Apr 24 06:19:21 2008
@@ -84,11 +84,12 @@
 - `nntp-open-network-stream' (the default),
 - `nntp-open-ssl-stream',
 - `nntp-open-tls-stream',
+- `nntp-open-netcat-stream'.
 - `nntp-open-telnet-stream'.
 
 Indirect connections:
-- `nntp-open-via-rlogin-and-telnet',
 - `nntp-open-via-rlogin-and-netcat',
+- `nntp-open-via-rlogin-and-telnet',
 - `nntp-open-via-telnet-and-telnet'.")
 
 (defvoo nntp-never-echoes-commands nil
@@ -143,12 +144,13 @@
 (defvoo nntp-via-telnet-switches '("-8")
   "*Switches given to the telnet command `nntp-via-telnet-command'.")
 
-(defvoo nntp-via-netcat-command "nc"
+(defvoo nntp-netcat-command "nc"
   "*Netcat command used to connect to the nntp server.
-This command is used by the `nntp-open-via-rlogin-and-netcat' method.")
+This command is used by the `nntp-open-netcat-stream' and
+`nntp-open-via-rlogin-and-netcat' methods.")
 
-(defvoo nntp-via-netcat-switches nil
-  "*Switches given to the netcat command `nntp-via-netcat-command'.")
+(defvoo nntp-netcat-switches nil
+  "*Switches given to the netcat command `nntp-netcat-command'.")
 
 (defvoo nntp-via-user-name nil
   "*User name to log in on an intermediate host with.
@@ -335,8 +337,7 @@
 
 (defun nntp-record-command (string)
   "Record the command STRING."
-  (save-excursion
-    (set-buffer (get-buffer-create "*nntp-log*"))
+  (with-current-buffer (get-buffer-create "*nntp-log*")
     (goto-char (point-max))
     (let ((time (current-time)))
       (insert (format-time-string "%Y%m%dT%H%M%S" time)
@@ -393,8 +394,7 @@
 (defsubst nntp-wait-for (process wait-for buffer &optional decode discard)
   "Wait for WAIT-FOR to arrive from PROCESS."
 
-  (save-excursion
-    (set-buffer (process-buffer process))
+  (with-current-buffer (process-buffer process)
     (goto-char (point-min))
 
     (while (and (or (not (memq (char-after (point)) '(?2 ?3 ?4 ?5)))
@@ -432,8 +432,7 @@
 	      (setq nntp-process-response response)))
 	  (nntp-decode-text (not decode))
 	  (unless discard
-	    (save-excursion
-	      (set-buffer buffer)
+	    (with-current-buffer buffer
 	      (goto-char (point-max))
 	      (nntp-insert-buffer-substring (process-buffer process))
 	      ;; Nix out "nntp reading...." message.
@@ -539,8 +538,7 @@
 		       nntp-open-connection-function
 		       nntp-open-connection-functions-never-echo-commands))
 	    (nntp-accept-response)
-	    (save-excursion
-	      (set-buffer buffer)
+	    (with-current-buffer buffer
 	      (goto-char pos)
 	      (if (looking-at (regexp-quote command))
 		  (delete-region pos (progn (forward-line 1)
@@ -563,8 +561,7 @@
 	  ;; If nothing to wait for, still remove possibly echo'ed commands
 	  (unless wait-for
 	    (nntp-accept-response)
-	    (save-excursion
-	      (set-buffer buffer)
+	    (with-current-buffer buffer
 	      (goto-char pos)
 	      (if (looking-at (regexp-quote command))
 		  (delete-region pos (progn (forward-line 1)
@@ -590,8 +587,7 @@
 	  ;; If nothing to wait for, still remove possibly echo'ed commands
 	  (unless wait-for
 	    (nntp-accept-response)
-	    (save-excursion
-	      (set-buffer buffer)
+	    (with-current-buffer buffer
 	      (goto-char pos)
 	      (if (looking-at (regexp-quote command))
 		  (delete-region pos (progn (forward-line 1) (point-at-bol))))
@@ -607,10 +603,12 @@
     (nntp-erase-buffer
      (nntp-find-connection-buffer nntp-server-buffer)))
   (nntp-encode-text)
-  (mm-with-unibyte-current-buffer
-    ;; Some encoded unicode text contains character 0x80-0x9f e.g. Euro.
-    (process-send-region (nntp-find-connection nntp-server-buffer)
-			 (point-min) (point-max)))
+  ;; Make sure we did not forget to encode some of the content.
+  (assert (save-excursion (goto-char (point-min))
+                          (not (re-search-forward "[^\000-\377]" nil t))))
+  (mm-disable-multibyte)
+  (process-send-region (nntp-find-connection nntp-server-buffer)
+                       (point-min) (point-max))
   (nntp-retrieve-data
    nil nntp-address nntp-port-number nntp-server-buffer
    wait-for nnheader-callback-function))
@@ -648,67 +646,79 @@
   (defvar nntp-with-open-group-internal nil)
   (defvar nntp-report-n nil))
 
+(defun nntp-with-open-group-function (-group -server -connectionless -bodyfun)
+  "Protect against servers that don't like clients that keep idle connections opens.
+The problem being that these servers may either close a connection or
+simply ignore any further requests on a connection.  Closed
+connections are not detected until `accept-process-output' has updated
+the `process-status'.  Dropped connections are not detected until the
+connection timeouts (which may be several minutes) or
+`nntp-connection-timeout' has expired.  When these occur
+`nntp-with-open-group', opens a new connection then re-issues the NNTP
+command whose response triggered the error."
+  (letf ((nntp-report-n (symbol-function 'nntp-report))
+         ((symbol-function 'nntp-report) (symbol-function 'nntp-report-1))
+         (nntp-with-open-group-internal nil))
+    (while (catch 'nntp-with-open-group-error
+             ;; Open the connection to the server
+             ;; NOTE: Existing connections are NOT tested.
+             (nntp-possibly-change-group -group -server -connectionless)
+
+             (let ((-timer
+                    (and nntp-connection-timeout
+                         (run-at-time
+                          nntp-connection-timeout nil
+                          (lambda ()
+                            (let* ((-process (nntp-find-connection
+                                             nntp-server-buffer))
+                                   (-buffer  (and -process
+                                                  (process-buffer -process))))
+                              ;; When I an able to identify the
+                              ;; connection to the server AND I've
+                              ;; received NO reponse for
+                              ;; nntp-connection-timeout seconds.
+                              (when (and -buffer (eq 0 (buffer-size -buffer)))
+                                ;; Close the connection.  Take no
+                                ;; other action as the accept input
+                                ;; code will handle the closed
+                                ;; connection.
+                                (nntp-kill-buffer -buffer))))))))
+               (unwind-protect
+                   (setq nntp-with-open-group-internal
+                         (condition-case nil
+                             (funcall -bodyfun)
+                           (quit
+                            (unless debug-on-quit
+                              (nntp-close-server))
+                            (signal 'quit nil))))
+                 (when -timer
+                   (nnheader-cancel-timer -timer)))
+               nil))
+      (setf (symbol-function 'nntp-report) nntp-report-n))
+    nntp-with-open-group-internal))
+
 (defmacro nntp-with-open-group (group server &optional connectionless &rest forms)
   "Protect against servers that don't like clients that keep idle connections opens.
 The problem being that these servers may either close a connection or
 simply ignore any further requests on a connection.  Closed
-connections are not detected until accept-process-output has updated
-the process-status.  Dropped connections are not detected until the
+connections are not detected until `accept-process-output' has updated
+the `process-status'.  Dropped connections are not detected until the
 connection timeouts (which may be several minutes) or
-nntp-connection-timeout has expired.  When these occur
-nntp-with-open-group, opens a new connection then re-issues the NNTP
+`nntp-connection-timeout' has expired.  When these occur
+`nntp-with-open-group', opens a new connection then re-issues the NNTP
 command whose response triggered the error."
+  (declare (indent 2) (debug (form form [&optional symbolp] def-body)))
   (when (and (listp connectionless)
 	     (not (eq connectionless nil)))
     (setq forms (cons connectionless forms)
 	  connectionless nil))
-  `(letf ((nntp-report-n (symbol-function 'nntp-report))
-	  ((symbol-function 'nntp-report) (symbol-function 'nntp-report-1))
-	  (nntp-with-open-group-internal nil))
-     (while (catch 'nntp-with-open-group-error
-	      ;; Open the connection to the server
-	      ;; NOTE: Existing connections are NOT tested.
-	      (nntp-possibly-change-group ,group ,server ,connectionless)
-
-	      (let ((timer
-		     (and nntp-connection-timeout
-			  (run-at-time
-			   nntp-connection-timeout nil
-			   '(lambda ()
-			      (let ((process (nntp-find-connection
-					      nntp-server-buffer))
-				    (buffer  (and process
-						  (process-buffer process))))
-				;; When I am able to identify the
-				;; connection to the server AND I've
-				;; received NO reponse for
-				;; nntp-connection-timeout seconds.
-				(when (and buffer (eq 0 (buffer-size buffer)))
-				  ;; Close the connection.  Take no
-				  ;; other action as the accept input
-				  ;; code will handle the closed
-				  ;; connection.
-				  (nntp-kill-buffer buffer))))))))
-		(unwind-protect
-		    (setq nntp-with-open-group-internal
-                          (condition-case nil
-			      (progn ,@forms)
-			    (quit
-			     (unless debug-on-quit
-			       (nntp-close-server))
-                             (signal 'quit nil))))
-		  (when timer
-		    (nnheader-cancel-timer timer)))
-		nil))
-       (setf (symbol-function 'nntp-report) nntp-report-n))
-     nntp-with-open-group-internal))
+  `(nntp-with-open-group-function ,group ,server ,connectionless (lambda () ,@forms)))
 
 (deffoo nntp-retrieve-headers (articles &optional group server fetch-old)
   "Retrieve the headers of ARTICLES."
   (nntp-with-open-group
    group server
-   (save-excursion
-     (set-buffer (nntp-find-connection-buffer nntp-server-buffer))
+   (with-current-buffer (nntp-find-connection-buffer nntp-server-buffer)
      (erase-buffer)
      (if (and (not gnus-nov-is-evil)
               (not nntp-nov-is-evil)
@@ -930,8 +940,7 @@
 
 (defun nntp-try-list-active (group)
   (nntp-list-active-group group)
-  (save-excursion
-    (set-buffer nntp-server-buffer)
+  (with-current-buffer nntp-server-buffer
     (goto-char (point-min))
     (cond ((or (eobp)
 	       (looking-at "5[0-9]+"))
@@ -959,8 +968,7 @@
            (if (numberp article) (int-to-string article) article))
       (if (and buffer
                (not (equal buffer nntp-server-buffer)))
-          (save-excursion
-            (set-buffer nntp-server-buffer)
+          (with-current-buffer nntp-server-buffer
             (copy-to-buffer buffer (point-min) (point-max))
             (nntp-find-group-and-number group))
         (nntp-find-group-and-number group)))))
@@ -1057,8 +1065,7 @@
 (deffoo nntp-request-newgroups (date &optional server)
   (nntp-with-open-group
    nil server
-   (save-excursion
-     (set-buffer nntp-server-buffer)
+   (with-current-buffer nntp-server-buffer
      (let* ((time (date-to-time date))
             (ls (- (cadr time) (nth 8 (decode-time time)))))
        (cond ((< ls 0)
@@ -1227,12 +1234,11 @@
 
 (defun nntp-make-process-buffer (buffer)
   "Create a new, fresh buffer usable for nntp process connections."
-  (save-excursion
-    (set-buffer
-     (generate-new-buffer
-      (format " *server %s %s %s*"
-	      nntp-address nntp-port-number
-	      (gnus-buffer-exists-p buffer))))
+  (with-current-buffer
+      (generate-new-buffer
+       (format " *server %s %s %s*"
+               nntp-address nntp-port-number
+               (gnus-buffer-exists-p buffer)))
     (mm-disable-multibyte)
     (set (make-local-variable 'after-change-functions) nil)
     (set (make-local-variable 'nntp-process-wait-for) nil)
@@ -1275,8 +1281,7 @@
 	  (prog1
 	      (caar (push (list process buffer nil) nntp-connection-alist))
 	    (push process nntp-connection-list)
-	    (save-excursion
-	      (set-buffer pbuffer)
+	    (with-current-buffer pbuffer
 	      (nntp-read-server-type)
 	      (erase-buffer)
 	      (set-buffer nntp-server-buffer)
@@ -1304,8 +1309,7 @@
 					    ?s nntp-address
 					    ?p nntp-port-number)))))
     (gnus-set-process-query-on-exit-flag proc nil)
-    (save-excursion
-      (set-buffer buffer)
+    (with-current-buffer buffer
       (let ((nntp-connection-alist (list proc buffer nil)))
 	(nntp-wait-for-string "^\r*20[01]"))
       (beginning-of-line)
@@ -1315,8 +1319,7 @@
 (defun nntp-open-tls-stream (buffer)
   (let ((proc (open-tls-stream "nntpd" buffer nntp-address nntp-port-number)))
     (gnus-set-process-query-on-exit-flag proc nil)
-    (save-excursion
-      (set-buffer buffer)
+    (with-current-buffer buffer
       (let ((nntp-connection-alist (list proc buffer nil)))
 	(nntp-wait-for-string "^\r*20[01]"))
       (beginning-of-line)
@@ -1337,8 +1340,7 @@
 	  (funcall (cadr entry)))))))
 
 (defun nntp-async-wait (process wait-for buffer decode callback)
-  (save-excursion
-    (set-buffer (process-buffer process))
+  (with-current-buffer (process-buffer process)
     (unless nntp-inside-change-function
       (erase-buffer))
     (setq nntp-process-wait-for wait-for
@@ -1386,8 +1388,7 @@
       (setq after-change-functions '(nntp-after-change-function)))))
 
 (defun nntp-async-trigger (process)
-  (save-excursion
-    (set-buffer (process-buffer process))
+  (with-current-buffer (process-buffer process)
     (when nntp-process-callback
       ;; do we have an error message?
       (goto-char nntp-process-start-point)
@@ -1412,8 +1413,7 @@
 	    (let ((buf (current-buffer))
 		  (start nntp-process-start-point)
 		  (decode nntp-process-decode))
-	      (save-excursion
-		(set-buffer nntp-process-to-buffer)
+	      (with-current-buffer nntp-process-to-buffer
 		(goto-char (point-max))
 		(save-restriction
 		  (narrow-to-region (point) (point))
@@ -1477,8 +1477,7 @@
       (cond ((not entry)
              (nntp-report "Server closed connection"))
             ((not (equal group (caddr entry)))
-             (save-excursion
-               (set-buffer (process-buffer (car entry)))
+             (with-current-buffer (process-buffer (car entry))
                (erase-buffer)
                (nntp-send-command "^[245].*\n" "GROUP" group)
                (setcar (cddr entry) group)
@@ -1678,8 +1677,7 @@
 	;; We try them all until we get at positive response.
 	(while (and commands (eq nntp-server-xover 'try))
 	  (nntp-send-command-nodelete "\r?\n\\.\r?\n" (car commands) range)
-	  (save-excursion
-	    (set-buffer nntp-server-buffer)
+	  (with-current-buffer nntp-server-buffer
 	    (goto-char (point-min))
 	    (and (looking-at "[23]")	; No error message.
 		 ;; We also have to look at the lines.  Some buggy
@@ -1700,6 +1698,7 @@
 (defun nntp-find-group-and-number (&optional group)
   (save-excursion
     (save-restriction
+      ;; FIXME: This is REALLY FISHY: set-buffer after save-restriction?!?
       (set-buffer nntp-server-buffer)
       (narrow-to-region (goto-char (point-min))
 			(or (search-forward "\n\n" nil t) (point-max)))
@@ -1804,9 +1803,21 @@
 (defvoo nntp-telnet-passwd nil
   "Password to use to log in via telnet with.")
 
+(defun nntp-service-to-port (svc)
+  (cond
+   ((integerp svc) (number-to-string svc))
+   ((string-match "\\`[[:digit:]]\\'" svc) svc)
+   (t
+    (with-temp-buffer
+      (ignore-errors (insert-file-contents "/etc/services"))
+      (goto-char (point-min))
+      (if (re-search-forward (concat "^" (regexp-quote svc)
+                                     "[ \t]+\\([[:digit:]]+\\)/tcp"))
+          (match-string 1)
+        svc)))))
+
 (defun nntp-open-telnet (buffer)
-  (save-excursion
-    (set-buffer buffer)
+  (with-current-buffer buffer
     (erase-buffer)
     (let ((proc (apply
 		 'start-process
@@ -1862,8 +1873,7 @@
 		(apply 'start-process
 		       "nntpd" buffer nntp-rlogin-program nntp-address
 		       nntp-rlogin-parameters))))
-    (save-excursion
-      (set-buffer buffer)
+    (with-current-buffer buffer
       (nntp-wait-for-string "^\r*20[01]")
       (beginning-of-line)
       (delete-region (point-min) (point))
@@ -1876,6 +1886,8 @@
 
 (defun nntp-open-telnet-stream (buffer)
   "Open a nntp connection by telnet'ing the news server.
+`nntp-open-netcat-stream' is recommended in place of this function
+because it is more reliable.
 
 Please refer to the following variables to customize the connection:
 - `nntp-pre-command',
@@ -1887,15 +1899,12 @@
   (let ((command `(,nntp-telnet-command
 		   ,@nntp-telnet-switches
 		   ,nntp-address
-		   ,(if (integerp nntp-port-number)
-			(number-to-string nntp-port-number)
-		      nntp-port-number)))
+		   ,(nntp-service-to-port nntp-port-number)))
 	proc)
     (and nntp-pre-command
 	 (push nntp-pre-command command))
     (setq proc (apply 'start-process "nntpd" buffer command))
-    (save-excursion
-      (set-buffer buffer)
+    (with-current-buffer buffer
       (nntp-wait-for-string "^\r*20[01]")
       (beginning-of-line)
       (delete-region (point-min) (point))
@@ -1905,6 +1914,8 @@
   "Open a connection to an nntp server through an intermediate host.
 First rlogin to the remote host, and then telnet the real news server
 from there.
+`nntp-open-via-rlogin-and-netcat' is recommended in place of this function
+because it is more reliable.
 
 Please refer to the following variables to customize the connection:
 - `nntp-pre-command',
@@ -1929,13 +1940,10 @@
     (and nntp-pre-command
 	 (push nntp-pre-command command))
     (setq proc (apply 'start-process "nntpd" buffer command))
-    (save-excursion
-      (set-buffer buffer)
+    (with-current-buffer buffer
       (nntp-wait-for-string "^r?telnet")
       (process-send-string proc (concat "open " nntp-address " "
-					(if (integerp nntp-port-number)
-					    (number-to-string nntp-port-number)
-					  nntp-port-number)
+					(nntp-service-to-port nntp-port-number)
 					"\n"))
       (nntp-wait-for-string "^\r*20[01]")
       (beginning-of-line)
@@ -1961,26 +1969,46 @@
 - `nntp-via-rlogin-command-switches',
 - `nntp-via-user-name',
 - `nntp-via-address',
-- `nntp-via-netcat-command',
-- `nntp-via-netcat-switches',
+- `nntp-netcat-command',
+- `nntp-netcat-switches',
 - `nntp-address',
-- `nntp-port-number',
-- `nntp-end-of-line'."
+- `nntp-port-number'."
   (let ((command `(,@(when nntp-pre-command
 		       (list nntp-pre-command))
 		   ,nntp-via-rlogin-command
-		   ,@(when nntp-via-rlogin-command-switches
-		       nntp-via-rlogin-command-switches)
+		   ,@nntp-via-rlogin-command-switches
 		   ,@(when nntp-via-user-name
 		       (list "-l" nntp-via-user-name))
 		   ,nntp-via-address
-		   ,nntp-via-netcat-command
-		   ,@nntp-via-netcat-switches
+		   ,nntp-netcat-command
+		   ,@nntp-netcat-switches
 		   ,nntp-address
-		   ,(if (integerp nntp-port-number)
-			(number-to-string nntp-port-number)
-		      nntp-port-number))))
-    (apply 'start-process "nntpd" buffer command)))
+		   ,(nntp-service-to-port nntp-port-number))))
+    ;; A non-nil connection type results in mightily odd behavior where
+    ;; (process-send-string proc "\^M") ends up sending a "\n" to the
+    ;; ssh process.  --Stef
+    ;; Also a nil connection allow ssh-askpass to work under X11.
+    (let ((process-connection-type nil))
+      (apply 'start-process "nntpd" buffer command))))
+
+(defun nntp-open-netcat-stream (buffer)
+  "Open a connection to an nntp server through netcat.
+I.e. use the `nc' command rather than Emacs's builtin networking code.
+
+Please refer to the following variables to customize the connection:
+- `nntp-pre-command',
+- `nntp-netcat-command',
+- `nntp-netcat-switches',
+- `nntp-address',
+- `nntp-port-number'."
+  (let ((command `(,nntp-netcat-command
+		   ,@nntp-netcat-switches
+                   ,nntp-address
+                   ,(nntp-service-to-port nntp-port-number))))
+    (and nntp-pre-command (push nntp-pre-command command))
+    (let ((process-connection-type nil)) ;See `nntp-open-via-rlogin-and-netcat'.
+      (apply 'start-process "nntpd" buffer command))))
+ 
 
 (defun nntp-open-via-telnet-and-telnet (buffer)
   "Open a connection to an nntp server through an intermediate host.
@@ -2001,8 +2029,7 @@
 - `nntp-address',
 - `nntp-port-number',
 - `nntp-end-of-line'."
-  (save-excursion
-    (set-buffer buffer)
+  (with-current-buffer buffer
     (erase-buffer)
     (let ((command `(,nntp-via-telnet-command ,@nntp-via-telnet-switches))
 	  (case-fold-search t)
@@ -2039,9 +2066,7 @@
 				     ,nntp-telnet-command
 				     ,@nntp-telnet-switches
 				     ,nntp-address
-				     ,(if (integerp nntp-port-number)
-					  (number-to-string nntp-port-number)
-					nntp-port-number))))
+				     ,(nntp-service-to-port nntp-port-number))))
 	  (process-send-string proc
 			       (concat (mapconcat 'identity
 						  real-telnet-command " ")
@@ -2151,5 +2176,5 @@
 
 (provide 'nntp)
 
-;;; arch-tag: 8655466a-b1b5-4929-9c45-7b1b2e767271
+;; arch-tag: 8655466a-b1b5-4929-9c45-7b1b2e767271
 ;;; nntp.el ends here
Index: nnultimate.el
diff -u gnus/lisp/nnultimate.el:7.9 gnus/lisp/nnultimate.el:7.10
--- nnultimate.el:7.9	Sun Jan 20 06:23:57 2008
+++ nnultimate.el	Thu Apr 24 06:19:20 2008
@@ -478,5 +478,5 @@
 ;; coding: iso-8859-1
 ;; End:
 
-;;; arch-tag: ab6bfc45-8fe1-4647-9c78-41050eb152b8
+;; arch-tag: ab6bfc45-8fe1-4647-9c78-41050eb152b8
 ;;; nnultimate.el ends here
Index: nnvirtual.el
diff -u gnus/lisp/nnvirtual.el:7.12 gnus/lisp/nnvirtual.el:7.13
--- nnvirtual.el:7.12	Sun Jan 20 06:23:57 2008
+++ nnvirtual.el	Thu Apr 24 06:19:21 2008
@@ -812,5 +812,5 @@
 
 (provide 'nnvirtual)
 
-;;; arch-tag: ca8c8ad9-1bd8-4b0f-9722-90dc645a45f5
+;; arch-tag: ca8c8ad9-1bd8-4b0f-9722-90dc645a45f5
 ;;; nnvirtual.el ends here
Index: nnwarchive.el
diff -u gnus/lisp/nnwarchive.el:7.9 gnus/lisp/nnwarchive.el:7.10
--- nnwarchive.el:7.9	Sun Jan 20 06:23:57 2008
+++ nnwarchive.el	Thu Apr 24 06:19:21 2008
@@ -725,5 +725,5 @@
 
 (provide 'nnwarchive)
 
-;;; arch-tag: 1ab7a15c-777a-40e0-95c0-0c41b3963578
+;; arch-tag: 1ab7a15c-777a-40e0-95c0-0c41b3963578
 ;;; nnwarchive.el ends here
Index: nnweb.el
diff -u gnus/lisp/nnweb.el:7.37 gnus/lisp/nnweb.el:7.38
--- nnweb.el:7.37	Sat Mar  1 02:31:08 2008
+++ nnweb.el	Thu Apr 24 06:19:21 2008
@@ -294,12 +294,12 @@
   "Initialize buffers and such."
   (unless (gnus-buffer-live-p nnweb-buffer)
     (setq nnweb-buffer
-	  (save-excursion
-	    (mm-with-unibyte
-	      (nnheader-set-temp-buffer
-	       (format " *nnweb %s %s %s*"
-		       nnweb-type nnweb-search server))
-	      (current-buffer))))))
+	  (save-current-buffer
+            (nnheader-set-temp-buffer
+             (format " *nnweb %s %s %s*"
+                     nnweb-type nnweb-search server))
+            (mm-disable-multibyte)
+            (current-buffer)))))
 
 ;;;
 ;;; groups.google.com
@@ -544,7 +544,11 @@
 (defun nnweb-insert-html (parse)
   "Insert HTML based on a w3 parse tree."
   (if (stringp parse)
-      (insert (nnheader-string-as-multibyte parse))
+      ;; We used to call nnheader-string-as-multibyte here, but it cannot
+      ;; be right, so I removed it.  If a bug shows up because of this change,
+      ;; please do not blindly revert the change, but help me find the real
+      ;; cause of the bug instead.  --Stef
+      (insert parse)
     (insert "<" (symbol-name (car parse)) " ")
     (insert (mapconcat
 	     (lambda (param)
@@ -610,5 +614,5 @@
 
 (provide 'nnweb)
 
-;;; arch-tag: f59307eb-c90f-479f-b7d2-dbd8bf51b697
+;; arch-tag: f59307eb-c90f-479f-b7d2-dbd8bf51b697
 ;;; nnweb.el ends here
Index: nnwfm.el
diff -u gnus/lisp/nnwfm.el:7.8 gnus/lisp/nnwfm.el:7.9
--- nnwfm.el:7.8	Sun Jan 20 06:23:57 2008
+++ nnwfm.el	Thu Apr 24 06:19:20 2008
@@ -430,5 +430,5 @@
 ;; coding: iso-8859-1
 ;; End:
 
-;;; arch-tag: d813966a-4211-4557-ad11-d1ac2bc86536
+;; arch-tag: d813966a-4211-4557-ad11-d1ac2bc86536
 ;;; nnwfm.el ends here
Index: ntlm.el
diff -u gnus/lisp/ntlm.el:7.8 gnus/lisp/ntlm.el:7.9
--- ntlm.el:7.8	Sun Jan 20 06:23:57 2008
+++ ntlm.el	Thu Apr 24 06:19:20 2008
@@ -536,5 +536,5 @@
 
 (provide 'ntlm)
 
-;;; arch-tag: 348ace18-f8e2-4176-8fe9-d9ab4e96f296
+;; arch-tag: 348ace18-f8e2-4176-8fe9-d9ab4e96f296
 ;;; ntlm.el ends here
Index: parse-time.el
diff -u gnus/lisp/parse-time.el:7.10 gnus/lisp/parse-time.el:7.11
--- parse-time.el:7.10	Mon Mar 10 01:53:11 2008
+++ parse-time.el	Thu Apr 24 06:19:20 2008
@@ -1,7 +1,7 @@
 ;;; parse-time.el --- parsing time strings
 
-;; Copyright (C) 1996, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
-;;   Free Software Foundation, Inc.
+;; Copyright (C) 1996, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+;;   2008  Free Software Foundation, Inc.
 
 ;; Author: Erik Naggum <[email protected]>
 ;; Keywords: util
@@ -187,7 +187,7 @@
       (let ((parse-time-elt (pop temp))
 	    (rules parse-time-rules)
 	    (exit nil))
-	(while (and (not (null rules)) (not exit))
+	(while (and rules (not exit))
 	  (let* ((rule (pop rules))
 		 (slots (pop rule))
 		 (predicate (pop rule))
@@ -219,5 +219,5 @@
 
 (provide 'parse-time)
 
-;;; arch-tag: 07066094-45a8-4c68-b307-86195e2c1103
+;; arch-tag: 07066094-45a8-4c68-b307-86195e2c1103
 ;;; parse-time.el ends here
Index: password-cache.el
diff -u gnus/lisp/password-cache.el:7.2 gnus/lisp/password-cache.el:7.3
--- password-cache.el:7.2	Sun Jan 20 06:23:57 2008
+++ password-cache.el	Thu Apr 24 06:19:21 2008
@@ -132,5 +132,5 @@
 
 (provide 'password-cache)
 
-;;; arch-tag: ab160494-16c8-4c68-a4a1-73eebf6686e5
+;; arch-tag: ab160494-16c8-4c68-a4a1-73eebf6686e5
 ;;; password-cache.el ends here
Index: pgg-def.el
diff -u gnus/lisp/pgg-def.el:7.15 gnus/lisp/pgg-def.el:7.16
--- pgg-def.el:7.15	Sun Jan 20 06:23:57 2008
+++ pgg-def.el	Thu Apr 24 06:19:21 2008
@@ -96,5 +96,5 @@
 
 (provide 'pgg-def)
 
-;;; arch-tag: c425f3ab-ed75-4055-bb46-431a418c94b7
+;; arch-tag: c425f3ab-ed75-4055-bb46-431a418c94b7
 ;;; pgg-def.el ends here
Index: pgg-gpg.el
diff -u gnus/lisp/pgg-gpg.el:7.30 gnus/lisp/pgg-gpg.el:7.31
--- pgg-gpg.el:7.30	Sun Jan 20 06:23:57 2008
+++ pgg-gpg.el	Thu Apr 24 06:19:20 2008
@@ -405,5 +405,5 @@
 
 (provide 'pgg-gpg)
 
-;;; arch-tag: 2aa5d5d8-93a0-4865-9312-33e29830e000
+;; arch-tag: 2aa5d5d8-93a0-4865-9312-33e29830e000
 ;;; pgg-gpg.el ends here
Index: pgg-parse.el
diff -u gnus/lisp/pgg-parse.el:7.14 gnus/lisp/pgg-parse.el:7.15
--- pgg-parse.el:7.14	Sun Jan 20 06:23:57 2008
+++ pgg-parse.el	Thu Apr 24 06:19:21 2008
@@ -520,5 +520,5 @@
 
 (provide 'pgg-parse)
 
-;;; arch-tag: 16c2eb82-1313-4a7c-a70f-420709b5b43e
+;; arch-tag: 16c2eb82-1313-4a7c-a70f-420709b5b43e
 ;;; pgg-parse.el ends here
Index: pgg-pgp5.el
diff -u gnus/lisp/pgg-pgp5.el:7.13 gnus/lisp/pgg-pgp5.el:7.14
--- pgg-pgp5.el:7.13	Sun Jan 20 06:23:57 2008
+++ pgg-pgp5.el	Thu Apr 24 06:19:20 2008
@@ -256,5 +256,5 @@
 
 (provide 'pgg-pgp5)
 
-;;; arch-tag: 3dbd1073-6b3a-466c-9f55-5c587ffa6d7b
+;; arch-tag: 3dbd1073-6b3a-466c-9f55-5c587ffa6d7b
 ;;; pgg-pgp5.el ends here
Index: pgg.el
diff -u gnus/lisp/pgg.el:7.20 gnus/lisp/pgg.el:7.21
--- pgg.el:7.20	Sun Jan 20 06:23:57 2008
+++ pgg.el	Thu Apr 24 06:19:20 2008
@@ -599,5 +599,5 @@
 
 (provide 'pgg)
 
-;;; arch-tag: 9cc705dd-1e6a-4c90-8dce-c3561f9a2cf4
+;; arch-tag: 9cc705dd-1e6a-4c90-8dce-c3561f9a2cf4
 ;;; pgg.el ends here
Index: pop3.el
diff -u gnus/lisp/pop3.el:7.32 gnus/lisp/pop3.el:7.33
--- pop3.el:7.32	Sat Mar  1 02:48:13 2008
+++ pop3.el	Thu Apr 24 06:19:21 2008
@@ -613,5 +613,5 @@
 
 (provide 'pop3)
 
-;;; arch-tag: 2facc142-1d74-498e-82af-4659b64cac12
+;; arch-tag: 2facc142-1d74-498e-82af-4659b64cac12
 ;;; pop3.el ends here
Index: qp.el
diff -u gnus/lisp/qp.el:7.14 gnus/lisp/qp.el:7.15
--- qp.el:7.14	Sun Jan 20 06:23:57 2008
+++ qp.el	Thu Apr 24 06:19:20 2008
@@ -164,5 +164,5 @@
 
 (provide 'qp)
 
-;;; arch-tag: db89e52a-e4a1-4b69-926f-f434f04216ba
+;; arch-tag: db89e52a-e4a1-4b69-926f-f434f04216ba
 ;;; qp.el ends here
Index: rfc1843.el
diff -u gnus/lisp/rfc1843.el:7.11 gnus/lisp/rfc1843.el:7.12
--- rfc1843.el:7.11	Sun Jan 20 06:23:57 2008
+++ rfc1843.el	Thu Apr 24 06:19:21 2008
@@ -194,5 +194,5 @@
 
 (provide 'rfc1843)
 
-;;; arch-tag: 5149c301-a6ca-4731-9c9d-ba616e2cb687
+;; arch-tag: 5149c301-a6ca-4731-9c9d-ba616e2cb687
 ;;; rfc1843.el ends here
Index: rfc2045.el
diff -u gnus/lisp/rfc2045.el:7.9 gnus/lisp/rfc2045.el:7.10
--- rfc2045.el:7.9	Sun Jan 20 06:23:57 2008
+++ rfc2045.el	Thu Apr 24 06:19:21 2008
@@ -41,5 +41,5 @@
 
 (provide 'rfc2045)
 
-;;; arch-tag: 9ca54127-97bc-432c-b6e2-8c59cadba306
+;; arch-tag: 9ca54127-97bc-432c-b6e2-8c59cadba306
 ;;; rfc2045.el ends here
Index: rfc2047.el
diff -u gnus/lisp/rfc2047.el:7.69 gnus/lisp/rfc2047.el:7.70
--- rfc2047.el:7.69	Sun Feb 24 07:23:40 2008
+++ rfc2047.el	Thu Apr 24 06:19:20 2008
@@ -1094,17 +1094,17 @@
   "Decode MIME-encoded STRING and return the result.
 If ADDRESS-MIME is non-nil, strip backslashes which precede characters
 other than `\"' and `\\' in quoted strings."
-  (let ((m (mm-multibyte-p)))
+  ;; (let ((m (mm-multibyte-p)))
     (if (string-match "=\\?" string)
 	(with-temp-buffer
-	  ;; Fixme: This logic is wrong, but seems to be required by
-	  ;; Gnus summary buffer generation.  The value of `m' depends
-	  ;; on the current buffer, not global multibyteness or that
-	  ;; of the string.  Also the string returned should always be
-	  ;; multibyte in a multibyte session, i.e. the buffer should
-	  ;; be multibyte before `buffer-string' is called.
-	  (when m
-	    (mm-enable-multibyte))
+          ;; We used to only call mm-enable-multibyte if `m' is non-nil,
+          ;; but this can't be the right criterion.  Don't just revert this
+          ;; change if it encounters a bug.  Please help me fix it
+          ;; right instead.  --Stef
+          ;; The string returned should always be multibyte in a multibyte
+	  ;; session, i.e. the buffer should be multibyte before
+	  ;; `buffer-string' is called.
+          (mm-enable-multibyte)
 	  (insert string)
 	  (inline
 	    (rfc2047-decode-region (point-min) (point-max) address-mime))
@@ -1118,7 +1118,7 @@
 		(rfc2047-strip-backslashes-in-quoted-strings)
 		(buffer-string))))
       ;; Fixme: As above, `m' here is inappropriate.
-      (if (and m
+      (if (and ;; m
 	       mail-parse-charset
 	       (not (eq mail-parse-charset 'us-ascii))
 	       (not (eq mail-parse-charset 'gnus-decoded)))
@@ -1134,9 +1134,9 @@
 	  (if (and (fboundp 'detect-coding-string)
 		   ;; string is purely ASCII
 		   (eq (detect-coding-string string t) 'undecided))
-	      string
-	    (mm-decode-coding-string string mail-parse-charset))
-	(mm-string-as-multibyte string)))))
+              string
+            (mm-decode-coding-string string mail-parse-charset))
+        (mm-string-to-multibyte string)))) ;; )
 
 (defun rfc2047-decode-address-string (string)
   "Decode MIME-encoded STRING and return the result.
@@ -1161,5 +1161,5 @@
 
 (provide 'rfc2047)
 
-;;; arch-tag: a07fe3d4-22b5-4c4a-bd89-b1f82d5d36f6
+;; arch-tag: a07fe3d4-22b5-4c4a-bd89-b1f82d5d36f6
 ;;; rfc2047.el ends here
Index: rfc2104.el
diff -u gnus/lisp/rfc2104.el:7.10 gnus/lisp/rfc2104.el:7.11
--- rfc2104.el:7.10	Sun Feb 24 07:23:40 2008
+++ rfc2104.el	Thu Apr 24 06:19:21 2008
@@ -120,5 +120,5 @@
 
 (provide 'rfc2104)
 
-;;; arch-tag: cf671d5c-a45f-4a09-815e-704e59e43950
+;; arch-tag: cf671d5c-a45f-4a09-815e-704e59e43950
 ;;; rfc2104.el ends here
Index: rfc2231.el
diff -u gnus/lisp/rfc2231.el:7.24 gnus/lisp/rfc2231.el:7.25
--- rfc2231.el:7.24	Sun Jan 20 06:23:57 2008
+++ rfc2231.el	Thu Apr 24 06:19:20 2008
@@ -298,5 +298,5 @@
 
 (provide 'rfc2231)
 
-;;; arch-tag: c3ab751d-d108-406a-b301-68882ad8cd63
+;; arch-tag: c3ab751d-d108-406a-b301-68882ad8cd63
 ;;; rfc2231.el ends here
Index: sasl-cram.el
diff -u gnus/lisp/sasl-cram.el:7.6 gnus/lisp/sasl-cram.el:7.7
--- sasl-cram.el:7.6	Sun Jan 20 06:23:57 2008
+++ sasl-cram.el	Thu Apr 24 06:19:20 2008
@@ -48,5 +48,5 @@
 
 (provide 'sasl-cram)
 
-;;; arch-tag: 46cb281b-975a-4fe0-a39f-3018691b1b05
+;; arch-tag: 46cb281b-975a-4fe0-a39f-3018691b1b05
 ;;; sasl-cram.el ends here
Index: sasl-digest.el
diff -u gnus/lisp/sasl-digest.el:7.6 gnus/lisp/sasl-digest.el:7.7
--- sasl-digest.el:7.6	Sun Jan 20 06:23:57 2008
+++ sasl-digest.el	Thu Apr 24 06:19:21 2008
@@ -155,5 +155,5 @@
 
 (provide 'sasl-digest)
 
-;;; arch-tag: 786e02ed-1bc4-4b3c-bf34-96c27e31084d
+;; arch-tag: 786e02ed-1bc4-4b3c-bf34-96c27e31084d
 ;;; sasl-digest.el ends here
Index: sasl-ntlm.el
diff -u gnus/lisp/sasl-ntlm.el:7.6 gnus/lisp/sasl-ntlm.el:7.7
--- sasl-ntlm.el:7.6	Sun Jan 20 06:23:57 2008
+++ sasl-ntlm.el	Thu Apr 24 06:19:20 2008
@@ -64,5 +64,5 @@
 
 (provide 'sasl-ntlm)
 
-;;; arch-tag: 1d9164c1-1df0-418f-b7ab-360157fd05dc
+;; arch-tag: 1d9164c1-1df0-418f-b7ab-360157fd05dc
 ;;; sasl-ntlm.el ends here
Index: sasl.el
diff -u gnus/lisp/sasl.el:7.6 gnus/lisp/sasl.el:7.7
--- sasl.el:7.6	Sun Jan 20 06:23:57 2008
+++ sasl.el	Thu Apr 24 06:19:20 2008
@@ -269,5 +269,5 @@
 
 (provide 'sasl)
 
-;;; arch-tag: 8b3326fa-4978-4fda-93e2-cb2c6255f887
+;; arch-tag: 8b3326fa-4978-4fda-93e2-cb2c6255f887
 ;;; sasl.el ends here
Index: score-mode.el
diff -u gnus/lisp/score-mode.el:7.12 gnus/lisp/score-mode.el:7.13
--- score-mode.el:7.12	Sun Jan 20 06:23:57 2008
+++ score-mode.el	Thu Apr 24 06:19:20 2008
@@ -118,5 +118,5 @@
 
 (provide 'score-mode)
 
-;;; arch-tag: a74a416b-2505-4ad4-bc4e-a418c96b8845
+;; arch-tag: a74a416b-2505-4ad4-bc4e-a418c96b8845
 ;;; score-mode.el ends here
Index: sha1.el
diff -u gnus/lisp/sha1.el:7.12 gnus/lisp/sha1.el:7.13
--- sha1.el:7.12	Sun Jan 20 06:23:57 2008
+++ sha1.el	Thu Apr 24 06:19:21 2008
@@ -88,16 +88,17 @@
   :group 'sha1)
 
 (defun sha1-string-external (string &optional binary)
-  (let (prog args digest default-enable-multibyte-characters)
+  (let (prog args digest)
     (if (consp sha1-program)
 	(setq prog (car sha1-program)
 	      args (cdr sha1-program))
       (setq prog sha1-program
 	    args nil))
     (with-temp-buffer
+      (set-buffer-multibyte nil)
       (insert string)
       (apply (function call-process-region)
-	     (point-min)(point-max)
+	     (point-min) (point-max)
 	     prog t t nil args)
       ;; SHA1 is 40 bytes long in hexadecimal form.
       (setq digest (buffer-substring (point-min)(+ (point-min) 40))))
Index: sieve-manage.el
diff -u gnus/lisp/sieve-manage.el:7.19 gnus/lisp/sieve-manage.el:7.20
--- sieve-manage.el:7.19	Sun Jan 20 06:23:57 2008
+++ sieve-manage.el	Thu Apr 24 06:19:20 2008
@@ -706,5 +706,5 @@
 
 (provide 'sieve-manage)
 
-;;; arch-tag: 321c4640-1371-4495-9baf-8ccb71dd5bd1
+;; arch-tag: 321c4640-1371-4495-9baf-8ccb71dd5bd1
 ;; sieve-manage.el ends here
Index: sieve-mode.el
diff -u gnus/lisp/sieve-mode.el:7.11 gnus/lisp/sieve-mode.el:7.12
--- sieve-mode.el:7.11	Sun Jan 20 06:23:57 2008
+++ sieve-mode.el	Thu Apr 24 06:19:20 2008
@@ -214,5 +214,5 @@
 
 (provide 'sieve-mode)
 
-;;; arch-tag: 3b8ab76d-065d-4c52-b1e8-ab2ec21f2ace
+;; arch-tag: 3b8ab76d-065d-4c52-b1e8-ab2ec21f2ace
 ;; sieve-mode.el ends here
Index: sieve.el
diff -u gnus/lisp/sieve.el:7.14 gnus/lisp/sieve.el:7.15
--- sieve.el:7.14	Mon Jan 28 10:02:57 2008
+++ sieve.el	Thu Apr 24 06:19:21 2008
@@ -382,5 +382,5 @@
 
 (provide 'sieve)
 
-;;; arch-tag: 7f6a6d94-94e1-4654-ab9a-aee21b9b8a94
+;; arch-tag: 7f6a6d94-94e1-4654-ab9a-aee21b9b8a94
 ;; sieve.el ends here
Index: smiley.el
diff -u gnus/lisp/smiley.el:7.22 gnus/lisp/smiley.el:7.23
--- smiley.el:7.22	Sat Mar  1 02:48:13 2008
+++ smiley.el	Thu Apr 24 06:19:21 2008
@@ -228,5 +228,5 @@
 
 (provide 'smiley)
 
-;;; arch-tag: 5beb161b-4321-40af-8ac9-876afb8ee818
+;; arch-tag: 5beb161b-4321-40af-8ac9-876afb8ee818
 ;;; smiley.el ends here
Index: smime.el
diff -u gnus/lisp/smime.el:7.32 gnus/lisp/smime.el:7.33
--- smime.el:7.32	Sat Mar  1 02:48:13 2008
+++ smime.el	Thu Apr 24 06:19:21 2008
@@ -731,5 +731,5 @@
 
 (provide 'smime)
 
-;;; arch-tag: e3f9b938-5085-4510-8a11-6625269c9a9e
+;; arch-tag: e3f9b938-5085-4510-8a11-6625269c9a9e
 ;;; smime.el ends here
Index: spam-report.el
diff -u gnus/lisp/spam-report.el:7.36 gnus/lisp/spam-report.el:7.37
--- spam-report.el:7.36	Sat Mar  1 02:48:13 2008
+++ spam-report.el	Thu Apr 24 06:19:20 2008
@@ -361,5 +361,5 @@
 
 (provide 'spam-report)
 
-;;; arch-tag: f6683295-ec89-4ab5-8803-8cc842293022
+;; arch-tag: f6683295-ec89-4ab5-8803-8cc842293022
 ;;; spam-report.el ends here.
Index: spam-stat.el
diff -u gnus/lisp/spam-stat.el:7.30 gnus/lisp/spam-stat.el:7.31
--- spam-stat.el:7.30	Sun Jan 20 06:23:57 2008
+++ spam-stat.el	Thu Apr 24 06:19:21 2008
@@ -673,5 +673,5 @@
 
 (provide 'spam-stat)
 
-;;; arch-tag: ff1d2200-8ddb-42fb-bb7b-1b5e20448554
+;; arch-tag: ff1d2200-8ddb-42fb-bb7b-1b5e20448554
 ;;; spam-stat.el ends here
Index: spam-wash.el
diff -u gnus/lisp/spam-wash.el:1.6 gnus/lisp/spam-wash.el:1.7
--- spam-wash.el:1.6	Sun Jan 20 06:23:57 2008
+++ spam-wash.el	Thu Apr 24 06:19:20 2008
@@ -71,5 +71,5 @@
 
 (provide 'spam-wash)
 
-;;; arch-tag: 3c7f94a7-c96d-4c77-bb59-950df12bc85f
+;; arch-tag: 3c7f94a7-c96d-4c77-bb59-950df12bc85f
 ;;; spam-wash.el ends here
Index: spam.el
diff -u gnus/lisp/spam.el:7.98 gnus/lisp/spam.el:7.99
--- spam.el:7.98	Sun Jan 20 06:23:57 2008
+++ spam.el	Thu Apr 24 06:19:21 2008
@@ -2946,5 +2946,5 @@
 
 (provide 'spam)
 
-;;; arch-tag: 07e6e0ca-ab0a-4412-b445-1f6c72a4f27f
+;; arch-tag: 07e6e0ca-ab0a-4412-b445-1f6c72a4f27f
 ;;; spam.el ends here
Index: starttls.el
diff -u gnus/lisp/starttls.el:7.17 gnus/lisp/starttls.el:7.18
--- starttls.el:7.17	Sun Jan 20 06:23:57 2008
+++ starttls.el	Thu Apr 24 06:19:21 2008
@@ -299,5 +299,5 @@
 
 (provide 'starttls)
 
-;;; arch-tag: 648b3bd8-63bd-47f5-904c-7c819aea2297
+;; arch-tag: 648b3bd8-63bd-47f5-904c-7c819aea2297
 ;;; starttls.el ends here
Index: time-date.el
diff -u gnus/lisp/time-date.el:7.14 gnus/lisp/time-date.el:7.15
--- time-date.el:7.14	Mon Mar 10 01:53:11 2008
+++ time-date.el	Thu Apr 24 06:19:20 2008
@@ -97,7 +97,7 @@
 
 ;;;###autoload
 (defun date-to-time (date)
-  "Parse a string that represents a date-time and return a time value."
+  "Parse a string DATE that represents a date-time and return a time value."
   (condition-case ()
       (apply 'encode-time
 	     (parse-time-string
@@ -160,7 +160,7 @@
 
 ;;;###autoload
 (defun time-subtract (t1 t2)
-  "Subtract two time values.
+  "Subtract two time values, T1 minus T2.
 Return the difference in the format of a time value."
   (with-decoded-time-value ((high low micro type t1)
 			    (high2 low2 micro2 type2 t2))
@@ -178,7 +178,7 @@
 
 ;;;###autoload
 (defun time-add (t1 t2)
-  "Add two time values.  One should represent a time difference."
+  "Add two time values T1 and T2.  One should represent a time difference."
   (with-decoded-time-value ((high low micro type t1)
 			    (high2 low2 micro2 type2 t2))
     (setq high (+ high high2)
@@ -248,7 +248,7 @@
 
 ;;;###autoload
 (defun safe-date-to-time (date)
-  "Parse a string that represents a date-time and return a time value.
+  "Parse a string DATE that represents a date-time and return a time value.
 If DATE is malformed, return a time value of zeros."
   (condition-case ()
       (date-to-time date)
@@ -335,5 +335,5 @@
 
 (provide 'time-date)
 
-;;; arch-tag: addcf07b-b20a-465b-af72-550b8ac5190f
+;; arch-tag: addcf07b-b20a-465b-af72-550b8ac5190f
 ;;; time-date.el ends here
Index: tls.el
diff -u gnus/lisp/tls.el:7.25 gnus/lisp/tls.el:7.26
--- tls.el:7.25	Sun Apr 13 22:56:54 2008
+++ tls.el	Thu Apr 24 06:19:20 2008
@@ -295,5 +295,5 @@
 
 (provide 'tls)
 
-;;; arch-tag: 5596d1c4-facc-4bc4-94a9-9863b928d7ac
+;; arch-tag: 5596d1c4-facc-4bc4-94a9-9863b928d7ac
 ;;; tls.el ends here
Index: utf7.el
diff -u gnus/lisp/utf7.el:7.12 gnus/lisp/utf7.el:7.13
--- utf7.el:7.12	Sun Jan 20 06:23:57 2008
+++ utf7.el	Thu Apr 24 06:19:21 2008
@@ -232,5 +232,5 @@
 
 (provide 'utf7)
 
-;;; arch-tag: 96078b55-85c7-4161-aed2-932c24b282c7
+;; arch-tag: 96078b55-85c7-4161-aed2-932c24b282c7
 ;;; utf7.el ends here
Index: uudecode.el
diff -u gnus/lisp/uudecode.el:7.15 gnus/lisp/uudecode.el:7.16
--- uudecode.el:7.15	Sun Jan 20 06:23:57 2008
+++ uudecode.el	Thu Apr 24 06:19:20 2008
@@ -217,14 +217,14 @@
 			  result))))
 	  (skip-chars-forward non-data-chars end))
 	(if file-name
-	    (let (default-enable-multibyte-characters)
-	      (with-temp-file file-name
-		(insert (apply 'concat (nreverse result)))))
+            (with-temp-file file-name
+              (set-buffer-multibyte nil)
+              (insert (apply 'concat (nreverse result))))
 	  (or (markerp end) (setq end (set-marker (make-marker) end)))
 	  (goto-char start)
 	  (if enable-multibyte-characters
-	      (mapc #'(lambda (x) (insert (uudecode-string-to-multibyte x)))
-		    (nreverse result))
+	      (dolist (x (nreverse result))
+                (insert (uudecode-string-to-multibyte x)))
 	    (insert (apply 'concat (nreverse result))))
 	  (delete-region (point) end))))))
 
@@ -238,5 +238,5 @@
 
 (provide 'uudecode)
 
-;;; arch-tag: e1f09ed5-62b4-4677-9f13-4e81c4fe8ce3
+;; arch-tag: e1f09ed5-62b4-4677-9f13-4e81c4fe8ce3
 ;;; uudecode.el ends here
Index: webmail.el
diff -u gnus/lisp/webmail.el:7.10 gnus/lisp/webmail.el:7.11
--- webmail.el:7.10	Sun Jan 20 06:23:57 2008
+++ webmail.el	Thu Apr 24 06:19:20 2008
@@ -1150,5 +1150,5 @@
 
 (provide 'webmail)
 
-;;; arch-tag: f75a4558-a8f6-46ec-b1c3-7a6434b3dd71
+;; arch-tag: f75a4558-a8f6-46ec-b1c3-7a6434b3dd71
 ;;; webmail.el ends here
Index: yenc.el
diff -u gnus/lisp/yenc.el:7.9 gnus/lisp/yenc.el:7.10
--- yenc.el:7.9	Sun Jan 20 06:23:57 2008
+++ yenc.el	Thu Apr 24 06:19:21 2008
@@ -137,5 +137,5 @@
 
 (provide 'yenc)
 
-;;; arch-tag: 74df17e8-6fa8-4071-9f7d-54d548d79d9a
+;; arch-tag: 74df17e8-6fa8-4071-9f7d-54d548d79d9a
 ;;; yenc.el ends here
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.