Importing pgnus-0.6
authorichikawa <ichikawa>
Sun, 30 Aug 1998 05:57:26 +0000 (05:57 +0000)
committerichikawa <ichikawa>
Sun, 30 Aug 1998 05:57:26 +0000 (05:57 +0000)
38 files changed:
GNUS-NEWS
Makefile.in
lisp/ChangeLog
lisp/base64.el [new file with mode: 0644]
lisp/gnus-agent.el
lisp/gnus-art.el
lisp/gnus-cache.el
lisp/gnus-dup.el
lisp/gnus-ems.el
lisp/gnus-group.el
lisp/gnus-nocem.el
lisp/gnus-score.el
lisp/gnus-soup.el
lisp/gnus-start.el
lisp/gnus-sum.el
lisp/gnus-util.el
lisp/gnus-xmas.el
lisp/gnus.el
lisp/lpath.el
lisp/message.el
lisp/mm-decode.el [new file with mode: 0644]
lisp/mm.el [new file with mode: 0644]
lisp/nndraft.el
lisp/nneething.el
lisp/nnfolder.el
lisp/nngateway.el
lisp/nnheader.el
lisp/nnkiboze.el
lisp/nnmail.el
lisp/nnmh.el
lisp/nnml.el
lisp/nnsoup.el
lisp/nntp.el
lisp/nnweb.el
lisp/qp.el [new file with mode: 0644]
texi/ChangeLog
texi/gnus.texi
texi/message.texi

index 0c5b11a..75306e1 100644 (file)
--- a/GNUS-NEWS
+++ b/GNUS-NEWS
@@ -1,102 +1,2 @@
 ** Gnus changes.
 
-*** The Gnus distribution no longer bundles Custom and Widget.
-If your Emacs doesn't come with these libraries, fetch them from
-<URL:http://www.dina.kvl.dk/~abraham/custom/>.  You also then need to
-add the following to the lisp/dgnushack.el file:
-
-     (push "~/lisp/custom" load-path)
-
-Modify to suit your needs.
-
-*** New functionality for using Gnus as an offline newsreader has been
-added.  A plethora of new commands and modes have been added.  See the
-Gnus manual for the full story.
-
-*** The nndraft backend has returned, but works differently than
-before.  All Message buffers are now also articles in the nndraft
-group, which is created automatically.
-
-*** `gnus-alter-header-function' can now be used to alter header
-values.
-
-*** `gnus-summary-goto-article' now accept Message-ID's.
-
-*** A new Message command for deleting text in the body of a message
-outside the region: `C-c C-v'.
-
-*** You can now post to component group in nnvirtual groups with
-`C-u C-c C-c'.
-
-*** `nntp-rlogin-program' -- new variable to ease customization.
-
-*** `C-u C-c C-c' in `gnus-article-edit-mode' will now inhibit
-re-highlighting of the article buffer.
-
-*** New element in `gnus-boring-article-headers' -- `long-to'.
-
-*** `M-i' symbolic prefix command.  See the section "Symbolic
-Prefixes" in the Gnus manual for details.
-
-*** `L' and `I' in the summary buffer now take the symbolic prefix
-`a' to add the score rule to the "all.SCORE" file.
-
-*** `gnus-simplify-subject-functions' variable to allow greater
-control over simplification.
-
-*** `A T' -- new command for fetching the current thread.
-
-*** `/ T' -- new command for including the current thread in the
-limit.
-
-*** `M-RET' is a new Message command for breaking cited text.
-
-*** \\1-expressions are now valid in `nnmail-split-methods'.
-
-*** The `custom-face-lookup' function has been removed.  
-If you used this function in your initialization files, you must
-rewrite them to use `face-spec-set' instead.
-
-*** Cancelling now uses the current select method.  Symbolic prefix
-`a' forces normal posting method.
-
-*** New command to translate M******** sm*rtq**t*s into proper text
--- `W d'.
-
-*** For easier debugging of nntp, you can set `nntp-record-commands'
-to a non-nil value.
-
-*** nntp now uses ~/.authinfo, a .netrc-like file, for controlling
-where and how to send AUTHINFO to NNTP servers.
-
-*** A command for editing group parameters from the summary buffer
-has been added.
-
-*** A history of where mails have been split is available.
-
-*** A new article date command has been added -- `article-date-iso8601'.
-
-*** Subjects can be simplified when threading by setting
-`gnus-score-thread-simplify'.
-
-*** A new function for citing in Message has been added --
-`message-cite-original-without-signature'.
-
-*** `article-strip-all-blank-lines' -- new article command.
-
-*** A new Message command to kill to the end of the article has
-been added.
-
-*** A minimum adaptive score can be specified by using the
-`gnus-adaptive-word-minimum' variable.
-
-*** The "lapsed date" article header can be kept continually
-updated by the `gnus-start-date-timer' command.
-
-*** Web listserv archives can be read with the nnlistserv backend.
-
-*** Old dejanews archives can now be read by nnweb.
-
-*** Byte-compilation of user-specs now works under XEmacs.
-
-*** `gnus-posting-styles' has been re-activated.
index a30ae8d..82fd420 100644 (file)
@@ -5,7 +5,7 @@ srcdir = @srcdir@
 
 @SET_MAKE@
 EMACS = @EMACS@
-XEMACS = xemacs
+XEMACS = xemacs21
 
 all: lick info
 
@@ -35,7 +35,7 @@ elclean:
        rm lisp/*.elc
 
 x:
-       make EMACS=xemacs
+       make EMACS=xemacs21
 
 distclean:
        make clean
@@ -44,7 +44,7 @@ distclean:
        rm -f config.log config.status Makefile
 
 osome:
-       make EMACS=emacs-19.34 some
+       make EMACS=xemacs21 some
 
 config.status: $(srcdir)/configure
        $(SHELL) ./config.status --recheck
index d06cf06..555213b 100644 (file)
-Sat Aug 29 19:17:19 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+Sun Aug 30 00:59:15 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
-       * gnus.el: Gnus v5.6.42 is released.
+       * gnus.el: Pterodactyl Gnus v0.6 is released.
 
-1998-08-29 17:06:27  Simon Josefsson  <jas@pdc.kth.se>
+1998-08-30 00:36:28  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
-       * gnus-sum.el (gnus-summary-make-menu-bar): Typo.
+       * nnheader.el (fboundp): Protect code-coding-string.
 
-1998-08-29 12:47:42  Tatsuya Ichikawa  <ichikawa@hv.epson.co.jp>
+       * gnus-art.el (gnus-article-mode): Check that set-buffer-multibyte 
+       is available.
 
-       * gnus-agent.el: Use nnheader-insert-file-contents.
+Sat Aug 29 23:24:31 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
-1998-08-29 12:18:18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+       * gnus.el: Pterodactyl Gnus v0.5 is released.
 
-       * nnvirtual.el (nnvirtual-request-group): Update the right group. 
+1998-08-29 22:38:35  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
-1998-08-27 16:46:38  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+       * gnus-art.el (gnus-article-mode): Make article buffer multibyte. 
+       (gnus-hack-decode-rfc1522): Removed.
 
-       * gnus-sum.el (gnus-data-compute-positions): Didn't work on hidden
-       threads.
+       * mm-decode.el (mm-charset-coding-system-alist): Check better.
 
-       * nnvirtual.el (nnvirtual-request-group): Work when always
-       updating. 
-       (nnvirtual-always-rescan): Default to t.
+Sat Aug 29 22:20:39 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
-Thu Aug 27 11:03:59 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+       * gnus.el: Gnus v0.4 is released.
 
-       * gnus.el: Gnus v5.6.41 is released.
+1998-08-29 20:53:29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
-1998-08-27  Mike McEwan  <mike@lotusland.demon.co.uk>
-
-       * gnus-agent.el (gnus-agent-fetch-group-1): Leave the calculation
-       of `articles' to `gnus-agent-fetch-headers'.
-       (gnus-agent-fetch-headers): We only want headers that are after
-       the last entry in `gnus-group-alist'.
-
-1998-08-27 09:45:42  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * Makefile.in (warn): New.
-
-       * gnus.el: Removed unreferenced bound variables all over.
-
-       * gnus-group.el (gnus-update-group-mark-positions): Removed topic.
-
-       * gnus-cus.el (gnus-group-customize): No part.
-
-       * gnus-agent.el (gnus-category-line-format-alist): Renamed specs.
-       (gnus-category-insert-line): Use it.
-
-Thu Aug 27 09:29:53 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.40 is released.
-
-1998-08-27 09:19:31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-agent.el (gnus-agent-mode): Only toggle plugged in group
-       mode. 
-
-1998-08-27 07:25:47  Lars Balker Rasmussen  <gnort@daimi.aau.dk>
-
-       * message.el (message-supersede): Check the right headers. 
-
-1998-08-26 13:51:18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-sum.el (gnus-sort-threads): Changed level.
-
-1998-08-26  Mike McEwan  <mike@lotusland.demon.co.uk>
-
-       * gnus-sum.el (gnus-build-all-threads): `save-excursion' and
-       `set-buffer' back to `gnus-summary-buffer' in order to access
-       buffer-local variables.
-
-1998-08-26 06:00:44  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-sum.el (gnus-data-compute-positions): More and faster. 
-
-1998-08-26 05:41:15  Matt Pharr  <mmp@Graphics.Stanford.EDU>
-
-       * message.el (message-wash-subject): Remove more.
-
-1998-08-25 11:33:28  Tatsuya Ichikawa  <ichikawa@hv.epson.co.jp>
-
-       * gnus-cache.el (gnus-cache-overview-coding-system): New
-       variable. 
-
-1998-08-25 08:23:05  Albert L. Ting  <alt@artisan.com>
-
-       * gnus-group.el (gnus-fetch-group-other-frame): New command.
-
-1998-08-25 07:24:51  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-uu.el (gnus-uu-grab-articles): Check for pseudos.
-
-       * gnus-art.el (gnus-ignored-headers): More headers.
-
-       * gnus-sum.el (gnus-summary-move-article): Update the right
-       group. 
-
-1998-08-23 14:31:31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-ignored-headers): More headers.
-
-1998-08-23  Mike McEwan  <mike@lotusland.demon.co.uk>
-
-       * gnus-agent.el (gnus-agent-copy-nov-line): Return to beginning of 
-       line before next read.
-       (gnus-agent-braid-nov): Remove redundant `let'. 
-
-1998-08-22 10:40:54  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (article-display-x-face): Allow multiple X-Faces
-       under XEmacs.
-
-Sat Aug 22 10:28:25 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.39 is released.
-
-1998-08-22 10:06:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-ignored-headers): Added more headers.
-
-1998-08-21 02:49:56  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * nnweb.el (nnweb-type): Doc fix.
-
-       * gnus-sum.el (gnus-summary-set-process-mark): Move to the right
-       article. 
-
-1998-08-20 23:10:01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * nnmail.el (nnmail-spool-file): Allow lists of files.
-
-1998-08-20  Per Starback  <starback@update.uu.se>
-
-       * gnus/gnus-start.el (gnus-check-first-time-used): Change current
-       buffer before creating help group.
-
-1998-08-20 01:33:08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-msg.el (gnus-message-style-insertions): New variable.
-       (gnus-message-insert-stylings): New function.
-       (gnus-configure-posting-styles): Use them.
-
-       * gnus-topic.el (gnus-topic-mode): Don't alter summary-exit-hook. 
-
-       * gnus-sum.el (gnus-select-newsgroup): Don't update group.
-
-       * gnus-msg.el (gnus-setup-message): Bind message-mode-hook.
-       (gnus-inhibit-posting-styles): New variable.
-       (gnus-summary-reply): Use it.
-       (gnus-configure-posting-styles): Ditto.
-
-       * gnus-group.el (gnus-group-suspend): Don't kill dribble buffer. 
-
-Thu Aug 20 00:28:35 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.38 is released.
-
-1998-08-20 00:02:50  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * message.el (message-mail): Doc fix.
-
-1998-08-19 23:22:02  Bill Pringlemeir  <bpringle@my-dejanews.com>
-
-       * messcompat.el (message-send-mail-function): Initialized from
-       send-mail-function. 
-
-1998-08-19 23:20:42  Martin Larose  <larosem@IRO.UMontreal.CA>
-
-       * message.el (message-send-coding-system): New variable.
-
-1998-08-19 19:00:37  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-msg.el (gnus-configure-posting-styles): Reinstated most of
-       old code.
-
-       * gnus-start.el (gnus-save-newsrc-file): Use coding system.
-
-1980-06-08 03:53:56  Mike McEwan  <mike@lotusland.demon.co.uk>
-
-       * gnus-agent.el (gnus-agent-braid-nov): Go to right place. 
-
-1980-06-08 03:01:48  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>
-
-       * gnus-group.el (gnus-group-suspend): Fix.
-
-1998-08-18 00:25:11  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-cite.el (gnus-cited-opened-text-button-line-format-alist):
-       New n spec.
-
-       * gnus-group.el (gnus-group-suspend): Use mapcar.
-
-1998-08-17 14:35:33  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-ems.el (gnus-add-minor-mode): Set mode var.
-
-       * gnus-start.el (gnus-slave-mode): New function.
-
-       * gnus-msg.el (gnus-post-method): Work with current in nndraft. 
-
-1998-08-16 23:30:14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-request-article-this-buffer): Allow recursive
-       selection of nneething groups.
-
-       * nneething.el (nneething-address): Renamed from directory.
-
-Sun Aug 16 18:59:41 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.37 is released.
-
-1998-08-16 14:52:43  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.el: Autoload gnus-summary-wide-reply.
-
-       * gnus-sum.el (gnus-get-newsgroup-headers): Return the value of
-       In-Reply-To. 
-
-       * gnus-msg.el (gnus-setup-message): Posting styles have to be
-       configured in message-mode-hook.
-
-       * nntp.el (nntp-connection-timeout): Restored.
-       (nntp-open-connection): Use it.
-
-1998-08-15 22:46:49  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-group.el (gnus-group-make-useful-group): Doc fix.
-
-       * gnus-art.el (gnus-article-push-button): Place point where you
-       click.
-
-1998-08-15  Mike McEwan  <mike@lotusland.demon.co.uk>
-
-       * gnus-agent.el (gnus-agent-save-group-info): Update "groups" file 
-       if `nntp-server-list-active-group' is nil.
-
-1998-08-15 00:35:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-score.el (gnus-summary-increase-score): Swap t and r.
-
-       * gnus-sum.el (gnus-remove-thread): Didn't work with sparse
-       threads. 
-
-1998-08-14  François Pinard  <pinard@iro.umontreal.ca>
-
-       * nndoc.el (nndoc-generate-mime-parts-head): Use original Subject,
-       Message-ID, and References in fully blown articles.
-
-Fri Aug 14 23:03:51 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.36 is released.
-
-1998-08-14 21:49:22  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.el (load): Push onto list.
-
-       * gnus-group.el (gnus-group-get-new-news-this-group): Store active
-       info. 
-
-Fri Aug 14 21:41:59 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.35 is released.
-
-1998-08-14 00:00:15  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-srvr.el (gnus-server-scan-server): Error better.
-
-       * nndir.el: Make independent of nnmh.
-       Revert.
-
-       * message.el (message-remove-text-with-property): New function.
-       (message-fix-before-sending): Check for invisible text.
-
-       * gnus.el (load): Create the Gnus buffer even when no splash.
-
-       * gnus-msg.el (gnus-setup-message): Add buffer to list.
-
-       * gnus-win.el (gnus-remove-some-windows): Use new buffer system. 
-       (gnus-delete-windows-in-gnusey-frames): Ditto.
-
-       * gnus.el (gnus-add-buffer): New function.
-
-1998-08-13 23:38:21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-xmas.el (gnus-buffer-list): Removed.
-
-       * gnus.el (gnus-buffers): New variable.
-       (gnus-get-buffer-create): New function; used throughout.
-       (gnus-buffers): New function.
-
-       * gnus-msg.el (gnus-configure-posting-styles): Go to eoh
-       reliably. 
-
-       * message.el (message-goto-eoh): New command.
-
-1998-08-13 23:13:53  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus-msg.el (gnus-setup-message): use message-setup-hook
-       instead
-       (gnus-configure-posting-styles): new posting-style 'body
-       (gnus-configure-posting-styles): insert headers immediately
-
-1998-08-13 13:05:36  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-score.el (gnus-summary-increase-score): Change thread to
-       "r". 
-
-       * gnus-sum.el (gnus-summary-scroll-down): New command and
+       * gnus-art.el (gnus-article-decode-mime-words): New command and
        keystroke. 
 
-       * gnus-agent.el (gnus-agent-expire): Check that directories
-       exist. 
-
-1998-08-12 20:56:41  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus-cache.el (gnus-uncacheable-groups): doc change
-       (gnus-cacheable-groups): new variable
-       (gnus-cache-possibly-enter-article): use it
-
-1998-08-12 22:30:16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * nntp.el (nntp-encode-text): Too much text.
-
-1998-08-12 21:58:50  Matt Pharr  <mmp@Graphics.Stanford.EDU>
-
-       * message.el (message-make-forward-subject-function): New
-       variable. 
-       (message-wash-forwarded-subjects): Ditto.
-
-Wed Aug 12 21:09:58 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.34 is released.
-
-1998-08-12 13:32:38  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-msg.el (gnus-post-method): Don't use `current' in drafts.
-
-       * gnus-score.el (gnus-summary-increase-score): Changed T to h and
-       downcase. 
-
-Tue Aug 11 20:46:25 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.33 is released.
-
-1998-08-11 20:07:55  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-group.el (gnus-group-apropos): Check symbol value.
-
-       * gnus-cite.el (gnus-cited-closed-text-button-line-format):
-       Changed.
-
-Tue Aug 11 19:42:42 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.32 is released.
-
-1998-08-11 13:36:56  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * nndoc.el (nndoc-type-alist): Do MIME digests before multiparts.
-
-       * gnus.el (gnus-predefined-server-alist): Expand vars.
-
-1998-08-09  Dave Love  <d.love@dl.ac.uk>
-
-       * gnus-art.el (article-display-x-face): Don't try (and fail) to
-       display multiple faces.
-
-1998-08-11 11:41:43  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-header-newsgroups-face): Don't bold so much.
-
-       * gnus-group.el (gnus-group-rename-group): Remove old group name
-       from list of killed groups.
-
-       * gnus-int.el (gnus-get-function): Error better.
-
-       * gnus-art.el (gnus-article-narrow-to-signature): Inhibit motion
-       hooks.
-       (article-hide-pgp): Delete text instead of hiding it.
-
-       * gnus-group.el (gnus-group-find-new-groups): Ditto.
-
-       * gnus-start.el (gnus-find-new-newsgroups): Accept C-u C-u as a
-       total query.
-
-1998-08-10 09:31:36  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-article-prepare): Place point at the beginning
-       of the body.
-
-       * gnus-cite.el (gnus-cite-attribution-face): Changed to italic.
-
-       * gnus-art.el (gnus-article-edit-article): Delete "annotation"
-       text.
-       (gnus-insert-prev-page-button): Mark as annotation.
-       (gnus-insert-next-page-button): Ditto.
-
-       * gnus-cite.el (gnus-cited-closed-text-button-line-format): New
-       variable.
-       (gnus-cited-closed-text-button-line-format-alist): Ditto.
-       (gnus-article-toggle-cited-text): Toggle between different
-       symbols.
-
-1998-08-09 19:58:36  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.el (gnus-version): Remove backend info.
-
-Sun Aug  9 19:37:40 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.31 is released.
-
-1998-08-09  François Pinard  <pinard@iro.umontreal.ca>
-
-       * nndoc.el: Split MIME multipart messages, maybe recursively.
-       (nndoc-mime-parts-type-p, nndoc-transform-mime-parts,
-       nndoc-generate-mime-parts-head, nndoc-dissect-mime-parts,
-       nndoc-dissect-mime-parts-sub): New functions.
-
-       * nndoc.el: Quoting boundaries is optional, for multipart digests.
-
-1998-08-09 17:51:25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-agent.el (gnus-agent-save-group-info): Check whether file
-       exists.
-
-       * message.el (message-goto-signature): Return nil if no sig.
-       (message-delete-not-region): Delete properly if no sig.
-
-1998-08-09 17:26:30  Simon Josefsson  <jas@pdc.kth.se>
-
-        * gnus-srvr.el (gnus-browse-make-menu-bar): select did read
-
-1998-08-09 15:51:43  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-sum.el (t): Added keystroke for W W C.
-
-       * gnus-cite.el (gnus-article-hide-citation-maybe): hiden->hidden.
-
-Sun Aug  9 15:46:16 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.30 is released.
-
-1998-08-09 10:48:31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * message.el (message-cite-original-without-signature): Peel off
-       blank lines.
-
-       * gnus-art.el (gnus-article-maybe-highlight): Doc fix.
-
-       * gnus-sum.el (gnus-data-enter-list): Threw away all new list data
-       at the beginning of the buffer.
-
-1998-08-07 01:41:29  Gareth Jones  <gdj1@gdjones.demon.co.uk>
-
-       * gnus-score.el (gnus-summary-increase-score): Don't downcase
-       before lookin in char-to-header.
-
-1998-08-07 01:33:22  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.el (gnus-predefined-server-alist): Too many parentheses.
-
-1998-08-06 11:20:08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.el (gnus-continuum-version): Include quassia.
-
-       * gnus-sum.el (gnus-data-enter-list): Check before entering list.
-
-1998-08-06 11:13:56  Francois Felix Ingrand  <felix@dial.oleane.com>
-
-       * gnus-salt.el (gnus-generate-vertical-tree): Don't go too far to
-       the left.
-
-Thu Aug  6 07:58:17 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.29 is released.
-
-1998-08-06 07:10:31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-agent.el (gnus-agent-expire): Check whether (caar
-       gnus-agent-article-alist) is nil.
-
-       * gnus.el (gnus-read-method): Allow selecting predefined servers.
-
-       * gnus-topic.el (gnus-topic-update-topic-line): Compute right
-       number when inserting missing topic lines.
-
-       * gnus-start.el (gnus-get-unread-articles): Check that the group
-       is alive.
-
-       * gnus-score.el (gnus-score-load-score-alist): Better error
-       messaging.
-
-Tue Aug  4 09:42:31 1998  Kurt Swanson  <ksw@dna.lth.se>
-
-       * gnus-salt.el (gnus-pick-mouse-pick-region): Fix picking bug due
-       to use of gnus-read-event-char.
-
-1998-07-28  Dave Love  <d.love@dl.ac.uk>
-
-       * gnus-group.el (gnus-group-fetch-faq): Don't mung dots in group
-       name.
-
-1998-07-27  Dave Love  <d.love@dl.ac.uk>
-
-       * gnus-topic.el (gnus-topic-mode-map): Provide Emacs tty
-       alternatives to [tab], [(meta tab)].
-
-1998-08-06 04:41:38  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-start.el (gnus-startup-file-coding-system): New variable.
-       (gnus-read-init-file): Use it.
-       (gnus-read-newsrc-el-file): Ditto.
-
-       * gnus-sum.el (gnus-thread-ignore-subject): Changed default.
-
-1998-08-06 04:38:02  Richard Stallman  <rms@gnu.org>
-
-       * message.el (sendmail): Required.
-
-1998-08-06 02:11:37  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-sum.el (gnus-auto-select-same): Dix fix.
-
-1998-08-04  Mike McEwan  <mike@lotusland.demon.co.uk>
-
-       * gnus-sum.el (gnus-select-newsgroup): Set
-       `gnus-newsgroup-unselected' when selecting specific articles via
-       SELECT-ARTICLE - there may be more headers to fetch if
-       `gnus-fetch-old-headers' is non-nil.
-       (gnus-summary-read-group): pass SELECT-ARTICLE to
-       `gnus-summary-read-group-1' and reset to nil when going to next group.
-       (gnus-summary-read-group): Change `select-article' to
-       `select-articles' for consistency.
-
-Tue Aug  4 05:25:01 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.28 is released.
-
-1998-08-03 22:00:25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * nndoc.el (nndoc-set-delims): Removed article-end.
-       (nndoc-dissect-buffer): Use eobp.
-
-1998-08-03 19:59:36  Trung Tran-Duc  <trung.tranduc@prague.ixoskillspam.cz>
-
-       * nntp.el (nntp-open-connection): Bind coding-system-for-write.
-
-1998-07-31 16:45:36  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-group.el (gnus-group-read-ephemeral-group): Make the server
-       unique.
-
-1998-07-28  François Pinard  <pinard@iro.umontreal.ca>
-
-       * gnus-uu.el (gnus-uu-reginize-string): Consider the number of
-       parts as part of the fixed subject, instead of a wild quantity.
-
-1998-07-30 21:47:23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-cache.el (gnus-summary-insert-cached-articles): Sort
-       articles.
-
-       * nndir.el (nndir): Use nnml functions.
-
-Mon Jul 27 03:26:00 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.27 is released.
-
-1998-07-27 02:27:11  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-topic.el (gnus-topic-update-unreads): New function.
-
-       * gnus-sum.el (gnus-summary-limit): Update mode line.
-
-       * gnus-soup.el (gnus-soup-add-article): Update mode line.
-
-       * gnus-group.el (gnus-group-make-menu-bar): Bug.
-
-       * gnus-art.el (gnus-article-make-menu-bar): Menu.
-
-       * gnus-sum.el (gnus-summary-make-menu-bar): Bug reports.
-
-       * gnus-topic.el (gnus-topic-mode-map): h -> H.
-
-1998-07-19 16:59  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus-util.el (gnus-netrc-syntax-table): @ is whitespace
-
-1998-07-17  Gordon Matzigkeit  <gord@fig.org>
-
-       * gnus-uu.el (gnus-uu-reginize-string): Simplify by looking
-       from back to front for part numbers, rather than skipping
-       leading ``version numbers.''
-
-       (gnus-uu-part-number): Make consistent with
-       gnus-uu-reginize-string.
-
-1998-07-26 19:01:58  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-art.el (gnus-request-article-this-buffer): Pass along
-       header.
-
-       * gnus-sum.el (gnus-summary-update-article): Don't pass along
-       iheader to regeneration routine.
-
-1998-07-27  KOSEKI Yoshinori  <kose@yk.NetLaputa.ne.jp>
-
-       * nnmail.el (nnmail-move-inbox): Clear nnmail-internal-password,
-       when supplied Password is incorrect.
-
-Sat Jul 25 19:31:36 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.26 is released.
-
-1998-07-25 14:53:24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-salt.el (gnus-pick-mouse-pick-region): Use
-       gnus-read-event-char.
-
-Sat Jul 25 02:43:35 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.25 is released.
-
-1998-07-25 00:03:24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-group.el (gnus-group-read-ephemeral-group): Ditto.
-
-       * gnus-sum.el (gnus-summary-read-group-1): Ditto.
-
-       * gnus-group.el (gnus-group-read-group): Accept article list.
-
-1998-07-24 14:35:02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-msg.el (gnus-configure-posting-styles): Quote some.
-
-       * message.el (message-ignored-supersedes-headers): Added X-Trace
-       and X-Complaints-To.
-
-       * nnmail.el (gnus-util): Required.
-
-1998-07-21 23:03:13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.el (gnus-news-group-p): Bogosity in params.
-
-1998-07-21 16:14:32  Robert Bihlmeyer  <robbe@orcus.priv.at>
-
-       * gnus-util.el (gnus-globalify-regexp): New function.
-
-1998-07-18 21:49:01  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus-sum.el (gnus-list-of-unread-articles): Peel off articles
-       outside active range.
-
-1998-07-15 10:47:39  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * nnvirtual.el (nnvirtual-request-type): Handle non-numerical
-       articles.
-
-       * gnus.el (gnus-news-group-p): Do something sensible with negative
-       articlies.
-
-Wed Jul 15 10:27:05 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-salt.el (gnus-tree-minimize-window): Allow numbers.
-
-Wed Jul 15 10:25:29 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-agent.el (gnus-agent-expire): Ignored ticks.
-
-Wed Jul 15 10:15:28 1998  Hallvard B. Furuseth  <h.b.furuseth@usit.uio.no>
-
-       * nntp.el (nntp-send-authinfo): Message better and stuff.
-
-Wed Jul 15 10:10:07 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.el (gnus-message-archive-group): Allow sexp.
-
-Wed Jul 15 09:56:47 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-select-newsgroup): Accept select-articles
-       para,
-
-1998-07-13  Mike McEwan  <mike@lotusland.demon.co.uk>
-
-       * gnus-sum.el (gnus-select-newsgroup): Don't call the Agent to
-       mark articles as read until *all* headers have been retrieved.
-
-Wed Jul 15 09:06:18 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nndir.el (nndir): Use nnml to request article.
-
-1998-07-11  SL Baur  <steve@altair.xemacs.org>
-
-       * gnus-topic.el (gnus-topic-mode-map): Use modern key syntax.
-
-Sun Jul 12 04:01:22 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-score.el (gnus-current-home-score-file): New function.
-
-1998-07-11  Mike McEwan  <mike@lotusland.demon.co.uk>
-
-       * gnus-agent.el (gnus-agent-fetch-headers): Note last fetched
-       headers per sesion to aid expiry in `headers only' groups.
-
-       * gnus-agent.el (gnus-agent-expire): Update group info to add
-       expired articles to list of read articles and prevent
-       re-fetching.
-
-1998-07-12  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnmail.el (nnmail-active-file-coding-system): Changed to
-       binary.
-
-Sun Jul 12 03:16:18 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-score.el (gnus-score-load-file): Specify which alist to
-       decay.
-
-1998-07-12  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-start.el (gnus-startup-file-coding-system): New variable.
-       (gnus-read-newsrc-el-file): Use it.
-
-Sat Jul 11 03:03:53 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.24 is released.
-
-Fri Jul 10 04:23:24 1998  Hallvard B. Furuseth  <h.b.furuseth@usit.uio.no>
-
-       * gnus-util.el (gnus-parse-netrc): Allow "default" values.
-
-Fri Jul 10 04:15:35 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nntp.el (nntp-server-opened-hook): Doc change.
-
-Fri Jul 10 03:03:48 1998  François Pinard  <pinard@iro.umontreal.ca>
-
-       * gnus-sum.el (gnus-summary-respool-trace): New command and
-       keystroke.
-
-Fri Jul 10 02:18:01 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-util.el (gnus-prin1): Bind print-escape-multibyte to nil.
-
-Mon Jul  6 01:02:59 1998  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus-range.el (gnus-sorted-complement): Fix comments.
-
-Thu Jul  2 11:16:14 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-iterate): New macro.
-
-       * message.el (message-pop-to-buffer): Clone locals.
-
-       * gnus-msg.el (gnus-posting-styles): Reinstated.
-       (gnus-posting-style-alist): Ditto.
-
-Wed Jul  1 18:02:31 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-int.el (gnus-get-function): Set funct to nil.
-
-1998-07-01 16:57:38  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus-int.el (gnus-get-function): returned non-nil when
-        function wasn't bound, if noerror=t
-
-Wed Jul  1 17:30:41 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-topic.el (gnus-topic-mode-map): Bind TAB and M-TAB.
-
-       * gnus-sum.el (gnus-build-sparse-threads): Make sure no dates are
-       nil.
-       (gnus-summary-limit-mark-excluded-as-read): Use the intersection.
-
-       * gnus-msg.el (gnus-setup-message): Clone all local variables from
-       the summary buffer.
-
-Wed Jul  1 14:03:52 1998  Richard Stallman  <rms@santafe.edu>
-
-       * message.el (message-cite-original): Use mail-citation-hook.
-       (message-cite-function): Ditto.
-
-Wed Jul  1 14:00:53 1998  Rajappa Iyer  <rsi@lucent.com>
-
-       * gnus-salt.el (gnus-pick-mode-map): Changed keymap.
-
-Wed Jul  1 13:33:26 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.23 is released.
-
-Wed Jul  1 12:52:32 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nntp.el (nntp-record-command): Give more precise time info.
-       (nntp-next-result-arrived-p): Look for the end of error lines.
-
-Wed Jul  1 12:24:06 1998  François Pinard  <pinard@iro.umontreal.ca>
-
-       * gnus-util.el (gnus-delete-if): Would do the opposite.
-
-Wed Jul  1 01:53:31 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-build-sparse-threads): Didn't work at all.
-
-Tue Jun 30 15:56:54 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nntp.el (nntp-send-authinfo): Store the user name.
-       (nntp-authinfo-user): New variable.
-
-       * gnus-sum.el (gnus-summary-limit-mark-excluded-as-read): Would
-       mark some articles as unread.
-
-       * gnus-agent.el (gnus-agent-expire): Don't sort lines.
-
-Tue Jun 30 15:56:31 1998  Mike McEwan  <mike@lotusland.demon.co.uk>
-
-       * gnus-agent.el (gnus-agent-expire): Use a fresh hash table.
-
-Mon Jun 29 22:49:49 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.22 is released.
-
-Mon Jun 29 21:22:46 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-salt.el (gnus-pick-mode-map): Remove gnus-mouse.
-
-       * gnus-sum.el (gnus-dependencies-add-header): `debug' left in.
-       Eh.  Eh.
-
-       * gnus-salt.el (gnus-summary-pick-line-format): Missing %.-
-
-       * gnus-topic.el (gnus-topic-rename): Fix error message.
-
-Sun Jun 28 14:32:08 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-spec.el (gnus-face-face-function): Double quoting removed.
-
-Sun Jun 28 09:54:52 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.21 is released.
-
-Sun Jun 28 08:51:39 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-edit-article-done): Copy the buffer to
-       a temp buffer before replacing.
-
-       * gnus-msg.el (gnus-post-news): Treat broken-reply-to in
-       followups.
-
-       * gnus-sum.el (gnus-summary-goto-subject): Position point.
-
-Sat Jun 27 09:19:20 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-demon.el (gnus-util): Required.
-
-       * gnus-score.el (gnus-score-body): Message fix.
-
-       * gnus-group.el (gnus-group-highlight-line): Use it.
-
-       * gnus-util.el
-       (gnus-put-text-properties-excluding-characters-with-faces): New
-       function.
-
-Sat Jun 27 08:56:08 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.20 is released.
-
-Sat Jun 27 08:49:51 1998  Arne Georg Gleditsch  <argggh@ifi.uio.no>
-
-       * gnus-sum.el (gnus-parent-headers): Check better for headers.
-
-Sat Jun 27 08:45:09 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.el (message-check-news-body-syntax): Buggy checksum
-       check.
-
-Sat Jun 27 07:59:22 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.19 is released.
-
-Sat Jun 27 07:50:50 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.18 is released.
-
-Sat Jun 27 03:18:57 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-soup.el (gnus-soup-save-areas): Made interactive.
-
-       * nnfolder.el (nnfolder-request-replace-article): Check all X-From
-       headers.
-
-       * gnus-sum.el (gnus-update-marks): Don't nix out cache lists.
-
-       * nngateway.el (nngateway-mail2news-header-transformation):
-       Changed semantics.
-
-       * message.el (message-check-news-body-syntax): Don't look at
-       buffer size to see whether text has been added.
-
-Fri Jun 26 15:46:05 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.16 is released.
-
-Fri Jun 26 15:36:25 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-util.el (gnus-delete-assq): Removed.
-       (gnus-delete-assoc): Ditto.
-
-       * gnus.el: Use throughout.
-
-       * gnus-util.el (gnus-pull): New macro.
-
-1998-06-26  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus-sum.el (gnus-get-newsgroup-headers): parse Chars: headers
-
-Fri Jun 26 13:45:24 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-update-marks): Use it.
-
-       * gnus-util.el (gnus-delete-alist): New function.
-
-       * gnus-sum.el (gnus-update-marks): Don't save list of cached
-       articles.
-
-       * message.el (message-mode-menu): Include kill-buffer.
-
-       * nnmail.el (nnmail-purge-split-history): Use it.
-
-       * gnus-util.el (gnus-delete-if): New function.
-
-       * nnmail.el (nnmail-article-group): Use gnus-remove-duplicates.
-
-Fri Jun 26 13:45:09 1998  Richard Stallman  <rms@santafe.edu>
-
-       * gnus-util.el (gnus-remove-duplicates): New function.
-
-Fri Jun 26 13:30:42 1998  Kevin Christian  <Kevin.Christian@symbios.com>
-
-       * gnus-score.el (gnus-score-string): Do updating of scores after
-       fuzzies.
-
-Fri Jun 26 07:26:03 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.el (message-mode): Don't do the intern dance.
-
-Fri Jun 26 07:13:49 1998  Richard Stallman  <rms@santafe.edu>
-
-       * message.el (message-mode): Adaptive fill changes.
-
-Fri Jun 26 04:29:44 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-mode-line-format-alist): Allow article
-       score.
-
-       * gnus-score.el (gnus-score-load-file): Would ignore all score
-       files without un-advanced rules.
-
-       * gnus-ems.el ((fboundp 'split-string)): Use it where it exists.
-
-Fri Jun 26 04:23:12 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.15 is released.
-
-Fri Jun 26 03:39:32 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnfolder.el (nnfolder-request-replace-article): Delete old
-       delimiter.
-
-       * gnus-msg.el (gnus-summary-reply): Use it.
-
-       * message.el (message-reply): Removed parameter.
-       (message-wide-reply): Ditto.
-
-       * gnus-msg.el (gnus-msg-treat-broken-reply-to): New function.
-
-       * gnus-art.el (gnus-check-group-server): New function.
-       (gnus-request-article-this-buffer): Don't try to waken the server
-       before needing to.
-
-Thu Jun 25 10:35:48 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-delete-article): Sort the articles
-       before deleting.
-
-       * nngateway.el (nngateway-request-post): Return success.
-
-       * nnheader.el (nnheader-insert-file-contents): Bind more hooks.
-
-       * gnus-sum.el (gnus-summary-limit-to-age): Reverse logic.
-
-       * gnus-score.el (gnus-summary-score-entry): Removed interactive
-       spec.
-       ((gnus-summary-score-map "V" gnus-summary-mode-map)): Removed
-       keystroke.
-
-       * gnus-art.el (gnus-article-show-summary): Position point.
-
-       * gnus-cache.el (gnus-cache-update-article): Change group first.
-
-       * gnus.el (gnus-short-group-name): Collapse more.
-
-Thu Jun 25 08:48:06 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.14 is released.
-
-Thu Jun 25 05:13:31 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-rebuild-thread): Accept a line argument.
-       (gnus-rebuild-thread): Would skip around a lot when `P'-ing past
-       the beginning.
-
-       * gnus-msg.el (gnus-post-method): Present all known servers if
-       `C-u 0'.
-
-       * gnus-salt.el (gnus-pick-mode-map): Reinstated keymap.
-
-       * gnus-sum.el (gnus-build-sparse-threads): Put the proper date
-       in.
-
-Wed Jun 24 07:52:30 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.13 is released.
-
-Wed Jun 24 07:47:04 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-topic.el (gnus-topic-rename): Disallow "nil".
-
-Wed Jun 24 07:33:17 1998  Vladimir Alexiev  <vladimir@cs.ualberta.ca>
-
-       * nnvirtual.el (nnvirtual-update-xref-header): Regexp-quote group
-       name.
-
-Wed Jun 24 06:15:27 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-build-sparse-threads): Give all the sparse
-       articles the date of the current child.
-
-       * gnus-topic.el (gnus-group-topic-parameters): Didn't compute.
-
-Wed Jun 24 03:27:44 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.12 is released.
-
-Wed Jun 10 11:06:35 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
-
-       * message.el (message-mail-other-window): Bind message-this-is-mail.
-       (message-mail-other-frame): Likewise.
-       (message-news-other-window): Bind message-this-is-news.
-       (message-news-other-frame): Likewise.
-
-1998-06-09  Sam Steingold  <sds@goems.com>
-
-        * gnus-uu.el (gnus-uu-default-view-rules): make sed kill ^M only
-        at the end of line.
-
-1998-06-05  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * nnmail.el (nnmail-get-split-group): Don't regexp-quote
-       nnmail-procmail-suffix.
-
-Wed Jun 24 03:04:05 1998  Kim-Minh Kaplan  <kaplan@sky.fr>
-
-       * gnus-sum.el (gnus-build-get-header): Fix obarray.
-
-Wed Jun 24 02:49:57 1998  Castor  <castor@my-dejanews.com>
-
-       * nntp.el (nntp-open-ssl-stream):
-
-Wed Jun 24 02:31:46 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-nov-parse-line): Cleaned up.
-       (gnus-build-all-threads): Put things in the wrong obarray.
-
-Wed Jun 24 01:43:26 1998  Decklin Foster  <djarum@base.org>
-
-       * nngateway.el (nngateway-mail2news-header-transformation): New
-       function.
-
-Wed Jun 24 00:25:45 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.el (message-shorten-references): New function.
-       (message-header-format-alist): Use it.
-
-       * gnus-start.el (gnus-always-read-dribble-file): Customized.
-
-       * message.el (message-generate-new-buffers): Dox fox.
-
-Tue Jun 23 23:58:48 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-topic.el (gnus-topic-prepare-topic): Respect visible topic
-       param.
-       (gnus-topic-hierarchical-parameters): New function.
-
-1998-06-02  Didier Verna  <verna@inf.enst.fr>
-
-       * gnus-picon.el (gnus-get-buffer-name): use get-buffer-create
-       instead of get-buffer
-
-Wed Jun  3 04:41:45 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnkiboze.el (nnkiboze-request-delete-group): Delete .newsrc
-       file.
-
-       * nnmail.el (nnmail-article-group): Nuke looong lines.
-
-       * gnus-art.el (gnus-button-alist): Buggy default.
-
-Wed Jun  3 04:03:37 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.11 is released.
-
-Wed Jun  3 03:33:50 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.el: Checked doc string syntax throughout.
-
-       * message.el (message-subject-re-regexp): Renamed.
-
-Wed Jun  3 03:33:05 1998  Simon Josefsson  <jas@pdc.kth.se>
-
-       * message.el (message-ignored-subject-re): New variable.
-
-Wed Jun  3 03:25:13 1998  Sam Steingold  <sds@usa.net>
-
-       * gnus-msg.el (gnus-bug-create-help-buffer): New variable.
-       (gnus-bug): Use it.
-
-1998-05-07  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * nnmail.el: (nnmail-get-split-group): Use `regexp-quote'
-       when file name is a part of pattern.
-
-       * nnmail.el (nnmail-crosspost-link-function): Ditto.
-
-       * gnus-ems.el: Use `symbol-name' instead of `(format "%s" ...)'.
-
-       * gnus-score.el (gnus-score-load-file): Use `regexp-quote'
-       when file name is a part of pattern.
-
-1998-05-06  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * gnus-cache.el (gnus-cache-generate-active): Use `regexp-quote'
-       when file name is a part of pattern.
-
-Wed Jun  3 03:13:34 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnfolder.el (nnfolder-delete-mail): Changed parameters.
-       (nnfolder-request-replace-article): Rename X-From-Line.
-
-Wed Jun  3 03:10:04 1998  Dan Christensen  <jdc@chow.mat.jhu.edu>
-
-       * nnfolder.el (nnfolder-adjust-min-active): Work.
-
-Mon Jun  1 05:27:28 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-limit-to-age): Reversed time and
-       almost collapsed space!
-
-       * nnmail.el (nnmail-days-to-time): Computed wrong time.
-
-Mon Jun  1 05:19:46 1998  Kim-Minh Kaplan  <KimMinh.Kaplan@utopia.eunet.fr>
-
-       * gnus-sum.el (gnus-dependencies-add-header): Break loops.
-
-Mon Jun  1 05:13:34 1998  Fabrice POPINEAU  <popineau@esemetz.ese-metz.fr>
-
-       * gnus-cache.el (gnus-cache-generate-active): Regexp-quote.
-
-Mon Jun  1 04:31:23 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.10 is released.
-
-Mon Jun  1 03:25:33 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-art.el (gnus-button-alist): Recognize bare mailto buttons
-       for Gnus.
-
-       * nntp.el: Replaced all `message' calls.
-
-Mon Jun  1 03:13:46 1998  Wolfgang Rupprecht  <wolfgang@dailyplanet.wsrcc.com>
-
-       * nntp.el (nntp-encode-text): Removed spurious forward-line.
-
-Sat May 23 19:44:43 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-agent.el (gnus-agent-fetch-session): Would infloop if
-       opening failed.
-
-Tue May 19 04:11:33 1998  Yoshiki Hayashi  <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * nnheader.el (nnheader-translate-file-chars): Don't change
-       string.
-
-Tue May 19 03:07:45 1998  P. E. Jareth Hein  <jareth@camelot-soft.com>
-
-       * gnus-util.el (gnus-dd-mmm): New version.
-
-Tue May 19 03:00:39 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.el: Changed address.
-
-Tue May 12 06:12:42 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-agent.el (gnus-agent-expire): Delete more.
-
-Sun May 10 19:08:28 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-group.el (gnus-group-read-ephemeral-group): Don't add
-       `address'.
-
-Sun May  3 18:01:01 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnmail.el (nnmail-within-headers-p): Renamed.
-
-       * message.el (message-cancel-news): If a Sender header doesn't
-       exist, compare From against `message-make-from'.
-
-Sun May  3 15:07:25 1998  Lars Balker Rasmussen  <lbr@image.dk>
-
-       * gnus-agent.el (gnus-agent-save-group-info): Fix
-       re-search-forward params.
-
-Sun May  3 15:04:02 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-agent.el (gnus-agent-expire): Check for the size.
-
-Sat May  2 01:50:20 1998  Dan Christensen  <jdc@chow.mat.jhu.edu>
-
-       * nnfolder.el (nnfolder-goto-article): New version.
-       (nnfolder-read-folder): Fix.
-
-       * nnmail.el (nnmail-within-headers): New function.
-
-Sat May  2 01:36:37 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnfolder.el (nnfolder-goto-article): Thinkotypo search arguments.
-
-       * nnheader.el (nnheader-find-file-noselect): Also bind
-       `find-file-hooks' to nil.
-
-       * nnmail.el (nnmail-process-unix-mail-format): Don't use
-       `find-file-noselect'.
-
-       * gnus-group.el (gnus-group-make-menu-bar): Typo.
-
-Fri May  1 21:59:35 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.9 is released.
-
-Fri May  1 21:54:30 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnfolder.el (nnfolder-goto-article): Would infloop.
-
-Fri May  1 19:45:50 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.8 is released.
-
-Fri May  1 18:51:21 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nntp.el (nntp-request-newgroups): Use format-time-string.
-
-       * message.el (message-fetch-field): Inhibit point-motion hooks.
-
-Fri May  1 18:33:06 1998  Wes Hardaker  <wjhardaker@ucdavis.edu>
-
-       * gnus-score.el (gnus-adaptive-word-no-group-words): New variable.
-
-Fri May  1 16:56:32 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-agent.el (gnus-agent-expire): Put point at the start of the
-       buffer.
-
-       * gnus-soup.el (gnus-soup-parse-areas): Check whether the file
-       exists.
-
-       * gnus-draft.el (gnus-draft-send): Use meta-information.
-
-       * nnagent.el (nnagent-request-post): Store meta-information.
-
-       * gnus-agent.el (gnus-agent-meta-information-header): New variable.
-       (gnus-agent-insert-meta-information): New function.
-
-Fri May  1 16:43:35 1998  Paul Franklin  <paul@cs.washington.edu>
-
-       * message.el (message-generate-headers): Insert Sender when
-       required.
-
-Fri May  1 15:28:55 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-util.el (gnus-dd-mmm): Accept "" dates.
-
-       * gnus-cite.el (gnus-article-hide-citation): Don't remove button
-       when hiding.
-
-       * gnus-msg.el (gnus-post-method): Allow ARG to override
-       `current'.
-
-       * gnus-sum.el (gnus-remove-thread): Remove the dummy root
-       properly.
-
-       * nnfolder.el (nnfolder-goto-article): New function.
-       (nnfolder-retrieve-headers): Use it.
-       (nnfolder-request-article): Ditto.
-
-Wed Apr 29 22:48:33 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.7 is released.
-
-Wed Apr 29 20:54:35 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-update-info): Bind
-       gnuis-newsgroup-scored later.
-       (gnus-summary-prepare-threads): Check some more before inserting
-       dummy roots.
-
-       * gnus-cache.el (gnus-cache-enter-article): Update marks
-       properly.
-
-       * gnus-xmas.el (gnus-xmas-draft-menu-add): New function.
-
-       * nntp.el (nntp-connection-timeout): Removed.
-
-       * gnus-move.el (gnus-move-group-to-server): Delete nils.
-
-       * nntp.el (nntp-close-server): Close more connections.
-
-       * gnus-art.el (gnus-button-alist): Accept white space after colons
-       in <URL:news:> things.
-
-Wed Apr 29 20:18:45 1998  Kurt Swanson  <kurt@dna.lth.se>
-
-       * gnus-art.el (article-update-date-lapsed): Bind
-       `deactivate-mark'.
-
-       * gnus-salt.el (gnus-pick-mode-map): Moved keys around to avoid
-       shadowing.
-
-       * gnus-art.el (gnus-article-read-summary-keys): New version.
-
-       * gnus-sum.el (gnus-summary-make-menu-bar): New for article mode.
-
-       * gnus-msg.el (gnus-post-method): `current' custom.
-
-Wed Apr 29 19:04:27 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-set-local-parameters): Ignore
-       quit-config.
-       (gnus-select-newsgroup): Use the value of gnus-fetch-old-headers.
-
-       * message.el (message-post-method): Doc fix.
-
-       * gnus.el (gnus-directory): dox fix.
-
-Tue Apr 28 03:32:17 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-group.el (gnus-group-timestamp): Really get timestamp.
-
-       * gnus.el (gnus-group-parameter-value): Use explicit iteration.
-
-Tue Apr 28 03:15:50 1998  Hallvard B. Furuseth  <h.b.furuseth@usit.uio.no>
-
-       * gnus-util.el (gnus-alive-p): Check for binding.
-
-Tue Apr 28 03:00:16 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-parent-headers): Don't infloop on nil
-       References.
-
-       * gnus-art.el (gnus-article-mode): Don't kill local vars.
-
-       * score-mode.el (score-mode-syntax-table): Change syntax.
-
-Mon Apr 27 00:26:01 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.6 is released.
-
-Mon Apr 27 00:07:11 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-art.el (gnus-request-article-this-buffer): Viewing pseudos
-       in nneething groups bugged.
-
-       * gnus-sum.el (gnus-summary-prepare-threads): Dummy roots and
-       dormants and stuff.
-
-Sun Apr 26 23:34:40 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-cache.el (gnus-cache-file-name): Use FULL.
-
-       * nnheader.el (nnheader-translate-file-chars): Allow FULL
-       parameter.
-
-       * gnus-cache.el (gnus-cache-file-name): Translate all colons.
-
-Sun Apr 26 19:27:56 1998  Justin Sheehy  <justin@linus.mitre.org>
-
-       * nntp.el (nntp-rlogin-parameters): Doc fix.
-
-Sun Apr 26 19:21:12 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-art.el (gnus-summary-save-in-mail): Not a command.
-
-Sun Apr 26 19:16:03 1998  James Troup  <J.J.Troup@scm.brad.ac.uk>
-
-       * gnus-sum.el (gnus-summary-expire-articles-now): Work.
-
-Sun Apr 26 14:34:06 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-build-sparse-threads): Break loops.
-       (gnus-summary-print-article): Save excursion to try to preserve
-       local/bound variable messup.
-
-       * gnus-salt.el (gnus-tree-read-summary-keys): Put point in article
-       buffer.
-
-       * gnus-undo.el (gnus-undo): New group.
-       (gnus-undo-limit): New variable.
-       (gnus-undo-register-1): Use it.
-
-       * gnus-sum.el (gnus-summary-update-info): Don't nix out scores.
-
-       * gnus-start.el (gnus-active-to-gnus-format): Removed "." from
-       quoting.
-
-       * gnus.el (gnus-cache-directory): Moved here.
-       (gnus-predefined-server-alist): Use.
-
-       * message.el (message-autosave-directory): Put back in.
-       (message-set-auto-save-file-name): Use if Gnus isn't running.
-
-       * gnus-util.el (gnus-alive-p): Moved here.
-
-       * message.el (message-autosave-directory): Removed.
-       (message-set-auto-save-file-name): Don't use it.
-
-       * gnus.el: Use gnus-buffer-exists-p throughout.
-
-       * gnus-uu.el (gnus-uu-save-article): Use gnus-kill-buffer.
-
-       * message.el (message-make-in-reply-to): Check more for strange
-       From lines.
-
-       * gnus-art.el (gnus-article-mode): Don't nix out vars.
-
-Sun Apr 26 14:05:40 1998  Frank Bennett  <bennett@rumple.soas.ac.uk>
-
-       * nnmail.el (nnmail-move-inbox): Push error'ed mailboxes onto the
-       list.
-
-Sun Apr 26 13:01:53 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-score.el (gnus-score-save): Use it.
-
-       * score-mode.el (score-mode-syntax-table): New table.
-
-       * nnmbox.el: Commentary fix.
-
-Sun Apr 26 12:59:00 1998  Richard Stallman  <rms@santafe.edu>
-
-       * message.el (message-mode): New adaptive fill defaults.
-
-Sun Apr 26 12:50:38 1998  Jim Radford  <radford@robby.caltech.edu>
-
-       * gnus-start.el (gnus-active-to-gnus-format): Groups that start
-       with dots.
-
-1998-04-11  Richard Stallman  <rms@sucrose.gnu.org>
-
-       * gnus/gnus-art.el (gnus-emphasis-alist): Use nth, not caddr.
-
-Sat Apr 25 15:33:57 1998  Kim-Minh Kaplan  <KimMinh.Kaplan@utopia.eunet.fr>
-
-       * gnus-sum.el (gnus-build-sparse-threads): Handle loops.
-
-Sat Apr 25 15:09:54 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.el (gnus-valid-select-methods): nngateway is post-mail.
-
-Fri Apr 24 21:32:14 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.5 is released.
-
-Fri Apr 24 21:19:21 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-msg.el (gnus-post-method): Doc fix.
-       (gnus-post-method): Reversed semantics.
-
-1998-04-01  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-       * gnus-msg.el (gnus-post-method): Customized. Added 'native
-       option. In the function, added support for new value.
-
-Fri Apr 24 20:04:15 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnmbox.el (nnmbox-request-create-group): New function.
-
-Sun Apr 12 07:55:16 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-agent.el (gnus-agent-save-group-info): Only do those that
-       are covered.
-
-Tue Apr  7 11:26:31 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nntp.el (nntp-authinfo-file): Doc fix.
-
-1998-03-31  Ken Raeburn  <raeburn@cygnus.com>
-
-       * nnml.el (nnml-request-expire-articles): Sort active-articles,
-       then only expire the intersection of that set with the requested
-       articles.
-
-Wed Apr  1 16:01:44 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.el (message-supersede): Check Sender.
-       (message-cancel-news): Fix Sender check.
-
-Sun Mar 29 11:54:33 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnkiboze.el (nnkiboze-generate-group): Would mess up newsrs
-       hashtb.
-       (nnkiboze-enter-nov): Created bogus Xrefs headers.
-
-       * gnus-agent.el (gnus-agent-save-group-info): New function.
-
-       * gnus-start.el (gnus-get-unread-articles): Use it.
-
-       * message.el (message-expand-group): Allow completion from in the
-       middle of strings.
-       (message-font-lock-keywords): Work when mail-header-separator is
-       "".
-
-Sun Mar 29 09:56:00 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.4 is released.
-
-Sun Mar 29 09:47:58 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnkiboze.el (nnkiboze-request-delete-group): Would bug out when
-       deleting files.
-
-Sat Mar 28 08:48:31 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nntp.el (nntp-encode-text): Use `nntp-end-of-line'.
-
-Thu Mar 26 15:29:51 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-agent.el (gnus-agent-expire): Check size of history file.
-
-       * message.el (message-mode): Doc fix.
-
-Mon Mar 23 14:21:34 1998  Mike McEwan  <mike@lotusland.demon.co.uk>
-
-       * gnus-score.el (gnus-score-default-type): Doc fix.
-
-Mon Mar 23 14:12:01 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-int.el (gnus-request-body): Do the same as HEAD.
-
-       * gnus-art.el (gnus-article-edit-article-hook): Removed.
-
-Mon Mar 23 14:09:56 1998  jari aalto  <jari.aalto@poboxes.com>
-
-       * gnus-art.el (gnus-article-edit-article-hook): New hook.
-
-1998-03-19  Jan Vroonhof  <vroonhof@math.ethz.ch>
-
-       * nntp.el (nntp-open-rlogin): Wrap in save-excursion
-
-Thu Mar 19 16:43:59 1998  Joe Buehler  <jhpb@hekimian.com>
-
-       * gnus-util.el (gnus-date-iso8601): Use simple string.
-
-Thu Mar 19 15:18:00 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.3 is released.
-
-Thu Mar 19 15:09:14 1998  Wes Hardaker  <wjhardaker@ucdavis.edu>
-
-       * gnus-win.el (gnus-delete-windows-in-gnusey-frames): Make sure
-       there are no nil buffers.
-
-1998-03-17  Per Abrahamsen  <abraham@dina.kvl.dk>
-
-       * gnus-uu.el (gnus-uu-digest-headers): Add `Content-Type' and
-       `Content-Transfer-Encoding'.
-
-1998-03-18  Per Abrahamsen  <abraham@dina.kvl.dk>
-
-       * message.el (message-header-lines): Added `:format'.
-
-1998-03-18  Simon Josefsson  <jas@pdc.kth.se>
-
-       * nndoc.el: dummy request-accept-article
-
-Thu Mar 19 14:10:25 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-next-subject): Expand threads.
-
-       * gnus-agent.el (gnus-agent-group-mode-hook,
-       gnus-agent-summary-mode-hook): New variables.
-       (gnus-agent-mode): Run them.
-
-1998-03-14  SL Baur  <steve@altair.xemacs.org>
-
-       * gnus-xmas.el (gnus-xmas-group-startup-message): Tell gnus-start
-       we've already drawn the pretty Gnu graphic.
-
-Thu Mar 19 12:44:12 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-msg.el: Would use nil group names.
-
-       * nntp.el (nntp-send-authinfo): Send authinfo to "force"d
-       servers.
-
-       * gnus-util.el (gnus-parse-netrc): Accept the "force" token.
-
-       * message.el (message-cancel-news): Compare Sender header, not
-       From header.
-
-Tue Mar 17 15:07:18 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-art.el (article-hide-headers): Fold case.
-
-Sat Mar 14 17:57:35 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-util.el (gnus-horizontal-recenter): New window-end may
-       return nil.
-
-Fri Mar 13 22:12:30 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-agent.el (gnus-agent-fetch-session): Check whether server
-       is up before fetching.
-
-       * gnus-win.el (gnus-window-frame-focus): New variable.
-       (gnus-configure-windows): Use it.
-
-       * gnus-sum.el (gnus-summary-catchup-and-exit): Don't select next
-       when in an ephemeral group.
-
-       * gnus-agent.el (gnus-agent-expire): Message end.
-       (gnus-agent-expire-all): New variable.
-       (gnus-agent-expire): Use it.
-
-Fri Mar 13 22:07:17 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
-
-       * gnus-agent.el (gnus-agent-high-scored-p): Wrong value.
-
-Fri Mar 13 21:10:24 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnvirtual.el (nnvirtual-request-group): Force updating of info.
-
-Sun Mar  8 20:46:51 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnmail.el (nnmail-delete-incoming): Changed default.
-
-Sun Mar  8 14:05:25 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.2 is released.
-
-Sun Mar  8 00:35:09 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-picon.el (gnus-get-buffer-name): Look in the assoc for the
-       variable.
-
-       * nntp.el (nntp-wait-for): Check more for dead connections.
-
-       * gnus-eform.el (gnus-edit-form-buffer): Moved back here.
-
-       * gnus-win.el (gnus-window-to-buffer-helper): Return nil when
-       buffers don't exist.
-
-       * nndraft.el (nndraft-request-restore-buffer): Remove Xref header,
-       not Xrefs.
-
-Sun Mar  8 00:00:04 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Gnus v5.6.1 is released.
-
-Sat Mar  7 22:15:46 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.el (gnus-edit-form-buffer): Moved here.
-
-       * gnus-agent.el (gnus-agent-expire-old): Removed.
-       (gnus-agent-expire-directory): Ditto.
-       (gnus-agent-expire-group): Even more ditto.
-
-Sat Mar  7 21:59:18 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.37 is released.
-
-Sat Mar  7 20:10:42 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-agent.el (gnus-agent-expire-days): New variable.
-       (gnus-agent-expire): New function.
-
-Sat Mar  7 17:35:53 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.36 is released.
-
-Sat Mar  7 17:29:20 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nntp.el (nntp-wait-for): Reversed logic.
-
-Sat Mar  7 17:19:04 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.35 is released.
-
-Sat Mar  7 15:01:57 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-picon.el (gnus-picons-x-face-sentinel): Check whether
-       gnus-picons-x-face-file-name exists.
-
-       * gnus-art.el (gnus-article-read-summary-keys): Move window point
-       in the summary buffer.
-
-       * nndoc.el (nndoc-type-alist): Allow spaces around separator.
-
-       * gnus-sum.el (gnus-summary-edit-parameters): Interactive.
-
-Sat Mar  7 15:00:05 1998  Wes Hardaker  <wjhardaker@ucdavis.edu>
-
-       * gnus-art.el (gnus-article-prepare): Mark articles as
-       downloadable.
-
-Wed Mar  4 22:33:27 1998  Ken Raeburn  <raeburn@cygnus.com>
-
-       * gnus-int.el (gnus-get-function): New version, caches symbol
-       names.
-
-Fri Mar  6 01:10:22 1998  Ken Raeburn  <raeburn@cygnus.com>
-
-       * nnml.el (nnml-article-to-file): Build pathname using
-       expand-file-name.  (Thanks, Colin Rafferty, for catching
-       this.)
-
-Sat Feb 28 23:33:40 1998  Ken Raeburn  <raeburn@cygnus.com>
-
-       * nnml.el (nnml-article-to-file): Don't add extra "/" when
-       building pathname.
-
-       * nnheader.el (nnheader-file-to-number): Check value of
-       nnheader-numerical-short-files instead of checking if jka-compr is
-       loaded.
-
-1998-03-03  Dave Love  <d.love@dl.ac.uk>
-
-       * nnheader.el (nnheader-parse-head): Fix in-reply-to code. Return
-       nil consistently if not found.
-
-Sat Mar  7 13:50:44 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nntp.el: Check whether the connection died.
-
-1998-03-01  Kim-Minh Kaplan  <KimMinh.Kaplan@utopia.eunet.fr>
-
-       * gnus.texi (Easy Picons): Removed references to
-       `gnus-group-display-picons'.
-       (Hard Picons): Ditto.
-
-Mon Mar  2 16:17:36 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-exit-no-update): Run
-       gnus-summary-prepare-exit-hook here as well.
-
-Sat Feb 28 13:35:26 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nntp.el (nntp-authinforc-file): Changed default.
-       (nntp-authinfo-file): Changed name.
-       (nntp-record-commands): New variable.
-       (nntp-record-command): New function.
-
-       * gnus-agent.el (gnus-agent-group-path): Use real name of group.
-
-       * gnus-sum.el (gnus-summary-insert-subject): Don't allow nil
-       articles.
-       (gnus-summary-read-group): Respect backward movement.
-
-1998-03-01  Kim-Minh Kaplan  <KimMinh.Kaplan@utopia.eunet.fr>
-
-       * gnus-win.el (gnus-window-to-buffer): change "*Picons*" to
-       `gnus-picons-buffer'.
-       (gnus-window-to-buffer-helper): Support dynamic picon buffer
-       name (i.e a symbol that names a function to be called).
-       (gnus-configure-frame): Use it.
-       (gnus-delete-windows-in-gnusey-frames): Use it.
-       (gnus-all-windows-visible-p): Use it.
-       (gnus-remove-some-windows): Use it.
-
-       * gnus-picon.el (gnus-get-buffer-name): Use it.
-       (gnus-picons-kill-buffer): New function.
-       (gnus-picons-setup-buffer): New function.
-       (gnus-picons-set-buffer): Use them.
-       (gnus-picons-display-x-face): Put back the `buf' binding: it is
-       needed when `gnus-picons-display-where' is not set to article.
-       Also move the X-Face to the left, near the address.  It seems more
-       logical.
-
-Sat Feb 28 08:27:20 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.34 is released.
-
-Sat Feb 28 08:17:37 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.33 is released.
-
-Sat Feb 28 08:10:27 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-picon.el (gnus-picons-display-x-face): `buf' -- unbound
-       var.
-
-Sat Feb 28 08:03:23 1998  François Pinard  <pinard@iro.umontreal.ca>
-
-       * gnus: configure'd.
-
-Sat Feb 28 07:43:00 1998  Nelson Jose dos Santos Ferreira  <Nelson.Ferreira@inesc.pt>
-
-       * nnsoup.el (nnsoup-store-reply): Fix double sep error.
-
-Sat Feb 28 07:01:17 1998  Lasse Rasinen  <lrasinen@iki.fi>
-
-       * gnus-start.el (gnus-ask-server-for-new-groups): Message more.
-
-Fri Feb 27 13:26:34 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.el (message-resend): Allow arbitrary Also's.
-
-1998-02-27  Dave Love  <d.love@dl.ac.uk>
-
-       * gnus-sum.el (gnus-simplify-subject-functions): Fix
-       customization, doc.
-
-1998-02-25  Dave Love  <d.love@dl.ac.uk>
-
-       * gnus-art.el (gnus-article-x-face-command): Replace leading `{'.
-
-Mon Feb 23 18:26:48 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-agent.el (gnus-plugged): New command and keystroke.
-
-       * gnus-ems.el (gnus-ems-redefine): Define
-       'gnus-summary-set-display-table as a function that takes no
-       params.
-
-       * gnus.el (gnus-interactive): Don't use gnus-sum macros.
-       (gnus-valid-select-methods): Include nnlistserv.
-
-       * gnus.el: Autoloaded things to make byte-comp silent.
-
-Mon Feb 23 18:06:47 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.32 is released.
-
-Mon Feb 23 17:48:42 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-cite.el (gnus-article-hide-citation-maybe): Wrong
-       interactive specs.
-       (gnus-cite-toggle): Maybe parse.
-
-Mon Feb 23 05:26:11 1998  Rui-Tao Dong ~{6-HpLN~}  <rdong@internetmci.com>
-
-       * nnweb.el (nnweb-type-definition): Fixed.
-
-Sun Feb 22 18:10:53 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-agent.el (gnus-agent-group-path): Translate right chars.
-       (gnus-agent-toggle-plugged): Allow proper closing.
-
-       * gnus-srvr.el (gnus-browse-read-group): Allow entering
-       non-ephemeral groups.
-
-Sun Feb 22 04:21:15 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.31 is released.
-
-Sun Feb 22 02:09:35 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-highlight): Give undownloaded marks a
-       better face.
-
-       * gnus-score.el (gnus-score-set): Take optional "warn".
-       (gnus-summary-score-entry): Use it.
-
-       * gnus.el: Removed spurious * in defcustoms.
-
-       * gnus-score.el (gnus-score-load-file): Reverse logic.
-
-       * gnus-cite.el (gnus-article-hide-citation): Use markers to make
-       things work when wrapping.
-
-       * gnus-sum.el (gnus-summary-exit): Stop prefetch.
-
-Sat Feb 21 02:12:42 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-get-newsgroup-headers): Buggy regexp.
-
-Sat Feb 21 00:51:22 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.30 is released.
-
-Sat Feb 21 00:09:14 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-mark-article): Don't do anything if
-       the mark doesn't change.
-
-       * gnus-art.el (gnus-article-prepare): Don't enter article into
-       cache.
-
-       * gnus-sum.el (gnus-summary-reparent-thread): Don't mark as read.
-       (gnus-summary-mark-article): Don't do cache things here.
-
-       * gnus-util.el (gnus-parse-netrc): Skip past macdefs.
-
-Fri Feb 20 22:56:22 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-srvr.el (gnus-browse-unsubscribe-group): Wouldn't allow
-       unsubscription.
-
-       * gnus-sum.el (gnus-summary-insert-subject): Allow inserting
-       articles outside limits.
-
-       * gnus-start.el (gnus-dribble-enter): Update mode line.
-
-       * gnus-srvr.el (gnus-browse-unsubscribe-group): Allow
-       unsubscription.
-
-       * gnus-picon.el (gnus-article-display-picons): Check that the
-       extents are live first.
-
-Thu Feb 19 15:13:44 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-group.el (gnus-useful-groups): Include gnus-bug.
-
-Thu Feb 19 02:28:17 1998  Jens-Ulrik Holger Petersen  <petersen@kurims.kyoto-u.ac.jp>
-
-       * gnus.el (gnus-group-history): Defined twice.
-
-Thu Feb 19 01:58:47 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-get-newsgroup-headers): Just use the header
-       value.
-       (gnus-summary-exit): Set global vars.
-
-Tue Feb 17 07:17:49 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-stop-page-breaking): Mark page as no
-       longer broken.
-       (gnus-summary-exit): Purge the real name.
-
-Tue Feb 17 07:00:43 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.29 is released.
-
-Tue Feb 17 06:15:03 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnmail.el (nnmail-purge-split-history): List of alists, not
-       alist.
-
-Mon Feb 16 20:22:04 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.28 is released.
-
-1998-02-16  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.el (message-dont-send): Make sure the article really is
-       saved.
-
-       * nnmail.el (nnmail-purge-split-history): Alist; not a list of
-       alists.
-
-1998-02-16  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * message.el (message-kill-to-signature): Do the right thing when
-       there is no signature.
-
-1998-02-16  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * message.el (message-elide-elipsis): Add type and group.
-       (message-elide-region): Docfix.
-
-1998-02-16  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-util.el (gnus-run-hooks): Use unwind-protect instead of
-       save-excursion.
-
-1998-02-16  Per Abrahamsen  <abraham@dina.kvl.dk>
-
-       * nntp.el (nntp-authinforc-file): Customized.
-
-Mon Feb 16 03:18:33 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-nocem.el (gnus-nocem-unwanted-article-p): Don't look if the
-       hashtable doesn't exist.
-
-       * gnus-start.el (gnus-ask-server-for-new-groups): Make sure the
-       killed groups hashtable exists.
-
-Sun Feb 15 23:02:11 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nntp.el (nntp-authinforc-file): Changed name and default.
-       (nntp-send-authinfo): Use it.
-
-Sun Feb 15 19:50:10 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.27 is released.
-
-Sun Feb 15 19:41:14 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.el (gnus-ephemeral-servers): New variable.
-       * gnus-srvr.el (gnus-server-prepare): Use it.
-       * gnus-group.el (gnus-group-read-ephemeral-group): Ditto.
-
-Sun Feb 15 19:35:11 1998  Kurt Swanson  <kurt@dna.lth.se>
-
-       * gnus-art.el (gnus-article-read-summary-keys): Go to top on
-       some.
-
-Sun Feb 15 19:26:21 1998  SeokChan LEE  <chan@xfer.kren.nm.kr>
-
-       * message.el (message-ignored-supersedes-headers): Fix.
-
-Sun Feb 15 18:39:15 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-salt.el (gnus-tree-close): Start killing buffer again.
-
-       * gnus-sum.el (gnus-mark-article-as-read): Return t.
-
-       * gnus-art.el (gnus-article-edit-mode): Run text mode hook.
-
-Sun Feb 15 17:31:19 1998  Roland Roberts  <rroberts@muller.com>
-
-       * gnus-sum.el (gnus-nov-parse-line): Would bug out on bogus
-       References headers.
-
-Sun Feb 15 14:23:51 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-art.el (gnus-article-current-summary): New variable.
-       (gnus-article-mode): Make it local.
-
-       * gnus-score.el (gnus-summary-increase-score): Find the right
-       global score file.
-
-       * gnus-start.el (gnus-setup-news): Don't find new newsgroups
-       unless plugged.
-
-       * message.el (message-mode): Set font-lock things before running
-       mode hook.
-
-       * gnus-agent.el (gnus-agent-group-path): Respect long file names.
-
-Sat Feb 14 21:31:25 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-goto-last-article): Force jumping to
-       articles outside limit.
-
-       * gnus-agent.el (gnus-agent-toggle-plugged): un/plug before hook.
-
-Sat Feb 14 21:08:03 1998  Kim-Minh Kaplan  <KimMinh.Kaplan@utopia.eunet.fr>
-
-       * gnus-xmas.el (gnus-xmas-article-display-xface): t t would make
-       faces disappear.
-
-Sat Feb 14 20:52:34 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nntp.el (nntp-netrc-file): New variable.
-
-Sat Feb 14 19:28:01 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.26 is released.
-
-Sat Feb 14 18:40:55 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-agent.el (gnus-agent-directory): Translate file chars.
-
-       * gnus-sum.el (gnus-summary-print-article): Don't display all
-       headers.
-       (gnus-summary-edit-parameters): New command and keystroke.
-
-       * gnus-group.el (gnus-group-rename-group): Mark dribble.
-
-Sat Feb 14 18:39:45 1998  Fred Oberhauser  <foberhauser@psipenta.de>
-
-       * nnmail.el (nnmail-process-babyl-mail-format): Fix point
-       movement.
-
-Sat Feb 14 18:31:39 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.el (gnus-group-get-parameter): Dix fix.
-
-Sat Feb 14 18:29:12 1998  Kim-Minh Kaplan  <KimMinh.Kaplan@utopia.eunet.fr>
-
-       * gnus-picon.el: Updated documentation.
-
-Sat Feb 14 18:26:53 1998  Joev Dubach  <dubach@dcepea.harvard.edu>
-
-       * nntp.el (nntp-send-authinfo-from-file): Doc fix.
-
-Sun Jan 11 23:44:12 1998  Ken Raeburn  <raeburn@cygnus.com>
-
-       * nnagent.el (nnagent-request-update-info): New no-op fn.
-
-Sat Feb 14 17:41:44 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-srvr.el (gnus-browse-unsubscribe-group): Wouldn't allow
-       subscription of visited groups.
-
-       * gnus-util.el (gnus-run-hooks): New function.
-       Use it everywhere.
-
-       * nntp.el (nntp-authinfo-password): New variable.
-       (nntp-send-authinfo): Cache authinfo password.
-
-       * gnus-sum.el (gnus-summary-mark-article-as-unread): Don't do
-       anything if the mark doesn't change.
-
-1998-01-17  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus-sum.el (gnus-summary-work-articles): change buffer
-       before looking at marked articles
-       (gnus-summary-work-articles): better check of marked articles
-
-Sat Feb 14 15:10:36 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nntp.el (nntp-send-authinfo): Use new .netrc functionality.
-
-       * gnus-util.el (gnus-netrc-syntax-table): New variable.
-       (gnus-parse-netrc): New function.
-       (gnus-netrc-machine): Ditto.
-       (gnus-netrc-get): Ditto.
-
-       * gnus-draft.el (gnus-draft-make-menu-bar): Added deletion.
-
-       * gnus.el (gnus-expert-user): Dix fox.
-
-       * nnmail.el (nnmail-article-group): Remove duplicates from split.
-
-       * message.el (message-check-news-header-syntax): Check more on
-       Message-ID.
-
-       * nnmh.el: Don't call nnmail-activate.
-
-       * gnus.el: User-variabelize all custom vars.
-
-Fri Feb 13 22:40:39 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.25 is released.
-
-Fri Feb 13 19:01:19 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nndoc.el (nndoc-type-alist): Allow blank lines to separate
-       headers from bodies.
-
-       * gnus-art.el (gnus-article-edit): Restore Date header.
-
-       * gnus-async.el (gnus-asynch-obarray): New variable.
-       (gnus-async-prefetched-article-entry): Use it.
-       (gnus-async-set-buffer): Use it.
-
-       * nnmh.el (nnmh-active-number): Create parent dirs.
-
-       * nntp.el (nntp-last-command): New variable.
-       (nntp-handle-authinfo): New function.
-
-       * gnus-sum.el (gnus-summary-exit): Call purging function.
-
-Fri Feb 13 18:59:16 1998  François Pinard  <pinard@iro.umontreal.ca>
-
-       * nnmail.el (nnmail-get-new-mail): Don't clear split-history.
-       (nnmail-purge-split-history): New function.
-
-Fri Feb 13 18:36:16 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nntp.el (nntp-telnet-shell-prompt): Renamed.
-
-Fri Feb 13 18:35:23 1998  Sam Falkner  <samf@channelpoint.com>
-
-       * nntp.el (nntp-open-telnet-envuser): New variable.
-
-Fri Feb 13 18:29:23 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.el (message-send-mail-function): Added smtpmail-send-it.
-
-1998-02-11  Dave Love  <d.love@dl.ac.uk>
-
-       * gnus-art.el (gnus-button-url): Don't lose in Emacs 20 with
-       browse-url-browser-function an alist, not a function.
-       (gnus-button-embedded-url): Likewise.
-
-Fri Feb 13 17:10:31 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-cite.el (gnus-cite-localize): New function.
-       (gnus-cite-close): Renamed.
-       (gnus-cite-parse-maybe): Use it.
-
-       * gnus-sum.el (gnus-summary-move-article): Move back to summary
-       buffer.
-
-       * nnfolder.el (nnfolder-request-accept-article): Save excursion.
-       (nnfolder-request-move-article): Ditto.
-
-       * nntp.el (nntp-find-connection): Don't message.
-
-Fri Feb 13 14:51:56 1998  MORIOKA Tomohiko  <steve@xemacs.org>
-
-       * message.el (message-send-mail-with-qmail): Fix.
-
-1998-02-13  Per Abrahamsen  <abraham@dina.kvl.dk>
-
-       * gnus-draft.el (gnus-draft-make-menu-bar): Added missing commands.
-
-1998-01-06  Per Abrahamsen  <abraham@dina.kvl.dk>
-
-       * gnus/gnus-cus.el (gnus-score-parameters): Make `files' and
-       `exclude-files' widgets inline.
-
-Fri Feb 13 12:46:23 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-article-mark): Dox dox.
-
-Wed Feb 11 15:05:03 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.24 is released.
-
-Tue Feb 10 21:59:53 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-agent.el (gnus-agent-fetch-session): Reversed reversal.
-
-       * gnus-topic.el (gnus-topic-rename): Check whether the new name
-       exists.
-
-Tue Feb 10 21:39:47 1998  dave edmondson  <dme@sco.com>
-
-       * message.el (message-font-lock-keywords): Allow : as a citation
-       ending.
-
-Tue Feb 10 20:09:02 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.el (message-send): Removed dead code.
-
-Mon Feb  9 17:02:09 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.el (message-fill-header): Fill to column 990.
-
-       * gnus-score.el (gnus-score-load-file): Exclude all excluded
-       files.
-
-Mon Feb  9 16:55:41 1998  jari aalto  <jari.aalto@poboxes.com>
-
-       * gnus-art.el (gnus-article-time-format): Extended variable.
-
-Mon Feb  9 16:27:59 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-art.el (article-make-date-line): Make 8601 Dates.
-       (article-date-iso8601): New command and keystroke.
-
-Sun Feb  8 21:19:15 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.el (message-ignored-mail-headers): Remove Xrefs.
-
-       * nndoc.el (nndoc-open-document-hook): New variable.
-
-Sun Feb  8 21:01:33 1998  Istvan Marko  <istvan@cmdmail.amd.com>
-
-       * gnus-agent.el (gnus-unplugged): Typo fix.
-
-Sun Feb  8 18:34:31 1998  Kurt Swanson  <kurt@dna.lth.se>
-
-       * gnus-score.el (gnus-score-thread-simplify): New variable.
-
-Sun Feb  8 18:31:35 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-uu.el (gnus-uu-post-encode-mime): Call mmencode with
-       correct params.
-
-Sun Feb  8 18:13:58 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.23 is released.
-
-Sun Feb  8 17:20:40 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-group.el (gnus-update-group-mark-positions): Bind `topic'.
-
-       * message.el (message-expand-group): Added doc string.
-
-       * nntp.el (nntp-wait-for): Don't change limit until after
-       accepting output.
-
-Sun Feb  8 16:44:36 1998  Richard Hoskins  <rmh@interlaced.net>
-
-       * message.el (message-kill-to-signature): Don't kill the
-       delimiter.
-
-Sun Feb  8 16:15:33 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-prepared-hook): New hook.
-       (gnus-summary-read-group-1): Use it.
-
-       * message.el (message-cite-original-without-signature): New
-       function.
-       (message-cite-function): Added to custom.
-
-1998-01-13  Per Abrahamsen  <abraham@dina.kvl.dk>
-
-       * gnus/message.el (message-cite-original): Don't quote signature.
-
-Sun Feb  8 15:50:20 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-group.el (gnus-group-unsubscribe-group): Protest against
-       empty group names.
-
-Mon Feb  2 18:56:22 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-draft.el (gnus-draft-setup): Associate with drafts group.
-
-       * message.el (message-header-format-alist): Fill references.
-
-       * gnus-agent.el (gnus-category-read): Changed default.
-       (gnus-agent-handle-level): New variable.
-       (gnus-agent-fetch-session): Use it.
-
-       * gnus-art.el (article-strip-all-blank-lines): New command and
-       keystroke.
-
-Sun Feb  1 18:00:54 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-msg.el (gnus-inews-reject-message): Removed function.
-       (gnus-sent-message-ids-file): Removed.
-       (gnus-sent-message-ids-length): Ditto.
-
-       * gnus-xmas.el (gnus-xmas-summary-set-display-table): Ditto.
-
-       * gnus-sum.el (gnus-simplify-subject-fuzzy): Respect
-       `gnus-simplify-ignored-prefixes'.
-       (gnus-summary-set-display-table): Keep TAB.
-
-Thu Jan 15 22:47:38 1998   <Use-Author-Address-Header@[127.1]>
-
-       * gnus-art.el (gnus-request-article-this-buffer): Put it into the
-       backlog.
-
-Mon Jan 12 23:30:59 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-get-newsgroup-headers): Use the longest ID.
-
-       * nnheader.el (nnheader-parse-head): Ditto.
-
-Thu Jan  8 09:47:18 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-start.el (gnus-1): Use gnus-alive-p.
-
-Tue Jan  6 11:53:09 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-art.el (gnus-article-prepare): Bind coding systems.
-
-Tue Jan  6 07:45:39 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.22 is released.
-
-Tue Jan  6 07:32:02 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.el (message-kill-to-signature): Don't use mark.
-
-Tue Jan  6 07:30:46 1998  Russ Allbery  <rra@stanford.edu>
-
-       * message.el (message-kill-to-signature): New command and keystroke.
-
-Tue Jan  6 06:39:29 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-print-article): New defaults for
-       headers and stuff.
-
-       * gnus-agent.el (gnus-agent-batch): New command.
-
-       * nnoo.el (nnoo-execute): Copy vars from parent into child.
-       (nnoo-parent-function): Ditto.
-
-       * gnus-draft.el (gnus-draft-setup): Removed message.
-
-       * gnus-start.el (gnus-read-descriptions-file): Naked muleism.
-
-Mon Jan  5 05:20:16 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnml.el (nnml-generate-nov-databases-1): Fix lower bound on
-       empty groups.
-
-Sun Jan  4 14:38:36 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.21 is released.
-
-Sun Jan  4 14:28:35 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.20 is released.
-
-1997-12-10  Per Abrahamsen  <abraham@dina.kvl.dk>
-
-       * gnus/gnus-msg.el (gnus-inews-insert-mime-headers): Added
-       documentation.
-       (gnus-inews-insert-mime-headers): Made it work with Emacs MULE.
-       (gnus-inews-insert-mime-headers): Added as option to
-       `message-header-hook'.
-
-1997-12-22  Per Abrahamsen  <abraham@dina.kvl.dk>
-
-       * gnus/gnus-art.el (gnus-button-alist): Assume msg-id after "in
-       message".
-
-1997-12-22  Simon Josefsson  <jas@faun.nada.kth.se>
-
-       * nnmail.el (nnmail-get-new-mail): Make nnmail-tmp-directory
-
-1997-12-28  Per Abrahamsen  <abraham@dina.kvl.dk>
-
-       * gnus/gnus-group.el (gnus-group-fetch-faq): Convert `.' in group
-       name to `/'.
-
-Sun Jan  4 13:35:14 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nndraft.el (nndraft-request-associate-buffer): Open the damn
-       server first.  Sheesh.
-
-       * gnus-draft.el (gnus-draft-send): Bind message-send-hook to nil.
-
-       * gnus-sum.el (gnus-summary-catchup): Don't nix out downloadable.
-       (gnus-summary-highlight): Highlight down/un as unread.
-
-Sun Jan  4 13:27:31 1998  Kim-Minh Kaplan  <KimMinh.Kaplan@utopia.eunet.fr>
-
-       * gnus-start.el (gnus-strip-killed-list): Fix syntax.
-
-Sun Jan  4 13:18:04 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnsoup.el (nnsoup-store-reply): Bind mail-header-separator to
-       "".
-
-       * gnus-xmas.el (gnus-xmas-agent-server-menu-add): New.
-
-       * nnoo.el (nnoo-change-server): Get the right values.
-
-1998-01-04  Aki Vehtari  <Aki.Vehtari@hut.fi>
-
-       * gnus-art.el (gnus-signature-limit): Add default values for
-       choices suggested by Per Abrahamsen <abraham@dina.kvl.dk>.
-       (gnus-prompt-before-saving): Add :value t for sexp tag.
-       (gnus-split-methods): Add default values for choices.
-
-       * gnus-score.el (gnus-home-score-file): Add non-nil default for
-       function.
-       (gnus-home-adapt-file): Ditto.
-
-       * gnus-sum.el (gnus-move-split-methods): Add default values for
-       choices.
-
-       * nnmail.el (nnmail-list-identifiers): Add default values for
-       choices suggested by Per Abrahamsen <abraham@dina.kvl.dk>.
-
-Sun Jan  4 11:31:42 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.19 is released.
-
-Sun Jan  4 10:42:53 1998  Felix Lee  <flee@teleport.com>
-
-       * nntp.el (nntp-open-rlogin): Use a list of parameters.
-
-Sun Jan  4 10:25:05 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-agent.el (gnus-agent-fetch-groups): New command.
-
-       * gnus-sum.el (gnus-summary-print-article): Changed order of
-       parameters.
-
-Sun Jan  4 10:24:07 1998  Michael R. Cook  <mcook@cognex.com>
-
-       * gnus-sum.el (gnus-summary-print-article): Use process/prefix.
-
-Sun Jan  4 05:29:38 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-uu.el: Changed spurious defconsts to defvars.
-
-       * nnmail.el (nnmail-get-spool-files): Quote group name.
-
-       * gnus-agent.el (gnus-agent-fetch-group-1): Fetch ticked articles.
-       (gnus-agent-fetch-group-1): Never mind.
-
-Sat Dec 20 22:33:17 1997  Pete Ware  <ware@cis.ohio-state.edu>
-
-       * message.el (message-rename-buffer): Check for nil dirs.
-
-Fri Dec 19 21:45:59 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnml.el (nnml-request-create-group): Check for files.
-
-Fri Dec 19 21:39:43 1997  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * message.el (message-mode): Fixed font-lock.
-
-Fri Dec 19 21:26:08 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-cache.el (gnus-cache-read-active): Check for empty files.
-
-Sun Dec 14 11:46:50 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-uu.el (gnus-uu-save-article): Quote all lines beginning
-       with a dash.
-
-1997-12-10  SL Baur  <steve@altair.xemacs.org>
-
-       * gnus-start.el (gnus-read-descriptions-file): Really bind and gag
-       Mule.
-
-Fri Dec  5 15:15:05 1997  Danny Siu  <dsiu@adobe.com>
-
-       * nndoc.el (nndoc-babyl-body-begin): quote the regexp for the
-       string "*** EOOH ***" properly.
-       (nndoc-babyl-head-begin): Same as above.
-
-Sun Dec 14 11:11:22 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-uu.el (gnus-uu-pre-uudecode-hook): New hook.
-
-       * gnus-sum.el (gnus-summary-read-group-1): Set mode line after
-       configuring.
-
-Sun Dec 14 11:03:26 1997  Wes Hardaker  <wjhardaker@ucdavis.edu>
-
-       * gnus-score.el (gnus-adaptive-word-minimum): New variable.
-       (gnus-score-adaptive): Use it.
-
-Sun Dec 14 09:19:18 1997  Roland B. Roberts  <roberts@panix.com>
-
-       * gnus-group.el: Fixed hardcoded levels.
-
-Sat Dec  6 17:40:33 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.18 is released.
-
-Sat Dec  6 17:27:04 1997  Kim-Minh Kaplan  <KimMinh.Kaplan@Utopia.EUnet.fr>
-
-       * gnus-picon.el (gnus-picons-remove): Race condition.
-
-Sat Dec  6 17:23:26 1997  Christian von Roques  <roques@scalar.pond.sub.org>
-
-       * gnus-start.el (gnus-read-descriptions-file): Fix
-       enable-multibyte-characters.
-
-1997-12-05  Dave Love  <d.love@dl.ac.uk>
-
-       * gnus-nocem.el (gnus-nocem-message-wanted-p): Fix paren typpo.
-       (gnus-nocem-issuers): Allow sexp alternative in :type for alists.
-
-1997-12-05  Dave Love  <d.love@dl.ac.uk>
-
-       * gnus-art.el (gnus-visible-headers): Add X-sent:.
-
-Sat Dec  6 17:16:28 1997  Lars Balker Rasmussen  <lbr@mjolner.dk>
-
-       * gnus-art.el (article-make-date-line): Don't add extra newlines.
-
-1997-11-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
-
-       * nnmail.el (nnmail-file-coding-system): Use `raw-text' in
-       default.
-
-       * nnheader.el (nnheader-file-coding-system): Use `raw-text' in
-       default.
-
-Sat Dec  6 17:04:40 1997  Kim-Minh Kaplan  <KimMinh.Kaplan@utopia.eunet.fr>
-
-       * nnml.el (nnml-parse-head): Out-of-bounds fix.
-
-       * nndraft.el (nndraft-request-associate-buffer): Get proper file
-       name.
-
-Sat Dec  6 15:35:37 1997  Gary D. Foster  <Gary.Foster@Corp.Sun.COM>
-
-       * gnus-group.el: Added backspace.
-
-Thu Nov 27 19:56:59 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-agent.el (gnus-summary-set-agent-mark): Remove marks
-       properly.
-
-1997-11-27  Christoph Wedler  <wedler@fmi.uni-passau.de>
-
-       * smiley.el (smiley-buffer): Provide `help-echo'.
-
-Thu Nov 27 17:33:45 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-util.el (gnus-output-to-rmail): Always save buffer.
-
-       * nntp.el (nntp-close-server): Don't sleep for me, Argentina.
-       (nntp-request-close): You neither.
-
-1997-11-19  Per Abrahamsen  <abraham@dina.kvl.dk>
-
-       * message.el (message-header-lines): New widget.
-       (message-default-headers): Use it.
-       (message-default-mail-headers): Use it.
-       (message-default-news-headers): Use it.
-
-1997-11-24  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
-
-       * gnus-start.el (gnus-read-descriptions-file): Add missing quote.
-
-Wed Nov 26 18:19:29 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnweb.el (nnweb-type-definition): Rescued dejanewsold.
-
-       * gnus-mh.el (gnus-summary-save-in-folder): Reverted to old
-       version.
-
-       * gnus-sum.el (gnus-kill-or-deaden-summary): Save excursion.
-
-       * gnus.el: Only require gnus-load in Emacsen 19.
-
-       * gnus-start.el (gnus-setup-news): Always push archive server.
-
-       * gnus-sum.el (gnus-read-header): Would bug out on sparse
-       articles.
-
-Wed Nov 26 17:50:41 1997  Kurt Swanson  <kurt@dna.lth.se>
-
-       * gnus-ems.el (gnus-mule-cite-add-face): Work.
-
-Wed Nov 26 17:40:57 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.17 is released.
-
-Wed Nov 26 16:04:25 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-move-article): Don't work on canceled
-       articles.
-
-       * gnus-start.el (gnus-subscribe-hierarchical-interactive): Use
-       `read-char-exclusive'.
-
-       * gnus-sum.el (gnus-summary-mode): Localize
-       gnus-summary-dummy-line-format.
-
-       * nnml.el (nnml-open-nov): Check that the file exists before
-       inserting it.
-
-       * gnus-art.el (article-date-ut): Insert a newline if needed.
-
-       * gnus-score.el (gnus-score-edit-current-scores): Protect against
-       nil score files.
-
-       * gnus-start.el (gnus-newsrc-parse-options): Be more correct --
-       match only hierarchies.
-       (gnus-gnus-to-quick-newsrc-format): Changed warning.
-
-Wed Nov 26 15:47:40 1997  Greg Klanderman  <greg@alphatech.com>
-
-       * messagexmas.el (message-xmas-maybe-fontify): New definition.
-
-Wed Nov 26 15:43:53 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-start.el (gnus-setup-news): Protect against nil
-       gnus-message-archive-method.
-
-1997-11-26  Christoph Wedler  <wedler@fmi.uni-passau.de>
-
-       * gnus-art.el (gnus-article-edit-done): Update headers "Lines:",
-       "Content-Length:" and "X-Content-Length:" when present.
-
-Wed Nov 26 15:08:17 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnmail.el (nnmail-process-unix-mail-format): Pop to the right
-       buffer on error.
-       (nnmail-process-mmdf-mail-format): Ditto.
-
-Wed Nov 26 13:54:04 1997  Joe Reiss  <jreiss@sprynet.com>
-
-       * gnus-art.el (gnus-summary-save-in-rmail): Return the name of the
-       file.
-
-Wed Nov 26 13:50:01 1997  Alastair Burt <alastair.burt@dfki.de>
-
-       * smiley.el: Balloon help, etc.
-
-Wed Nov 26 13:45:35 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-util.el (gnus-kill-all-overlays): Remove check for XEmacs.
-
-1997-09-30  Dave Love  <d.love@dl.ac.uk>
-
-       * message.el: Don't require rmail.
-
-Wed Nov 26 13:37:50 1997  Kurt Swanson  <kurt@dna.lth.se>
-
-       * gnus-group.el (gnus-group-setup-buffer): set-buffer.
-
-Wed Nov 26 13:31:54 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-score.el (gnus-score-load-file): Don't create empty score
-       files when doing decays.
-
-Wed Nov 26 13:28:04 1997  Renaud Rioboo  <rioboo@calfor.lip6.fr>
-
-       * nnmail.el (nnmail-move-inbox): Only bind default-directory when
-       calling external function.
-
-Wed Nov 26 13:03:45 1997  IWAMURO Motonori  <iwa@mmp.fujitsu.co.jp>
-
-       * gnus-kill.el (gnus-batch-score): Newsrc thinko.
-
-Wed Nov 26 10:31:17 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnheader.el (nnheader-parse-head): Would break on Message-ID's
-       that spanned several lines.
-
-       * gnus-util.el (gnus-date-iso8601): Didn't pick out the date
-       header.
-
-       * gnus-demon.el (gnus-demon-scan-mail): Clean inboxes.
-
-1997-11-25  Christoph Wedler  <wedler@fmi.uni-passau.de>
-
-       * gnus-picon.el (gnus-picons-x-face-sentinel): Would bug out in
-       headers with two X-Face lines.
-
-Wed Nov 26 08:54:26 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-update-info): Would use wrong group
-       name.
-
-1997-11-26  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * gnus-spec.el (gnus-compile): Avoid multiple `c*addr's.
-       (gnus-compile): Require `bytecomp'.
-
-1997-11-25  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * gnus-util.el (gnus-prin1): Bind `print-readably' to t.
-
-       * gnus-xmas.el (gnus-xmas-kill-all-overlays): New function.
-       (gnus-xmas-define): Use it.
-
-       * gnus-art.el (gnus-stop-date-timer): Use `nnheader-cancel-timer'.
-
-       * message.el (message-header-lines): Specify format.
-
-       * gnus-xmas.el (gnus-xmas-move-overlay): Use BUFFER.
-       (gnus-byte-code): Use `indirect-function'.
-
-       * gnus-cite.el (gnus-cite-add-face): Would assign free variable.
-
-Wed Nov 26 08:31:28 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-art.el (gnus-stop-date-timer): Cancel instead of delete.
-       (gnus-start-date-timer): Use the numerical prefix.
-
-Tue Nov 25 20:03:34 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-draft.el (gnus-group-send-drafts): Activate group first.
-
-Tue Nov 25 19:57:55 1997  Dan Christensen  <jdc@chow.mat.jhu.edu>
-
-       * gnus-group.el (gnus-group-process-prefix): Skip topics.
-
-Tue Nov 25 19:54:00 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-move.el (gnus-move-group-to-server): Protect agains
-       nil-ness.
-
-Tue Nov 25 19:03:38 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.16 is released.
-
-Tue Nov 25 16:05:01 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-read-header): Remove thread entry before
-       rebuilding.
-
-       * gnus-cite.el (gnus-cite-add-face): Keep track of all overlays.
-
-       * gnus-art.el (article-update-date-lapsed): New function.
-       (gnus-start-date-timer): New command.
-       (article-date-ut): Put the face in the right place.
-       (article-date-ut): Would move around.
-
-       * gnus-group.el (gnus-group-read-ephemeral-group): Accept server
-       names.
-
-       * gnus-srvr.el (gnus-browse-foreign-server): Use proper server
-       names.
-
-       * gnus.el (gnus-group-prefixed-name): Give the right result for
-       native groups.
-
-       * nnheader.el (nnheader-directory-files): New function.
-
-       * nnmh.el (nnmh-request-list-1): Reversed check.
-
-       * nnfolder.el (nnfolder-delete-mail): Would skip backwards one
-       line too much.
-
-Tue Nov 25 14:44:02 1997  SeokChan LEE  <chan@xfer.kren.nm.kr>
-
-       * message.el (message-ignored-supersedes-headers): Typo.
-
-Mon Nov 24 18:46:37 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.15 is released.
-
-Mon Nov 24 18:07:21 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-ems.el: Also check major version names.
-
-1997-10-05  SL Baur  <steve@altair.xemacs.org>
-
-       * message.el (require 'rmail): Put guard around.
-       * nnbabyl.el (require 'rmail): Ditto.
-
-Mon Nov 24 17:36:00 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.el (message-reply): Respect Mail-Copies-To even when
-       `to-address'.
-
-Mon Nov 24 17:32:47 1997  Thor Kristoffersen  <thor@unik.no>
-
-       * nntp.el (nntp-request-close): Sleep one second.
-
-Mon Nov 24 16:18:19 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-read-group-1): Update marks when not
-       entering group.
-
-       * gnus-start.el (gnus-setup-news): Get correct value of archive
-       server.
-
-Wed Oct  8 20:29:35 1997  Robert Bihlmeyer  <robbe@orcus.priv.at>
-
-       * message.el (message-make-organization): Don't let the
-       environment variable override a user-set organization.
-
-Mon Nov 24 14:09:00 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnml.el (nnml-open-nov): Don't use find-file.
-
-       * gnus-sum.el (gnus-last-newsgroup-variables-set): New variable.
-       (gnus-set-global-variables): Don't do to much; gets run off of
-       pre-command-hook.
-       Got rid of gnus-set-global-variables throughout.
-       (gnus-summary-exit): Update adaptive scoring here.
-       (gnus-summary-isearch-article): Widen.
-
-       * nnml.el (nnml-parse-head): Work in empty buffers.
-
-1997-10-14  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * gnus-xmas.el (gnus-xmas-group-startup-message): Check for image
-       formats correctly.
-       (gnus-xmas-modeline-glyph): Ditto.
-
-Mon Nov 24 13:58:12 1997  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * gnus-spec.el (gnus-compile): Work under XEmacs.
-
-Mon Nov 24 07:15:45 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnoo.el (nnoo-change-server): Push the right parent packend onto
-       the alist.
-
-Sun Nov 23 16:21:41 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.14 is released.
-
-Sun Nov 23 14:04:07 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-start.el (gnus-read-descriptions-file): Make sure Mule is
-       bound.  And gagged.
-
-       * message.el (message-send-mail-with-mh): Use
-       `mh-new-draft-name'.
-
-       * nnfolder.el (nnfolder-read-folder): Save new buffers.
-
-       * gnus-sum.el (gnus-summary-make-menu-bar): Removed "write to
-       file".
-
-       * gnus-util.el (gnus-byte-code): Use indirect-function.
-
-       * nntp.el (nntp-open-telnet): Also accept 201.
-
-       * gnus-sum.el (gnus-summary-reparent-thread): Update thread.
-
-       * gnus-score.el (gnus-all-score-files): Don't do anything unless
-       GROUP.
-
-       * nnmail.el (nnmail-split-it): Save-excursion.
-       (nnmail-group-pathname): Translate file chars.
-
-Sun Nov 23 13:41:10 1997  Gunnar Horrigmo  <horrigmo@online.no>
-
-       * gnus-sum.el (gnus-summary-exit): Don't skip if group
-       disappeared.
-
-Sun Nov 23 13:32:55 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnfolder.el (nnfolder-normalize-buffer): New function.
-       (nnfolder-save-mail): Use it.
-       (nnfolder-request-replace-article): Ditto.
-
-1997-11-19  Per Abrahamsen  <abraham@dina.kvl.dk>
-
-       * message.el (message-header-lines): New widget.
-       (message-default-headers): Use it.
-       (message-default-mail-headers): Use it.
-       (message-default-news-headers): Use it.
-
-Sun Nov 23 12:44:38 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-win.el (gnus-remove-some-windows): Also delete dead summary
-       windows.
-
-       * gnus-score.el (gnus-score-adaptive): Check whether functions are
-       bound.
-
-Sun Nov 23 12:15:00 1997  Hallvard B. Furuseth  <h.b.furuseth@usit.uio.no>
-
-       * gnus-sum.el (gnus-summary-limit-include-thread): Interactive
-       fix.
-
-Sun Nov 23 07:06:58 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-reparent-thread): Insert Message-ID in
-       proper place.
-
-Sat Nov 22 18:30:33 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-cus.el (gnus-group-parameters): Add visible.
-
-Sat Nov 22 18:19:39 1997  Kim-Minh Kaplan  <kkaplan@lpthe.jussieu.fr>
-
-       * message.el (message-setup): Add a newline, if necessary.
-
-Sat Nov 22 18:04:34 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-mh.el (gnus-summary-save-in-folder): Fix for default.
-
-Sat Nov 22 18:01:26 1997  Didier Verna  <verna@inf.enst.fr>
-
-       * gnus-sum.el (gnus-summary-remove-bookmark): Interactive spec.
-
-Mon Nov 17 23:50:51 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-art.el (article-display-x-face): Fold case.
-
-Thu Nov 13 22:57:23 1997  Kenichi Handa  <handa@etl.go.jp>
-
-       * gnus/gnus-start.el (gnus-read-descriptions-file): Decode
-       description if necessary.
-
-       * gnus/nntp.el (nntp-coding-system-for-read): Set default value to
-       binary.
-       (nntp-coding-system-for-write): Likewise.
-
-Thu Nov 13 22:30:19 1997  seokchan lee  <chan@xfer.kren.nm.kr>
-
-       * message.el (message-ignored-supersedes-headers): Ignore more
-       headers.
-
-Thu Nov 13 22:28:13 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.el (message-separator-face): Lightened up.
-       (message-header-other-face): Ditto.
-
-Thu Nov 13 22:22:11 1997  jari aalto  <jari.aalto@poboxes.com>
-
-       * nnmail.el (nnmail-process-mmdf-mail-format): Pop to buffer.
-
-Thu Nov 13 22:09:39 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-start.el (gnus-start-draft-setup): Always create group.
-
-       * gnus-agent.el (gnus-agent-fetch-headers): Translate file chars.
-
-Thu Nov  6 20:43:05 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.13 is released.
-
-Thu Nov  6 20:30:14 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnlistserv.el: New backend.
-
-Thu Nov  6 01:53:51 1997  Stefan Waldherr  <swa@cs.cmu.edu>
-
-       * nnweb.el (nnweb-dejanewsold-search): New function.
-
-Thu Nov  6 01:52:43 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-topic.el (gnus-topic-change-level): Really delete multiple
-       instances.
-
-Wed Nov  5 14:04:54 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-topic.el (gnus-topic-update-topic-line): Possibly fix nil
-       numbers.
-
-       * gnus-sum.el (gnus-summary-show-article): New command and
-       keystroke.
-
-Tue Nov  4 06:29:58 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-score.el (gnus-score-adaptive): Use the home score file.
-
-Sat Oct 25 05:52:22 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-art.el (gnus-article-save): Hide headers in the right
-       buffer.
-
-       * gnus-picon.el (gnus-picons-xbm-face): New face.
-
-Sat Oct 25 00:39:42 1997  Lars Balker Rasmussen  <lbr@mjolner.dk>
-
-       * gnus-art.el (gnus-article-fill-paragraph): New command and
-       keystroke.
-
-1997-10-16  Colin Rafferty  <craffert@ml.com>
-
-       * message.el (message-make-fqdn): Made certain that user-mail is
-                 not nil.
-
-Sat Oct 25 00:18:32 1997  David S. Goldberg  <dsg@linus.mitre.org>
-
-       * gnus-art.el (article-hide-boring-headers): Use many-to.
-
-Fri Oct 24 23:48:39 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-picon.el (gnus-picons-display-pairs): Don't add two bars.
-       (gnus-picons-try-face): Set the foreground color on the bar.
-       (gnus-picons-group-exluded-groups): New variable.
-       (gnus-group-display-picons): Use it.
-
-Mon Oct 13 00:01:35 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-agent.el (gnus-agent-group-path): Translate file chars.
-       (gnus-agent-batch-fetch): New command.
-       (gnus-agent-fetch-group): Message.
-
-Sun Oct 12 23:54:55 1997  ISO-2022-JP  <ichikawa@hv.epson.co.jp>
-
-       * gnus-agent.el (gnus-agent-article-file-coding-system): New
-       variable.
-
-Sun Oct 12 16:46:11 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * dgnushack.el (lpath): Reversed.
-
-       * gnus-msg.el (gnus-summary-cancel-article): Use sym prefix.
-
-       * gnus-art.el (article-translate-characters): New function.
-       (article-treat-dumbquotes): New command and keystroke.
-
-Sun Oct  5 20:09:31 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-art.el (gnus-button-alist): No ' and " in News:.
-
-       * gnus-msg.el (gnus-inews-insert-archive-gcc): Comp warn.
-
-Sat Oct  4 00:53:55 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.12 is released.
-
-Sat Oct  4 00:16:39 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.el (gnus-plugged): Moved here.
-
-       * nnmail.el (nnmail-delete-incoming): Changed default to nil.
-
-       * gnus-int.el (gnus-request-scan): Don't do anything if
-       unplugged.
-
-Fri Oct  3 21:09:19 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-art.el (gnus-ignored-headers): Doc fix.
-
-       * gnus-demon.el (gnus-demon-add-nntp-close-connection): New
-       function.
-       (gnus-demon-nntp-close-connection): Ditto.
-
-       * nntp.el (nntp-last-command-time): New variable.
-       (nntp-retrieve-data): Use it.
-
-       * message.el (message-news-p): Messages with Posted-To aren't
-       news.
-       (message-mode): Heed message-yank-prefix when filling.
-
-       * nndraft.el (nndraft-request-restore-buffer): Remove Xrefs and
-       Lines headers.
-
-       * nntp.el (nntp-encode-text): Encode according to RFC977.
-
-Wed Oct  1 18:27:26 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-msg.el (gnus-inews-insert-archive-gcc): gcc-self didn't
-       work if `gnus-message-archive-method' was nil.
-
-       * nnmail.el (nnmail-article-group): Allow \\1 substitution.
-
-Sat Sep 27 12:57:44 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-salt.el (gnus-pick-mouse-pick-region): Use it.
-
-       * gnus-xmas.el (gnus-xmas-window-edges): New function.
-
-       * gnus-score.el (gnus-score-edit-current-scores): Don't select
-       window.
-
-Sat Sep 27 12:52:31 1997  Hallvard B. Furuseth  <h.b.furuseth@usit.uio.no>
-
-       * messcompat.el ((boundp 'mail-mode-hook)): Check.
-
-Sat Sep 27 09:22:15 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nndraft.el (nndraft-possibly-change-group): Always open server.
-
-       * gnus-sum.el (gnus-summary-pop-article): Force.
-
-       * gnus-art.el (gnus-article-prepare): Push the article onto the
-       history.
-
-       * gnus-sum.el (gnus-summary-pop-article): Pop to the right
-       article.
-
-       * gnus-demon.el (gnus-demon-scan-news): Save excursion.
-
-Sat Sep 27 09:06:55 1997  Hallvard B. Furuseth  <h.b.furuseth@usit.uio.no>
-
-       * gnus-cache.el (gnus-summary-limit-include-cached): New command
-       and keystroke.
-
-Sat Sep 27 06:45:58 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-uu.el (gnus-uu-invert-processable): Make interactive.
-
-Sat Sep 27 06:43:38 1997  Kim-Minh Kaplan  <kimminh.kaplan@utopia.eunet.fr>
-
-       * gnus-picon.el: Doc fixes.
-
-1997-09-23  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * gnus.el: Removed definition of `custom-face-lookup'.
-
-Sat Sep 27 05:36:11 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nndraft.el: Would block nnmh.
-
-       * gnus-sum.el (gnus-mark-article-as-unread): Don't allow marking
-       negative articles.
-
-       * gnus-group.el (gnus-fetch-group): Use `gnus-no-server'.
-
-       * gnus-agent.el (gnus-agent-with-fetch): Moved.
-
-       * gnus-sum.el (gnus-nov-read-integer): Really skip to next field.
-
-Sat Sep 27 04:32:45 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.11 is released.
-
-Sat Sep 27 03:50:12 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.el (message-send): Post without asking.
-       (message-mode): Modify paragraphs-start and paragraph-separate.
-       (message-newline-and-reformat): New command and keystroke.
-
-Thu Sep 25 00:13:41 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnmail.el (nnmail-activate): Init server buffer.
-
-Wed Sep 24 04:11:59 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-draft.el (gnus-draft-setup): Inexplicable binding problem
-       worked around.
-
-       * nnsoup.el (nnsoup-always-save): Renamed.
-
-Wed Sep 24 04:11:02 1997  Nelson Jose dos Santos Ferreira  <Nelson.Ferreira@inesc.pt>
-
-       * nnsoup.el (nnsoup-commit-reply-now): New variable.
-       (nnsoup-store-reply): Use it.
-
-Wed Sep 24 02:30:44 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-ems.el (gnus-deactivate-mark): New alias.
-
-Tue Sep 23 07:56:07 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.el: Win-away!
-
-       * gnus-msg.el (gnus-setup-message): Don't trust make-symbol.
-
-Tue Sep 23 07:45:11 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.10 is released.
-
-Tue Sep 23 01:41:04 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-read-all-headers): New function.
-       (gnus-select-newsgroup): Use it.
-       (gnus-summary-refer-thread): Ditto.
-       (gnus-refer-thread-limit): New variable.
-       (gnus-summary-refer-thread): Use it.
-
-       * gnus-nocem.el (gnus-nocem-message-wanted-p): New function.
-       (gnus-nocem-check-article): Use it.
-       (gnus-nocem-issuers): Dox ofx.
-
-       * dgnushack.el (dgnushack-compile): Check for cus-edit.
-
-       * message.el (message-included-forward-headers): Include Mime
-       headers.
-       (message-send): Allow posting without confirming from Agent.
-
-Mon Sep 22 05:43:14 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * dgnushack.el (byte-compile-warnings): Don't warn about obsolete
-       variables.
-
-       * gnus-sum.el (gnus-summary-refer-thread): New command and
-       keystroke.
-       (gnus-summary-limit-include-thread): New command and keystroke.
-       (gnus-summary-articles-in-thread): New function.
-       (gnus-articles-in-thread): Renamed.
-
-Sun Sep 21 23:54:50 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.9 is released.
-
-Sun Sep 21 23:38:46 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.el (gnus-splash-face): ForestGreen everywhere.
-
-       * gnus-sum.el (gnus-simplify-subject-fully): Use new variable.
-       (gnus-general-simplify-subject): Ditto.
-
-Sun Sep 21 23:34:13 1997  Kurt Swanson  <kurt@dna.lth.se>
-
-       * gnus-sum.el (gnus-simplify-subject-functions): New variable.
-       (gnus-simplify-whitespace): New function.
-
-       * gnus-util.el (gnus-map-function): New function.
-
-Sun Sep 21 23:22:04 1997  Michelangelo Grigni  <mic@mathcs.emory.edu>
-
-       * gnus-score.el (gnus-score-regexp-bad-p): New function.
-
-Sun Sep 21 00:14:40 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-score.el (gnus-summary-lower-score): Use sym pref.
-       (gnus-summary-increase-score): Use it.
-
-       * gnus.el (gnus-current-prefix-symbol): New variable.
-       (gnus-current-prefix-symbols): New variable.
-
-       * gnus-score.el (gnus-summary-increase-score): Take symbolic
-       prefix.
-
-       * gnus.el (gnus-interactive): Removed.
-       (gnus-interactive): Renamed from gnus-interactive-1.
-       (gnus-symbolic-argument): New command.
-
-       * gnus-draft.el (gnus-draft-send-message): Disable message
-       checks.
-       (gnus-draft-send): Ditto.
-       (gnus-draft-setup): Don't save buffer.
-
-       * dgnushack.el (dgnushack-compile): Warn people about Custom.
-
-       * gnus-group.el (gnus-group-iterate): Use gensymmed variables.
-
-       * pop3.el (pop3-md5): `with-temp-buffer' doesn't exist in Emacs
-       19.34.
-
-       * nneething.el (nneething-directory): Defvarred.
-
-       * message.el: Autoloaded nndraft things.
-       (message-set-auto-save-file-name): Use it.
-
-       * dgnushack.el (dgnushack-compile): Warn about things.
-
-       * gnus-art.el: Autoload w3-region.
-
-       * gnus-vm.el (gnus-summary-save-in-vm): Simplified.
-
-       * gnus.el: Changed `compiled-function-p' to `byte-code-function-p'
-       throughout.
-
-       * gnus-sum.el (gnus-summary-edit-article): Supply additional
-       param.
-
-       * gnus-group.el (gnus-group-iterate): Undo bogus change.
-
-       * gnus-agent.el (gnus-agentize): Just call gnus-open-agent
-       directly.
-
-       * gnus.el (gnus-interactive): New macro.
-       (gnus-interactive-1): New function.
-
-       * gnus-sum.el (gnus-fetch-old-headers): Allow `invisible'.
-       (gnus-cut-thread): Use it.
-       (gnus-cut-threads): Ditto.
-       (gnus-summary-initial-limit): Ditto.
-       (gnus-summary-limit-children): Ditto.
-
-       * gnus-art.el (gnus-article-edit-done): Accept a prefix arg.
-       (gnus-boring-article-headers): Allow `long-to' param.
-       (article-hide-boring-headers): Use it.
-
-       * gnus-sum.el (gnus-summary-edit-article-done): Accept a
-       no-highlight param.
-
-       * nntp.el (nntp-rlogin-program): New variable.
-       (nntp-open-rlogin): Use it.
-
-       * nnvirtual.el (nnvirtual-request-post): New function.
-
-       * gnus-msg.el (gnus-message-group-art): New variable.
-
-       * gnus-draft.el (gnus-draft-setup): Don't use message-setup.
-
-       * nndraft.el (nndraft): Allow editing articles.
-
-       * gnus-ems.el (gnus-x-splash): Ditto.
-
-       * gnus.el (gnus-splash-face): Darker face.
-
-       * gnus-draft.el (gnus-draft-setup): Clobbered variables.
-
-Sat Sep 20 23:23:49 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.8 is released.
-
-Sat Sep 20 20:41:16 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-start.el (gnus-setup-news-hook): New hook.
-
-       * gnus-agent.el (gnus-agentize): Really set up queue group.
-       (gnus-open-agent): Setup queue here.
-
-Sat Sep 20 20:23:07 1997  Matt Simmons  <simmonmt@acm.org>
-
-       * message.el (message-set-auto-save-file-name): Make things work
-       without drafts.
-
-Sat Sep 20 18:32:02 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nnmh.el (nnmh-request-list-1): Check for links to ".".
-
-       * nndraft.el (nndraft-possibly-change-group): New function.
-
-       * gnus-agent.el (gnus-agent-queue-setup): New function.
-
-Thu Sep 18 04:54:59 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.7 is released.
-
-Thu Sep 18 03:33:54 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-msg.el (gnus-setup-message): Slap a progn around forms.
-
-       * nndraft.el (nndraft-articles): Make sure directory exists.
-
-       * message.el (message-mode): Don't delete article.
-
-       * nnmh.el (nnmh-request-accept-article): Don't save when
-       noinsert.
-
-Wed Sep 17 03:37:59 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nndraft.el (nndraft-directory): Changed defaults.
-
-       * gnus-agent.el (gnus-agent-fetch-session): Bind command method.
-
-Wed Sep 17 03:28:36 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.6 is released.
-
-1997-08-17  SL Baur  <steve@altair.xemacs.org>
-
-       * dgnushack.el (dgnushack-compile): Ignore .el files beginning
-       with an `=' character.
-
-Wed Sep 17 02:30:04 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-build-sparse-threads): Allow display of looped
-       References.
-
-       * gnus-agent.el (gnus-agent-fetch-group-1): Separated out into
-       function.
-
-       * message.el (message-delete-not-region): New command and
-       keystroke.
-
-Tue Sep 16 00:58:26 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * nndraft.el (nndraft-directory): Changed value.
-
-       * message.el (message-kill-buffer): Disassociate draft.
-       (message-mode): Use kill hook to disassociate.
-       (message-disassociate-draft): Double-check.
-
-       * gnus-agent.el (gnus-agentize): Don't set twice.
-
-       * gnus-art.el (gnus-article-prepare): Go to the right line before
-       marking.
-
-       * gnus-start.el: Renamed the drafts group.
-
-       * gnus-agent.el (gnus-agent-lib-file): Changed name of directory.
-
-       * gnus-draft.el (gnus-draft-mode): Simplify.
-
-Tue Sep 16 00:18:11 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.5 is released.
-
-Mon Sep 15 00:53:50 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-alter-header-function): New variable.
-       (gnus-nov-parse-line): Use it.
-       (gnus-get-newsgroup-headers): Ditto.
-
-       * gnus-draft.el (gnus-group-send-drafts): Don't send when
-       unplugged.
-
-       * gnus-sum.el (gnus-summary-read-group): Don't show-all when
-       skipping groups.
-
-       * gnus-start.el (gnus-start-draft-setup): Changed name.
-
-Mon Sep 15 00:40:09 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.4 is released.
-
-Mon Sep 15 00:19:07 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-summary-goto-article): Accept Message-ID's.
-
-Sun Sep 14 21:41:35 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-sum.el (gnus-group-make-articles-read): No params.
-
-       * nndraft.el (nndraft-status-string): Fix.
-
-       * gnus-draft.el (gnus-group-send-drafts): New command.
-
-       * gnus-sum.el (gnus-compute-read-articles): Separated.
-       (gnus-update-read-articles): Allow computation.
-
-       * nndraft.el (nndraft-articles): New function.
-
-       * message.el (message-send): Disabled test.
-
-Sun Sep 14 21:17:34 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
-
-       * gnus.el: Quassia Gnus v0.3 is released.
-
-Sun Sep 14 01:51:45 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus-agent.el (gnus-agent-short-article): New variables.
-
-       * message.el (message-set-auto-save-file-name): Use drafts.
-
-       * nndraft.el (nndraft-request-expire-articles): Use it.
-
-       * nnmh.el (nnmh-deletable-article-p): Change.
-       (nnmh-allow-delete-final): New variable.
-
-       * gnus-msg.el (gnus-summary-send-draft): Removed.
-
-       * gnus.el (gnus-article-mark-lists): Save unsendable marks.
-
-       * gnus-sum.el (gnus-newsgroup-unsendable): New variable.
-
-       * gnus-draft.el: New file.
-
-       * gnus-sum.el (gnus-unsendable-mark): New variable.
-
-       * nndraft.el (nndraft-execute-nnmh-command): Cleanup.
-
-       * message.el (message-send-news): Use `gnus-request-post'.
-
-       * gnus-agent.el (gnus-agentize): New command.
+       * qp.el (quoted-printable-decode-region): Don't use hexl.
 
-       * gnus-bcklg.el (gnus-backlog-remove-article): Remove the ident
-       from the list.
+       * gnus-xmas.el (gnus-xmas-logo-color-style): Changed to dino.
 
-Sun Sep 14 00:26:47 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+       * gnus-sum.el (gnus-parse-headers-hook): Default to nil.
+       (gnus-structured-field-decoder): Removed.
+       (gnus-unstructured-field-decoder): Ditto.
 
-       * gnus.el: Quassia Gnus v0.2 is released.
+       * mm-decode.el: New file.
 
-Sun Sep 14 00:24:52 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+       * qp.el: New file.
 
-       * gnus-score.el (gnus-score-headers): Make sure the summary buffer
-       exists.
+       * gnus-art.el (article-mime-decode-quoted-printable): Removed.
 
-Sat Sep 13 23:35:28 1997  Greg Stark  <gsstark@mit.edu>
+       * gnus-ems.el (fboundp): Removed gnus-split-string.
 
-       * gnus-ems.el (gnus-x-splash): New function.
+       * gnus.el (gnus-splash-face): Doc fix.
 
-Sat Sep 13 22:46:16 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+       * gnus-ems.el (fboundp): Don't bind mail-file-babyl-p.
 
-       * gnus-start.el (gnus-1): Use it.
+       * gnus-art.el (article-mime-decode-quoted-printable): Don't use
+       hexl. 
 
-       * gnus-ems.el (gnus-decode-coding-string): New alias.
+       * nnheader.el (nnheader-temp-write): Removed.
 
-       * message.el (message-unix-mail-delimiter): Dox fox.
+Sat Aug 29 20:34:17 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
-       * nnmh.el (nnmh-request-list-1): Don't use coding system.
+       * gnus.el: Gnus v0.3 is released.
 
-       * gnus-sum.el (gnus-summary-catchup): Reverse logic.
+Sat Aug 29 19:32:06 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
-Sat Sep 13 21:21:38 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+       * gnus.el: Gnus v0.2 is released.
 
-       * gnus.el: Quassia Gnus v0.1 is released.
diff --git a/lisp/base64.el b/lisp/base64.el
new file mode 100644 (file)
index 0000000..b96e890
--- /dev/null
@@ -0,0 +1,274 @@
+;;; base64.el,v --- Base64 encoding functions
+;; Author: Kyle E. Jones
+;; Created: 1997/03/12 14:37:09
+;; Version: 1.6
+;; Keywords: extensions
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Copyright (C) 1997 Kyle E. Jones
+;;;
+;;; This file is not part of GNU Emacs, but the same permissions apply.
+;;;
+;;; GNU Emacs is free software; you can redistribute it and/or modify
+;;; it under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 2, or (at your option)
+;;; any later version.
+;;;
+;;; GNU Emacs is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;;; Boston, MA 02111-1307, USA.
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; For non-MULE
+(if (not (fboundp 'char-int))
+    (fset 'char-int 'identity))
+
+(defvar base64-alphabet
+  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")
+
+(defvar base64-decoder-program nil
+  "*Non-nil value should be a string that names a MIME base64 decoder.
+The program should expect to read base64 data on its standard
+input and write the converted data to its standard output.")
+
+(defvar base64-decoder-switches nil
+  "*List of command line flags passed to the command named by
+base64-decoder-program.")
+
+(defvar base64-encoder-program nil
+  "*Non-nil value should be a string that names a MIME base64 encoder.
+The program should expect arbitrary data on its standard
+input and write base64 data to its standard output.")
+
+(defvar base64-encoder-switches nil
+  "*List of command line flags passed to the command named by
+base64-encoder-program.")
+
+(defconst base64-alphabet-decoding-alist
+  '(
+    ( ?A . 00) ( ?B . 01) ( ?C . 02) ( ?D . 03) ( ?E . 04) ( ?F . 05)
+    ( ?G . 06) ( ?H . 07) ( ?I . 08) ( ?J . 09) ( ?K . 10) ( ?L . 11)
+    ( ?M . 12) ( ?N . 13) ( ?O . 14) ( ?P . 15) ( ?Q . 16) ( ?R . 17)
+    ( ?S . 18) ( ?T . 19) ( ?U . 20) ( ?V . 21) ( ?W . 22) ( ?X . 23)
+    ( ?Y . 24) ( ?Z . 25) ( ?a . 26) ( ?b . 27) ( ?c . 28) ( ?d . 29)
+    ( ?e . 30) ( ?f . 31) ( ?g . 32) ( ?h . 33) ( ?i . 34) ( ?j . 35)
+    ( ?k . 36) ( ?l . 37) ( ?m . 38) ( ?n . 39) ( ?o . 40) ( ?p . 41)
+    ( ?q . 42) ( ?r . 43) ( ?s . 44) ( ?t . 45) ( ?u . 46) ( ?v . 47)
+    ( ?w . 48) ( ?x . 49) ( ?y . 50) ( ?z . 51) ( ?0 . 52) ( ?1 . 53)
+    ( ?2 . 54) ( ?3 . 55) ( ?4 . 56) ( ?5 . 57) ( ?6 . 58) ( ?7 . 59)
+    ( ?8 . 60) ( ?9 . 61) ( ?+ . 62) ( ?/ . 63)
+   ))
+
+(defvar base64-alphabet-decoding-vector
+  (let ((v (make-vector 123 nil))
+       (p base64-alphabet-decoding-alist))
+    (while p
+      (aset v (car (car p)) (cdr (car p)))
+      (setq p (cdr p)))
+    v))
+
+(defun base64-run-command-on-region (start end output-buffer command
+                                          &rest arg-list)
+  (let ((tempfile nil) status errstring)
+    (unwind-protect
+       (progn
+         (setq tempfile (make-temp-name "base64"))
+         (setq status
+               (apply 'call-process-region
+                      start end command nil
+                      (list output-buffer tempfile)
+                      nil arg-list))
+         (cond ((equal status 0) t)
+               ((zerop (save-excursion
+                         (set-buffer (find-file-noselect tempfile))
+                         (buffer-size)))
+                t)
+               (t (save-excursion
+                    (set-buffer (find-file-noselect tempfile))
+                    (setq errstring (buffer-string))
+                    (kill-buffer nil)
+                    (cons status errstring)))))
+      (condition-case ()
+         (delete-file tempfile)
+       (error nil)))))
+
+(defun base64-insert-char (char &optional count ignored buffer)
+  (condition-case nil
+      (progn
+       (insert-char char count ignored buffer)
+       (fset 'base64-insert-char 'insert-char))
+    (wrong-number-of-arguments
+     (fset 'base64-insert-char 'base64-xemacs-insert-char)
+     (base64-insert-char char count ignored buffer))))
+
+(defun base64-xemacs-insert-char (char &optional count ignored buffer)
+  (if (and buffer (eq buffer (current-buffer)))
+      (insert-char char count)
+    (save-excursion
+      (set-buffer buffer)
+      (insert-char char count))))
+
+(defun base64-decode-region (start end)
+  (interactive "r")
+  (message "Decoding base64...")
+  (let ((work-buffer nil)
+       (done nil)
+       (counter 0)
+       (bits 0)
+       (lim 0) inputpos
+       (non-data-chars (concat "^=" base64-alphabet)))
+    (unwind-protect
+       (save-excursion
+         (setq work-buffer (generate-new-buffer " *base64-work*"))
+         (buffer-disable-undo work-buffer)
+         (if base64-decoder-program
+             (let* ((binary-process-output t) ; any text already has CRLFs
+                    (status (apply 'base64-run-command-on-region
+                                  start end work-buffer
+                                  base64-decoder-program
+                                  base64-decoder-switches)))
+               (if (not (eq status t))
+                   (error "%s" (cdr status))))
+           (goto-char start)
+           (skip-chars-forward non-data-chars end)
+           (while (not done)
+             (setq inputpos (point))
+             (cond
+              ((> (skip-chars-forward base64-alphabet end) 0)
+               (setq lim (point))
+               (while (< inputpos lim)
+                 (setq bits (+ bits 
+                               (aref base64-alphabet-decoding-vector
+                                     (char-int (char-after inputpos)))))
+                 (setq counter (1+ counter)
+                       inputpos (1+ inputpos))
+                 (cond ((= counter 4)
+                        (base64-insert-char (lsh bits -16) 1 nil work-buffer)
+                        (base64-insert-char (logand (lsh bits -8) 255) 1 nil
+                                        work-buffer)
+                        (base64-insert-char (logand bits 255) 1 nil
+                                            work-buffer)
+                        (setq bits 0 counter 0))
+                       (t (setq bits (lsh bits 6)))))))
+             (cond
+              ((= (point) end)
+               (if (not (zerop counter))
+                   (error "at least %d bits missing at end of base64 encoding"
+                          (* (- 4 counter) 6)))
+               (setq done t))
+              ((= (char-after (point)) ?=)
+               (setq done t)
+               (cond ((= counter 1)
+                      (error "at least 2 bits missing at end of base64 encoding"))
+                     ((= counter 2)
+                      (base64-insert-char (lsh bits -10) 1 nil work-buffer))
+                     ((= counter 3)
+                      (base64-insert-char (lsh bits -16) 1 nil work-buffer)
+                      (base64-insert-char (logand (lsh bits -8) 255)
+                                          1 nil work-buffer))
+                     ((= counter 0) t)))
+              (t (skip-chars-forward non-data-chars end)))))
+         (or (markerp end) (setq end (set-marker (make-marker) end)))
+         (goto-char start)
+         (insert-buffer-substring work-buffer)
+         (delete-region (point) end))
+      (and work-buffer (kill-buffer work-buffer))))
+  (message "Decoding base64... done"))
+
+(defun base64-encode-region (start end)
+  (interactive "r")
+  (message "Encoding base64...")
+  (let ((work-buffer nil)
+       (counter 0)
+       (cols 0)
+       (bits 0)
+       (alphabet base64-alphabet)
+       inputpos)
+    (unwind-protect
+       (save-excursion
+         (setq work-buffer (generate-new-buffer " *base64-work*"))
+         (buffer-disable-undo work-buffer)
+         (if base64-encoder-program
+             (let ((status (apply 'base64-run-command-on-region
+                                  start end work-buffer
+                                  base64-encoder-program
+                                  base64-encoder-switches)))
+               (if (not (eq status t))
+                   (error "%s" (cdr status))))
+           (setq inputpos start)
+           (while (< inputpos end)
+             (setq bits (+ bits (char-int (char-after inputpos))))
+             (setq counter (1+ counter))
+             (cond ((= counter 3)
+                    (base64-insert-char (aref alphabet (lsh bits -18)) 1 nil
+                                        work-buffer)
+                    (base64-insert-char
+                     (aref alphabet (logand (lsh bits -12) 63))
+                     1 nil work-buffer)
+                    (base64-insert-char
+                     (aref alphabet (logand (lsh bits -6) 63))
+                     1 nil work-buffer)
+                    (base64-insert-char
+                     (aref alphabet (logand bits 63))
+                     1 nil work-buffer)
+                    (setq cols (+ cols 4))
+                    (cond ((= cols 72)
+                           (base64-insert-char ?\n 1 nil work-buffer)
+                           (setq cols 0)))
+                    (setq bits 0 counter 0))
+                   (t (setq bits (lsh bits 8))))
+             (setq inputpos (1+ inputpos)))
+           ;; write out any remaining bits with appropriate padding
+           (if (= counter 0)
+               nil
+             (setq bits (lsh bits (- 16 (* 8 counter))))
+             (base64-insert-char (aref alphabet (lsh bits -18)) 1 nil
+                                 work-buffer)
+             (base64-insert-char (aref alphabet (logand (lsh bits -12) 63))
+                                 1 nil work-buffer)
+             (if (= counter 1)
+                 (base64-insert-char ?= 2 nil work-buffer)
+               (base64-insert-char (aref alphabet (logand (lsh bits -6) 63))
+                                   1 nil work-buffer)
+               (base64-insert-char ?= 1 nil work-buffer)))
+           (if (> cols 0)
+               (base64-insert-char ?\n 1 nil work-buffer)))
+         (or (markerp end) (setq end (set-marker (make-marker) end)))
+         (goto-char start)
+         (insert-buffer-substring work-buffer)
+         (delete-region (point) end))
+      (and work-buffer (kill-buffer work-buffer))))
+  (message "Encoding base64... done"))
+
+(defun base64-encode (string)
+  (save-excursion
+    (set-buffer (get-buffer-create " *base64-encode*"))
+    (erase-buffer)
+    (insert string)
+    (base64-encode-region (point-min) (point-max))
+    (skip-chars-backward " \t\r\n")
+    (delete-region (point-max) (point))
+    (prog1
+       (buffer-string)
+      (kill-buffer (current-buffer)))))
+
+(defun base64-decode (string)
+  (save-excursion
+    (set-buffer (get-buffer-create " *base64-decode*"))
+    (erase-buffer)
+    (insert string)
+    (base64-decode-region (point-min) (point-max))
+    (goto-char (point-max))
+    (skip-chars-backward " \t\r\n")
+    (delete-region (point-max) (point))
+    (prog1
+       (buffer-string)
+      (kill-buffer (current-buffer)))))  
+
+(provide 'base64)
index be03a4d..65bc02b 100644 (file)
@@ -127,7 +127,7 @@ If nil, only read articles will be expired."
 
 (defun gnus-agent-read-file (file)
   "Load FILE and do a `read' there."
-  (nnheader-temp-write nil
+  (with-temp-buffer
     (ignore-errors
       (nnheader-insert-file-contents file)
       (goto-char (point-min))
@@ -427,7 +427,7 @@ be a select method."
 
 (defun gnus-agent-write-servers ()
   "Write the alist of covered servers."
-  (nnheader-temp-write (nnheader-concat gnus-agent-directory "lib/servers")
+  (with-temp-file (nnheader-concat gnus-agent-directory "lib/servers")
     (prin1 gnus-agent-covered-methods (current-buffer))))
 
 ;;;
@@ -537,7 +537,7 @@ the actual number of articles toggled is returned."
                     (gnus-agent-lib-file "active")
                   (gnus-agent-lib-file "groups"))))
       (gnus-make-directory (file-name-directory file))
-      (nnheader-temp-write file
+      (with-temp-file file
        (when (file-exists-p file)
          (nnheader-insert-file-contents file))
        (goto-char (point-min))
@@ -662,7 +662,7 @@ the actual number of articles toggled is returned."
        ;; Fetch the articles from the backend.
        (if (gnus-check-backend-function 'retrieve-articles group)
            (setq pos (gnus-retrieve-articles articles group))
-         (nnheader-temp-write nil
+         (with-temp-file nil
            (let (article)
              (while (setq article (pop articles))
                (when (gnus-request-article article group)
@@ -745,7 +745,7 @@ the actual number of articles toggled is returned."
                     nil 'silent)
       (pop gnus-agent-buffer-alist))
     (while gnus-agent-group-alist
-      (nnheader-temp-write (caar gnus-agent-group-alist)
+      (with-temp-file (caar gnus-agent-group-alist)
        (princ (cdar gnus-agent-group-alist))
        (insert "\n"))
       (pop gnus-agent-group-alist))))
@@ -837,9 +837,9 @@ the actual number of articles toggled is returned."
 
 (defun gnus-agent-save-alist (group &optional articles state dir)
   "Save the article-state alist for GROUP."
-  (nnheader-temp-write (if dir
-                          (concat dir ".agentview")
-                        (gnus-agent-article-name ".agentview" group))
+  (with-temp-file (if dir
+                     (concat dir ".agentview")
+                   (gnus-agent-article-name ".agentview" group))
     (princ (setq gnus-agent-article-alist
                 (nconc gnus-agent-article-alist
                        (mapcar (lambda (article) (cons article state))
@@ -1084,7 +1084,7 @@ The following commands are available:
   "Write the category alist."
   (setq gnus-category-predicate-cache nil
        gnus-category-group-cache nil)
-  (nnheader-temp-write (nnheader-concat gnus-agent-directory "lib/categories")
+  (with-temp-file (nnheader-concat gnus-agent-directory "lib/categories")
     (prin1 gnus-category-alist (current-buffer))))
 
 (defun gnus-category-edit-predicate (category)
index 4eab8db..f598f57 100644 (file)
@@ -272,7 +272,6 @@ be fed to `format-time-string'."
   :group 'gnus-article-washing)
 
 (eval-and-compile
-  (autoload 'hexl-hex-string-to-integer "hexl")
   (autoload 'timezone-make-date-arpa-standard "timezone")
   (autoload 'mail-extract-address-components "mail-extr"))
 
@@ -946,84 +945,42 @@ characters to translate to."
                  (process-send-region "article-x-face" beg end)
                  (process-send-eof "article-x-face"))))))))))
 
-(defun gnus-hack-decode-rfc1522 ()
-  "Emergency hack function for avoiding problems when decoding."
-  (let ((buffer-read-only nil))
-    (goto-char (point-min))
-    ;; Remove encoded TABs.
-    (while (search-forward "=09" nil t)
-      (replace-match " " t t))
-    ;; Remove encoded newlines.
-    (goto-char (point-min))
-    (while (search-forward "=10" nil t)
-      (replace-match " " t t))))
+(defun gnus-article-decode-mime-words ()
+  "Decode all MIME-encoded words in the article."
+  (interactive)
+  (save-excursion
+    (let ((inhibit-point-motion-hooks t)
+         buffer-read-only)
+      (mm-decode-words-region (point-min) (point-max)))))
 
 (defalias 'gnus-decode-rfc1522 'article-decode-rfc1522)
 (defalias 'gnus-article-decode-rfc1522 'article-decode-rfc1522)
 (defun article-decode-rfc1522 ()
-  "Hack to remove QP encoding from headers."
-  (let ((case-fold-search t)
-       (inhibit-point-motion-hooks t)
-       (buffer-read-only nil)
-       string)
+  "Remove QP encoding from headers."
+  (let ((inhibit-point-motion-hooks t)
+       (buffer-read-only nil))
     (save-restriction
-      (narrow-to-region
-       (goto-char (point-min))
-       (or (search-forward "\n\n" nil t) (point-max)))
-      (goto-char (point-min))
-      (while (re-search-forward
-             "=\\?iso-8859-1\\?q\\?\\([^?\t\n]*\\)\\?=" nil t)
-       (setq string (match-string 1))
-       (save-restriction
-         (narrow-to-region (match-beginning 0) (match-end 0))
-         (delete-region (point-min) (point-max))
-         (insert string)
-         (article-mime-decode-quoted-printable
-          (goto-char (point-min)) (point-max))
-         (subst-char-in-region (point-min) (point-max) ?_ ? )
-         (goto-char (point-max)))
-       (goto-char (point-min))))))
+      (message-narrow-to-head)
+      (mm-decode-words-region (point-min) (point-max)))))
 
 (defun article-de-quoted-unreadable (&optional force)
-  "Do a naive translation of a quoted-printable-encoded article.
-This is in no way, shape or form meant as a replacement for real MIME
-processing, but is simply a stop-gap measure until MIME support is
-written.
+  "Translate a quoted-printable-encoded article.
 If FORCE, decode the article whether it is marked as quoted-printable
 or not."
   (interactive (list 'force))
   (save-excursion
-    (let ((case-fold-search t)
-         (buffer-read-only nil)
+    (let ((buffer-read-only nil)
          (type (gnus-fetch-field "content-transfer-encoding")))
       (gnus-article-decode-rfc1522)
       (when (or force
                (and type (string-match "quoted-printable" (downcase type))))
        (goto-char (point-min))
        (search-forward "\n\n" nil 'move)
-       (article-mime-decode-quoted-printable (point) (point-max))))))
+       (quoted-printable-decode-region (point) (point-max))))))
 
 (defun article-mime-decode-quoted-printable-buffer ()
   "Decode Quoted-Printable in the current buffer."
-  (article-mime-decode-quoted-printable (point-min) (point-max)))
-
-(defun article-mime-decode-quoted-printable (from to)
-  "Decode Quoted-Printable in the region between FROM and TO."
-  (interactive "r")
-  (goto-char from)
-  (while (search-forward "=" to t)
-    (cond ((eq (following-char) ?\n)
-          (delete-char -1)
-          (delete-char 1))
-         ((looking-at "[0-9A-F][0-9A-F]")
-          (subst-char-in-region
-           (1- (point)) (point) ?=
-           (hexl-hex-string-to-integer
-            (buffer-substring (point) (+ 2 (point)))))
-          (delete-char 2))
-         ((looking-at "=")
-          (delete-char 1))
-         ((gnus-message 3 "Malformed MIME quoted-printable message")))))
+  (quoted-printable-decode-region (point-min) (point-max)))
 
 (defun article-hide-pgp (&optional arg)
   "Toggle hiding of any PGP headers and signatures in the current article.
@@ -1231,7 +1188,7 @@ Put point at the beginning of the signature separator."
           (setq b (point))
         (point-max))
        (setq e (point-max)))
-      (nnheader-temp-write nil
+      (with-temp-buffer
        (insert-buffer-substring gnus-article-buffer b e)
        (require 'url)
        (save-window-excursion
@@ -1978,6 +1935,8 @@ commands:
   (buffer-disable-undo (current-buffer))
   (setq buffer-read-only t)
   (set-syntax-table gnus-article-mode-syntax-table)
+  (when (fboundp 'set-buffer-multibyte)
+    (set-buffer-multibyte t))
   (gnus-run-hooks 'gnus-article-mode-hook))
 
 (defun gnus-article-setup-buffer ()
@@ -2189,7 +2148,7 @@ Provided for backwards compatibility."
 (defun gnus-output-to-file (file-name)
   "Append the current article to a file named FILE-NAME."
   (let ((artbuf (current-buffer)))
-    (nnheader-temp-write nil
+    (with-temp-buffer
       (insert-buffer-substring artbuf)
       ;; Append newline at end of the buffer as separator, and then
       ;; save it to file.
@@ -3135,7 +3094,7 @@ specified by `gnus-button-alist'."
 
 (defun gnus-url-parse-query-string (query &optional downcase)
   (let (retval pairs cur key val)
-    (setq pairs (gnus-split-string query "&"))
+    (setq pairs (split-string query "&"))
     (while pairs
       (setq cur (car pairs)
             pairs (cdr pairs))
index 7f03b70..bce2f54 100644 (file)
@@ -595,7 +595,7 @@ $ emacs -batch -l ~/.emacs -l gnus -f gnus-jog-cache"
   (when (or force
            (and gnus-cache-active-hashtb
                 gnus-cache-active-altered))
-    (nnheader-temp-write gnus-cache-active-file
+    (with-temp-file gnus-cache-active-file
       (mapatoms
        (lambda (sym)
         (when (and sym (boundp sym))
index 6958f02..b289639 100644 (file)
@@ -98,7 +98,7 @@ seen in the same session."
   "Save the duplicate suppression list."
   (when (and gnus-save-duplicate-list
             gnus-dup-list-dirty)
-    (nnheader-temp-write gnus-duplicate-file
+    (with-temp-file gnus-duplicate-file
       (gnus-prin1 `(setq gnus-dup-list ',gnus-dup-list))))
   (setq gnus-dup-list-dirty nil))
 
index 0e95762..34625a2 100644 (file)
@@ -45,9 +45,6 @@
   (autoload 'gnus-xmas-redefine "gnus-xmas")
   (autoload 'appt-select-lowest-window "appt"))
 
-(or (fboundp 'mail-file-babyl-p)
-    (fset 'mail-file-babyl-p 'rmail-file-p))
-
 ;;; Mule functions.
 
 (defun gnus-mule-cite-add-face (number prefix face)
           (truncate-string valstr (, max-width))
         valstr))))
 
-(defun gnus-encode-coding-string (string system)
-  string)
-
-(defun gnus-decode-coding-string (string system)
-  string)
-
 (eval-and-compile
   (if (string-match "XEmacs\\|Lucid" emacs-version)
       nil
    ((string-match "XEmacs\\|Lucid" emacs-version)
     (gnus-xmas-define))
 
-   ((or (not (boundp 'emacs-minor-version))
-       (and (< emacs-major-version 20)
-            (< emacs-minor-version 30)))
-    ;; Remove the `intangible' prop.
-    (let ((props (and (boundp 'gnus-hidden-properties)
-                     gnus-hidden-properties)))
-      (while (and props (not (eq (car (cdr props)) 'intangible)))
-       (setq props (cdr props)))
-      (when props
-       (setcdr props (cdr (cdr (cdr props))))))
-    (unless (fboundp 'buffer-substring-no-properties)
-      (defun buffer-substring-no-properties (beg end)
-       (format "%s" (buffer-substring beg end)))))
-
    ((boundp 'MULE)
     (provide 'gnusutil))))
 
     (fset 'gnus-cite-add-face 'gnus-mule-cite-add-face)
     (fset 'gnus-max-width-function 'gnus-mule-max-width-function)
     (fset 'gnus-summary-set-display-table (lambda ()))
-    (fset 'gnus-encode-coding-string 'encode-coding-string)
-    (fset 'gnus-decode-coding-string 'decode-coding-string)
     
     (when (boundp 'gnus-check-before-posting)
       (setq gnus-check-before-posting
        (erase-buffer)
        (when (and dir
                   (file-exists-p (setq file (concat dir "x-splash"))))
-         (nnheader-temp-write nil
+         (with-temp-buffer
            (insert-file-contents file)
            (goto-char (point-min))
            (ignore-errors
            (make-face 'gnus-splash))
          (setq height (/ (car pixmap) (frame-char-height))
                width (/ (cadr pixmap) (frame-char-width)))
-         (set-face-foreground 'gnus-splash "ForestGreen")
+         (set-face-foreground 'gnus-splash "Brown")
          (set-face-stipple 'gnus-splash pixmap)
          (insert-char ?\n (* (/ (window-height) 2 height) height))
          (setq i height)
          (goto-char (point-min))
          (sit-for 0))))))
 
-(if (fboundp 'split-string)
-    (fset 'gnus-split-string 'split-string)
-  (defun gnus-split-string (string pattern)
-    "Return a list of substrings of STRING which are separated by PATTERN."
-    (let (parts (start 0))
-      (while (string-match pattern string start)
-       (setq parts (cons (substring string start (match-beginning 0)) parts)
-             start (match-end 0)))
-      (nreverse (cons (substring string start) parts)))))
-
 (provide 'gnus-ems)
 
 ;; Local Variables:
index 612be02..6eddfca 100644 (file)
@@ -2155,7 +2155,7 @@ score file entries for articles to include in the group."
        (push (cons header regexps) scores))
       scores)))
   (gnus-group-make-group group "nnkiboze" address)
-  (nnheader-temp-write (gnus-score-file-name (concat "nnkiboze:" group))
+  (with-temp-file (gnus-score-file-name (concat "nnkiboze:" group))
     (let (emacs-lisp-mode-hook)
       (pp scores (current-buffer)))))
 
index d678531..66974ee 100644 (file)
@@ -146,7 +146,7 @@ matches an previously scanned and verified nocem message."
          (save-excursion
            (let ((dependencies (make-vector 10 nil))
                  headers header)
-             (nnheader-temp-write nil
+             (with-temp-buffer
                (setq headers
                      (if (eq 'nov
                              (gnus-retrieve-headers
@@ -302,13 +302,13 @@ matches an previously scanned and verified nocem message."
   "Save the NoCeM cache."
   (when (and gnus-nocem-alist
             gnus-nocem-touched-alist)
-    (nnheader-temp-write (gnus-nocem-cache-file)
+    (with-temp-file (gnus-nocem-cache-file)
       (gnus-prin1 `(setq gnus-nocem-alist ',gnus-nocem-alist)))
     (setq gnus-nocem-touched-alist nil)))
 
 (defun gnus-nocem-save-active ()
   "Save the NoCeM active file."
-  (nnheader-temp-write (gnus-nocem-active-file)
+  (with-temp-file (gnus-nocem-active-file)
     (gnus-prin1 `(setq gnus-nocem-active ',gnus-nocem-active))))
 
 (defun gnus-nocem-alist-to-hashtb ()
index 8cff072..f2c3b3a 100644 (file)
@@ -2209,7 +2209,7 @@ SCORE is the score to add."
     ;; Perform adaptive word scoring.
     (when (and (listp gnus-newsgroup-adaptive)
               (memq 'word gnus-newsgroup-adaptive))
-      (nnheader-temp-write nil
+      (with-temp-buffer
        (let* ((hashtb (gnus-make-hashtable 1000))
               (date (gnus-day-number (current-time-string)))
               (data gnus-newsgroup-data)
@@ -2625,7 +2625,7 @@ Destroys the current buffer."
 
 (defun gnus-sort-score-files (files)
   "Sort FILES so that the most general files come first."
-  (nnheader-temp-write nil
+  (with-temp-buffer
     (let ((alist
           (mapcar
            (lambda (file)
index 08f8176..71345c9 100644 (file)
@@ -422,7 +422,7 @@ file.  The vector contain three strings, [prefix name encoding]."
   "Write the AREAS file."
   (interactive)
   (when gnus-soup-areas
-    (nnheader-temp-write (concat gnus-soup-directory "AREAS")
+    (with-temp-file (concat gnus-soup-directory "AREAS")
       (let ((areas gnus-soup-areas)
            area)
        (while (setq area (pop areas))
@@ -443,7 +443,7 @@ file.  The vector contain three strings, [prefix name encoding]."
 
 (defun gnus-soup-write-replies (dir areas)
   "Write a REPLIES file in DIR containing AREAS."
-  (nnheader-temp-write (concat dir "REPLIES")
+  (with-temp-file (concat dir "REPLIES")
     (let (area)
       (while (setq area (pop areas))
        (insert (format "%s\t%s\t%s\n"
index 97ab9b8..005d2d0 100644 (file)
@@ -2530,8 +2530,8 @@ If FORCE is non-nil, the .newsrc file is read."
                          enable-multibyte-characters
                          (fboundp 'gnus-mule-get-coding-system)
                          (gnus-mule-get-coding-system (symbol-name group)))))
-               (if coding
-                   (setq str (gnus-decode-coding-string str (car coding))))
+               (when coding
+                 (setq str (nnheader-decode-coding-string str (car coding))))
                (set group str)))
            (forward-line 1))))
       (gnus-message 5 "Reading descriptions file...done")
index 5e5c6ea..e2d17c9 100644 (file)
@@ -663,18 +663,7 @@ is not run if `gnus-visual' is nil."
   :group 'gnus-summary-visual
   :type 'hook)
 
-(defcustom gnus-structured-field-decoder 'identity
-  "Function to decode non-ASCII characters in structured field for summary."
-  :group 'gnus-various
-  :type 'function)
-
-(defcustom gnus-unstructured-field-decoder 'identity
-  "Function to decode non-ASCII characters in unstructured field for summary."
-  :group 'gnus-various
-  :type 'function)
-
-(defcustom gnus-parse-headers-hook
-  (list 'gnus-hack-decode-rfc1522 'gnus-decode-rfc1522)
+(defcustom gnus-parse-headers-hook nil
   "*A hook called before parsing the headers."
   :group 'gnus-various
   :type 'hook)
@@ -1395,6 +1384,9 @@ increase the score of each group you read."
     "c" gnus-article-highlight-citation
     "s" gnus-article-highlight-signature)
 
+  (gnus-define-keys (gnus-summary-wash-mime-map "M" gnus-summary-wash-map)
+    "w" gnus-article-decode-mime-words)
+
   (gnus-define-keys (gnus-summary-wash-time-map "T" gnus-summary-wash-map)
     "z" gnus-article-date-ut
     "u" gnus-article-date-ut
@@ -1494,6 +1486,9 @@ increase the score of each group you read."
               ["Headers" gnus-article-highlight-headers t]
               ["Signature" gnus-article-highlight-signature t]
               ["Citation" gnus-article-highlight-citation t])
+            ("MIME"
+             ["Words" gnus-article-decode-mime-words t]
+             ["QP" gnus-article-de-quoted-unreadable t])
              ("Date"
               ["Local" gnus-article-date-local t]
               ["ISO8601" gnus-article-date-iso8601 t]
@@ -3062,10 +3057,8 @@ Returns HEADER if it was entered in the DEPENDENCIES.  Returns nil otherwise."
          (setq header
                (make-full-mail-header
                 number                 ; number
-                (funcall
-                 gnus-unstructured-field-decoder (gnus-nov-field)) ; subject
-                (funcall
-                 gnus-structured-field-decoder (gnus-nov-field)) ; from
+                (mm-decode-words-string (gnus-nov-field)) ; subject
+                (mm-decode-words-string (gnus-nov-field)) ; from
                 (gnus-nov-field)       ; date
                 (or (gnus-nov-field)
                     (nnheader-generate-fake-message-id)) ; id
@@ -4407,15 +4400,13 @@ The resulting hash table is returned, or nil if no Xrefs were found."
            (progn
              (goto-char p)
              (if (search-forward "\nsubject: " nil t)
-                 (funcall
-                  gnus-unstructured-field-decoder (nnheader-header-value))
+                 (mm-decode-words-string (nnheader-header-value))
                "(none)"))
            ;; From.
            (progn
              (goto-char p)
              (if (search-forward "\nfrom: " nil t)
-                 (funcall
-                  gnus-structured-field-decoder (nnheader-header-value))
+                 (mm-decode-words-string (nnheader-header-value))
                "(nobody)"))
            ;; Date.
            (progn
@@ -4535,9 +4526,10 @@ list of headers that match SEQUENCE (see `nntp-retrieve-headers')."
                                     number dependencies force-new))))
                   (push header headers))
              (forward-line 1))
-         (error
-          (gnus-error 4 "Strange nov line (%d)"
-                      (count-lines (point-min) (point)))))
+         ;(error
+         ; (gnus-error 4 "Strange nov line (%d)"
+       ;              (count-lines (point-min) (point))))
+         )
        (forward-line 1))
       ;; A common bug in inn is that if you have posted an article and
       ;; then retrieves the active file, it will answer correctly --
@@ -6513,7 +6505,7 @@ Obeys the standard process/prefix convention."
       (gnus-summary-remove-process-mark article)
       (when (gnus-summary-display-article article)
        (save-excursion
-         (nnheader-temp-write nil
+         (with-temp-buffer
            (insert-buffer-substring gnus-original-article-buffer)
            ;; Remove some headers that may lead nndoc to make
            ;; the wrong guess.
@@ -7318,7 +7310,7 @@ groups."
   (interactive)
   ;; Replace the article.
   (let ((buf (current-buffer)))
-    (nnheader-temp-write nil
+    (with-temp-buffer
       (insert-buffer buf)
       (if (and (not read-only)
               (not (gnus-request-replace-article
@@ -7336,7 +7328,7 @@ groups."
                (message-narrow-to-head)
                (let ((head (buffer-string))
                      header)
-                 (nnheader-temp-write nil
+                 (with-temp-buffer
                    (insert (format "211 %d Article retrieved.\n"
                                    (cdr gnus-article-current)))
                    (insert head)
@@ -8150,7 +8142,7 @@ is non-nil or the Subject: of both articles are the same."
          (gnus-summary-select-article t t nil current-article))
        (set-buffer gnus-original-article-buffer)
        (let ((buf (format "%s" (buffer-string))))
-         (nnheader-temp-write nil
+         (with-temp-buffer
            (insert buf)
            (goto-char (point-min))
            (if (re-search-forward "^References: " nil t)
index ac066e5..069e6a6 100644 (file)
      (when (gnus-buffer-exists-p buf)
        (kill-buffer buf))))
 
-(if (fboundp 'point-at-bol)
-    (fset 'gnus-point-at-bol 'point-at-bol)
+(cond
+ ((fboundp 'point-at-bol)
+  (fset 'gnus-point-at-bol 'point-at-bol))
+ ((fboundp 'line-beginning-position)
+  (fset 'gnus-point-at-bol 'line-beginning-position))
+ (t
   (defun gnus-point-at-bol ()
     "Return point at the beginning of the line."
     (let ((p (point)))
       (beginning-of-line)
       (prog1
          (point)
-       (goto-char p)))))
-
-(if (fboundp 'point-at-eol)
-    (fset 'gnus-point-at-eol 'point-at-eol)
+       (goto-char p))))))
+
+(cond
+ ((fboundp 'point-at-eol)
+  (fset 'gnus-point-at-eol 'point-at-eol))
+ ((fboundp 'line-end-position)
+  (fset 'gnus-point-at-eol 'line-end-position))
+ (t
   (defun gnus-point-at-eol ()
     "Return point at the end of the line."
     (let ((p (point)))
       (end-of-line)
       (prog1
          (point)
-       (goto-char p)))))
+       (goto-char p))))))
 
 (defun gnus-delete-first (elt list)
   "Delete by side effect the first occurrence of ELT as a member of LIST."
index 00fc583..23eb31c 100644 (file)
@@ -52,11 +52,12 @@ automatically."
     (grape "#b264cc" "#cf7df")
     (labia "#cc64c2" "#fd7dff")
     (berry "#cc6485" "#ff7db5")
+    (dino "#cc6485" "#ff7db5")
     (neutral "#b4b4b4" "#878787")
     (september "#bf9900" "#ffcc00"))
   "Color alist used for the Gnus logo.")
 
-(defcustom gnus-xmas-logo-color-style 'moss
+(defcustom gnus-xmas-logo-color-style 'dino
   "*Color styles used for the Gnus logo."
   :type '(choice (const flame) (const pine) (const moss)
                 (const irish) (const sky) (const tin)
index 2642303..82ae7cc 100644 (file)
@@ -250,10 +250,10 @@ is restarted, and sometimes reloaded."
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
-(defconst gnus-version-number "5.6.42"
+(defconst gnus-version-number "0.6"
   "Version number for this version of Gnus.")
 
-(defconst gnus-version (format "Gnus v%s" gnus-version-number)
+(defconst gnus-version (format "Pterodactyl Gnus v%s" gnus-version-number)
   "Version string for this version of Gnus.")
 
 (defcustom gnus-inhibit-startup-message nil
@@ -637,13 +637,13 @@ be set in `.emacs' instead."
 (defface gnus-splash-face
   '((((class color)
       (background dark))
-     (:foreground "ForestGreen"))
+     (:foreground "Brown"))
     (((class color)
       (background light))
-     (:foreground "ForestGreen"))
+     (:foreground "Brown"))
     (t
      ()))
-  "Level 1 newsgroup face.")
+  "Face of the splash screen.")
 
 (defun gnus-splash ()
   (save-excursion
@@ -1569,8 +1569,9 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.")
          (cdr package)))))
    '(("metamail" metamail-buffer)
      ("info" Info-goto-node)
-     ("hexl" hexl-hex-string-to-integer)
      ("pp" pp pp-to-string pp-eval-expression)
+     ("qp" quoted-printable-decode-region quoted-printable-decode-string)
+     ("mm-decode" mm-decode-words-region mm-decode-words-string)
      ("ps-print" ps-print-preprint)
      ("mail-extr" mail-extract-address-components)
      ("browse-url" browse-url)
@@ -2005,7 +2006,7 @@ If ARG, insert string at point."
                    ((member alpha '("September" "s")) "5.01")
                    ((member alpha '("Red" "r")) "5.03")
                    ((member alpha '("Quassia" "q")) "5.05")
-                   ((member alpha '("p")) "5.07")
+                   ((member alpha '("Pterodactyl" "p")) "5.07")
                    ((member alpha '("o")) "5.09")
                    ((member alpha '("n")) "5.11"))
                   minor least)
index d41172b..c48c08e 100644 (file)
                     make-char-table set-char-table-range font-create-object
                     x-color-values widget-make-intangible error-message-string
                     w3-form-encode-xwfu gnus-mule-get-coding-system
-                    decode-coding-string mail-aliases-setup))
+                    decode-coding-string mail-aliases-setup
+                    mm-copy-tree url-view-url w3-prepare-buffer
+                    set-buffer-multibyte))
       (maybe-bind '(global-face-data
                    mark-active transient-mark-mode mouse-selection-click-count
                    mouse-selection-click-count-buffer buffer-display-table
                    font-lock-defaults user-full-name user-login-name
                    gnus-newsgroup-name gnus-article-x-face-too-ugly
                    mail-mode-hook enable-multibyte-characters
-                   adaptive-fill-first-line-regexp adaptive-fill-regexp)))
+                   adaptive-fill-first-line-regexp adaptive-fill-regexp
+                   url-current-mime-headers)))
   (maybe-bind '(mail-mode-hook
                enable-multibyte-characters browse-url-browser-function
-               adaptive-fill-first-line-regexp adaptive-fill-regexp))
+               adaptive-fill-first-line-regexp adaptive-fill-regexp
+               url-current-mime-headers))
   (maybe-fbind '(color-instance-rgb-components
                 make-color-instance color-instance-name specifier-instance
                 device-type device-class get-popup-menu-response event-object
@@ -53,7 +57,9 @@
                 device-on-window-system-p make-gui-button Info-goto-node
                 pp-to-string color-name 
                 gnus-mule-get-coding-system decode-coding-string
-                mail-aliases-setup)))
+                mail-aliases-setup
+                mm-copy-tree url-view-url w3-prepare-buffer
+                char-int mule-write-region-no-coding-system)))
 
 (setq load-path (cons "." load-path))
 (require 'custom)
index a7e5cd4..15c9b5b 100644 (file)
@@ -1011,7 +1011,7 @@ The cdr of ech entry is a function for applying the face to a region.")
   (when (and (file-exists-p file)
             (file-readable-p file)
             (file-regular-p file))
-    (nnheader-temp-write nil
+    (with-temp-buffer
       (nnheader-insert-file-contents file)
       (goto-char (point-min))
       (looking-at message-unix-mail-delimiter))))
@@ -1111,7 +1111,8 @@ Return the number of headers removed."
   (goto-char (point-min)))
 
 (defun message-narrow-to-head ()
-  "Narrow the buffer to the head of the message."
+  "Narrow the buffer to the head of the message.
+Point is left at the beginning of the narrowed-to region."
   (widen)
   (narrow-to-region
    (goto-char (point-min))
@@ -3055,7 +3056,7 @@ Headers already prepared in the buffer are not modified."
   (let ((max 988)
        (cut 4)
        refs)
-    (nnheader-temp-write nil
+    (with-temp-buffer
       (insert references)
       (goto-char (point-min))
       (while (re-search-forward "<[^>]+>" nil t)
@@ -3583,7 +3584,7 @@ header line with the old Message-ID."
 
 (defun message-wash-subject (subject)
   "Remove junk like \"Re:\", \"(fwd)\", etc. that was added to the subject by previous forwarders, replyers, etc."
-  (nnheader-temp-write nil
+  (with-temp-buffer
     (insert-string subject)
     (goto-char (point-min))
     ;; strip Re/Fwd stuff off the beginning
diff --git a/lisp/mm-decode.el b/lisp/mm-decode.el
new file mode 100644 (file)
index 0000000..e1d50ed
--- /dev/null
@@ -0,0 +1,134 @@
+;;; mm-decode.el --- Function for decoding MIME things
+;; Copyright (C) 1998 Free Software Foundation, Inc.
+
+;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
+;; This file is not yet part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'base64)
+(require 'qp)
+(require 'nnheader)
+
+(defvar mm-charset-regexp (concat "[^" "][\000-\040()<>@,\;:\\\"/?.=" "]+"))
+
+(defvar mm-encoded-word-regexp
+  (concat "=\\?\\(" mm-charset-regexp "\\)\\?\\(B\\|Q\\)\\?"
+         "\\([!->@-~]+\\)\\?="))
+
+(defun mm-decode-words-region (start end)
+  "Decode MIME-encoded words in region between START and END."
+  (interactive "r")
+  (save-excursion
+    (save-restriction
+      (narrow-to-region start end)
+      (goto-char (point-min))
+      ;; Remove whitespace between encoded words.
+      (while (re-search-forward
+             (concat "\\(" mm-encoded-word-regexp "\\)"
+                     "\\(\n?[ \t]\\)+"
+                     "\\(" mm-encoded-word-regexp "\\)")
+             nil t)
+       (delete-region (goto-char (match-end 1)) (match-beginning 6)))
+      ;; Decode the encoded words.
+      (goto-char (point-min))
+      (while (re-search-forward mm-encoded-word-regexp nil t)
+       (insert (mm-decode-word
+                (prog1
+                    (match-string 0)
+                  (delete-region (match-beginning 0) (match-end 0)))))))))
+
+(defun mm-decode-words-string (string)
+ "Decode the quoted-printable-encoded STRING and return the results."
+ (with-temp-buffer
+   (insert string)
+   (inline
+     (mm-decode-words-region (point-min) (point-max)))
+   (buffer-string)))
+
+(defun mm-decode-word (word)
+  "Decode WORD and return it if it is an encoded word.
+Return WORD if not."
+  (if (not (string-match mm-encoded-word-regexp word))
+      word
+    (or
+     (condition-case nil
+        (mm-decode-text
+         (match-string 1 word)
+         (upcase (match-string 2 word))
+         (match-string 3 word))
+       (error word))
+     word)))
+
+(eval-and-compile
+  (if (fboundp 'decode-coding-string)
+      (fset 'mm-decode-coding-string 'decode-coding-string)
+    (fset 'mm-decode-coding-string (lambda (s a) s))))
+
+(defun mm-decode-text (charset encoding string)
+  "Decode STRING as an encoded text.
+Valid ENCODINGs are \"B\" and \"Q\".
+If your Emacs implementation can't decode CHARSET, it returns nil."
+  (let ((cs (mm-charset-to-coding-system charset)))
+    (when cs
+      (mm-decode-coding-string
+       (cond
+       ((equal "B" encoding)
+        (base64-decode string))
+       ((equal "Q" encoding)
+        (quoted-printable-decode-string
+         (nnheader-replace-chars-in-string string ?_ ? )))
+       (t (error "Invalid encoding: %s" encoding)))
+       cs))))
+
+(defvar mm-charset-coding-system-alist
+  (let ((rest
+        '((us-ascii . iso-8859-1)
+          (gb2312 . cn-gb-2312)
+          (iso-2022-jp-2 . iso-2022-7bit-ss2)
+          (x-ctext . ctext)))
+       (systems (coding-system-list))
+       dest)
+    (while rest
+      (let ((pair (car rest)))
+       (unless (memq (car pair) systems)
+         (setq dest (cons pair dest))))
+      (setq rest (cdr rest)))
+    dest)
+  "Charset/coding system alist.")
+
+(defun mm-charset-to-coding-system (charset &optional lbt)
+  "Return coding-system corresponding to CHARSET.
+CHARSET is a symbol naming a MIME charset.
+If optional argument LBT (`unix', `dos' or `mac') is specified, it is
+used as the line break code type of the coding system."
+  (when (stringp charset)
+    (setq charset (intern (downcase charset))))
+  (setq charset
+       (or (cdr (assq charset mm-charset-coding-system-alist))
+           charset))
+  (when lbt
+    (setq charset (intern (format "%s-%s" charset lbt))))
+  (when (memq charset (coding-system-list))
+    charset))
+
+(provide 'mm-decode)
+
+;; qp.el ends here
diff --git a/lisp/mm.el b/lisp/mm.el
new file mode 100644 (file)
index 0000000..1b57cb1
--- /dev/null
@@ -0,0 +1,1283 @@
+;;; mm.el,v --- Mailcap parsing routines, and MIME handling
+;; Author: wmperry
+;; Created: 1996/05/28 02:46:51
+;; Version: 1.96
+;; Keywords: mail, news, hypermedia
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Copyright (c) 1994, 1995, 1996 by William M. Perry <wmperry@cs.indiana.edu>
+;;; Copyright (c) 1996 - 1998 Free Software Foundation, Inc.
+;;;
+;;; This file is not part of GNU Emacs, but the same permissions apply.
+;;;
+;;; GNU Emacs is free software; you can redistribute it and/or modify
+;;; it under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 2, or (at your option)
+;;; any later version.
+;;;
+;;; GNU Emacs is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;;; Boston, MA 02111-1307, USA.
+;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Generalized mailcap parsing and access routines
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;
+;;; Data structures
+;;; ---------------
+;;; The mailcap structure is an assoc list of assoc lists.
+;;; 1st assoc list is keyed on the major content-type
+;;; 2nd assoc list is keyed on the minor content-type (which can be a regexp)
+;;;
+;;; Which looks like:
+;;; -----------------
+;;; (
+;;;  ("application"
+;;;   ("postscript" . <info>)
+;;;  )
+;;;  ("text"
+;;;   ("plain" . <info>)
+;;;  )
+;;; )
+;;;
+;;; Where <info> is another assoc list of the various information
+;;; related to the mailcap RFC.  This is keyed on the lowercase
+;;; attribute name (viewer, test, etc).  This looks like:
+;;; (("viewer" . viewerinfo)
+;;;  ("test"   . testinfo)
+;;;  ("xxxx"   . "string")
+;;; )
+;;;
+;;; Where viewerinfo specifies how the content-type is viewed.  Can be
+;;; a string, in which case it is run through a shell, with
+;;; appropriate parameters, or a symbol, in which case the symbol is
+;;; funcall'd, with the buffer as an argument.
+;;;
+;;; testinfo is a list of strings, or nil.  If nil, it means the
+;;; viewer specified is always valid.  If it is a list of strings,
+;;; these are used to determine whether a viewer passes the 'test' or
+;;; not.
+;;;
+;;; The main interface to this code is:
+;;;
+;;; To set everything up:
+;;;
+;;;  (mm-parse-mailcaps [path])
+;;;
+;;;  Where PATH is a unix-style path specification (: separated list
+;;;  of strings).  If PATH is nil, the environment variable MAILCAPS
+;;;  will be consulted.  If there is no environment variable, then a
+;;;  default list of paths is used.
+;;;
+;;; To retrieve the information:
+;;;  (mm-mime-info st [nd] [request])
+;;;
+;;;  Where st and nd are positions in a buffer that contain the
+;;;  content-type header information of a mail/news/whatever message.
+;;;  st can optionally be a string that contains the content-type
+;;;  information.
+;;;
+;;;  Third argument REQUEST specifies what information to return.  If
+;;;  it is nil or the empty string, the viewer (second field of the
+;;;  mailcap entry) will be returned.  If it is a string, then the
+;;;  mailcap field corresponding to that string will be returned
+;;;  (print, description, whatever).  If a number, then all the
+;;;  information for this specific viewer is returned.
+;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Variables, etc
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(eval-and-compile
+  (require 'cl)
+;LMI was here
+  ;;(require 'devices)
+  )
+
+(defconst mm-version (let ((x "1.96"))
+                      (if (string-match "Revision: \\([^ \t\n]+\\)" x)
+                          (substring x (match-beginning 1) (match-end 1))
+                        x))
+  "Version # of MM package")
+
+(defvar mm-parse-args-syntax-table
+  (copy-syntax-table emacs-lisp-mode-syntax-table)
+  "A syntax table for parsing sgml attributes.")
+
+(modify-syntax-entry ?' "\"" mm-parse-args-syntax-table)
+(modify-syntax-entry ?` "\"" mm-parse-args-syntax-table)
+(modify-syntax-entry ?{ "(" mm-parse-args-syntax-table)
+(modify-syntax-entry ?} ")" mm-parse-args-syntax-table)
+
+(defvar mm-mime-data
+  '(
+    ("multipart"   . (
+                     ("alternative". (("viewer" . mm-multipart-viewer)
+                                      ("type"   . "multipart/alternative")))
+                     ("mixed"      . (("viewer" . mm-multipart-viewer)
+                                      ("type"   . "multipart/mixed")))
+                     (".*"         . (("viewer" . mm-save-binary-file)
+                                      ("type"   . "multipart/*")))
+                     )
+     )
+    ("application" . (
+                     ("x-x509-ca-cert" . (("viewer" . ssl-view-site-cert)
+                                          ("test" . (fboundp 'ssl-view-site-cert))
+                                          ("type" . "application/x-x509-ca-cert")))
+                     ("x-x509-user-cert" . (("viewer" . ssl-view-user-cert)
+                                            ("test" . (fboundp 'ssl-view-user-cert))
+                                            ("type" . "application/x-x509-user-cert")))
+                     ("octet-stream" . (("viewer" . mm-save-binary-file)
+                                        ("type" ."application/octet-stream")))
+                     ("dvi"        . (("viewer" . "open %s")
+                                      ("type"   . "application/dvi")
+                                      ("test"   . (eq (device-type) 'ns))))
+                     ("dvi"        . (("viewer" . "xdvi %s")
+                                      ("test"   . (eq (device-type) 'x))
+                                      ("needsx11")
+                                      ("type"   . "application/dvi")))
+                     ("dvi"        . (("viewer" . "dvitty %s")
+                                      ("test"   . (not (getenv "DISPLAY")))
+                                      ("type"   . "application/dvi")))
+                     ("emacs-lisp" . (("viewer" . mm-maybe-eval)
+                                      ("type"   . "application/emacs-lisp")))
+;                    ("x-tar"      . (("viewer" . tar-mode)
+;                                     ("test"   . (fboundp 'tar-mode))
+;                                     ("type"   . "application/x-tar")))
+                     ("x-tar"      . (("viewer" . mm-save-binary-file)
+                                      ("type"   . "application/x-tar")))
+                     ("x-latex"    . (("viewer" . tex-mode)
+                                      ("test"   . (fboundp 'tex-mode))
+                                      ("type"   . "application/x-latex")))
+                     ("x-tex"      . (("viewer" . tex-mode)
+                                      ("test"   . (fboundp 'tex-mode))
+                                      ("type"   . "application/x-tex")))
+                     ("latex"      . (("viewer" . tex-mode)
+                                      ("test"   . (fboundp 'tex-mode))
+                                      ("type"   . "application/latex")))
+                     ("tex"        . (("viewer" . tex-mode)
+                                      ("test"   . (fboundp 'tex-mode))
+                                      ("type"   . "application/tex")))
+                     ("texinfo"    . (("viewer" . texinfo-mode)
+                                      ("test"   . (fboundp 'texinfo-mode))
+                                      ("type"   . "application/tex")))
+                     ("zip"        . (("viewer" . mm-save-binary-file)
+                                      ("type"   . "application/zip")
+                                      ("copiousoutput")))
+                     ("pdf"        . (("viewer" . "acroread %s")
+                                      ("type"   . "application/pdf")))
+                     ("postscript" . (("viewer" . "open %s")
+                                      ("type"   . "application/postscript")
+                                      ("test"   . (eq (device-type) 'ns))))
+                     ("postscript" . (("viewer" . "ghostview %s")
+                                      ("type" . "application/postscript")
+                                      ("test"   . (eq (device-type) 'x))
+                                      ("needsx11")))
+                     ("postscript" . (("viewer" . "ps2ascii %s")
+                                      ("type" . "application/postscript")
+                                      ("test" . (not (getenv "DISPLAY")))
+                                      ("copiousoutput")))
+                     ))
+    ("audio"       . (
+                     ("x-mpeg" . (("viewer" . "maplay %s")
+                                  ("type"   . "audio/x-mpeg")))
+                     (".*" . (("viewer" . mm-play-sound-file)
+                              ("test"   . (or (featurep 'nas-sound)
+                                              (featurep 'native-sound)))
+                              ("type"   . "audio/*")))
+                     (".*" . (("viewer" . "showaudio")
+                              ("type"   . "audio/*")))
+                     ))
+    ("message"     . (
+                     ("rfc-*822" . (("viewer" . vm-mode)
+                                    ("test"   . (fboundp 'vm-mode))
+                                    ("type"   . "message/rfc-822")))
+                     ("rfc-*822" . (("viewer" . w3-mode)
+                                    ("test"   . (fboundp 'w3-mode))
+                                    ("type"   . "message/rfc-822")))
+                     ("rfc-*822" . (("viewer" . view-mode)
+                                    ("test"   . (fboundp 'view-mode))
+                                    ("type"   . "message/rfc-822")))
+                     ("rfc-*822" . (("viewer" . fundamental-mode)
+                                    ("type"   . "message/rfc-822")))
+                     ))
+    ("image"       . (
+                     ("x-xwd" . (("viewer"  . "xwud -in %s")
+                                 ("type"    . "image/x-xwd")
+                                 ("compose" . "xwd -frame > %s")
+                                 ("test"    . (eq (device-type) 'x))
+                                 ("needsx11")))
+                     ("x11-dump" . (("viewer" . "xwud -in %s")
+                                    ("type" . "image/x-xwd")
+                                    ("compose" . "xwd -frame > %s")
+                                    ("test"   . (eq (device-type) 'x))
+                                    ("needsx11")))
+                     ("windowdump" . (("viewer" . "xwud -in %s")
+                                      ("type" . "image/x-xwd")
+                                      ("compose" . "xwd -frame > %s")
+                                      ("test"   . (eq (device-type) 'x))
+                                      ("needsx11")))
+                     (".*" . (("viewer" . "open %s")
+                              ("type"   . "image/*")
+                              ("test"   . (eq (device-type) 'ns))))
+                     (".*" . (("viewer" . "xv -perfect %s")
+                              ("type" . "image/*")
+                              ("test"   . (eq (device-type) 'x))
+                              ("needsx11")))
+                     ))
+    ("text"        . (
+                     ("plain" . (("viewer"  . w3-mode)
+                                 ("test"    . (fboundp 'w3-mode))
+                                 ("type"    . "text/plain")))
+                     ("plain" . (("viewer"  . view-mode)
+                                 ("test"    . (fboundp 'view-mode))
+                                 ("type"    . "text/plain")))
+                     ("plain" . (("viewer"  . fundamental-mode)
+                                 ("type"    . "text/plain")))
+                     ("enriched" . (("viewer" . enriched-decode-region)
+                                    ("test"   . (fboundp
+                                                 'enriched-decode-region))
+                                    ("type"   . "text/enriched")))
+                     ("html"  . (("viewer" . w3-prepare-buffer)
+                                 ("test"   . (fboundp 'w3-prepare-buffer))
+                                 ("type"   . "text/html")))
+                     ))
+    ("video"       . (
+                     ("mpeg" . (("viewer" . "mpeg_play %s")
+                                ("type"   . "video/mpeg")
+                                ("test"   . (eq (device-type) 'x))
+                                ("needsx11")))
+                     ))
+    ("x-world"     . (
+                     ("x-vrml" . (("viewer"  . "webspace -remote %s -URL %u")
+                                  ("type"    . "x-world/x-vrml")
+                                  ("description"
+                                   "VRML document")))))
+    ("archive"     . (
+                     ("tar"  . (("viewer" . tar-mode)
+                                ("type" . "archive/tar")
+                                ("test" . (fboundp 'tar-mode))))
+                     ))
+    )
+  "*The mailcap structure is an assoc list of assoc lists.
+1st assoc list is keyed on the major content-type
+2nd assoc list is keyed on the minor content-type (which can be a regexp)
+
+Which looks like:
+-----------------
+(
+ (\"application\"
+  (\"postscript\" . <info>)
+ )
+ (\"text\"
+  (\"plain\" . <info>)
+ )
+)
+
+Where <info> is another assoc list of the various information
+related to the mailcap RFC.  This is keyed on the lowercase
+attribute name (viewer, test, etc).  This looks like:
+((\"viewer\" . viewerinfo)
+ (\"test\"   . testinfo)
+ (\"xxxx\"   . \"string\")
+)
+
+Where viewerinfo specifies how the content-type is viewed.  Can be
+a string, in which case it is run through a shell, with
+appropriate parameters, or a symbol, in which case the symbol is
+funcall'd, with the buffer as an argument.
+
+testinfo is a list of strings, or nil.  If nil, it means the
+viewer specified is always valid.  If it is a list of strings,
+these are used to determine whether a viewer passes the 'test' or
+not.")
+
+(defvar mm-content-transfer-encodings
+  '(("base64"     . base64-decode-region)
+    ("7bit"       . ignore)
+    ("8bit"       . ignore)
+    ("binary"     . ignore)
+    ("x-compress" . ("uncompress" "-c"))
+    ("x-gzip"     . ("gzip" "-dc"))
+    ("compress"   . ("uncompress" "-c"))
+    ("gzip"       . ("gzip" "-dc"))
+    ("x-hqx"      . ("mcvert" "-P" "-s" "-S"))
+    ("quoted-printable" . mm-decode-quoted-printable)
+    )
+  "*An assoc list of content-transfer-encodings and how to decode them.")
+
+(defvar mm-download-directory nil
+  "*Where downloaded files should go by default.")
+
+(defvar mm-temporary-directory (or (getenv "TMPDIR") "/tmp")
+  "*Where temporary files go.")
+
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; A few things from w3 and url, just in case this is used without them
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun mm-generate-unique-filename (&optional fmt)
+  "Generate a unique filename in mm-temporary-directory"
+  (if (not fmt)
+      (let ((base (format "mm-tmp.%d" (user-real-uid)))
+           (fname "")
+           (x 0))
+       (setq fname (format "%s%d" base x))
+       (while (file-exists-p
+               (expand-file-name fname mm-temporary-directory))
+         (setq x (1+ x)
+               fname (concat base (int-to-string x))))
+       (expand-file-name fname mm-temporary-directory))
+    (let ((base (concat "mm" (int-to-string (user-real-uid))))
+         (fname "")
+         (x 0))
+      (setq fname (format fmt (concat base (int-to-string x))))
+      (while (file-exists-p
+             (expand-file-name fname mm-temporary-directory))
+       (setq x (1+ x)
+             fname (format fmt (concat base (int-to-string x)))))
+      (expand-file-name fname mm-temporary-directory))))
+
+(if (and (fboundp 'copy-tree)
+        (subrp (symbol-function 'copy-tree)))
+    (fset 'mm-copy-tree 'copy-tree)
+  (defun mm-copy-tree (tree)
+    (if (consp tree)
+       (cons (mm-copy-tree (car tree))
+             (mm-copy-tree (cdr tree)))
+      (if (vectorp tree)
+         (let* ((new (copy-sequence tree))
+                (i (1- (length new))))
+           (while (>= i 0)
+             (aset new i (mm-copy-tree (aref new i)))
+             (setq i (1- i)))
+           new)
+       tree))))
+
+;LMI was here
+;(require 'mule-sysdp)
+
+(if (not (fboundp 'w3-save-binary-file))
+    (defun mm-save-binary-file ()
+      ;; Ok, this is truly fucked.  In XEmacs, if you use the mouse to select
+      ;; a URL that gets saved via this function, read-file-name will pop up a
+      ;; dialog box for file selection.  For some reason which buffer we are in
+      ;; gets royally screwed (even with save-excursions and the whole nine
+      ;; yards).  SO, we just keep the old buffer name around and away we go.
+      (let ((old-buff (current-buffer))
+           (file (read-file-name "Filename to save as: "
+                                 (or mm-download-directory "~/")
+                                 (file-name-nondirectory (url-view-url t))
+                                 nil
+                                 (file-name-nondirectory (url-view-url t))))
+           (require-final-newline nil))
+       (set-buffer old-buff)
+       (mule-write-region-no-coding-system (point-min) (point-max) file)
+       (kill-buffer (current-buffer))))
+  (fset 'mm-save-binary-file 'w3-save-binary-file))
+
+(defun mm-maybe-eval ()
+  "Maybe evaluate a buffer of emacs lisp code"
+  (if (yes-or-no-p "This is emacs-lisp code, evaluate it? ")
+      (eval-buffer (current-buffer))
+    (emacs-lisp-mode)))
+
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; The mailcap parser
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(defun mm-viewer-unescape (format &optional filename url)
+  (save-excursion
+    (set-buffer (get-buffer-create " *mm-parse*"))
+    (erase-buffer)
+    (insert format)
+    (goto-char (point-min))
+    (while (re-search-forward "%\\(.\\)" nil t)
+       (let ((escape (aref (match-string 1) 0)))
+        (replace-match "" t t)
+        (case escape
+          (?% (insert "%"))
+          (?s (insert (or filename "\"\"")))
+          (?u (insert (or url "\"\""))))))
+    (buffer-string)))
+
+(defun mm-in-assoc (elt list)
+  ;; Check to see if ELT matches any of the regexps in the car elements of LIST
+  (let (rslt)
+    (while (and list (not rslt))
+      (and (car (car list))
+          (string-match (car (car list)) elt)
+          (setq rslt (car list)))
+      (setq list (cdr list)))
+    rslt))
+
+(defun mm-replace-regexp (regexp to-string)
+  ;; Quiet replace-regexp.
+  (goto-char (point-min))
+  (while (re-search-forward regexp nil t)
+    (replace-match to-string t nil)))
+
+(defun mm-parse-mailcaps (&optional path)
+  ;; Parse out all the mailcaps specified in a unix-style path string PATH
+  (cond
+   (path nil)
+   ((getenv "MAILCAPS") (setq path (getenv "MAILCAPS")))
+   ((memq system-type '(ms-dos ms-windows windows-nt))
+    (setq path (mapconcat 'expand-file-name '("~/mail.cap" "~/etc/mail.cap")
+                         ";")))
+   (t (setq path (mapconcat 'expand-file-name
+                           '("~/.mailcap"
+                             "/etc/mailcap:/usr/etc/mailcap"
+                             "/usr/local/etc/mailcap") ":"))))
+  (let ((fnames (reverse
+                (mm-string-to-tokens path
+                                     (if (memq system-type
+                                               '(ms-dos ms-windows windows-nt))
+                                         ?;
+                                       ?:))))
+       fname)
+    (while fnames
+      (setq fname (car fnames))
+      (if (and (file-exists-p fname) (file-readable-p fname))
+         (mm-parse-mailcap (car fnames)))
+      (setq fnames (cdr fnames)))))
+
+(defun mm-parse-mailcap (fname)
+  ;; Parse out the mailcap file specified by FNAME
+  (let (major                          ; The major mime type (image/audio/etc)
+       minor                           ; The minor mime type (gif, basic, etc)
+       save-pos                        ; Misc saved positions used in parsing
+       viewer                          ; How to view this mime type
+       info                            ; Misc info about this mime type
+       )
+    (save-excursion
+      (set-buffer (get-buffer-create " *mailcap*"))
+      (erase-buffer)
+      (insert-file-contents fname)
+      (set-syntax-table mm-parse-args-syntax-table)
+      (mm-replace-regexp "#.*" "")              ; Remove all comments
+      (mm-replace-regexp "\n+" "\n")         ; And blank lines
+      (mm-replace-regexp "\\\\[ \t\n]+" " ") ; And collapse spaces
+      (mm-replace-regexp (concat (regexp-quote "\\") "[ \t]*\n") "")
+      (goto-char (point-max))
+      (skip-chars-backward " \t\n")
+      (delete-region (point) (point-max))
+      (goto-char (point-min))
+      (while (not (eobp))
+       (skip-chars-forward " \t\n")
+       (setq save-pos (point)
+             info nil)
+       (skip-chars-forward "^/;")
+       (downcase-region save-pos (point))
+       (setq major (buffer-substring save-pos (point)))
+       (skip-chars-forward "/ \t\n")
+       (setq save-pos (point))
+       (skip-chars-forward "^;")
+       (downcase-region save-pos (point))
+       (setq minor
+             (cond
+              ((= ?* (or (char-after save-pos) 0)) ".*")
+              ((= (point) save-pos) ".*")
+              (t (buffer-substring save-pos (point)))))
+       (skip-chars-forward "; \t\n")
+       ;;; Got the major/minor chunks, now for the viewers/etc
+       ;;; The first item _must_ be a viewer, according to the
+       ;;; RFC for mailcap files (#1343)
+       (skip-chars-forward "; \t\n")
+       (setq save-pos (point))
+       (skip-chars-forward "^;\n")
+       (if (= (or (char-after save-pos) 0) ?')
+           (setq viewer (progn
+                          (narrow-to-region (1+ save-pos) (point))
+                          (goto-char (point-min))
+                          (prog1
+                              (read (current-buffer))
+                            (goto-char (point-max))
+                            (widen))))
+         (setq viewer (buffer-substring save-pos (point))))
+       (setq save-pos (point))
+       (end-of-line)
+       (setq info (nconc (list (cons "viewer" viewer)
+                               (cons "type" (concat major "/"
+                                                    (if (string= minor ".*")
+                                                        "*" minor))))
+                         (mm-parse-mailcap-extras save-pos (point))))
+       (mm-mailcap-entry-passes-test info)
+       (mm-add-mailcap-entry major minor info)))))
+
+(defun mm-parse-mailcap-extras (st nd)
+  ;; Grab all the extra stuff from a mailcap entry
+  (let (
+       name                            ; From name=
+       value                           ; its value
+       results                         ; Assoc list of results
+       name-pos                        ; Start of XXXX= position
+       val-pos                         ; Start of value position
+       done                            ; Found end of \'d ;s?
+       )
+    (save-restriction
+      (narrow-to-region st nd)
+      (goto-char (point-min))
+      (skip-chars-forward " \n\t;")
+      (while (not (eobp))
+       (setq done nil)
+       (skip-chars-forward " \";\n\t")
+       (setq name-pos (point))
+       (skip-chars-forward "^ \n\t=")
+       (downcase-region name-pos (point))
+       (setq name (buffer-substring name-pos (point)))
+       (skip-chars-forward " \t\n")
+       (if (/= (or (char-after (point)) 0)  ?=) ; There is no value
+           (setq value nil)
+         (skip-chars-forward " \t\n=")
+         (setq val-pos (point))
+         (if (memq (char-after val-pos) '(?\" ?'))
+             (progn
+               (setq val-pos (1+ val-pos))
+               (condition-case nil
+                   (progn
+                     (forward-sexp 1)
+                     (backward-char 1))
+                 (error (goto-char (point-max)))))
+           (while (not done)
+             (skip-chars-forward "^;")
+             (if (= (or (char-after (1- (point))) 0) ?\\ )
+                 (progn
+                   (subst-char-in-region (1- (point)) (point) ?\\ ? )
+                   (skip-chars-forward ";"))
+               (setq done t))))
+         (setq value (buffer-substring val-pos (point))))
+       (setq results (cons (cons name value) results)))
+      results)))  
+
+(defun mm-string-to-tokens (str &optional delim)
+  "Return a list of words from the string STR"
+  (setq delim (or delim ? ))
+  (let (results y)
+    (mapcar
+     (function
+      (lambda (x)
+       (cond
+        ((and (= x delim) y) (setq results (cons y results) y nil))
+        ((/= x delim) (setq y (concat y (char-to-string x))))
+        (t nil)))) str)
+    (nreverse (cons y results))))
+
+(defun mm-mailcap-entry-passes-test (info)
+  ;; Return t iff a mailcap entry passes its test clause or no test
+  ;; clause is present.
+  (let (status                         ; Call-process-regions return value
+       (test (assoc "test" info)); The test clause
+       )
+    (setq status (and test (mm-string-to-tokens (cdr test))))
+    (if (and (assoc "needsx11" info) (not (getenv "DISPLAY")))
+       (setq status nil)
+      (cond
+       ((and (equal (nth 0 status) "test")
+            (equal (nth 1 status) "-n")
+            (or (equal (nth 2 status) "$DISPLAY")
+                (equal (nth 2 status) "\"$DISPLAY\"")))
+       (setq status (if (getenv "DISPLAY") t nil)))
+       ((and (equal (nth 0 status) "test")
+            (equal (nth 1 status) "-z")
+            (or (equal (nth 2 status) "$DISPLAY")
+                (equal (nth 2 status) "\"$DISPLAY\"")))
+       (setq status (if (getenv "DISPLAY") nil t)))
+       (test nil)
+       (t nil)))
+    (and test (listp test) (setcdr test status))))
+
+(defun mm-parse-args (st &optional nd nodowncase)
+  ;; Return an assoc list of attribute/value pairs from an RFC822-type string
+  (let (
+       name                            ; From name=
+       value                           ; its value
+       results                         ; Assoc list of results
+       name-pos                        ; Start of XXXX= position
+       val-pos                         ; Start of value position
+       )
+    (save-excursion
+      (if (stringp st)
+         (progn
+           (set-buffer (get-buffer-create " *mm-temp*"))
+           (set-syntax-table mm-parse-args-syntax-table)
+           (erase-buffer)
+           (insert st)
+           (setq st (point-min)
+                 nd (point-max)))
+       (set-syntax-table mm-parse-args-syntax-table))
+      (save-restriction
+       (narrow-to-region st nd)
+       (goto-char (point-min))
+       (while (not (eobp))
+         (skip-chars-forward "; \n\t")
+         (setq name-pos (point))
+         (skip-chars-forward "^ \n\t=;")
+         (if (not nodowncase)
+             (downcase-region name-pos (point)))
+         (setq name (buffer-substring name-pos (point)))
+         (skip-chars-forward " \t\n")
+         (if (/= (or (char-after (point)) 0)  ?=) ; There is no value
+             (setq value nil)
+           (skip-chars-forward " \t\n=")
+           (setq val-pos (point)
+                 value
+                 (cond
+                  ((or (= (or (char-after val-pos) 0) ?\")
+                       (= (or (char-after val-pos) 0) ?'))
+                   (buffer-substring (1+ val-pos)
+                                     (condition-case ()
+                                         (prog2
+                                             (forward-sexp 1)
+                                             (1- (point))
+                                           (skip-chars-forward "\""))
+                                       (error
+                                        (skip-chars-forward "^ \t\n")
+                                        (point)))))
+                  (t
+                   (buffer-substring val-pos
+                                     (progn
+                                       (skip-chars-forward "^;")
+                                       (skip-chars-backward " \t")
+                                       (point)))))))
+         (setq results (cons (cons name value) results))
+         (skip-chars-forward "; \n\t"))
+       results))))
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; The action routines.
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(defun mm-possible-viewers (major minor)
+  ;; Return a list of possible viewers from MAJOR for minor type MINOR
+  (let ((exact '())
+       (wildcard '()))
+    (while major
+      (cond
+       ((equal (car (car major)) minor)
+       (setq exact (cons (cdr (car major)) exact)))
+       ((string-match (car (car major)) minor)
+       (setq wildcard (cons (cdr (car major)) wildcard))))
+      (setq major (cdr major)))
+    (nconc (nreverse exact) (nreverse wildcard))))
+
+(defun mm-unescape-mime-test (test type-info)
+  (let ((buff (get-buffer-create " *unescape*"))
+       save-pos save-chr subst)
+    (cond
+     ((symbolp test) test)
+     ((and (listp test) (symbolp (car test))) test)
+     ((or (stringp test)
+         (and (listp test) (stringp (car test))
+              (setq test (mapconcat 'identity test " "))))
+      (save-excursion
+       (set-buffer buff)
+       (erase-buffer)
+       (insert test)
+       (goto-char (point-min))
+       (while (not (eobp))
+         (skip-chars-forward "^%")
+         (if (/= (- (point)
+                    (progn (skip-chars-backward "\\\\")
+                           (point)))
+                 0) ; It is an escaped %
+             (progn
+               (delete-char 1)
+               (skip-chars-forward "%."))
+           (setq save-pos (point))
+           (skip-chars-forward "%")
+           (setq save-chr (char-after (point)))
+           (cond
+            ((null save-chr) nil)
+            ((= save-chr ?t)
+             (delete-region save-pos (progn (forward-char 1) (point)))
+             (insert (or (cdr (assoc "type" type-info)) "\"\"")))
+            ((= save-chr ?M)
+             (delete-region save-pos (progn (forward-char 1) (point)))
+             (insert "\"\""))
+            ((= save-chr ?n)
+             (delete-region save-pos (progn (forward-char 1) (point)))
+             (insert "\"\""))
+            ((= save-chr ?F)
+             (delete-region save-pos (progn (forward-char 1) (point)))
+             (insert "\"\""))
+            ((= save-chr ?{)
+             (forward-char 1)
+             (skip-chars-forward "^}")
+             (downcase-region (+ 2 save-pos) (point))
+             (setq subst (buffer-substring (+ 2 save-pos) (point)))
+             (delete-region save-pos (1+ (point)))
+             (insert (or (cdr (assoc subst type-info)) "\"\"")))
+            (t nil))))
+       (buffer-string)))
+     (t (error "Bad value to mm-unescape-mime-test. %s" test)))))
+
+(defun mm-viewer-passes-test (viewer-info type-info)
+  ;; Return non-nil iff the viewer specified by VIEWER-INFO passes its
+  ;; test clause (if any).
+  (let* ((test-info   (assoc "test"   viewer-info))
+        (test (cdr test-info))
+        (viewer (cdr (assoc "viewer" viewer-info)))
+        (default-directory (expand-file-name "~/"))
+        status
+        parsed-test
+       )
+    (cond
+     ((not test-info) t)               ; No test clause
+     ((not test) nil)                  ; Already failed test
+     ((eq test t) t)                   ; Already passed test
+     ((and (symbolp test)              ; Lisp function as test
+          (fboundp test))
+      (funcall test type-info))
+     ((and (symbolp test)              ; Lisp variable as test
+          (boundp test))
+      (symbol-value test))
+     ((and (listp test)                        ; List to be eval'd
+          (symbolp (car test)))
+      (eval test))
+     (t
+      (setq test (mm-unescape-mime-test test type-info)
+           test (list shell-file-name nil nil nil shell-command-switch test)
+           status (apply 'call-process test))
+      (= 0 status)))))
+
+(defun mm-add-mailcap-entry (major minor info)
+  (let ((old-major (assoc major mm-mime-data)))
+    (if (null old-major)               ; New major area
+       (setq mm-mime-data
+             (cons (cons major (list (cons minor info)))
+                   mm-mime-data))
+      (let ((cur-minor (assoc minor old-major)))
+       (cond
+        ((or (null cur-minor)          ; New minor area, or
+             (assoc "test" info))      ; Has a test, insert at beginning
+         (setcdr old-major (cons (cons minor info) (cdr old-major))))
+        ((and (not (assoc "test" info)); No test info, replace completely
+              (not (assoc "test" cur-minor)))
+         (setcdr cur-minor info))
+        (t
+         (setcdr old-major (cons (cons minor info) (cdr old-major)))))))))
+
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; The main whabbo
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(defun mm-viewer-lessp (x y)
+  ;; Return t iff viewer X is more desirable than viewer Y
+  (let ((x-wild (string-match "[*?]" (or (cdr-safe (assoc "type" x)) "")))
+       (y-wild (string-match "[*?]" (or (cdr-safe (assoc "type" y)) "")))
+       (x-lisp (not (stringp (or (cdr-safe (assoc "viewer" x)) ""))))
+       (y-lisp (not (stringp (or (cdr-safe (assoc "viewer" y)) "")))))
+    (cond
+     ((and x-lisp (not y-lisp))
+      t)
+     ((and (not y-lisp) x-wild (not y-wild))
+      t)
+     ((and (not x-wild) y-wild)
+      t)
+     (t nil))))
+
+(defun mm-mime-info (st &optional nd request)
+  "Get the mime viewer command for HEADERLINE, return nil if none found.
+Expects a complete content-type header line as its argument.  This can
+be simple like text/html, or complex like text/plain; charset=blah; foo=bar
+
+Third argument REQUEST specifies what information to return.  If it is
+nil or the empty string, the viewer (second field of the mailcap
+entry) will be returned.  If it is a string, then the mailcap field
+corresponding to that string will be returned (print, description,
+whatever).  If a number, then all the information for this specific
+viewer is returned."
+  (let (
+       major                           ; Major encoding (text, etc)
+       minor                           ; Minor encoding (html, etc)
+       info                            ; Other info
+       save-pos                        ; Misc. position during parse
+       major-info                      ; (assoc major mm-mime-data)
+       minor-info                      ; (assoc minor major-info)
+       test                            ; current test proc.
+       viewers                         ; Possible viewers
+       passed                          ; Viewers that passed the test
+       viewer                          ; The one and only viewer
+       )
+    (save-excursion
+      (cond
+       ((null st)
+       (set-buffer (get-buffer-create " *mimeparse*"))
+       (erase-buffer)
+       (insert "text/plain")
+       (setq st (point-min)))
+       ((stringp st)
+       (set-buffer (get-buffer-create " *mimeparse*"))
+       (erase-buffer)
+       (insert st)
+       (setq st (point-min)))
+       ((null nd)
+       (narrow-to-region st (progn (goto-char st) (end-of-line) (point))))
+       (t (narrow-to-region st nd)))
+      (goto-char st)
+      (skip-chars-forward ": \t\n")
+      (buffer-enable-undo)
+      (setq viewer
+           (catch 'mm-exit
+             (setq save-pos (point))
+             (skip-chars-forward "^/")
+             (downcase-region save-pos (point))
+             (setq major (buffer-substring save-pos (point)))
+             (if (not (setq major-info (cdr (assoc major mm-mime-data))))
+                 (throw 'mm-exit nil))
+             (skip-chars-forward "/ \t\n")
+             (setq save-pos (point))
+             (skip-chars-forward "^ \t\n;")
+             (downcase-region save-pos (point))
+             (setq minor (buffer-substring save-pos (point)))
+             (if (not
+                  (setq viewers (mm-possible-viewers major-info minor)))
+                 (throw 'mm-exit nil))
+             (skip-chars-forward "; \t")
+             (if (eolp)
+                 nil                           ; No qualifiers
+               (setq save-pos (point))
+               (end-of-line)
+               (setq info (mm-parse-args save-pos (point)))
+               )
+             (while viewers
+               (if (mm-viewer-passes-test (car viewers) info)
+                   (setq passed (cons (car viewers) passed)))
+               (setq viewers (cdr viewers)))
+             (setq passed (sort (nreverse passed) 'mm-viewer-lessp))
+             (car passed)))
+      (if (and (stringp (cdr (assoc "viewer" viewer)))
+              passed)
+         (setq viewer (car passed)))
+      (widen)
+      (cond
+       ((and (null viewer) (not (equal major "default")))
+       (mm-mime-info "default" nil request))
+       ((or (null request) (equal request ""))
+       (mm-unescape-mime-test (cdr (assoc "viewer" viewer)) info))
+       ((stringp request)
+       (if (or (string= request "test") (string= request "viewer"))
+           (mm-unescape-mime-test (cdr-safe (assoc request viewer)) info)))
+       (t
+       ;; MUST make a copy *sigh*, else we modify mm-mime-data
+       (setq viewer (mm-copy-tree viewer))
+       (let ((view (assoc "viewer" viewer))
+             (test (assoc "test" viewer)))
+         (if view (setcdr view (mm-unescape-mime-test (cdr view) info)))
+         (if test (setcdr test (mm-unescape-mime-test (cdr test) info))))
+       viewer)))))
+
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Experimental MIME-types parsing
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(defvar mm-mime-extensions
+  '(
+    (""          . "text/plain")
+    (".abs"      . "audio/x-mpeg")
+    (".aif"      . "audio/aiff")
+    (".aifc"     . "audio/aiff")
+    (".aiff"     . "audio/aiff")
+    (".ano"      . "application/x-annotator")
+    (".au"       . "audio/ulaw")
+    (".avi"      . "video/x-msvideo")
+    (".bcpio"    . "application/x-bcpio")
+    (".bin"      . "application/octet-stream")
+    (".cdf"      . "application/x-netcdr")
+    (".cpio"     . "application/x-cpio")
+    (".csh"      . "application/x-csh")
+    (".dvi"      . "application/x-dvi")
+    (".el"       . "application/emacs-lisp")
+    (".eps"      . "application/postscript")
+    (".etx"      . "text/x-setext")
+    (".exe"      . "application/octet-stream")
+    (".fax"      . "image/x-fax")
+    (".gif"      . "image/gif")
+    (".hdf"      . "application/x-hdf")
+    (".hqx"      . "application/mac-binhex40")
+    (".htm"      . "text/html")
+    (".html"     . "text/html")
+    (".icon"     . "image/x-icon")
+    (".ief"      . "image/ief")
+    (".jpg"      . "image/jpeg")
+    (".macp"     . "image/x-macpaint")
+    (".man"      . "application/x-troff-man")
+    (".me"       . "application/x-troff-me")
+    (".mif"      . "application/mif")
+    (".mov"      . "video/quicktime")
+    (".movie"    . "video/x-sgi-movie")
+    (".mp2"      . "audio/x-mpeg")
+    (".mp2a"     . "audio/x-mpeg2")
+    (".mpa"      . "audio/x-mpeg")
+    (".mpa2"     . "audio/x-mpeg2")
+    (".mpe"      . "video/mpeg")
+    (".mpeg"     . "video/mpeg")
+    (".mpega"    . "audio/x-mpeg")
+    (".mpegv"    . "video/mpeg")
+    (".mpg"      . "video/mpeg")
+    (".mpv"      . "video/mpeg")
+    (".ms"       . "application/x-troff-ms")
+    (".nc"       . "application/x-netcdf")
+    (".nc"       . "application/x-netcdf")
+    (".oda"      . "application/oda")
+    (".pbm"      . "image/x-portable-bitmap")
+    (".pdf"      . "application/pdf")
+    (".pgm"      . "image/portable-graymap")
+    (".pict"     . "image/pict")
+    (".png"      . "image/png")
+    (".pnm"      . "image/x-portable-anymap")
+    (".ppm"      . "image/portable-pixmap")
+    (".ps"       . "application/postscript")
+    (".qt"       . "video/quicktime")
+    (".ras"      . "image/x-raster")
+    (".rgb"      . "image/x-rgb")
+    (".rtf"      . "application/rtf")
+    (".rtx"      . "text/richtext")
+    (".sh"       . "application/x-sh")
+    (".sit"      . "application/x-stuffit")
+    (".snd"      . "audio/basic")
+    (".src"      . "application/x-wais-source")
+    (".tar"      . "archive/tar")
+    (".tcl"      . "application/x-tcl")
+    (".tcl"      . "application/x-tcl")
+    (".tex"      . "application/x-tex")
+    (".texi"     . "application/texinfo")
+    (".tga"      . "image/x-targa")
+    (".tif"      . "image/tiff")
+    (".tiff"     . "image/tiff")
+    (".tr"       . "application/x-troff")
+    (".troff"    . "application/x-troff")
+    (".tsv"      . "text/tab-separated-values")
+    (".txt"      . "text/plain")
+    (".vbs"      . "video/mpeg")
+    (".vox"      . "audio/basic")
+    (".vrml"     . "x-world/x-vrml")
+    (".wav"      . "audio/x-wav")
+    (".wrl"      . "x-world/x-vrml")
+    (".xbm"      . "image/xbm")
+    (".xpm"      . "image/x-pixmap")
+    (".xwd"      . "image/windowdump")
+    (".zip"      . "application/zip")
+    (".ai"       . "application/postscript")
+    (".jpe"      . "image/jpeg")
+    (".jpeg"     . "image/jpeg")
+    )
+  "*An assoc list of file extensions and the MIME content-types they
+correspond to.")
+
+(defun mm-parse-mimetypes (&optional path)
+  ;; Parse out all the mimetypes specified in a unix-style path string PATH
+  (cond
+   (path nil)
+   ((getenv "MIMETYPES") (setq path (getenv "MIMETYPES")))
+   ((memq system-type '(ms-dos ms-windows windows-nt))
+    (setq path (mapconcat 'expand-file-name
+                         '("~/mime.typ" "~/etc/mime.typ") ";")))
+   (t (setq path (mapconcat 'expand-file-name
+                           '("~/.mime-types"
+                             "/etc/mime-types:/usr/etc/mime-types"
+                             "/usr/local/etc/mime-types"
+                             "/usr/local/www/conf/mime-types") ":"))))
+  (let ((fnames (reverse
+                (mm-string-to-tokens path
+                                     (if (memq system-type
+                                               '(ms-dos ms-windows windows-nt))
+                                         ?;
+                                       ?:))))
+       fname)
+    (while fnames
+      (setq fname (car fnames))
+      (if (and (file-exists-p fname) (file-readable-p fname))
+         (mm-parse-mimetype-file (car fnames)))
+      (setq fnames (cdr fnames)))))
+
+(defun mm-parse-mimetype-file (fname)
+  ;; Parse out a mime-types file
+  (let (type                           ; The MIME type for this line
+       extns                           ; The extensions for this line
+       save-pos                        ; Misc. saved buffer positions
+       )
+    (save-excursion
+      (set-buffer (get-buffer-create " *mime-types*"))
+      (erase-buffer)
+      (insert-file-contents fname)
+      (mm-replace-regexp "#.*" "")
+      (mm-replace-regexp "\n+" "\n")
+      (mm-replace-regexp "[ \t]+$" "")
+      (goto-char (point-max))
+      (skip-chars-backward " \t\n")
+      (delete-region (point) (point-max))
+      (goto-char (point-min))
+      (while (not (eobp))
+       (skip-chars-forward " \t\n")
+       (setq save-pos (point))
+       (skip-chars-forward "^ \t")
+       (downcase-region save-pos (point))
+       (setq type (buffer-substring save-pos (point)))
+       (while (not (eolp))
+         (skip-chars-forward " \t")
+         (setq save-pos (point))
+         (skip-chars-forward "^ \t\n")
+         (setq extns (cons (buffer-substring save-pos (point)) extns)))
+       (while extns
+         (setq mm-mime-extensions
+               (cons
+                (cons (if (= (string-to-char (car extns)) ?.)
+                          (car extns)
+                        (concat "." (car extns))) type) mm-mime-extensions)
+               extns (cdr extns)))))))
+
+(defun mm-extension-to-mime (extn)
+  "Return the MIME content type of the file extensions EXTN"
+  (if (and (stringp extn)
+          (not (eq (string-to-char extn) ?.)))
+      (setq extn (concat "." extn)))
+  (cdr (assoc (downcase extn) mm-mime-extensions)))
+
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Editing/Composition of body parts
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(defun mm-compose-type (type)
+  ;; Compose a body section of MIME-type TYPE.
+  (let* ((info (mm-mime-info type nil 5))
+        (fnam (mm-generate-unique-filename))
+        (comp (or (cdr (assoc "compose" info))))
+        (ctyp (cdr (assoc "composetyped" info)))
+        (buff (get-buffer-create " *mimecompose*"))
+        (typeit (not ctyp))
+        (retval "")
+        (usef nil))
+    (setq comp (mm-unescape-mime-test (or comp ctyp) info))
+    (while (string-match "\\([^\\\\]\\)%s" comp)
+      (setq comp (concat (substring comp 0 (match-end 1)) fnam
+                        (substring comp (match-end 0) nil))
+           usef t))
+    (call-process shell-file-name nil
+                 (if usef nil buff)
+                 nil shell-command-switch comp)
+    (setq retval
+         (concat
+          (if typeit (concat "Content-type: " type "\r\n\r\n") "")
+          (if usef
+              (save-excursion
+                (set-buffer buff)
+                (erase-buffer)
+                (insert-file-contents fnam)
+                (buffer-string))
+            (save-excursion
+              (set-buffer buff)
+              (buffer-string)))
+          "\r\n"))
+    retval))   
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Misc.
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(defun mm-type-to-file (type)
+  "Return the file extension for content-type TYPE"
+  (rassoc type mm-mime-extensions))
+
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Miscellaneous MIME viewers written in elisp
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(defun mm-play-sound-file (&optional buff)
+  "Play a sound file in buffer BUFF (defaults to current buffer)"
+  (setq buff (or buff (current-buffer)))
+  (let ((fname (mm-generate-unique-filename "%s.au"))
+       (synchronous-sounds t))         ; Play synchronously
+    (mule-write-region-no-coding-system (point-min) (point-max) fname)
+    (kill-buffer (current-buffer))
+    (play-sound-file fname)
+    (condition-case ()
+       (delete-file fname)
+      (error nil))))
+    
+(defun mm-parse-mime-headers (&optional no-delete)
+  "Return a list of the MIME headers at the top of this buffer.  If
+optional argument NO-DELETE is non-nil, don't delete the headers."
+  (let* ((st (point-min))
+        (nd (progn
+              (goto-char (point-min))
+              (skip-chars-forward " \t\n")
+              (if (re-search-forward "^\r*$" nil t)
+                  (1+ (point))
+                (point-max))))
+        save-pos
+        status
+        hname
+        hvalu
+        result
+        search
+        )
+    (narrow-to-region st (min nd (point-max)))
+    (goto-char (point-min))
+    (while (not (eobp))
+      (skip-chars-forward " \t\n\r")
+      (setq save-pos (point))
+      (skip-chars-forward "^:\n\r")
+      (downcase-region save-pos (point))
+      (setq hname (buffer-substring save-pos (point)))
+      (skip-chars-forward ": \t ")
+      (setq save-pos (point))
+      (skip-chars-forward "^\n\r")
+      (setq search t)
+      (while search
+       (skip-chars-forward "^\n\r")
+       (save-excursion
+         (skip-chars-forward "\n\r")
+         
+         (setq search
+               (string-match "[ \t]"
+                             (char-to-string
+                              (or (char-after (point)) ?a)))))
+       (if search
+           (skip-chars-forward "\n\r")))
+      (setq hvalu (buffer-substring save-pos (point))
+           result (cons (cons hname hvalu) result)))
+    (or no-delete (delete-region st nd))
+    result))
+
+(defun mm-find-available-multiparts (separator &optional buf)
+  "Return a list of mime-headers for the various body parts of a 
+multipart message in buffer BUF with separator SEPARATOR.
+The different multipart specs are put in `mm-temporary-directory'."
+  (let ((sep (concat "^--" separator "\r*$"))
+       headers
+       fname
+       results)
+    (save-excursion
+      (and buf (set-buffer buf))
+      (goto-char (point-min))
+      (while (re-search-forward sep nil t)
+       (let ((st (set-marker (make-marker)
+                             (progn
+                               (forward-line 1)
+                               (beginning-of-line)
+                               (point))))
+             (nd (set-marker (make-marker)
+                             (if (re-search-forward sep nil t)
+                                 (1- (match-beginning 0))
+                               (point-max)))))
+         (narrow-to-region st nd)
+         (goto-char st)
+         (if (looking-at "^\r*$")
+             (insert "Content-type: text/plain\n"
+                     "Content-length: " (int-to-string (- nd st)) "\n"))
+         (setq headers (mm-parse-mime-headers)
+               fname (mm-generate-unique-filename))
+         (let ((x (or (cdr (assoc "content-type" headers)) "text/plain")))
+           (if (string-match "name=\"*\\([^ \"]+\\)\"*" x)
+               (setq fname (expand-file-name
+                            (substring x (match-beginning 1)
+                                       (match-end 1))
+                            mm-temporary-directory))))
+         (widen)
+         (if (assoc "content-transfer-encoding" headers)
+             (let ((coding (cdr
+                            (assoc "content-transfer-encoding" headers)))
+                   (cmd nil))
+               (setq coding (and coding (downcase coding))
+                     cmd (or (cdr (assoc coding
+                                         mm-content-transfer-encodings))
+                             (read-string
+                              (concat "How shall I decode " coding "? ")
+                              "cat")))
+               (if (string= cmd "") (setq cmd "cat"))
+               (if (stringp cmd)
+                   (shell-command-on-region st nd cmd t)
+                 (funcall cmd st nd))
+               (or (eq cmd 'ignore) (set-marker nd (point)))))
+         (write-region st nd fname nil 5)
+         (delete-region st nd)
+         (setq results (cons
+                        (cons
+                         (cons "mm-filename" fname) headers) results)))))
+    results))
+
+(defun mm-format-multipart-as-html (&optional buf type)
+  (if buf (set-buffer buf))
+  (let* ((boundary (if (string-match
+                       "boundary[ \t]*=[ \t\"]*\\([^ \"\t\n]+\\)"
+                       type)
+                      (regexp-quote
+                       (substring type (match-beginning 1) (match-end 1)))))
+        (parts    (mm-find-available-multiparts boundary)))
+    (erase-buffer)
+    (insert "<html>\n"
+           " <head>\n"
+           "  <title>Multipart Message</title>\n"
+           " </head>\n"
+           " <body>\n"
+           "   <h1> Multipart message encountered </h1>\n"
+           "   <p> I have encountered a multipart MIME message.\n"
+           "       The following parts have been detected.  Please\n"
+           "       select which one you want to view.\n"
+           "   </p>\n"
+           "   <ul>\n"
+           (mapconcat 
+            (function (lambda (x)
+                        (concat "    <li> <a href=\"file:"
+                                (cdr (assoc "mm-filename" x))
+                                "\">"
+                                (or (cdr (assoc "content-description" x)) "")
+                                "--"
+                                (or (cdr (assoc "content-type" x))
+                                    "unknown type")
+                                "</a> </li>")))
+            parts "\n")
+           "   </ul>\n"
+           " </body>\n"
+           "</html>\n"
+           "<!-- Automatically generated by MM v" mm-version "-->\n")))
+
+(defun mm-multipart-viewer ()
+  (mm-format-multipart-as-html
+   (current-buffer)
+   (cdr (assoc "content-type" url-current-mime-headers)))
+  (let ((w3-working-buffer (current-buffer)))
+    (w3-prepare-buffer)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Transfer encodings we can decrypt automatically
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(defun mm-decode-quoted-printable (&optional st nd)
+  (interactive)
+  (setq st (or st (point-min))
+       nd (or nd (point-max)))
+  (save-restriction
+    (narrow-to-region st nd)
+    (save-excursion
+      (let ((buffer-read-only nil))
+       (goto-char (point-min))
+       (while (re-search-forward "=[0-9A-F][0-9A-F]" nil t)
+         (replace-match 
+          (char-to-string 
+           (+
+            (* 16 (mm-hex-char-to-integer 
+                   (char-after (1+ (match-beginning 0)))))
+            (mm-hex-char-to-integer
+             (char-after (1- (match-end 0))))))))))
+    (goto-char (point-max))))
+
+;; Taken from hexl.el.
+(defun mm-hex-char-to-integer (character)
+  "Take a char and return its value as if it was a hex digit."
+  (if (and (>= character ?0) (<= character ?9))
+      (- character ?0)
+    (let ((ch (logior character 32)))
+      (if (and (>= ch ?a) (<= ch ?f))
+         (- ch (- ?a 10))
+       (error (format "Invalid hex digit `%c'." ch))))))
+
+
+\f
+(require 'base64)
+(provide 'mm)
index f7182a5..39c6e28 100644 (file)
   (let ((gnus-verbose-backends nil)
        (buf (current-buffer))
         article file)
-    (nnheader-temp-write nil
+    (with-temp-buffer
       (insert-buffer buf)
       (setq article (nndraft-request-accept-article
                     group (nnoo-current-server 'nndraft) t 'noinsert))
index 7da5466..6aaa529 100644 (file)
@@ -68,8 +68,6 @@ If this variable is nil, no files will be excluded.")
 
 \f
 
-(autoload 'gnus-encode-coding-string "gnus-ems")
-
 ;;; Interface functions.
 
 (nnoo-define-basics nneething)
@@ -243,7 +241,7 @@ If this variable is nil, no files will be excluded.")
        (setq files (cdr files)))
       (when (and touched
                 (not nneething-read-only))
-       (nnheader-temp-write map-file
+       (with-temp-file map-file
          (insert "(setq nneething-map '")
          (gnus-prin1 nneething-map)
          (insert ")\n(setq nneething-active '")
index db9666b..5efb0db 100644 (file)
@@ -797,7 +797,8 @@ deleted.  Point is left where the deleted region was."
 
 (defun nnfolder-group-pathname (group)
   "Make pathname for GROUP."
-  (setq group (gnus-encode-coding-string group nnmail-pathname-coding-system))
+  (setq group
+       (nnheader-encode-coding-string group nnmail-pathname-coding-system))
   (let ((dir (file-name-as-directory (expand-file-name nnfolder-directory))))
     ;; If this file exists, we use it directly.
     (if (or nnmail-use-long-file-names
index 2139885..41dc00a 100644 (file)
@@ -54,7 +54,7 @@ parameter -- the gateway address.")
            (nngateway-open-server server))
     ;; Rewrite the header.
     (let ((buf (current-buffer)))
-      (nnheader-temp-write nil
+      (with-temp-buffer
        (insert-buffer-substring buf)
        (message-narrow-to-head)
        (funcall nngateway-header-transformation nngateway-address)
index e0de0a4..bbeba0f 100644 (file)
@@ -61,8 +61,7 @@ on your system, you could say something like:
  (autoload 'cancel-function-timers "timers")
  (autoload 'gnus-point-at-eol "gnus-util")
  (autoload 'gnus-delete-line "gnus-util")
- (autoload 'gnus-buffer-live-p "gnus-util")
- (autoload 'gnus-encode-coding-string "gnus-ems"))
+ (autoload 'gnus-buffer-live-p "gnus-util"))
 
 ;;; Header access macros.
 
@@ -499,52 +498,6 @@ the line could be found."
     (erase-buffer))
   (current-buffer))
 
-(defmacro nnheader-temp-write (file &rest forms)
-  "Create a new buffer, evaluate FORMS there, and write the buffer to FILE.
-Return the value of FORMS.
-If FILE is nil, just evaluate FORMS and don't save anything.
-If FILE is t, return the buffer contents as a string."
-  (let ((temp-file (make-symbol "temp-file"))
-       (temp-buffer (make-symbol "temp-buffer"))
-       (temp-results (make-symbol "temp-results")))
-    `(save-excursion
-       (let* ((,temp-file ,file)
-             (default-major-mode 'fundamental-mode)
-             (,temp-buffer
-              (set-buffer
-               (get-buffer-create
-                (generate-new-buffer-name " *nnheader temp*"))))
-             ,temp-results)
-        (unwind-protect
-            (progn
-              (setq ,temp-results (progn ,@forms))
-              (cond
-               ;; Don't save anything.
-               ((null ,temp-file)
-                ,temp-results)
-               ;; Return the buffer contents.
-               ((eq ,temp-file t)
-                (set-buffer ,temp-buffer)
-                (buffer-string))
-               ;; Save a file.
-               (t
-                (set-buffer ,temp-buffer)
-                ;; Make sure the directory where this file is
-                ;; to be saved exists.
-                (when (not (file-directory-p
-                            (file-name-directory ,temp-file)))
-                  (make-directory (file-name-directory ,temp-file) t))
-                ;; Save the file.
-                (write-region (point-min) (point-max)
-                              ,temp-file nil 'nomesg)
-                ,temp-results)))
-          ;; Kill the buffer.
-          (when (buffer-name ,temp-buffer)
-            (kill-buffer ,temp-buffer)))))))
-
-(put 'nnheader-temp-write 'lisp-indent-function 1)
-(put 'nnheader-temp-write 'edebug-form-spec '(form body))
-
 (defvar jka-compr-compression-info-list)
 (defvar nnheader-numerical-files
   (if (boundp 'jka-compr-compression-info-list)
@@ -701,7 +654,7 @@ without formatting."
         (concat dir group "/")
        ;; If not, we translate dots into slashes.
        (concat dir
-              (gnus-encode-coding-string
+              (nnheader-encode-coding-string
                (nnheader-replace-chars-in-string group ?. ?/)
                nnheader-pathname-coding-system)
               "/")))
@@ -857,6 +810,14 @@ find-file-hooks, etc.
 (fset 'nnheader-cancel-timer 'cancel-timer)
 (fset 'nnheader-cancel-function-timers 'cancel-function-timers)
 
+(if (fboundp 'encode-coding-string)
+    (fset 'nnheader-encode-coding-string 'encode-coding-string)
+  (fset 'nnheader-encode-coding-string (lambda (s a) s)))
+
+(if (fboundp 'decode-coding-string)
+    (fset 'nnheader-decode-coding-string 'decode-coding-string)
+  (fset 'nnheader-decode-coding-string (lambda (s a) s)))
+
 (when (string-match "XEmacs\\|Lucid" emacs-version)
   (require 'nnheaderxm))
 
index c47a10d..b3e8f7d 100644 (file)
   ;; Remove NOV lines of articles that are marked as read.
   (when (and (file-exists-p (nnkiboze-nov-file-name))
             nnkiboze-remove-read-articles)
-    (nnheader-temp-write (nnkiboze-nov-file-name)
+    (with-temp-file (nnkiboze-nov-file-name)
       (let ((cur (current-buffer)))
        (nnheader-insert-file-contents (nnkiboze-nov-file-name))
        (goto-char (point-min))
@@ -230,7 +230,7 @@ Finds out what articles are to be part of the nnkiboze groups."
     ;; Load the kiboze newsrc file for this group.
     (when (file-exists-p newsrc-file)
       (load newsrc-file))
-    (nnheader-temp-write nov-file
+    (with-temp-file nov-file
       (when (file-exists-p nov-file)
        (insert-file-contents nov-file))
       (setq nov-buffer (current-buffer))
@@ -318,7 +318,7 @@ Finds out what articles are to be part of the nnkiboze groups."
        (gnus-message 3 "nnkiboze: Checking %s...done" (caar newsrc))
        (setq newsrc (cdr newsrc))))
     ;; We save the kiboze newsrc for this group.
-    (nnheader-temp-write newsrc-file
+    (with-temp-file newsrc-file
       (insert "(setq nnkiboze-newsrc '")
       (gnus-prin1 nnkiboze-newsrc)
       (insert ")\n")))
index bc8d1f5..3124586 100644 (file)
@@ -35,8 +35,7 @@
 
 (eval-and-compile
   (autoload 'gnus-error "gnus-util")
-  (autoload 'gnus-buffer-live-p "gnus-util")
-  (autoload 'gnus-encode-coding-string "gnus-ems"))
+  (autoload 'gnus-buffer-live-p "gnus-util"))
 
 (defgroup nnmail nil
   "Reading mail with Gnus."
@@ -514,7 +513,7 @@ parameter.  It should return nil, `warn' or `delete'."
         (concat dir group "/")
        ;; If not, we translate dots into slashes.
        (concat dir
-              (gnus-encode-coding-string
+              (nnheader-encode-coding-string
                (nnheader-replace-chars-in-string group ?. ?/)
                nnmail-pathname-coding-system)
               "/")))
@@ -705,7 +704,7 @@ nn*-request-list should have been called before calling this function."
   "Save GROUP-ASSOC in ACTIVE-FILE."
   (let ((coding-system-for-write nnmail-active-file-coding-system))
     (when file-name
-      (nnheader-temp-write file-name
+      (with-temp-file file-name
        (nnmail-generate-active group-assoc)))))
 
 (defun nnmail-generate-active (alist)
@@ -1202,8 +1201,9 @@ Return the number of characters in the body."
       (insert (format "Xref: %s" (system-name)))
       (while group-alist
        (insert (format " %s:%d"
-                       (gnus-encode-coding-string (caar group-alist)
-                                             nnmail-pathname-coding-system)
+                       (nnheader-encode-coding-string
+                        (caar group-alist)
+                        nnmail-pathname-coding-system)
                        (cdar group-alist)))
        (setq group-alist (cdr group-alist)))
       (insert "\n"))))
index 8aafd7d..a393ebb 100644 (file)
                                (expand-file-name nnmh-toplev))))
               dir)
              (nnheader-replace-chars-in-string
-              (gnus-decode-coding-string (substring dir (match-end 0))
-                                         nnmail-pathname-coding-system)
+              (nnheader-decode-coding-string (substring dir (match-end 0))
+                                             nnmail-pathname-coding-system)
               ?/ ?.))
            (apply 'max files)
            (apply 'min files)))))))
     (setq articles (sort articles (lambda (art1 art2)
                                    (> (car art1) (car art2)))))
     ;; Finally write this list back to the .nnmh-articles file.
-    (nnheader-temp-write nnmh-file
+    (with-temp-file nnmh-file
       (insert ";; Gnus article active file for " group "\n\n")
       (insert "(setq nnmh-newsgroup-articles '")
       (gnus-prin1 articles)
index e7a1df9..f4da479 100644 (file)
@@ -469,7 +469,7 @@ all.  This may very well take some time.")
      ((not (file-exists-p file))
       (nnheader-report 'nnml "File %s does not exist" file))
      (t
-      (nnheader-temp-write file
+      (with-temp-file file
        (nnheader-insert-file-contents file)
        (nnmail-replace-status name value))
       t))))
index e764150..4ccb28c 100644 (file)
@@ -376,7 +376,7 @@ backend for the messages.")
             (or force
                 nnsoup-group-alist-touched))
     (setq nnsoup-group-alist-touched nil)
-    (nnheader-temp-write nnsoup-active-file
+    (with-temp-file nnsoup-active-file
       (gnus-prin1 `(setq nnsoup-group-alist ',nnsoup-group-alist))
       (insert "\n")
       (gnus-prin1 `(setq nnsoup-current-prefix ,nnsoup-current-prefix))
index 487c72d..863b655 100644 (file)
@@ -796,7 +796,7 @@ If SEND-IF-FORCE, only send authinfo to the server if the
 The authinfo login name is taken from the user's login name and the
 password contained in '~/.nntp-authinfo'."
   (when (file-exists-p "~/.nntp-authinfo")
-    (nnheader-temp-write nil
+    (with-temp-buffer
       (insert-file-contents "~/.nntp-authinfo")
       (goto-char (point-min))
       (nntp-send-command "^3.*\r?\n" "AUTHINFO USER" (user-login-name))
index 5a673cd..96784c2 100644 (file)
@@ -219,7 +219,7 @@ and `altavista'.")
 (defun nnweb-read-overview (group)
   "Read the overview of GROUP and build the map."
   (when (file-exists-p (nnweb-overview-file group))
-    (nnheader-temp-write nil
+    (with-temp-buffer
       (nnheader-insert-file-contents (nnweb-overview-file group))
       (goto-char (point-min))
       (let (header)
@@ -233,7 +233,7 @@ and `altavista'.")
 
 (defun nnweb-write-overview (group)
   "Write the overview file for GROUP."
-  (nnheader-temp-write (nnweb-overview-file group)
+  (with-temp-file (nnweb-overview-file group)
     (let ((articles nnweb-articles))
       (while articles
        (nnheader-insert-nov (cadr (pop articles)))))))
@@ -254,7 +254,7 @@ and `altavista'.")
 
 (defun nnweb-write-active ()
   "Save the active file."
-  (nnheader-temp-write (nnheader-concat nnweb-directory "active")
+  (with-temp-file (nnheader-concat nnweb-directory "active")
     (prin1 `(setq nnweb-group-alist ',nnweb-group-alist) (current-buffer))))
 
 (defun nnweb-read-active ()
diff --git a/lisp/qp.el b/lisp/qp.el
new file mode 100644 (file)
index 0000000..1ef4a77
--- /dev/null
@@ -0,0 +1,90 @@
+;;; qp.el --- Quoted-printable functions
+;; Copyright (C) 1998 Free Software Foundation, Inc.
+
+;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;;; Code:
+
+(defvar quoted-printable-encoding-characters
+  (mapcar 'identity "0123456789ABCDEF"))
+
+(defun quoted-printable-decode-region (from to)
+  "Decode quoted-printable in the region between FROM and TO."
+  (interactive "r")
+  (save-excursion
+    (goto-char from)
+    (while (search-forward "=" to t)
+      (cond ((eq (following-char) ?\n)
+            (delete-char -1)
+            (delete-char 1))
+           ((and
+             (memq (following-char) quoted-printable-encoding-characters)
+             (memq (char-after (1+ (point)))
+                   quoted-printable-encoding-characters))
+            (subst-char-in-region
+             (1- (point)) (point) ?=
+             (string-to-number
+              (buffer-substring (point) (+ 2 (point)))
+              16))
+            (delete-char 2))
+           ((looking-at "=")
+            (delete-char 1))
+           ((message "Malformed MIME quoted-printable message"))))))
+
+(defun quoted-printable-decode-string (string)
+ "Decode the quoted-printable-encoded STRING and return the results."
+ (with-temp-buffer
+   (insert string)
+   (quoted-printable-decode-region (point-min) (point-max))
+   (buffer-string)))
+
+(defun quoted-printable-encode-region (from to)
+  "QP-encode the region between FROM and TO."
+  (interactive "r")
+  (save-excursion
+    (save-restriction
+      (narrow-to-region from to)
+      (goto-char (point-min))
+      (while (re-search-forward "[\000-\007\013\015-\037\200-\237=]" nil t)
+       (insert
+        (prog1
+            (format "=%x" (char-after (1- (point))))
+          (delete-char -1))))
+      ;; Fold long lines.
+      (goto-char (point-min))
+      (end-of-line)
+      (while (> (current-column) 72)
+       (beginning-of-line)
+       (forward-char 72)
+       (search-backward "=" (- (point) 2) t)
+       (insert "=\n")
+       (end-of-line)))))
+
+(defun quoted-printable-encode-string (string)
+ "QP-encode STRING and return the results."
+ (with-temp-buffer
+   (insert string)
+   (quoted-printable-encode-region (point-min) (point-max))
+   (buffer-string)))
+
+(provide 'qp)
+
+;; qp.el ends here
index fd2879c..b76c05d 100644 (file)
 
        * gnus.texi (Mail Folders): Addition.
 
-1998-08-25 08:06:28  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.texi (Posting Styles): Document this-is.
-       (Virtual Groups): Addition.
-
-1998-08-18 00:30:05  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.texi (Article Hiding): Addition.
-
-1998-08-16 14:53:45  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.texi (NNTP): Reinstated.
-       (Asynchronous Fetching): No header prefetch.
-
-1998-08-15 13:01:41  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.texi (Summary Score Commands): Change.
-
-1998-08-14 01:31:36  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus.texi (Posting Styles): New 'body style.
-
-1998-08-13 21:17:00  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.texi (Paging the Article): Addition.
-
-1998-08-13 00:13:47  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus.texi (Mail Group Commands): Typo.
-
-1998-08-12 21:28:09  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus.texi (Article Caching): gnus-cacheable-groups.
-       (Newest Features): remove gnus-cacheable-groups.
-
-1998-08-12 22:01:12  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * message.texi (Forwarding): Addition.
-
-1998-08-11 20:33:53  Justin Zaglio  <justin@caxton.com>
-
-       * gnus.texi (Group Maintenance): Fix.
-
-1998-08-11 11:44:20  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.texi (Group Maintenance): Fix.
-
-1998-08-10 08:59:25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.texi (Article Highlighting): Addition.
-       (Article Fontisizing): Fix.
-       (Article Hiding): Change.
-       (Article Hiding): Fix.
-
-1998-08-09 15:32:24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.texi (Hiding Headers): Fix.
-       (Article Hiding): Addition.
-       (Document Groups): Addition.
-
-1998-08-08 06:06:37  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.texi (Fancy Mail Splitting): Change.
-
-1998-08-06 02:12:04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.texi: De-legalize.
-
-       * message.texi: De-legalize.
-
-       * gnus.texi (Summary Maneuvering): Fix.
-
-1998-07-21 17:51  Simon Josefsson  <jas@pdc.kth.se>
-
-       * gnus.texi (Splitting Mail): junk is fancy splitting only
-
-       * gnus.texi (Fancy Mail Splitting): warn about junk
-
-1998-07-27 02:28:33  Lars Magne Ingebrigtsen  <larsi@gnus.org>
-
-       * gnus.texi (Topic Commands): Fix.
-
-1998-07-27 02:23:17  Robert Bihlmeyer  <robbe@orcus.priv.at>
-
-       * gnus.texi (Score Decays): Fix.
-
-Sun Jul 12 04:03:27 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Home Score File): Addition.
-
-Fri Jul 10 04:26:23 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (NNTP): Addition.
-
-Sat Jul  4 14:24:29 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Gnus Utility Functions): Addition.
-
-Thu Jul  2 11:37:51 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Posting Styles): Ununcommented.
-
-Wed Jul  1 17:57:54 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Topic Commands): Addition.
-
-Tue Jun 30 16:11:27 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Topic Commands): Addition.
-
-Mon Jun 29 21:46:13 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Article Keymap): Typo.
-
-Sun Jun 28 17:41:10 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Formatting Fonts): Typo fix.
-
-Sat Jun 27 04:37:14 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Mail-To-News Gateways): Addition.
-       (Mail-To-News Gateways): Typo.
-
-Fri Jun 26 13:33:00 1998  Yoshiki Hayashi  <g740685@komaba.ecc.u-tokyo.ac.jp>
-
-       * gnus.texi (Summary Buffer Lines): Typo fix.
-
-Fri Jun 26 05:53:22 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Score File Format): Addition.
-       (Mode Line Formatting): New.
-       (Summary Buffer Mode Line): Addition.
-
-Thu Jun 25 11:24:14 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Summary Score Commands): Deletia.
-
-Wed Jun 24 00:37:32 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Auto Save): Addition.
-       (Mail-To-News Gateways): Addition.
-       (NNTP): Addition.
-
-Wed Jun  3 03:30:47 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.texi (Message Headers): Addition.
-
-       * gnus.texi (Compatibility): Addition.
-
-Tue May 19 02:44:31 1998  Mike Pullen  <mpullen@midwest.net>
-
-       * gnus.texi.orig: Typo fixes.
-
-Wed Apr 29 21:52:28 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Key Index): Untabified.
-       (Group Parameters): Fix.
-
-Sun Apr 26 15:32:45 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Summary Post Commands): Ref to Message.
-
-       * message.texi (Various Message Variables): Deletia.
-
-Fri Apr 24 16:00:40 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Unread Articles): Typo.
-       (Summary Buffer Lines): Fix.
-       (Foreign Groups): Addition.
-       (Posting Server): Addition.
-
-Sat Mar 28 08:57:46 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Example Methods): Addition.
-
-Thu Mar 26 15:47:54 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Limiting): Mention `/ *'.
-
-Thu Mar 19 13:02:20 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (NNTP): Addition.
-       Removed spurious white space.
-
-Fri Mar 13 21:05:47 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Quassia Gnus): Fix.
-       (Agent Expiry): Addition.
-
-Sun Mar  8 13:56:37 1998  James Troup  <J.J.Troup@scm.brad.ac.uk>
-
-       * gnus.texi (Group Highlighting): Removed old example.
-
-Sun Mar  8 00:19:24 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Group Info): Fix ".".
-
-Sat Mar  7 17:09:49 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi: Took direntries out again, since makeinfo doesn't
-       understand them.
-       (Agent Expiry): New.
-       (Quassia Gnus): New.
-
-Sat Mar  7 16:14:10 1998  Dan Christensen  <jdc@chow.mat.jhu.edu>
-
-       * gnus.texi (Group Parameters): Mention add-to-list.
-
-Sat Feb 28 14:21:12 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (NNTP): Addition.
-
-1998-03-01  Kim-Minh Kaplan  <KimMinh.Kaplan@utopia.eunet.fr>
-
-       * gnus.texi (Easy Picons): Removed references to
-       `gnus-group-display-picons'.
-       (Hard Picons): Ditto.
-
-1998-03-01  Kim-Minh Kaplan  <KimMinh.Kaplan@utopia.eunet.fr>
-
-       * gnus.texi (Easy Picons): Removed references to
-       `gnus-group-display-picons'.
-       (Hard Picons): Ditto.
-
-Mon Feb 23 18:05:09 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi: Direntry not handled by Emacs 19.34.
-
-1998-02-21  SL Baur  <steve@altair.xemacs.org>
-
-       * gnus.texi: Add a direntry field.
-       * message.texi: Ditto.  (Data taken from Emacs 20.2 info/dir).
-
-Sun Feb 22 03:24:43 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Score File Format): Addition.
-
-1998-02-18  Jason R Mastaler  <jason@4b.org>
-
-       * gnus.texi: Corrected typo.
-
-Thu Feb 19 02:20:29 1998  Francois Felix Ingrand  <felix@laas.fr>
-
-       * gnus.texi (Sorting): Fix order of args.
-
-Sun Feb 15 23:04:02 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (NNTP): Change.
-
-Sat Feb 14 17:46:33 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Virtual Groups): Fix.
-       (NNTP): Addition.
-       (Really Various Summary Commands): Addition.
-
-Fri Feb 13 18:23:19 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Mail Group Commands): Typo.
-       (NNTP): Addition.
-       (Mail and Procmail): Addition.
-
-Mon Feb  9 16:30:30 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Article Date): Addition.
-
-Sun Feb  8 16:28:35 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Newest Features): Addition.
-
-Mon Feb  2 19:21:43 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Agent Variables): Addition.
-
-Sun Feb  1 18:08:45 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Using MIME): Addition.
-
-Tue Jan  6 07:22:41 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Batching Agents): New.
-
-1998-01-04  Christoph Wedler  <wedler@fmi.uni-passau.de>
-
-       * gnus.texi (Newest Features): Delete spaces after @end example.
-       In XEmacs, `texinfo-format-buffer' would bug out.
-
-Sun Jan  4 12:04:45 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Conformity): Removed GNKSA.
-
-Sun Dec 14 11:06:23 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Adaptive Scoring): Addition.
-
-1997-11-26  SL Baur  <steve@altair.xemacs.org>
-
-       * message.texi (Insertion): Fix typo.
-       (Responses): Ditto.
-       (Reply): Ditto.
-
-Wed Nov 26 12:57:00 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.texi (Insertion): Addition.
-
-Wed Nov 26 12:55:15 1997  Hallvard B. Furuseth  <h.b.furuseth@usit.uio.no>
-
-       * message.texi (Insertion): Addition.
-
-Wed Nov 26 12:36:08 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.texi (Responses): New.
-       (Appendices): New.
-
-       * gnus.texi (Group Info): Fix.
-
-Tue Nov 25 17:53:55 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Article Date): Addition.
-
-Mon Nov 24 16:01:20 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Faces & Fonts): New.
-
-Mon Oct 13 00:08:06 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Agent Commands): Addition.
-
-Sun Oct 12 16:50:23 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Article Washing): Addition.
-       (Group Highlighting): New.
-       (Canceling and Superseding): Addition.
-
-Wed Oct  1 18:37:55 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Startup Files): Addition.
-
-Sat Sep 27 09:37:17 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.texi (Sending Variables): Fix.
-
-       * gnus.texi (Choosing Commands): Addition.
-
-Sat Sep 27 05:56:44 1997  Hallvard B. Furuseth  <h.b.furuseth@usit.uio.no>
-
-       * gnus.texi: Various fixes.
-
-Sat Sep 27 04:24:41 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.texi (Various Commands): Addition.
-
-Wed Sep 24 02:38:21 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Example Setup): Wrong info.
-       (SOUP Groups): Addition.
-       (Contributors): Addition.
-
-1997-09-22  SL Baur  <steve@altair.xemacs.org>
-
-       * gnus.texi (Finding the Parent): Fix typo.
-       (NoCeM): Fix typos.
-
-Tue Sep 23 07:05:48 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (NoCeM): Addition.
-       (Finding the Parent): Addition.
-
-Mon Sep 22 06:13:00 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Filling In Threads): Addition.
-       (Finding the Parent): Addition.
-
-Sun Sep 21 04:35:56 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (NNTP): Addition.
-       (Hiding Headers): Addition.
-       (Symbolic Prefixes): New.
-       (Extended Interactive): New.
-       (Summary Score Commands): Addition.
-
-Sat Sep 20 20:53:43 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Startup Variables): Addition.
-
-1997-09-16  SL Baur  <steve@altair.xemacs.org>
-
-       * gnus.texi: Correct typo.
-
-Wed Sep 17 02:32:56 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Customizing Threading): Broken up into five nodes.
-       (Article Washing): Addition.
-
-       * message.texi (Various Commands): Add.
-
-Tue Sep 16 04:04:03 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Example Setup): New.
-
-Mon Sep 15 23:10:05 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Customizing Threading): Addition.
-
-Sun Sep 14 21:59:07 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Outgoing Messages): New.
-       (Score File Format): Note.
-       (Subscription Methods): Fix.
-       (Starting Up): Fix.
-       (Threading): Add.
-
-Sat Jul 19 23:02:03 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Followups To Yourself): \\(_-_\\)?
-
-Sat Jul 12 16:29:35 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Picon Configuration): Moved Picons to under XEmacs.
-       (Smileys): New section.
-
-Fri Jul 11 11:58:20 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (NNTP): Addition.
-
-Tue Jun 17 23:52:17 1997  Justin Sheehy  <dworkin@ccs.neu.edu>
-
-       * gnus.texi (Group Parameters): Addition.
-
-Sun May 25 14:40:17 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Expiring Mail): Addition.
-
-Sat May 24 05:26:17 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Score File Format): Update.
-
-Tue May 20 21:56:03 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Document Server Internals): Typo.
-
-Sun May 18 05:59:24 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Topic Commands): Addition.
-
-Sun May 11 20:09:24 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Article Hiding): Change.
-
-Thu May  8 23:48:36 1997  James Troup  <J.J.Troup@comp.brad.ac.uk>
-
-       * gnus.texi (Saving Articles): Typo.
-
-Wed May  7 19:00:48 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Saving Articles): Addition.
-
-Wed May  7 19:00:43 1997  Mark Boyns  <boyns@sdsu.edu>
-
-       * gnus.texi (Saving Articles): Addition.
-
-Thu May  1 14:06:57 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Score File Format): Fix.
-
-Sun Apr 27 11:11:43 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (NNTP): Addition.
-
-Sat Apr 12 16:51:32 1997  Robert Bihlmeyer  <robbe@orcus.priv.at>
-
-       * gnus.texi (Thwarting Email Spam): Addition.
-
-Tue Apr 15 16:11:38 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.texi (Various Message Variables): Addition.
-
-       * gnus.texi (Thwarting Email Spam): Addition.
-
-Sat Apr 12 00:26:47 1997  Francois Felix Ingrand  <felix@laas.fr>
-
-       * gnus.texi (NoCeM): Addition.
-
-Thu Apr 10 21:25:14 1997  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * gnus.texi (Emacs/XEmacs Code): Addition.
-
-Thu Apr 10 20:45:47 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Group Information): Fix.
-
-Wed Apr  2 11:48:44 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Sorting): Use total score.
-
-Tue Apr  1 11:44:57 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Subscription Methods): Addition.
-       (Group Info): Addition.
-       (Gnus Utility Functions): New.
-       (Thwarting Email Spam): Addition.
-
-Mon Mar 31 16:15:54 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.texi (Various Message Variables): Addition.
-
-Sun Mar 23 02:16:19 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Thwarting Email Spam): New.
-       (Unavailable Servers): Fix.
-
-Wed Mar 19 15:45:17 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Various Summary Stuff): Addition.
-       (Mail Backend Variables): Addition.
-
-Tue Mar 18 14:43:32 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Article Washing): Not addition.
-
-Mon Mar 17 16:15:54 1997  Philippe Schnoebelen  <Philippe.Schnoebelen@lsv.ens-cachan.fr>
-
-       * Makefile (install): Install properly.
-
-Fri Mar 14 21:00:33 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Group Parameters): Addition.
-       (Expiring Mail): Addition.
-
-Wed Mar 12 06:57:14 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Various Various): Addition.
-
-Sat Mar  8 03:41:47 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Group Parameters): Added example.
-       (Duplicates): Fix.
-
-Fri Mar  7 10:49:43 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * Makefile: New "install" target.
-
-Thu Mar  6 08:01:37 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Mail and Procmail): Fix.
-
-Sun Mar  2 02:08:40 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Startup Files): Addition.
-       (Score File Format): Fix.
-
-Fri Feb 28 23:23:31 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Archived Messages): Clarify.
-       (Fuzzy Matching): New.
-
-Mon Feb 24 23:41:57 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.texi (Compatibility): New.
-
-Thu Feb 20 03:29:17 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Foreign Groups): Addition.
-
-Wed Feb 19 02:57:51 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Server Variables): New.
-
-Sun Feb 16 15:43:34 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Mail Backend Variables): Fix.
-
-       * message.texi (Various Message Variables): Addition.
-
-Mon Feb 10 07:18:16 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Article Commands): Addition.
-
-Mon Feb  3 19:59:10 1997  Paul Franklin  <paul@cs.washington.edu>
-
-       * gnus-group.el (gnus-group-edit-group): Allow editing of bad
-       groups.
-
-Wed Feb  5 02:00:46 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.texi (Mail Variables): Change.
-
-Tue Feb  4 02:33:31 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.texi (Mail Aliases): New.
-
-       * gnus.texi (Splitting Mail): Addition.
-
-Mon Feb  3 07:31:47 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Mode Lines): Addition.
-
-Mon Jan 27 17:51:29 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Highlighting and Menus): Removed
-       `gnus-display-type'.
-
-Sat Jan 25 08:09:30 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (The Active File): Addition.
-
-Fri Jan 24 05:07:28 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Summary Mail Commands): Addition.
-       (Required Backend Functions): Deletia.
-       (Article Washing): Addition.
-       (Summary Mail Commands): Addition.
-
-Mon Jan 20 22:19:40 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Followups To Yourself): Fix.
-
-Fri Jan 17 00:55:51 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (NoCeM): Update.
-
-Wed Jan 15 02:23:03 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Mail Group Commands): Fix.
-
-Tue Jan  7 09:36:36 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Summary Buffer Lines): Correction.
-
-Mon Jan  6 22:49:12 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (NoCeM): Addition.
-
-Fri Jan  3 18:13:02 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * message.texi (Various Commands): Addition.
-
-Thu Jan  2 16:12:27 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Optional Backend Functions): Fix.
-
-Mon Dec 16 13:53:28 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Exiting the Summary Buffer): Update.
-
-Fri Dec 13 01:04:41 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Limiting): Addition.
-
-Sat Dec  7 21:10:23 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Example Methods): Addition.
-
-Fri Dec  6 12:38:14 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Group Parameters): Update.
-
-1996-11-30  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Terminology): Addition.
-
-Wed Nov 27 03:13:05 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Selecting a Group): Addition.
-
-Tue Nov 26 12:42:47 1996  Martin Buchholz  <mrb@eng.sun.com>
-
-       * message.texi: Typo fixes and stuff.
-
-Thu Nov 21 17:45:57 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Canceling and Superseding): Fix.
-
-Wed Nov 20 15:42:36 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (New Groups): Addition.
-       (Summary Sorting): Addition.
-
-Tue Nov 19 20:54:16 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Scanning New Messages): Addition.
-
-Sat Nov  9 06:04:22 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Group Parameters): Addition.
-
-Fri Nov  8 04:01:06 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Article Fontisizing): New.
-       (Fancy Mail Splitting): Addition.
-       (Summary Post Commands): Addition.
-       (Mail Spool): Addition.
-       (Server Commands): Addition.
-       (Fancy Mail Splitting): Addition.
-
-Wed Nov  6 06:39:44 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Misc Article): Addition.
-       (Emacsen): Updated.
-
-Wed Nov  6 03:52:05 1996  C. R. Oldham  <cro@nca.asu.edu>
-
-       * Makefile (.texi.dvi): Fix rule.
-
-Tue Nov  5 10:45:39 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Other Decode Variables): Addition.
-       (Mail-like Backends): New.
-
-Tue Nov  5 06:41:46 1996  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * gnus.texi (Score File Format): Added warning.
-
-Mon Oct 28 15:50:08 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Startup Variables): Addition.
-
-Fri Oct 25 09:04:59 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Summary Mail Commands): Addition.
-
-Wed Oct 23 08:28:29 1996  Hrvoje Niksic  <hniksic@srce.hr>
-
-       * gnus.texi (Fancy Mail Splitting): Removed trailing garbage.
-
-Tue Oct 22 07:36:02 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Converting Kill Files): New.
-
-Sat Oct 19 07:17:28 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Saving Articles): Addition.
-
-       * message.texi (Various Message Variables): Addition.
-
-Thu Oct 17 06:53:04 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Contributors): Added names.
-
-Fri Oct 11 12:38:59 1996  Lars Magne Ingebrigtsen  <larsi@ylfing.ifi.uio.no>
-
-       * gnus.texi (Adaptive Scoring): Addition.
-
-Tue Oct  8 13:16:41 1996  Lars Magne Ingebrigtsen  <larsi@ylfing.ifi.uio.no>
-
-       * Makefile (all): Make custom.
-
-Wed Oct  2 01:32:49 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Group Timestamps): New.
-
-Tue Oct  1 01:34:45 1996  Lars Magne Ingebrigtsen  <larsi@hrym.ifi.uio.no>
-
-       * gnus.texi (Expiring Mail): Addition.
-       (Group Line Specification): Addition.
-
-Sat Sep 28 21:36:40 1996  Lars Magne Ingebrigtsen  <larsi@ylfing.ifi.uio.no>
-
-       * gnus.texi (Foreign Groups): Addition.
-
-Mon Sep 23 22:17:44 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (The Summary Buffer): Addition.
-
-Mon Sep 23 18:25:38 1996  Lars Magne Ingebrigtsen  <larsi@ylfing.ifi.uio.no>
-
-       * gnus.texi (Thread Commands): Correction.
-       (Group Information): Correction.
-
-Sat Sep 21 08:11:43 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (New Groups): Split into three nodes.
-       (Group Parameters): Shortened.
-       (Browse Foreign Server): Corrected.
-
-Thu Sep 19 18:45:15 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Mail and Procmail): Addition.
-
-Wed Sep 18 07:33:11 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Other Marks): Edited.
-       (The Manual): New.
-       (Contributors): Updated.
-       (Asynchronous Fetching): Addition.
-       (New Features): Split.
-       ((ding) Gnus): Renamed.
-       (September Gnus): New.
-       (Red Gnus): New,
-       (Undo): New.
-
-Thu Sep 12 23:55:53 1996  Lars Magne Ingebrigtsen  <larsi@hrym.ifi.uio.no>
-
-       * gnus.texi (Archived Messages): Fix.
-
-Sat Sep  7 12:14:23 1996  Lars Magne Ingebrigtsen  <larsi@hymir.ifi.uio.no>
-
-       * gnus.texi (Various Various): Addition.
-
-Fri Sep  6 07:57:26 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Startup Files): Addition.
-       (Splitting Mail): Addition.
-       (Sorting Groups): Addition.
-       (Topic Sorting): New.
-       (Really Various Summary Commands): Deletia.
-       (Summary Generation Commands): New.
-       (Setting Process Marks): Addition.
-
-Thu Sep  5 07:34:27 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Terminology): Addition.
-       (Web Searches): Fix.
-       (Windows Configuration): Addition.
-
-Sun Sep  1 11:07:09 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (XEmacs Enhancements): New.
-
-Sat Aug 31 02:55:50 1996  Lars Magne Ingebrigtsen  <larsi@ylfing.ifi.uio.no>
-
-       * gnus.texi (Washing Mail): Addition.
-
-Fri Aug 30 09:10:17 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Washing Mail): New.
-       (Fancy Mail Splitting): Change.
-
-Fri Aug 30 00:21:59 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Foreign Groups): Change.
-
-Thu Aug 29 23:51:45 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Daemons): Addition.
-
-Thu Aug 29 02:09:24 1996  François Pinard  <pinard@progiciels-bpi.ca>
-
-       * gnus.texi (Web Searches): Typo.
-
-Wed Aug 28 08:21:36 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Server Commands): Addition.
-       (Really Various Summary Commands): Addition.
-
-Mon Aug 26 18:29:23 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Optional Backend Functions): Deletia.
-       (Asynchronous Fetching): Deletia and addition.
-
-Sun Aug 25 23:39:03 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi: Include the version number.
-
-Sun Aug 25 21:31:33 1996  Lars Magne Ingebrigtsen  <larsi@ylfing.ifi.uio.no>
-
-       * gnus.texi (Really Various Summary Commands): Addition.
-
-Sat Aug 17 22:24:34 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Startup Files): Addition.
-       (Anything Groups): Addition.
-
-Thu Aug 22 17:27:31 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Adaptive Scoring): Addition.
-       (Adaptive Scoring): Addition.
-
-Mon Aug 19 00:30:07 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Fancy Mail Splitting): Addition.
-       (Splitting Mail): Addition.
-       (Group Parameters): Addition.
-       (Topic Variables): Addition.
-       (Mail Group Commands): Addition.
-       (Group Information): Addition.
-       (Article Washing): Addition.
-
-Sun Aug 18 18:06:49 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Web Searches): Change and addition.
-
-Sat Aug 17 22:24:34 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Startup Files): Addition.
-       (Anything Groups): Addition.
-
-Thu Aug 15 17:59:12 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Followups To Yourself): Addition.
-       (Setting Process Marks): Addition.
-       (Process/Prefix): Addition.
-       (Startup Files): Addition.
-       (Mail-To-News Gateways): New.
-
-Wed Aug 14 15:02:14 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Home Score File): Fix.
-       (Various Various): New.
-
-Tue Aug 13 10:38:47 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Error Messaging): New.
-       (Mail Backend Variables): Fix.
-       (Foreign Groups): Added references.
-       (Sorting Groups): Addition.
-
-Sun Aug 11 02:52:37 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (User-Defined Specs): Correction.
-       (Unavailable Servers): Addition.
-       (Moderation): New.
-       (Summary Mail Commands): Addition.
-       (Crosspost Handling): Addition.
-
-Sat Aug 10 00:13:39 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Summary Buffer Lines): Correction.
-       (Top): Name fix.
-       (Compilation ): Addition.
-       (Group Parameters): Addition.
-       (Troubleshooting): Addition.
-
-Fri Aug  9 07:17:59 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Selecting a Group): Addition.
-       (Score Decays): New.
-       (Score File Format): Addition.
-       (Changing Servers): Addition.
-       (Selecting a Group): Addition.
-       (Really Various Summary Commands): Addition.
-
-Thu Aug  8 05:39:31 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Read Articles): Addition.
-       (Foreign Groups): Addition.
-       (User-Defined Specs): Separated.
-       (Formatting Fonts): Ditto.
-       (Advanced Formatting): New.
-       (Formatting Basics): Addition.
-       (Formatting Variables): Split.
-
-Wed Aug  7 22:00:56 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
-
-       * gnus.texi (Hooking New Backends Into Gnus): New node.
-
-Wed Aug  7 01:02:08 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Setting Marks): Addition.
-       (Formatting Variables): Addition.
-
-Mon Aug  5 20:20:42 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Formatting Variables): Addition.
-
-Sun Aug  4 07:15:28 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Score File Format): Addition.
-       (Adaptive Scoring): Addition.
-
-Sat Aug  3 17:35:36 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Group Parameters): Addition.
-       (Home Score File): New.
-       (Topic Parameters): New.
-
-Wed Jul 31 15:34:12 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (are): Fix.
-
-Wed Jul 31 15:32:57 1996  David S. Goldberg  <dsg@linus.mitre.org>
-
-       * gnus.texi (buffer-name): Addition.
-
-Fri Aug  2 00:32:39 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Pick and Read): Addition.
-       (Article Hiding): Addition.
-       (Article Signature): Made into own node.
-
-Thu Aug  1 00:25:41 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * message.texi (Wide Reply): Addition.
-       (Bouncing): Addition.
-
-       * gnus.texi (Crosspost Handling): Made into own node.
-       (Duplicate Suppression): New.
-       (Document Server Internals): New.
-       (Changing Servers): New.
-
-Wed Jul 31 15:37:44 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi: Fix
-
-Mon Jul 29 10:12:24 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
-
-       * gnus.texi (Misc Article): Addition.
-       (Advanced Scoring Tips): New.
-       (Advanced Scoring Example): New.
-       (Advanced Scoring Syntax): New.
-       (Advanced Scoring): New.
index 329119b..20da8ca 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Gnus 5.6.42 Manual
+@settitle Pterodactyl Gnus 0.6 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -318,7 +318,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Gnus 5.6.42 Manual
+@title Pterodactyl Gnus 0.6 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -354,7 +354,7 @@ can be gotten by any nefarious means you can think of---@sc{nntp}, local
 spool or your mbox file.  All at the same time, if you want to push your
 luck.
 
-This manual corresponds to Gnus 5.6.42.
+This manual corresponds to Pterodactyl Gnus 0.6.
 
 @end ifinfo
 
index 33ce0c4..588ef1b 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message
-@settitle Message 5.6.42 Manual
+@settitle Pterodactyl Message 0.6 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -42,7 +42,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Message 5.6.42 Manual
+@title Pterodactyl Message 0.6 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -83,9 +83,9 @@ Message mode buffers.
 * Key Index::         List of Message mode keys.
 @end menu
 
-This manual corresponds to Message 5.6.42.  Message is distributed with
-the Gnus distribution bearing the same version number as this manual
-has. 
+This manual corresponds to Pterodactyl Message 0.6.  Message is
+distributed with the Gnus distribution bearing the same version number
+as this manual has.
 
 
 @node Interface