emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs lisp/gnus/mml1991.el lisp/gnus/message.el...


From: Miles Bader
Subject: [Emacs-diffs] emacs lisp/gnus/mml1991.el lisp/gnus/message.el...
Date: Fri, 09 Jan 2009 03:01:59 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Miles Bader <miles>     09/01/09 03:01:58

Modified files:
        lisp/gnus      : mml1991.el message.el gnus-start.el nnheader.el 
                         legacy-gnus-agent.el ChangeLog gnus-msg.el 
                         nnimap.el spam-report.el pop3.el gnus-sum.el 
                         sieve-manage.el mm-url.el ChangeLog.2 
                         mm-util.el 
        lisp/net       : imap.el dns.el 
        doc/misc       : gnus.texi ChangeLog 
        lisp/calendar  : time-date.el 
        lisp           : ChangeLog 

Log message:
        Merge from gnus--devo--0
        
        Revision: address@hidden/emacs--devo--0--patch-1513

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/gnus/mml1991.el?cvsroot=emacs&r1=1.22&r2=1.23
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/gnus/message.el?cvsroot=emacs&r1=1.167&r2=1.168
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/gnus/gnus-start.el?cvsroot=emacs&r1=1.64&r2=1.65
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/gnus/nnheader.el?cvsroot=emacs&r1=1.42&r2=1.43
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/gnus/legacy-gnus-agent.el?cvsroot=emacs&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/gnus/ChangeLog?cvsroot=emacs&r1=1.785&r2=1.786
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/gnus/gnus-msg.el?cvsroot=emacs&r1=1.56&r2=1.57
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/gnus/nnimap.el?cvsroot=emacs&r1=1.54&r2=1.55
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/gnus/spam-report.el?cvsroot=emacs&r1=1.23&r2=1.24
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/gnus/pop3.el?cvsroot=emacs&r1=1.49&r2=1.50
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/gnus/gnus-sum.el?cvsroot=emacs&r1=1.136&r2=1.137
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/gnus/sieve-manage.el?cvsroot=emacs&r1=1.22&r2=1.23
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/gnus/mm-url.el?cvsroot=emacs&r1=1.22&r2=1.23
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/gnus/ChangeLog.2?cvsroot=emacs&r1=1.35&r2=1.36
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/gnus/mm-util.el?cvsroot=emacs&r1=1.80&r2=1.81
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/net/imap.el?cvsroot=emacs&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/net/dns.el?cvsroot=emacs&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/emacs/doc/misc/gnus.texi?cvsroot=emacs&r1=1.38&r2=1.39
http://cvs.savannah.gnu.org/viewcvs/emacs/doc/misc/ChangeLog?cvsroot=emacs&r1=1.226&r2=1.227
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/calendar/time-date.el?cvsroot=emacs&r1=1.29&r2=1.30
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/ChangeLog?cvsroot=emacs&r1=1.15061&r2=1.15062

Patches:
Index: lisp/gnus/mml1991.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/gnus/mml1991.el,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- lisp/gnus/mml1991.el        5 Jan 2009 03:22:10 -0000       1.22
+++ lisp/gnus/mml1991.el        9 Jan 2009 03:01:50 -0000       1.23
@@ -3,7 +3,7 @@
 ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
 ;;   2007, 2008, 2009  Free Software Foundation, Inc.
 
-;; Author: Sascha Ldecke <address@hidden>,
+;; Author: Sascha Lüdecke <address@hidden>,
 ;;     Simon Josefsson <address@hidden> (Mailcrypt interface, Gnus glue)
 ;; Keywords PGP
 

Index: lisp/gnus/message.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/gnus/message.el,v
retrieving revision 1.167
retrieving revision 1.168
diff -u -b -r1.167 -r1.168
--- lisp/gnus/message.el        5 Jan 2009 03:22:07 -0000       1.167
+++ lisp/gnus/message.el        9 Jan 2009 03:01:50 -0000       1.168
@@ -2395,6 +2395,8 @@
      (point-max)))
   (goto-char (point-min)))
 
+;; FIXME: clarify diffference: message-narrow-to-head,
+;; message-narrow-to-headers-or-head, message-narrow-to-headers
 (defun message-narrow-to-head ()
   "Narrow the buffer to the head of the message.
 Point is left at the beginning of the narrowed-to region."
@@ -4140,6 +4142,8 @@
                  (and (mm-multibyte-p)
                       (memq (char-charset char)
                             '(eight-bit-control eight-bit-graphic
+                                                ;; Emacs 23, Bug#1770:
+                                                eight-bit
                                                 control-1))
                       (not (get-text-property
                             (point) 'untranslated-utf-8))))
@@ -4166,10 +4170,13 @@
                  (or (< (mm-char-int char) 128)
                      (and (mm-multibyte-p)
                           ;; FIXME: Wrong for Emacs 23 (unicode) and for
-                          ;; things like undecable utf-8.  Should at least
-                          ;; use find-coding-systems-region.
+                          ;; things like undecodable utf-8 (in Emacs 21?).
+                          ;; Should at least use find-coding-systems-region.
+                          ;; -- fx
                           (memq (char-charset char)
                                 '(eight-bit-control eight-bit-graphic
+                                                    ;; Emacs 23, Bug#1770:
+                                                    eight-bit
                                                     control-1))
                           (not (get-text-property
                                 (point) 'untranslated-utf-8)))))
@@ -5119,17 +5126,24 @@
        nil)))
    ;; Check the length of the signature.
    (message-check 'signature
+     (let (sig-start sig-end)
      (goto-char (point-max))
      (if (not (re-search-backward message-signature-separator nil t))
         t
-       (if (>= (count-lines (1+ (point-at-eol)) (point-max)) 5)
+        (setq sig-start (1+ (point-at-eol)))
+        (setq sig-end
+              (if (re-search-forward
+                   "<#/?\\(multipart\\|part\\|external\\|mml\\)" nil t)
+                  (- (point-at-bol) 1)
+                (point-max)))
+        (if (>= (count-lines sig-start sig-end) 5)
           (if (message-gnksa-enable-p 'signature)
               (y-or-n-p
                (format "Signature is excessively long (%d lines).  Really 
post? "
-                       (count-lines (1+ (point-at-eol)) (point-max))))
+                         (count-lines sig-start sig-end)))
             (message "Denied posting -- Excessive signature.")
             nil)
-        t)))
+          t))))
    ;; Ensure that text follows last quoted portion.
    (message-check 'quoting-style
      (goto-char (point-max))

Index: lisp/gnus/gnus-start.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/gnus/gnus-start.el,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -b -r1.64 -r1.65
--- lisp/gnus/gnus-start.el     5 Jan 2009 03:22:04 -0000       1.64
+++ lisp/gnus/gnus-start.el     9 Jan 2009 03:01:50 -0000       1.65
@@ -392,7 +392,7 @@
   :type 'hook)
 
 (defcustom gnus-before-startup-hook nil
-  "A hook called at before startup.
+  "A hook called before startup.
 This hook is called as the first thing when Gnus is started."
   :group 'gnus-start
   :type 'hook)

Index: lisp/gnus/nnheader.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/gnus/nnheader.el,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -b -r1.42 -r1.43
--- lisp/gnus/nnheader.el       5 Jan 2009 03:22:12 -0000       1.42
+++ lisp/gnus/nnheader.el       9 Jan 2009 03:01:51 -0000       1.43
@@ -86,7 +86,14 @@
       ;; what's possible.  Perhaps better, maybe the Windows/DOS primitive
       ;; could round up non-zero timeouts to a minimum of 1.0?
       1.0
+    ;; 2008-05-19 change by Larsi:
+    ;; Change the default timeout from 0.1 seconds to 0.01 seconds.  This will
+    ;; make nntp and pop3 article retrieval faster in some cases, but might
+    ;; make CPU usage larger.  If this has any bad side effects, we might
+    ;; revert this change.
     0.01)
+  ;; When changing this variable, consider changing `pop3-read-timeout' as
+  ;; well.
   "How long nntp should wait between checking for the end of output.
 Shorter values mean quicker response, but are more CPU intensive.")
 
@@ -1057,6 +1064,8 @@
 (defalias 'nnheader-cancel-timer 'cancel-timer)
 (defalias 'nnheader-cancel-function-timers 'cancel-function-timers)
 
+;; When changing this function, consider changing `pop3-accept-process-output'
+;; as well.
 (defun nnheader-accept-process-output (process)
   (accept-process-output
    process

Index: lisp/gnus/legacy-gnus-agent.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/gnus/legacy-gnus-agent.el,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- lisp/gnus/legacy-gnus-agent.el      5 Jan 2009 03:22:07 -0000       1.9
+++ lisp/gnus/legacy-gnus-agent.el      9 Jan 2009 03:01:51 -0000       1.10
@@ -186,7 +186,7 @@
                                                                (when (eq 0 
(string-match
                                                                             
(caar days)
                                                                             
group))
-                                                                 (throw 'found 
(cadar days)))
+                                                                 (throw 'found 
(cadr (car days))))
                                                                (setq days (cdr 
days)))
                                                              nil)))
                                                  (when day

Index: lisp/gnus/ChangeLog
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/gnus/ChangeLog,v
retrieving revision 1.785
retrieving revision 1.786
diff -u -b -r1.785 -r1.786
--- lisp/gnus/ChangeLog 6 Jan 2009 11:39:20 -0000       1.785
+++ lisp/gnus/ChangeLog 9 Jan 2009 03:01:51 -0000       1.786
@@ -1,8 +1,39 @@
+2009-01-08  Reiner Steib  <address@hidden>
+
+       * message.el (message-fix-before-sending): Amend comment.
+
+2009-01-07  David Engster  <address@hidden>
+
+       * gnus-msg.el (gnus-inews-do-gcc): Fix last patch to deal with
+       simplified server definitions by converting it via
+       gnus-server-to-method.
+
+2009-01-06  Katsumi Yamaoka  <address@hidden>
+
+       * gnus-sum.el (gnus-summary-set-local-parameters): Always evaluate
+       parameter's operands.
+
+2009-01-06  David Engster  <address@hidden>
+
+       * gnus-msg.el (gnus-inews-do-gcc): Reduce to short group name when on
+       primary select method (for gnus-group-mark-article-as-read).
+
 2009-01-06  Tassilo Horn  <address@hidden>
 
        * gnus-art.el (gnus-treat-display-face): Fix docstring link to point to
        `(gnus)Face', not `(gnus)X-Face'.
 
+2009-01-05  Katsumi Yamaoka  <address@hidden>
+
+       * mm-util.el (mm-ucs-to-char): New function.
+
+       * mm-url.el (mm-url-decode-entities): Use it.
+
+2009-01-03  Reiner Steib  <address@hidden>
+
+       * message.el (message-fix-before-sending): Add `eight-bit' to
+       illegible-text check.
+
 2009-01-03  Michael Olson  <address@hidden>
 
        * nnimap.el (nnimap-retrieve-headers-progress): Handle edge case where
@@ -11,6 +42,68 @@
        to the folder.
        (nnimap-request-article-part): Do not insert `data' if it is nil.
 
+2009-01-01  Dave Love  <address@hidden>
+
+       * nnimap.el (nnimap-find-minmax-uid): Use imap-fetch-safe.
+
+       * nnimap.el: Fix author email.
+       (nnimap-split-rule): Add FIXME comment.
+       (nnimap-debug): Fix doc string.
+
+2008-12-25  Katsumi Yamaoka  <address@hidden>
+
+       * gnus-sum.el (gnus-summary-set-article-display-arrow): Make
+       overlay-arrow-position and overlay-arrow-string buffer-local; no need
+       to check if those variables exist (first appeared in Emacs 18.50).
+
+2008-12-24  Katsumi Yamaoka  <address@hidden>
+
+       * mm-util.el (mm-line-number-at-pos): New function.
+
+       * spam-report.el (spam-report-process-queue): Use it.
+
+2008-12-24  David Engster  <address@hidden>
+
+       * gnus-sum.el (gnus-summary-set-local-parameters): Don't bind
+       parameters that haven't existed as variables as buffer-local variables.
+
+2008-12-23  Dave Love  <address@hidden>
+
+       * legacy-gnus-agent.el (gnus-agent-unlist-expire-days): Don't use
+       cadar.
+
+       * sieve-manage.el (sieve-manage-starttls-p): Renamed from
+       imap-starttls-p.
+       (sieve-manage-starttls-open): Renamed from imap-starttls-open.
+
+2008-12-22  Reiner Steib  <address@hidden>
+
+       * spam-report.el (spam-report-gmane-max-requests): New constant.
+       (spam-report-gmane-wait): New variable.
+       (spam-report-gmane-ham, spam-report-gmane-spam)
+       (spam-report-url-ping-plain, spam-report-process-queue): Wait only if
+       spam-report-gmane-wait is non-nil should be sufficient to avoid DOS-ing
+       the server.
+
+       * nnheader.el (nnheader-read-timeout, nnheader-accept-process-output):
+       Add explanations.
+
+       * pop3.el (pop3-accept-process-output, pop3-read-timeout): Use
+       nnheader-accept-process-output and nnheader-read-timeout if available.
+       (pop3-movemail): Use it.
+
+       * message.el (message-check-news-body-syntax): Fix signature check if
+       there's an attachment.
+
+2008-12-21  Katsumi Yamaoka  <address@hidden>
+
+       * mm-util.el: Add comments to the mm- emulating functions.
+
+2008-12-21  Reiner Steib  <address@hidden>
+
+       * gnus-start.el (gnus-before-startup-hook): Fix doc string.  Reported
+       by Stephen Berman <address@hidden>.
+
 2008-12-18  Katsumi Yamaoka  <address@hidden>
 
        * mm-util.el (mm-substring-no-properties): New function.
@@ -23,6 +116,11 @@
 2008-12-18  Reiner Steib  <address@hidden>
 
        * mml.el (mml-attach-file): Strip text properties from file name.
+       (Bug#1574)
+
+2008-12-16  Glenn Morris  <address@hidden>
+
+       * mm-util.el (mm-charset-override-alist): Declare for compiler.
 
 2008-12-16  Glenn Morris  <address@hidden>
 
@@ -13136,11 +13234,10 @@
 
 2004-01-04  Mario Lang  <address@hidden>
 
-       * dns.el: Add support for AAAA records (see RFC 3596)
-
-       * Fix typo PRT -> PTR
-
-       * Parse MX, PTR and SOA replies (see RFC 1035)
+       * dns.el (dns-query-types): Fix typo.
+       (dns-query-types): New function
+       (dns-read-type): Add support for AAAA records, see RFC 3596.  Parse MX,
+       PTR and SOA replies, see RFC 1035.
 
 2004-01-04  Lars Magne Ingebrigtsen  <address@hidden>
 

Index: lisp/gnus/gnus-msg.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/gnus/gnus-msg.el,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -b -r1.56 -r1.57
--- lisp/gnus/gnus-msg.el       5 Jan 2009 03:22:02 -0000       1.56
+++ lisp/gnus/gnus-msg.el       9 Jan 2009 03:01:51 -0000       1.57
@@ -1677,6 +1677,11 @@
                                    group method t t))))
                (gnus-message 1 "Couldn't store article in group %s: %s"
                              group (gnus-status-message method)))
+             (when (stringp method)
+               (setq method (gnus-server-to-method method)))
+             (when (and (listp method)
+                        (gnus-native-method-p method))
+               (setq group (gnus-group-short-name group)))
              (when (and group-art
                         ;; FIXME: Should gcc-mark-as-read work when
                         ;; Gnus is not running?

Index: lisp/gnus/nnimap.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/gnus/nnimap.el,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -b -r1.54 -r1.55
--- lisp/gnus/nnimap.el 5 Jan 2009 03:22:12 -0000       1.54
+++ lisp/gnus/nnimap.el 9 Jan 2009 03:01:51 -0000       1.55
@@ -3,7 +3,7 @@
 ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
 ;;   2007, 2008, 2009  Free Software Foundation, Inc.
 
-;; Author: Simon Josefsson <address@hidden>
+;; Author: Simon Josefsson <address@hidden>
 ;;         Jim Radford <address@hidden>
 ;; Keywords: mail
 
@@ -163,6 +163,8 @@
 before, either a function, or a list with group/regexp or
 group/function elements."
   :group 'nnimap
+  ;; FIXME: Doesn't allow `("my2server" ("INBOX" nnimap-split-fancy))'
+  ;; per example above.  -- fx
   :type '(choice :tag "Rule type"
                 (repeat :menu-tag "Single-server"
                         :tag "Single-server list"
@@ -460,11 +462,17 @@
                 (plist :key-type string :value-type string)))
 
 (defcustom nnimap-debug nil
-  "If non-nil, random debug spews are placed in *nnimap-debug* buffer.
+  "If non-nil, trace nnimap- functions into `nnimap-debug-buffer'.
+Uses `trace-function-background', so you can turn it off with,
+say, `untrace-all'.
+
 Note that username, passwords and other privacy sensitive
-information (such as e-mail) may be stored in the *nnimap-debug*
-buffer.  It is not written to disk, however.  Do not enable this
-variable unless you are comfortable with that."
+information (such as e-mail) may be stored in the buffer.
+It is not written to disk, however.  Do not enable this
+variable unless you are comfortable with that.
+
+This variable only takes effect when loading the `nnimap' library.
+See also `nnimap-log'."
   :group 'nnimap
   :type 'boolean)
 
@@ -555,8 +563,7 @@
              (imap-mailbox-select group examine))
       (let (minuid maxuid)
        (when (> (imap-mailbox-get 'exists) 0)
-         (imap-fetch (if imap-enable-exchange-bug-workaround "1,*:*" "1,*")
-                     "UID" nil 'nouidfetch)
+         (imap-fetch-safe '("1,*" . "1,*:*") "UID" nil 'nouidfetch)
          (imap-message-map (lambda (uid Uid)
                              (setq minuid (if minuid (min minuid uid) uid)
                                    maxuid (if maxuid (max maxuid uid) uid)))

Index: lisp/gnus/spam-report.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/gnus/spam-report.el,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -b -r1.23 -r1.24
--- lisp/gnus/spam-report.el    5 Jan 2009 03:22:18 -0000       1.23
+++ lisp/gnus/spam-report.el    9 Jan 2009 03:01:52 -0000       1.24
@@ -117,17 +117,33 @@
   "Report an article as ham by resending via email."
   (spam-report-resend articles t))
 
+(defconst spam-report-gmane-max-requests 4
+  "Number of reports to send before waiting for a response.")
+
+(defvar spam-report-gmane-wait nil
+  "When non-nil, wait until we get a server response.
+This makes sure we don't DOS the host, if many reports are
+submitted at once.  Internal variable.")
+
 (defun spam-report-gmane-ham (&rest articles)
   "Report ARTICLES as ham (unregister) through Gmane."
   (interactive (gnus-summary-work-articles current-prefix-arg))
+  (let ((count 0))
   (dolist (article articles)
-    (spam-report-gmane-internal t article)))
+      (setq count (1+ count))
+      (let ((spam-report-gmane-wait
+            (zerop (% count spam-report-gmane-max-requests))))
+       (spam-report-gmane-internal t article)))))
 
 (defun spam-report-gmane-spam (&rest articles)
   "Report ARTICLES as spam through Gmane."
   (interactive (gnus-summary-work-articles current-prefix-arg))
+  (let ((count 0))
   (dolist (article articles)
-    (spam-report-gmane-internal nil article)))
+      (setq count (1+ count))
+      (let ((spam-report-gmane-wait
+            (zerop (% count spam-report-gmane-max-requests))))
+       (spam-report-gmane-internal nil article)))))
 
 ;; `spam-report-gmane' was an interactive entry point, so we should provide an
 ;; alias.
@@ -245,10 +261,14 @@
        tcp-connection
        (format "GET %s HTTP/1.1\nUser-Agent: %s\nHost: %s\n\n"
               report spam-report-user-agent host))
-      ;; Wait until we get something so we don't DOS the host. 
+      ;; Wait until we get something so we don't DOS the host, if
+      ;; `spam-report-gmane-wait' is let-bound to t.
+      (when spam-report-gmane-wait
+       (gnus-message 7 "Waiting for response from %s..." host)
       (while (and (memq (process-status tcp-connection) '(open run))
                  (zerop (buffer-size)))
-       (accept-process-output tcp-connection)))))
+         (accept-process-output tcp-connection))
+       (gnus-message 7 "Waiting for response from %s... done" host)))))
 
 ;;;###autoload
 (defun spam-report-process-queue (&optional file keep)
@@ -278,7 +298,13 @@
     (while (and (not (eobp))
                (re-search-forward
                 "http://\\([^/]+\\)\\(/.*\\) *$" (point-at-eol) t))
-      (funcall spam-report-url-ping-function (match-string 1) (match-string 2))
+      (let ((spam-report-gmane-wait
+            (zerop (% (mm-line-number-at-pos)
+                      spam-report-gmane-max-requests))))
+       (gnus-message 6 "Reporting %s%s..."
+                     (match-string 1) (match-string 2))
+       (funcall spam-report-url-ping-function
+                (match-string 1) (match-string 2)))
       (forward-line 1))
     (if (or (eq keep nil)
            (and (eq keep 'ask)

Index: lisp/gnus/pop3.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/gnus/pop3.el,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -b -r1.49 -r1.50
--- lisp/gnus/pop3.el   5 Jan 2009 03:22:17 -0000       1.49
+++ lisp/gnus/pop3.el   9 Jan 2009 03:01:52 -0000       1.50
@@ -105,33 +105,28 @@
 (defvar pop3-read-point nil)
 (defvar pop3-debug nil)
 
-;; Borrowed from nnheader-accept-process-output in nnheader.el.
-(defvar pop3-read-timeout
+;; Borrowed from nnheader-accept-process-output in nnheader.el.  See the
+;; comments there for explanations about the values.
+
+(eval-and-compile
+  (if (and (fboundp 'nnheader-accept-process-output)
+          (boundp 'nnheader-read-timeout))
+      (defalias 'pop3-accept-process-output 'nnheader-accept-process-output)
+    ;; Borrowed from `nnheader.el':
+    (defvar pop3-read-timeout
   (if (string-match "windows-nt\\|os/2\\|emx\\|cygwin"
                    (symbol-name system-type))
-      ;; http://thread.gmane.org/address@hidden
-      ;;
-      ;; IIRC, values lower than 1.0 didn't/don't work on Windows/DOS.
-      ;;
-      ;; There should probably be a runtime test to determine the timing
-      ;; resolution, or a primitive to report it.  I don't know off-hand
-      ;; what's possible.  Perhaps better, maybe the Windows/DOS primitive
-      ;; could round up non-zero timeouts to a minimum of 1.0?
       1.0
-    0.1)
+       0.01)
   "How long pop3 should wait between checking for the end of output.
 Shorter values mean quicker response, but are more CPU intensive.")
-
-;; Borrowed from nnheader-accept-process-output in nnheader.el.
-(defun pop3-accept-process-output (process)
+    (defun pop3-accept-process-output (process)
   (accept-process-output
    process
    (truncate pop3-read-timeout)
    (truncate (* (- pop3-read-timeout
                   (truncate pop3-read-timeout))
-               1000))))
-
-(autoload 'nnheader-accept-process-output "nnheader")
+                   1000))))))
 
 (defun pop3-movemail (&optional crashbox)
   "Transfer contents of a maildrop to the specified CRASHBOX."
@@ -171,7 +166,7 @@
           (unless pop3-leave-mail-on-server
             (pop3-dele process n))
          (setq n (+ 1 n))
-         (nnheader-accept-process-output process))
+         (pop3-accept-process-output process))
       (when (and pop3-leave-mail-on-server
                 (> n 1))
        (message "pop3.el doesn't support UIDL.  Setting 
`pop3-leave-mail-on-server'

Index: lisp/gnus/gnus-sum.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/gnus/gnus-sum.el,v
retrieving revision 1.136
retrieving revision 1.137
diff -u -b -r1.136 -r1.137
--- lisp/gnus/gnus-sum.el       5 Jan 2009 03:22:04 -0000       1.136
+++ lisp/gnus/gnus-sum.el       9 Jan 2009 03:01:52 -0000       1.137
@@ -3455,9 +3455,9 @@
 
 (defun gnus-summary-set-article-display-arrow (pos)
   "Update the overlay arrow to point to line at position POS."
-  (when (and gnus-summary-display-arrow
-            (boundp 'overlay-arrow-position)
-            (boundp 'overlay-arrow-string))
+  (when gnus-summary-display-arrow
+    (make-local-variable 'overlay-arrow-position)
+    (make-local-variable 'overlay-arrow-string)
     (save-excursion
       (goto-char pos)
       (beginning-of-line)
@@ -3832,10 +3832,15 @@
           (consp (cdr elem))           ; The cdr has to be a list.
           (symbolp (car elem))         ; Has to be a symbol in there.
           (not (memq (car elem) vars))
-          (ignore-errors               ; So we set it.
+          (ignore-errors
             (push (car elem) vars)
-            (make-local-variable (car elem))
-            (set (car elem) (eval (nth 1 elem))))))))
+            ;; Variables like `gnus-show-threads' that are globally
+            ;; bound, if used as group parameters, need to get to be
+            ;; buffer-local, whereas just parameters like `gcc-self',
+            ;; `timestamp', etc. should not be bound as variables.
+            (if (boundp (car elem))
+                (set (make-local-variable (car elem)) (eval (nth 1 elem)))
+              (eval (nth 1 elem))))))))
 
 (defun gnus-summary-read-group (group &optional show-all no-article
                                      kill-buffer no-display backward

Index: lisp/gnus/sieve-manage.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/gnus/sieve-manage.el,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- lisp/gnus/sieve-manage.el   5 Jan 2009 03:22:18 -0000       1.22
+++ lisp/gnus/sieve-manage.el   9 Jan 2009 03:01:52 -0000       1.23
@@ -304,15 +304,14 @@
       (when (memq (process-status process) '(open run))
        process))))
 
-(defun imap-starttls-p (buffer)
-  ;;  (and (imap-capability 'STARTTLS buffer)
+(defun sieve-manage-starttls-p (buffer)
   (condition-case ()
       (progn
        (require 'starttls)
        (call-process "starttls"))
     (error nil)))
 
-(defun imap-starttls-open (name buffer server port)
+(defun sieve-manage-starttls-open (name buffer server port)
   (let* ((port (or port sieve-manage-default-port))
         (coding-system-for-read sieve-manage-coding-system-for-read)
         (coding-system-for-write sieve-manage-coding-system-for-write)

Index: lisp/gnus/mm-url.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/gnus/mm-url.el,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- lisp/gnus/mm-url.el 5 Jan 2009 03:22:09 -0000       1.22
+++ lisp/gnus/mm-url.el 9 Jan 2009 03:01:52 -0000       1.23
@@ -1,6 +1,7 @@
 ;;; mm-url.el --- a wrapper of url functions/commands for Gnus
 
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free 
Software Foundation, Inc.
+;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+;;   Free Software Foundation, Inc.
 
 ;; Author: Shenghuo Zhu <address@hidden>
 
@@ -366,10 +367,10 @@
   (goto-char (point-min))
   (while (re-search-forward "&\\(#[0-9]+\\|[a-z]+[0-9]*\\);" nil t)
     (let ((elem (if (eq (aref (match-string 1) 0) ?\#)
-                       (let ((c
-                              (string-to-number (substring
-                                                 (match-string 1) 1))))
-                         (if (mm-char-or-char-int-p c) c 32))
+                       (let ((c (mm-ucs-to-char
+                                 (string-to-number
+                                  (substring (match-string 1) 1)))))
+                         (if (mm-char-or-char-int-p c) c ?#))
                      (or (cdr (assq (intern (match-string 1))
                                     mm-url-html-entities))
                          ?#))))

Index: lisp/gnus/ChangeLog.2
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/gnus/ChangeLog.2,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -b -r1.35 -r1.36
--- lisp/gnus/ChangeLog.2       5 Jan 2009 03:21:50 -0000       1.35
+++ lisp/gnus/ChangeLog.2       9 Jan 2009 03:01:53 -0000       1.36
@@ -8763,8 +8763,7 @@
        * sieve-manage.el (sieve-manage-cram-md5-auth): Just send the SASL
        name (makes it work with recent Cyrus timsieved).
 
-2002-05-20  Jason Baker  <address@hidden>
-       Trivial patch.
+2002-05-20  Jason Baker  <address@hidden>  (tiny change)
 
        * gnus-art.el (gnus-request-article-this-buffer): Try
        reconnecting if you don't get the message.
@@ -9189,8 +9188,7 @@
 
        * nnmaildir.el: Fixed some buggy invocations of nnmaildir--pgname.
 
-2002-03-31  Andrew Cohen  <address@hidden>
-       Trivial patch.
+2002-03-31  Andrew Cohen  <address@hidden>  (tiny change)
 
        * dns.el: open-network-stream under XEmacs does udp.
 
@@ -10451,8 +10449,7 @@
 
        * nnweb.el (nnweb-type-definition): Clean up.
 
-2002-01-21  Alastair Burt  <address@hidden>
-       Trivial patch.
+2002-01-21  Alastair Burt  <address@hidden>  (tiny change)
 
        * gnus-art.el (gnus-mm-display-part): Make sure that the summary
        buffer exists before jumping to it.
@@ -11088,8 +11085,7 @@
 
        * gnus.el (gnus-logo-color-alist): Added more colors from Luis.
 
-2002-01-05  Keiichi Suzuki  <address@hidden>
-       Trivial patch.
+2002-01-05  Keiichi Suzuki  <address@hidden>  (tiny change)
 
        * nntp.el (nntp-possibly-change-group): Erase contents of nntp
        buffer to get rid of junk line.
@@ -13307,8 +13303,7 @@
        * gnus-spec.el (gnus-correct-pad-form): Re-revert.
        (gnus-parse-simple-format): Re-revert.
 
-2001-09-16  Katsuhiro Hermit Endo  <address@hidden>
-       Trivial patch.
+2001-09-16  Katsuhiro Hermit Endo  <address@hidden>  (tiny change)
 
        * gnus-spec.el (gnus-parse-complex-format): Don't fold search
        case.  (Thanks to Daiki Ueno <address@hidden>.)
@@ -14156,8 +14151,7 @@
        * message.el (message-indent-citation): Quote only lines starting
        with ">" using `message-yank-cited-prefix'.
 
-2001-08-05  Nuutti Kotivuori  <address@hidden>
-       Trivial patch.
+2001-08-05  Nuutti Kotivuori  <address@hidden>  (tiny change)
 
        * gnus-cache.el (gnus-cache-possibly-enter-article): Use
        gnus-cache-fully-p.
@@ -14926,8 +14920,7 @@
        * nntp.el (nntp-send-command-nodelete): Ditto.
        * nntp.el (nntp-send-command-and-decode): Ditto.
 
-2001-06-30  YAGI Tatsuya  <address@hidden>
-       Trivial patch.
+2001-06-30  YAGI Tatsuya  <address@hidden>  (tiny change)
 
        * gnus-start.el (gnus-check-first-time-used): Use `if' instead of
        `when'.
@@ -15646,8 +15639,7 @@
 
        * message.el (message-generate-headers-first): Update doc.
 
-2001-03-10  Matthias Wiehl  <address@hidden>
-       Trivial patch.
+2001-03-10  Matthias Wiehl  <address@hidden>  (tiny change)
 
        * gnus.el (gnus-summary-line-format): Typo.
 
@@ -16021,8 +16013,7 @@
        * message.el (message-cancel-news): Allow to shoot foot.
        (message-supersede): Ditto.
 
-2001-02-08  Tommi Vainikainen  <address@hidden>
-       Trivial patch.
+2001-02-08  Tommi Vainikainen  <address@hidden>  (tiny change)
 
        * gnus-sum.el (gnus-simplify-subject-re): Use
        message-subject-re-regexp.
@@ -16487,8 +16478,7 @@
 
        * time-date.el (time-to-number-of-days): New function.
 
-2001-01-04 11:06:14  Gregory Chernov  <address@hidden>
-       Trivial patch.
+2001-01-04 11:06:14  Gregory Chernov  <address@hidden>  (tiny change)
 
        * nnslashdot.el (nnslashdot-request-list): Always get the right
        sid.
@@ -16645,8 +16635,7 @@
        (gnus-uu-mark-by-regexp): Use it.
        (gnus-new-processable): New function.
 
-2000-12-28 19:21:57  Inge Frick  <address@hidden>
-        Trivial patch.
+2000-12-28 19:21:57  Inge Frick  <address@hidden>  (tiny change)
 
        * gnus-sum.el (gnus-no-mark): New variable.
 
@@ -16665,8 +16654,7 @@
        * qp.el (quoted-printable-encode-region): Don't check multibyte in
        XEmacs.
 
-2000-12-25  Lloyd Zusman  <address@hidden>
-       Trivial patch.
+2000-12-25  Lloyd Zusman  <address@hidden>  (tiny change)
 
        * mml.el (mml-read-tag): Save tag location.
 
@@ -18370,8 +18358,7 @@
        (nnultimate-table-regexp): New variable.
        (nnultimate-forum-table-p): Use it.
 
-2000-10-30  Ed L Cashin  <address@hidden>
-       Trivial patch.
+2000-10-30  Ed L Cashin  <address@hidden>  (tiny change)
 
        * gnus-sum.el (gnus-summary-expire-articles): Save point.
 

Index: lisp/gnus/mm-util.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/gnus/mm-util.el,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -b -r1.80 -r1.81
--- lisp/gnus/mm-util.el        5 Jan 2009 03:22:09 -0000       1.80
+++ lisp/gnus/mm-util.el        9 Jan 2009 03:01:53 -0000       1.81
@@ -40,6 +40,10 @@
 
 (defvar mm-mime-mule-charset-alist )
 
+;; Emulate functions that are not available in every (X)Emacs version.
+;; The name of a function is prefixed with mm-, like `mm-char-int' for
+;; `char-int' that is a native XEmacs function, not available in Emacs.
+;; Gnus programs all should use mm- functions, not the original ones.
 (eval-and-compile
   (mapc
    (lambda (elem)
@@ -47,11 +51,19 @@
        (if (fboundp (car elem))
           (defalias nfunc (car elem))
         (defalias nfunc (cdr elem)))))
-   `((coding-system-list . ignore)
+   `(;; `coding-system-list' is not available in XEmacs 21.4 built
+     ;; without the `file-coding' feature.
+     (coding-system-list . ignore)
+     ;; `char-int' is an XEmacs function, not available in Emacs.
      (char-int . identity)
+     ;; `coding-system-equal' is an Emacs function, not available in XEmacs.
      (coding-system-equal . equal)
+     ;; `annotationp' is an XEmacs function, not available in Emacs.
      (annotationp . ignore)
+     ;; `set-buffer-file-coding-system' is not available in XEmacs 21.4
+     ;; built without the `file-coding' feature.
      (set-buffer-file-coding-system . ignore)
+     ;; `read-charset' is an Emacs function, not available in XEmacs.
      (read-charset
       . ,(lambda (prompt)
           "Return a charset."
@@ -61,6 +73,7 @@
             (mapcar (lambda (e) (list (symbol-name (car e))))
                     mm-mime-mule-charset-alist)
             nil t))))
+     ;; `subst-char-in-string' is not available in XEmacs 21.4.
      (subst-char-in-string
       . ,(lambda (from to string &optional inplace)
           ;; stolen (and renamed) from nnheader.el
@@ -75,11 +88,14 @@
                 (aset string idx to))
               (setq idx (1+ idx)))
             string)))
+     ;; `replace-in-string' is an XEmacs function, not available in Emacs.
      (replace-in-string
       . ,(lambda (string regexp rep &optional literal)
           "See `replace-regexp-in-string', only the order of args differs."
           (replace-regexp-in-string regexp rep string nil literal)))
+     ;; `string-as-unibyte' is an Emacs function, not available in XEmacs.
      (string-as-unibyte . identity)
+     ;; `string-make-unibyte' is an Emacs function, not available in XEmacs.
      (string-make-unibyte . identity)
      ;; string-as-multibyte often doesn't really do what you think it does.
      ;; Example:
@@ -99,11 +115,18 @@
      ;; (string-as-multibyte s)   ~= (decode-coding-string s 'emacs-mule)
      ;; (string-to-multibyte s)   ~= (decode-coding-string s 'binary)
      ;; (string-make-multibyte s) ~= (decode-coding-string s 
locale-coding-system)
+     ;; `string-as-multibyte' is an Emacs function, not available in XEmacs.
      (string-as-multibyte . identity)
+     ;; `multibyte-string-p' is an Emacs function, not available in XEmacs.
      (multibyte-string-p . ignore)
+     ;; `insert-byte' is available only in Emacs 23.1 or greater.
      (insert-byte . insert-char)
+     ;; `multibyte-char-to-unibyte' is an Emacs function, not available
+     ;; in XEmacs.
      (multibyte-char-to-unibyte . identity)
+     ;; `set-buffer-multibyte' is an Emacs function, not available in XEmacs.
      (set-buffer-multibyte . ignore)
+     ;; `special-display-p' is an Emacs function, not available in XEmacs.
      (special-display-p
       . ,(lambda (buffer-name)
           "Returns non-nil if a buffer named BUFFER-NAME gets a special frame."
@@ -119,6 +142,7 @@
                             (stringp (car elem))
                             (string-match (car elem) buffer-name)
                             (throw 'return (cdr elem)))))))))
+     ;; `substring-no-properties' is available only in Emacs 22.1 or greater.
      (substring-no-properties
       . ,(lambda (string &optional from to)
           "Return a substring of STRING, without text properties.
@@ -130,12 +154,30 @@
 With one argument, just copy STRING without its properties."
           (setq string (substring string (or from 0) to))
           (set-text-properties 0 (length string) nil string)
-          string)))))
-
+          string))
+     ;; `line-number-at-pos' is available only in Emacs 22.1 or greater
+     ;; and XEmacs 21.5.
+     (line-number-at-pos
+      . ,(lambda (&optional pos)
+          "Return (narrowed) buffer line number at position POS.
+If POS is nil, use current buffer location.
+Counting starts at (point-min), so the value refers
+to the contents of the accessible portion of the buffer."
+          (let ((opoint (or pos (point))) start)
+            (save-excursion
+              (goto-char (point-min))
+              (setq start (point))
+              (goto-char opoint)
+              (forward-line 0)
+              (1+ (count-lines start (point))))))))))
+
+;; `decode-coding-string', `encode-coding-string', `decode-coding-region'
+;; and `encode-coding-region' are available in Emacs and XEmacs built with
+;; the `file-coding' feature, but the XEmacs versions treat nil, that is
+;; given as the `coding-system' argument, as the `binary' coding system.
 (eval-and-compile
   (if (featurep 'xemacs)
       (if (featurep 'file-coding)
-         ;; Don't modify string if CODING-SYSTEM is nil.
          (progn
            (defun mm-decode-coding-string (str coding-system)
              (if coding-system
@@ -160,6 +202,7 @@
     (defalias 'mm-decode-coding-region 'decode-coding-region)
     (defalias 'mm-encode-coding-region 'encode-coding-region)))
 
+;; `string-to-multibyte' is available only in Emacs 22.1 or greater.
 (defalias 'mm-string-to-multibyte
   (cond
    ((featurep 'xemacs)
@@ -173,6 +216,7 @@
        (lambda (ch) (mm-string-as-multibyte (char-to-string ch)))
        string "")))))
 
+;; `char-or-char-int-p' is an XEmacs function, not available in Emacs.
 (eval-and-compile
   (defalias 'mm-char-or-char-int-p
     (cond
@@ -180,6 +224,44 @@
      ((fboundp 'char-valid-p) 'char-valid-p)
      (t 'identity))))
 
+;; `ucs-to-char' is a function that Mule-UCS provides.
+(if (featurep 'xemacs)
+    (cond ((and (fboundp 'unicode-to-char) ;; XEmacs 21.5.
+               (subrp (symbol-function 'unicode-to-char)))
+          (if (featurep 'mule)
+              (defalias 'mm-ucs-to-char 'unicode-to-char)
+            (defun mm-ucs-to-char (codepoint)
+              "Convert Unicode codepoint to character."
+              (or (unicode-to-char codepoint) ?#))))
+         ((featurep 'mule)
+          (defun mm-ucs-to-char (codepoint)
+            "Convert Unicode codepoint to character."
+            (if (fboundp 'ucs-to-char) ;; Mule-UCS is loaded.
+                (progn
+                  (defalias 'mm-ucs-to-char
+                    (lambda (codepoint)
+                      "Convert Unicode codepoint to character."
+                      (condition-case nil
+                          (or (ucs-to-char codepoint) ?#)
+                        (error ?#))))
+                  (mm-ucs-to-char codepoint))
+              (condition-case nil
+                  (or (int-to-char codepoint) ?#)
+                (error ?#)))))
+         (t
+          (defun mm-ucs-to-char (codepoint)
+            "Convert Unicode codepoint to character."
+            (condition-case nil
+                (or (int-to-char codepoint) ?#)
+              (error ?#)))))
+  (if (let ((char (make-char 'japanese-jisx0208 36 34)))
+       (eq char (decode-char 'ucs char)))
+      ;; Emacs 23.
+      (defalias 'mm-ucs-to-char 'identity)
+    (defun mm-ucs-to-char (codepoint)
+      "Convert Unicode codepoint to character."
+      (or (decode-char 'ucs codepoint) ?#))))
+
 ;; Fixme:  This seems always to be used to read a MIME charset, so it
 ;; should be re-named and fixed (in Emacs) to offer completion only on
 ;; proper charset names (base coding systems which have a

Index: lisp/net/imap.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/net/imap.el,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- lisp/net/imap.el    5 Jan 2009 03:22:44 -0000       1.16
+++ lisp/net/imap.el    9 Jan 2009 03:01:53 -0000       1.17
@@ -3,7 +3,7 @@
 ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
 ;;   2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
-;; Author: Simon Josefsson <address@hidden>
+;; Author: Simon Josefsson <address@hidden>
 ;; Keywords: mail
 
 ;; This file is part of GNU Emacs.
@@ -23,7 +23,7 @@
 
 ;;; Commentary:
 
-;; imap.el is a elisp library providing an interface for talking to
+;; imap.el is an elisp library providing an interface for talking to
 ;; IMAP servers.
 ;;
 ;; imap.el is roughly divided in two parts, one that parses IMAP
@@ -72,25 +72,25 @@
 ;; explanatory for someone that know IMAP.  All functions have
 ;; additional documentation on how to invoke them.
 ;;
-;; imap.el support RFC1730/2060/RFC3501 (IMAP4/IMAP4rev1), implemented
+;; imap.el supports RFC1730/2060/RFC3501 (IMAP4/IMAP4rev1).  The implemented
 ;; IMAP extensions are RFC2195 (CRAM-MD5), RFC2086 (ACL), RFC2342
 ;; (NAMESPACE), RFC2359 (UIDPLUS), the IMAP-part of RFC2595 (STARTTLS,
 ;; LOGINDISABLED) (with use of external library starttls.el and
-;; program starttls), and the GSSAPI / kerberos V4 sections of RFC1731
-;; (with use of external program `imtest'), RFC2971 (ID).  It also
+;; program starttls), and the GSSAPI / Kerberos V4 sections of RFC1731
+;; (with use of external program `imtest'), and RFC2971 (ID).  It also
 ;; takes advantage of the UNSELECT extension in Cyrus IMAPD.
 ;;
 ;; Without the work of John McClary Prevost and Jim Radford this library
 ;; would not have seen the light of day.  Many thanks.
 ;;
-;; This is a transcript of short interactive session for demonstration
+;; This is a transcript of a short interactive session for demonstration
 ;; purposes.
 ;;
 ;; (imap-open "my.mail.server")
 ;; => " *imap* my.mail.server:0"
 ;;
 ;; The rest are invoked with current buffer as the buffer returned by
-;; `imap-open'.  It is possible to do all without this, but it would
+;; `imap-open'.  It is possible to do it all without this, but it would
 ;; look ugly here since `buffer' is always the last argument for all
 ;; imap.el API functions.
 ;;
@@ -121,6 +121,7 @@
 ;; Todo:
 ;;
 ;; o Parse UIDs as strings? We need to overcome the 28 bit limit somehow.
+;;   Use IEEE floats (which are effectively exact)?  -- fx
 ;; o Don't use `read' at all (important places already fixed)
 ;; o Accept list of articles instead of message set string in most
 ;;   imap-message-* functions.
@@ -131,7 +132,7 @@
 ;;  - 19991218 added starttls/digest-md5 patch,
 ;;             by Daiki Ueno <address@hidden>
 ;;             NB! you need SLIM for starttls.el and digest-md5.el
-;;  - 19991023 commited to pgnus
+;;  - 19991023 committed to pgnus
 ;;
 
 ;;; Code:
@@ -211,12 +212,12 @@
 
 (defcustom imap-process-connection-type nil
   "*Value for `process-connection-type' to use for Kerberos4, GSSAPI and SSL.
-The `process-connection-type' variable control type of device
+The `process-connection-type' variable controls the type of device
 used to communicate with subprocesses.  Values are nil to use a
 pipe, or t or `pty' to use a pty.  The value has no effect if the
 system has no ptys or if all ptys are busy: then a pipe is used
-in any case.  The value takes effect when a IMAP server is
-opened, changing it after that has no effect."
+in any case.  The value takes effect when an IMAP server is
+opened; changing it after that has no effect."
   :version "22.1"
   :group 'imap
   :type 'boolean)
@@ -230,20 +231,28 @@
   :type 'boolean)
 
 (defcustom imap-log nil
-  "If non-nil, a imap session trace is placed in *imap-log* buffer.
+  "If non-nil, an imap session trace is placed in `imap-log-buffer'.
 Note that username, passwords and other privacy sensitive
-information (such as e-mail) may be stored in the *imap-log*
-buffer.  It is not written to disk, however.  Do not enable this
-variable unless you are comfortable with that."
+information (such as e-mail) may be stored in the buffer.
+It is not written to disk, however.  Do not enable this
+variable unless you are comfortable with that.
+
+See also `imap-debug'."
   :group 'imap
   :type 'boolean)
 
 (defcustom imap-debug nil
-  "If non-nil, random debug spews are placed in *imap-debug* buffer.
+  "If non-nil, trace imap- functions into `imap-debug-buffer'.
+Uses `trace-function-background', so you can turn it off with,
+say, `untrace-all'.
+
 Note that username, passwords and other privacy sensitive
-information (such as e-mail) may be stored in the *imap-debug*
-buffer.  It is not written to disk, however.  Do not enable this
-variable unless you are comfortable with that."
+information (such as e-mail) may be stored in the buffer.
+It is not written to disk, however.  Do not enable this
+variable unless you are comfortable with that.
+
+This variable only takes effect when loading the `imap' library.
+See also `imap-log'."
   :group 'imap
   :type 'boolean)
 
@@ -268,7 +277,7 @@
   :group 'imap)
 
 (defcustom imap-store-password nil
-  "If non-nil, store session password without promting."
+  "If non-nil, store session password without prompting."
   :group 'imap
   :type 'boolean)
 
@@ -393,7 +402,7 @@
   "Obarray with mailbox data.")
 
 (defvar imap-mailbox-prime 997
-  "Length of imap-mailbox-data.")
+  "Length of `imap-mailbox-data'.")
 
 (defvar imap-current-message nil
   "Current message number.")
@@ -402,7 +411,7 @@
   "Obarray with message data.")
 
 (defvar imap-message-prime 997
-  "Length of imap-message-data.")
+  "Length of `imap-message-data'.")
 
 (defvar imap-capability nil
   "Capability for server.")
@@ -440,17 +449,23 @@
 
 (defvar imap-enable-exchange-bug-workaround nil
   "Send FETCH UID commands as *:* instead of *.
-Enabling this appears to be required for some servers (e.g.,
-Microsoft Exchange) which otherwise would trigger a response 'BAD
-The specified message set is invalid.'.")
+
+When non-nil, use an alternative UIDS form.  Enabling appears to
+be required for some servers (e.g., Microsoft Exchange 2007)
+which otherwise would trigger a response 'BAD The specified
+message set is invalid.'.  We don't unconditionally use this
+form, since this is said to be significantly inefficient.
+
+This variable is set to t automatically per server if the
+canonical form fails.")
 
 
 ;; Utility functions:
 
 (defun imap-remassoc (key alist)
-  "Delete by side effect any elements of LIST whose car is `equal' to KEY.
-The modified LIST is returned.  If the first member
-of LIST has a car that is `equal' to KEY, there is no way to remove it
+  "Delete by side effect any elements of ALIST whose car is `equal' to KEY.
+The modified ALIST is returned.  If the first member
+of ALIST has a car that is `equal' to KEY, there is no way to remove it
 by side effect; therefore, write `(setq foo (remassoc key foo))' to be
 sure of changing the value of `foo'."
   (when alist
@@ -650,7 +665,7 @@
   nil)
 
 (defun imap-ssl-open (name buffer server port)
-  "Open a SSL connection to server."
+  "Open an SSL connection to SERVER."
   (let ((cmds (if (listp imap-ssl-program) imap-ssl-program
                (list imap-ssl-program)))
        cmd done)
@@ -711,6 +726,13 @@
         (process (open-tls-stream name buffer server port)))
     (when process
       (while (and (memq (process-status process) '(open run))
+                 ;; FIXME: Per the "blue moon" comment, the process/buffer
+                 ;; handling here, and elsewhere in functions which open
+                 ;; streams, looks confused.  Obviously we can change buffers
+                 ;; if a different process handler kicks in from
+                 ;; `accept-process-output' or `sit-for' below, and TRT seems
+                 ;; to be to `save-buffer' around those calls.  (I wonder why
+                 ;; `sit-for' is used with a non-zero wait.)  -- fx
                  (set-buffer buffer) ;; XXX "blue moon" nntp.el bug
                  (goto-char (point-max))
                  (forward-line -1)
@@ -1081,7 +1103,7 @@
           imap-process))))
 
 (defun imap-open (server &optional port stream auth buffer)
-  "Open a IMAP connection to host SERVER at PORT returning a buffer.
+  "Open an IMAP connection to host SERVER at PORT returning a buffer.
 If PORT is unspecified, a default value is used (143 except
 for SSL which use 993).
 STREAM indicates the stream to use, see `imap-streams' for available
@@ -1402,7 +1424,7 @@
 
 (defun imap-mailbox-expunge (&optional asynch buffer)
   "Expunge articles in current folder in BUFFER.
-If ASYNCH, do not wait for succesful completion of the command.
+If ASYNCH, do not wait for successful completion of the command.
 If BUFFER is nil the current buffer is assumed."
   (with-current-buffer (or buffer (current-buffer))
     (when (and imap-current-mailbox (not (eq imap-state 'examine)))
@@ -1412,7 +1434,7 @@
 
 (defun imap-mailbox-close (&optional asynch buffer)
   "Expunge articles and close current folder in BUFFER.
-If ASYNCH, do not wait for succesful completion of the command.
+If ASYNCH, do not wait for successful completion of the command.
 If BUFFER is nil the current buffer is assumed."
   (with-current-buffer (or buffer (current-buffer))
     (when imap-current-mailbox
@@ -1510,7 +1532,7 @@
        (nreverse out)))))
 
 (defun imap-mailbox-subscribe (mailbox &optional buffer)
-  "Send the SUBSCRIBE command on the mailbox to server in BUFFER.
+  "Send the SUBSCRIBE command on the MAILBOX to server in BUFFER.
 Returns non-nil if successful."
   (with-current-buffer (or buffer (current-buffer))
     (imap-ok-p (imap-send-command-wait (concat "SUBSCRIBE \""
@@ -1518,7 +1540,7 @@
                                               "\"")))))
 
 (defun imap-mailbox-unsubscribe (mailbox &optional buffer)
-  "Send the SUBSCRIBE command on the mailbox to server in BUFFER.
+  "Send the SUBSCRIBE command on the MAILBOX to server in BUFFER.
 Returns non-nil if successful."
   (with-current-buffer (or buffer (current-buffer))
     (imap-ok-p (imap-send-command-wait (concat "UNSUBSCRIBE "
@@ -1528,8 +1550,8 @@
 (defun imap-mailbox-status (mailbox items &optional buffer)
   "Get status items ITEM in MAILBOX from server in BUFFER.
 ITEMS can be a symbol or a list of symbols, valid symbols are one of
-the STATUS data items -- ie 'messages, 'recent, 'uidnext, 'uidvalidity
-or 'unseen.  If ITEMS is a list of symbols, a list of values is
+the STATUS data items -- i.e. `messages', `recent', `uidnext', `uidvalidity',
+or `unseen'.  If ITEMS is a list of symbols, a list of values is
 returned, if ITEMS is a symbol only its value is returned."
   (with-current-buffer (or buffer (current-buffer))
     (when (imap-ok-p
@@ -1550,7 +1572,7 @@
 (defun imap-mailbox-status-asynch (mailbox items &optional buffer)
   "Send status item request ITEM on MAILBOX to server in BUFFER.
 ITEMS can be a symbol or a list of symbols, valid symbols are one of
-the STATUS data items -- ie 'messages, 'recent, 'uidnext, 'uidvalidity
+the STATUS data items -- i.e. 'messages, 'recent, 'uidnext, 'uidvalidity
 or 'unseen.  The IMAP command tag is returned."
   (with-current-buffer (or buffer (current-buffer))
     (imap-send-command (list "STATUS \""
@@ -1563,7 +1585,7 @@
                                        (list items))))))))
 
 (defun imap-mailbox-acl-get (&optional mailbox buffer)
-  "Get ACL on mailbox from server in BUFFER."
+  "Get ACL on MAILBOX from server in BUFFER."
   (let ((mailbox (imap-utf7-encode mailbox)))
     (with-current-buffer (or buffer (current-buffer))
       (when (imap-ok-p
@@ -1585,7 +1607,7 @@
                                     rights))))))
 
 (defun imap-mailbox-acl-delete (identifier &optional mailbox buffer)
-  "Removes any <identifier,rights> pair for IDENTIFIER in MAILBOX from server 
in BUFFER."
+  "Remove any <identifier,rights> pair for IDENTIFIER in MAILBOX from server 
in BUFFER."
   (let ((mailbox (imap-utf7-encode mailbox)))
     (with-current-buffer (or buffer (current-buffer))
       (imap-ok-p
@@ -1720,6 +1742,7 @@
   `(with-current-buffer (or ,buffer (current-buffer))
      (imap-message-get ,uid 'BODY)))
 
+;; FIXME: Should this try to use CHARSET?  -- fx
 (defun imap-search (predicate &optional buffer)
   (with-current-buffer (or buffer (current-buffer))
     (imap-mailbox-put 'search 'dummy)
@@ -1766,9 +1789,38 @@
   (let ((number (string-to-number string base)))
     (if (> number most-positive-fixnum)
        (error
-        (format "String %s cannot be converted to a lisp integer" number))
+        (format "String %s cannot be converted to a Lisp integer" number))
       number)))
 
+(defun imap-fetch-safe (uids props &optional receive nouidfetch buffer)
+  "Like `imap-fetch', but DTRT with Exchange 2007 bug.
+However, UIDS here is a cons, where the car is the canonical form
+of the UIDS specification, and the cdr is the one which works with
+Exchange 2007 or, potentially, other buggy servers.
+See `imap-enable-exchange-bug-workaround'."
+  ;; We don't unconditionally use the alternative (valid) form, since
+  ;; this is said to be significantly inefficient.  The first time we
+  ;; get here for a given, we'll try the canonical form.  If we get
+  ;; the known error from the buggy server, set the flag
+  ;; buffer-locally (to account for connections to multiple servers),
+  ;; then re-try with the alternative UIDS spec.
+  (condition-case data
+      (imap-fetch (if imap-enable-exchange-bug-workaround
+                     (cdr uids)
+                   (car uids))
+                 props receive nouidfetch buffer)
+    (error
+     (if (and (not imap-enable-exchange-bug-workaround)
+             (string-match
+              "The specified message set is invalid"
+              (cadr data)))
+        (with-current-buffer (or buffer (current-buffer))
+          (set (make-local-variable
+                'imap-enable-exchange-bug-workaround)
+               t)
+          (imap-fetch (cdr uids) props receive nouidfetch))
+       (signal (car data) (cdr data))))))
+
 (defun imap-message-copyuid-1 (mailbox)
   (if (imap-capability 'UIDPLUS)
       (list (nth 0 (imap-mailbox-get-1 'copyuid mailbox))
@@ -1778,8 +1830,7 @@
          (imap-message-data (make-vector 2 0)))
       (when (imap-mailbox-examine-1 mailbox)
        (prog1
-           (and (imap-fetch
-                 (if imap-enable-exchange-bug-workaround "*:*" "*") "UID")
+           (and (imap-fetch-safe '("*" . "*:*") "UID")
                 (list (imap-mailbox-get-1 'uidvalidity mailbox)
                       (apply 'max (imap-message-map
                                    (lambda (uid prop) uid) 'UID))))
@@ -1793,11 +1844,11 @@
 
 (defun imap-message-copy (articles mailbox
                                   &optional dont-create no-copyuid buffer)
-  "Copy ARTICLES (a string message set) to MAILBOX on server in
-BUFFER, creating mailbox if it doesn't exist.  If dont-create is
-non-nil, it will not create a mailbox.  On success, return a list with
+  "Copy ARTICLES to MAILBOX on server in BUFFER.
+ARTICLES is a string message set.  Create mailbox if it doesn't exist,
+unless DONT-CREATE is non-nil.  On success, return a list with
 the UIDVALIDITY of the mailbox the article(s) was copied to as the
-first element, rest of list contain the saved articles' UIDs."
+first element.  The rest of list contains the saved articles' UIDs."
   (when articles
     (with-current-buffer (or buffer (current-buffer))
       (let ((mailbox (imap-utf7-encode mailbox)))
@@ -1815,6 +1866,8 @@
            (or no-copyuid
                (imap-message-copyuid-1 mailbox)))))))
 
+;; FIXME: Amalgamate with imap-message-copyuid-1, using an extra arg, since it
+;; shares most of the code?  -- fx
 (defun imap-message-appenduid-1 (mailbox)
   (if (imap-capability 'UIDPLUS)
       (imap-mailbox-get-1 'appenduid mailbox)
@@ -1823,8 +1876,7 @@
          (imap-message-data (make-vector 2 0)))
       (when (imap-mailbox-examine-1 mailbox)
        (prog1
-           (and (imap-fetch
-                 (if imap-enable-exchange-bug-workaround "*:*" "*") "UID")
+           (and (imap-fetch-safe '("*" . "*:*") "UID")
                 (list (imap-mailbox-get-1 'uidvalidity mailbox)
                       (apply 'max (imap-message-map
                                    (lambda (uid prop) uid) 'UID))))
@@ -2201,7 +2253,7 @@
 ;;   resp-cond-bye   = "BYE" SP resp-text
 
 (defun imap-parse-greeting ()
-  "Parse a IMAP greeting."
+  "Parse an IMAP greeting."
   (cond ((looking-at "\\* OK ")
         (setq imap-state 'nonauth))
        ((looking-at "\\* PREAUTH ")
@@ -2623,7 +2675,7 @@
 
 (defun imap-parse-flag-list ()
   (let (flag-list start)
-    (assert (eq (char-after) ?\() nil "In imap-parse-flag-list")
+    (assert (eq (char-after) ?\() nil "In imap-parse-flag-list 1")
     (while (and (not (eq (char-after) ?\)))
                (setq start (progn
                              (imap-forward)
@@ -2632,7 +2684,7 @@
                              (point)))
                (> (skip-chars-forward "^ )" (point-at-eol)) 0))
       (push (buffer-substring start (point)) flag-list))
-    (assert (eq (char-after) ?\)) nil "In imap-parse-flag-list")
+    (assert (eq (char-after) ?\)) nil "In imap-parse-flag-list 2")
     (imap-forward)
     (nreverse flag-list)))
 
@@ -2828,7 +2880,7 @@
          (let (subbody)
            (while (and (eq (char-after) ?\()
                        (setq subbody (imap-parse-body)))
-            ;; buggy stalker communigate pro 3.0 insert a SPC between
+             ;; buggy stalker communigate pro 3.0 inserts a SPC between
              ;; parts in multiparts
              (when (and (eq (char-after) ?\ )
                         (eq (char-after (1+ (point))) ?\())
@@ -2861,22 +2913,28 @@
        (imap-forward)
        (push (imap-parse-nstring) body) ;; body-fld-desc
        (imap-forward)
-       ;; next `or' for Sun SIMS bug, it regard body-fld-enc as a
-       ;; nstring and return nil instead of defaulting back to 7BIT
+       ;; Next `or' for Sun SIMS bug.  It regards body-fld-enc as a
+       ;; nstring and returns nil instead of defaulting back to 7BIT
        ;; as the standard says.
+       ;; Exchange (2007, at least) does this as well.
        (push (or (imap-parse-nstring) "7BIT") body) ;; body-fld-enc
        (imap-forward)
-       (push (imap-parse-number) body) ;; body-fld-octets
+       ;; Exchange 2007 can return -1, contrary to the spec...
+       (if (eq (char-after) ?-)
+           (progn
+             (skip-chars-forward "-0-9")
+             (push nil body))
+         (push (imap-parse-number) body)) ;; body-fld-octets
 
-   ;; ok, we're done parsing the required parts, what comes now is one
-       ;; of three things:
+       ;; Ok, we're done parsing the required parts, what comes now is one of
+       ;; three things:
        ;;
        ;; envelope       (then we're parsing body-type-msg)
        ;; body-fld-lines (then we're parsing body-type-text)
        ;; body-ext-1part (then we're parsing body-type-basic)
        ;;
-  ;; the problem is that the two first are in turn optionally followed
-;; by the third.  So we parse the first two here (if there are any)...
+       ;; The problem is that the two first are in turn optionally followed
+       ;; by the third.  So we parse the first two here (if there are any)...
 
        (when (eq (char-after) ?\ )
          (imap-forward)

Index: lisp/net/dns.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/net/dns.el,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- lisp/net/dns.el     5 Jan 2009 03:22:43 -0000       1.7
+++ lisp/net/dns.el     9 Jan 2009 03:01:53 -0000       1.8
@@ -29,8 +29,8 @@
   "How many seconds to wait when doing DNS queries.")
 
 (defvar dns-servers nil
-  "Which DNS servers to query.
-If nil, /etc/resolv.conf will be consulted.")
+  "List of DNS servers to query.
+If nil, /etc/resolv.conf and nslookup will be consulted.")
 
 ;;; Internal code:
 
@@ -298,14 +298,24 @@
            (t string)))
       (goto-char point))))
 
-(defun dns-parse-resolv-conf ()
-  (when (file-exists-p "/etc/resolv.conf")
+(defun dns-set-servers ()
+  "Set `dns-servers' to a list of DNS servers or nil if none are found.
+Parses \"/etc/resolv.conf\" or calls \"nslookup\"."
+  (or (when (file-exists-p "/etc/resolv.conf")
+       (setq dns-servers nil)
     (with-temp-buffer
       (insert-file-contents "/etc/resolv.conf")
       (goto-char (point-min))
       (while (re-search-forward "^nameserver[\t ]+\\([^ \t\n]+\\)" nil t)
        (push (match-string 1) dns-servers))
-      (setq dns-servers (nreverse dns-servers)))))
+         (setq dns-servers (nreverse dns-servers))))
+      (when (executable-find "nslookup")
+       (with-temp-buffer
+         (call-process "nslookup" nil t nil "localhost")
+         (goto-char (point-min))
+         (re-search-forward
+          "^Address:[ \t]*\\([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+\\)" nil t)
+         (setq dns-servers (list (match-string 1)))))))
 
 (defun dns-read-txt (string)
   (if (> (length string) 1)
@@ -351,23 +361,26 @@
 
 (defvar dns-cache (make-vector 4096 0))
 
-(defun query-dns-cached (name &optional type fullp reversep)
+(defun dns-query-cached (name &optional type fullp reversep)
   (let* ((key (format "%s:%s:%s:%s" name type fullp reversep))
         (sym (intern-soft key dns-cache)))
     (if (and sym
             (boundp sym))
        (symbol-value sym)
-      (let ((result (query-dns name type fullp reversep)))
+      (let ((result (dns-query name type fullp reversep)))
        (set (intern key dns-cache) result)
        result))))
 
-(defun query-dns (name &optional type fullp reversep)
+;; The old names `query-dns' and `query-dns-cached' weren't used in Emacs 23
+;; yet, so no alias are provided.  --rsteib
+
+(defun dns-query (name &optional type fullp reversep)
   "Query a DNS server for NAME of TYPE.
 If FULLP, return the entire record returned.
 If REVERSEP, look up an IP address."
   (setq type (or type 'A))
   (unless dns-servers
-    (dns-parse-resolv-conf))
+    (dns-set-servers))
 
   (when reversep
     (setq name (concat

Index: doc/misc/gnus.texi
===================================================================
RCS file: /cvsroot/emacs/emacs/doc/misc/gnus.texi,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -b -r1.38 -r1.39
--- doc/misc/gnus.texi  8 Jan 2009 05:29:10 -0000       1.38
+++ doc/misc/gnus.texi  9 Jan 2009 03:01:53 -0000       1.39
@@ -9,8 +9,8 @@
 @documentencoding ISO-8859-1
 
 @copying
-Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -1623,7 +1623,7 @@
 
 @item gnus-before-startup-hook
 @vindex gnus-before-startup-hook
-A hook run after starting up Gnus successfully.
+A hook called as the first thing when Gnus is started.
 
 @item gnus-startup-hook
 @vindex gnus-startup-hook
@@ -3156,7 +3156,12 @@
 in the summary buffer you enter, and the form @code{nil} will be
 @code{eval}ed there.
 
-Note that this feature sets the variable locally to the summary buffer.
+Note that this feature sets the variable locally to the summary buffer
+if and only if @var{variable} has been bound as a variable.  Otherwise,
+only evaluating the form will take place.  So, you may want to bind the
+variable in advance using @code{defvar} or other if the result of the
+form needs to be set to it.
+
 But some variables are evaluated in the article buffer, or in the
 message buffer (of a reply or followup or otherwise newly created
 message).  As a workaround, it might help to add the variable in
@@ -3184,9 +3189,9 @@
 
 This can also be used as a group-specific hook function.  If you want to
 hear a beep when you enter a group, you could put something like
address@hidden(dummy-variable (ding))} in the parameters of that group.
address@hidden will be set to the (meaningless) result of the
address@hidden(ding)} form.
address@hidden(dummy-variable (ding))} in the parameters of that group.  If
address@hidden has been bound (see above), it will be set to the
+(meaningless) result of the @code{(ding)} form.
 
 Alternatively, since the VARIABLE becomes local to the group, this
 pattern can be used to temporarily change a hook.  For example, if the
@@ -6233,6 +6238,7 @@
 article treatment functions.  This will give you a ``raw'' article, just
 the way it came from the server.
 
address@hidden charset, view article with different charset
 If given a numerical prefix, you can do semi-manual charset stuff.
 @kbd{C-u 0 g cn-gb-2312 RET} will decode the message as if it were
 encoded in the @code{cn-gb-2312} charset.  If you have
@@ -22464,9 +22470,10 @@
 the @file{gnus-kill-to-score.el} package; if not, you'll have to do it
 by hand.
 
-The kill to score conversion package isn't included in Gnus by default.
-You can fetch it from
address@hidden://www.stud.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el}.
+The kill to score conversion package isn't included in Emacs by default.
+You can fetch it from the contrib directory of the Gnus distribution or
+from
address@hidden://heim.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el}.
 
 If your old kill files are very complex---if they contain more
 address@hidden forms than not, you'll have to convert them by

Index: doc/misc/ChangeLog
===================================================================
RCS file: /cvsroot/emacs/emacs/doc/misc/ChangeLog,v
retrieving revision 1.226
retrieving revision 1.227
diff -u -b -r1.226 -r1.227
--- doc/misc/ChangeLog  8 Jan 2009 05:29:05 -0000       1.226
+++ doc/misc/ChangeLog  9 Jan 2009 03:01:54 -0000       1.227
@@ -1,3 +1,18 @@
+2009-01-09  Katsumi Yamaoka  <address@hidden>
+
+       * gnus.texi (Group Parameters): Add note for local variables.
+
+2009-01-09  Reiner Steib  <address@hidden>
+
+       * gnus.texi (Converting Kill Files): Fix URL.  Include
+       gnus-kill-to-score.el in contrib directory.
+
+2009-01-09  Reiner Steib  <address@hidden>
+
+       * gnus.texi (Startup Variables): Fix gnus-before-startup-hook.
+       Reported by Leo <address@hidden>.  (Bug#1660)
+       (Paging the Article): Add index entry.
+
 2009-01-03  Stephen Leake  <address@hidden>
 
        * ada-mode.texi (Examples): Delete redundant text.

Index: lisp/calendar/time-date.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/calendar/time-date.el,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -b -r1.29 -r1.30
--- lisp/calendar/time-date.el  5 Jan 2009 03:20:42 -0000       1.29
+++ lisp/calendar/time-date.el  9 Jan 2009 03:01:54 -0000       1.30
@@ -39,6 +39,9 @@
 
 ;;; Code:
 
+;; Only necessary for `declare' when compiling Gnus with Emacs 21.
+(eval-when-compile (require 'cl))
+
 (defmacro with-decoded-time-value (varlist &rest body)
   "Decode a time value and bind it according to VARLIST, then eval BODY.
 
@@ -290,6 +293,10 @@
       (setq start (match-end 0)
             spec (match-string 1 string))
       (unless (string-equal spec "%")
+       ;; `assoc-string' is not available in Emacs 21.  So when compiling
+       ;; Gnus (`time-date.el' is part of Gnus) with Emacs 21, we get a
+       ;; warning here.  But `format-seconds' is not used anywhere in Gnus so
+       ;; it's not a real problem. --rsteib
         (or (setq match (assoc-string spec units t))
             (error "Bad format specifier: `%s'" spec))
         (if (assoc-string spec usedunits t)

Index: lisp/ChangeLog
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.15061
retrieving revision 1.15062
diff -u -b -r1.15061 -r1.15062
--- lisp/ChangeLog      9 Jan 2009 02:59:52 -0000       1.15061
+++ lisp/ChangeLog      9 Jan 2009 03:01:55 -0000       1.15062
@@ -1,3 +1,47 @@
+2009-01-09  Dave Love  <address@hidden>
+
+       * calendar/time-date.el: Require cl for `declare'.
+
+2009-01-09  Reiner Steib  <address@hidden>
+
+       * calendar/time-date.el (format-seconds): Explain `assoc-string'.
+       Suggested by Dave Love.
+
+2009-01-09  Dave Love  <address@hidden>
+
+       * net/imap.el (imap-string-to-integer): Fix typo.
+       (imap-fetch-safe): New function.
+       (imap-message-copyuid-1, imap-message-appenduid-1): Use it.
+
+       * net/imap.el (imap-process-connection-type, imap-debug, imap-open):
+       (imap-parse-greeting): Fix doc strings.
+       (imap-tls-open, imap-search, imap-message-appenduid-1): Add FIXMEs.
+       (imap-parse-flag-list): Make messages unique.
+       (imap-parse-body): Fix comments.  Add comment on Exchange 2007.
+
+       * net/imap.el (imap-message-appenduid-1): Fix typo in imap-fetch-safe
+       call.
+
+       * net/imap.el: Fix author email.  Doc fixes.
+       (imap-parse-body): Work around assertion failure in bogus Exchange 2007
+       reply.
+
+2009-01-09  Reiner Steib  <address@hidden>
+
+       * net/dns.el (dns-set-servers): Check "Address".  Fix typo.
+
+2009-01-09  Reiner Steib  <address@hidden>
+
+       * net/dns.el (dns-set-servers): Renamed from dns-parse-resolv-conf.
+       Call nslookup if resolv.conf isn't available.
+       (dns-query): Rename from query-dns.
+       (dns-query-cached): Rename from query-dns-cached.
+
+2009-01-09  Reiner Steib  <address@hidden>
+
+       * net/imap.el (imap-enable-exchange-bug-workaround): Explain
+       auto-detection in the doc string.
+
 2009-01-09  Juanma Barranquero  <address@hidden>
 
        * textmodes/ispell.el (ispell-check-minver, ispell-last-program-name)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]