]> git.eshelyaron.com Git - emacs.git/commitdiff
Merge from gnus--devo--0
authorMiles Bader <miles@gnu.org>
Mon, 19 Nov 2007 05:50:39 +0000 (05:50 +0000)
committerMiles Bader <miles@gnu.org>
Mon, 19 Nov 2007 05:50:39 +0000 (05:50 +0000)
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-933

etc/GNUS-NEWS
lisp/gnus/ChangeLog
lisp/gnus/gnus-msg.el
lisp/gnus/gnus-start.el
lisp/gnus/nnmail.el
lisp/gnus/nnml.el
lisp/gnus/nntp.el
lisp/gnus/pop3.el

index 585f62087d0a6569ac48184d0d6e561df80806ed..f7817bafb6a23934ba68636f0b64b92e25f9b2e3 100644 (file)
@@ -58,7 +58,7 @@ Articles::.
 
 ** International host names (IDNA) can now be decoded inside article bodies
 using `W i' (`gnus-summary-idna-message').  This requires that GNU Libidn
-(`http://www.gnu.org/software/libidn/') has been installed.
+(<http://www.gnu.org/software/libidn/>) has been installed.
 
 ** The non-ASCII group names handling has been much improved.  The back
 ends that fully support non-ASCII group names are now `nntp', `nnml',
@@ -106,7 +106,7 @@ From Newsgroups::.
 
 ** You can replace MIME parts with external bodies.  See
 `gnus-mime-replace-part' and `gnus-article-replace-part'.  *Note MIME
-Commands::, *note Using MIME::.
+Commands::, *Note Using MIME::.
 
 ** The option `mm-fill-flowed' can be used to disable treatment of
 format=flowed messages.  Also, flowed text is disabled when sending
@@ -146,7 +146,7 @@ Variables.
 ** The option `message-citation-line-format' controls the format of the
 "Whomever writes:" line.  You need to set
 `message-citation-line-function' to
-`message-insert-formated-citation-line' as well.
+`message-insert-formatted-citation-line' as well.
 
 \f
 * Changes in back ends
index 9b9f026f27be408b6c99a9faf530ce7e321ed57f..212c07111691e2cf13a9e5d73ca11a27ffd6cc87 100644 (file)
        * gnus-demon.el (gnus-demon):
        * gnus-uu.el (gnus-uu-default-view-rules): Fix typos in docstrings.
 
+2007-11-15  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * nntp.el (nntp-insert-buffer-substring, nntp-copy-to-buffer): New
+       macros.
+       (nntp-wait-for, nntp-retrieve-articles, nntp-async-trigger)
+       (nntp-retrieve-headers-with-xover): Use nntp-insert-buffer-substring to
+       copy data from unibyte buffer to multibyte current buffer.
+       (nntp-retrieve-headers, nntp-retrieve-groups); Use nntp-copy-to-buffer
+       to copy data from unibyte current buffer to multibyte buffer.
+       (nntp-make-process-buffer): Make process buffer unibyte.
+
+       * pop3.el (pop3-open-server): Fix typo in Lisp code.
+
+2007-11-14  Denys Duchier  <denys.duchier@univ-orleans.fr>  (tiny change)
+
+       * pop3.el (pop3-open-server): Accept and process data more robustly at
+       connexion start to avoid spurious "POP SSL connexion failed" errors.
+
+2007-11-14  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * gnus-start.el (gnus-active-to-gnus-format): Use unibyte buffer to
+       read group names.
+
+2007-11-12  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus-msg.el (gnus-confirm-mail-reply-to-news): Adjust :version.
+
+2007-11-12  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * nnmail.el (nnmail-parse-active): Make group names unibyte.
+       (nnmail-save-active): Use a unibyte buffer when saving active file,
+       which may contain non-ASCII group names.
+
+       * nnml.el (nnml-request-group): Decode group names in messages.
+
 2007-11-05  Reiner Steib  <Reiner.Steib@gmx.de>
 
        * message.el (message-citation-line-function)
index 891ed1bc2692b6dc8dde2b587fb48ddf094c4f86..f5bf3a7ef6571c5b6f8121637448c14e0f527f35 100644 (file)
@@ -265,7 +265,7 @@ This can also be a function receiving the group name as the only
 parameter, which should return non-nil if a confirmation is needed; or
 a regexp, in which case a confirmation is asked for if the group name
 matches the regexp."
-  :version "22.1"
+  :version "23.0" ;; No Gnus (default changed)
   :group 'gnus-message
   :type '(choice (const :tag "No" nil)
                 (const :tag "Yes" t)
index e58187548b6bcd0285e31c3506b7087b090bd4d5..98994d5aaf74c1058f6bf866bc5bab783ae30ecc 100644 (file)
@@ -2103,7 +2103,8 @@ If SCAN, request a scan of that group as well."
                            (if (equal method gnus-select-method)
                                (gnus-make-hashtable
                                 (count-lines (point-min) (point-max)))
-                             (gnus-make-hashtable 4096)))))))
+                             (gnus-make-hashtable 4096))))))
+       group max min)
     ;; Delete unnecessary lines.
     (goto-char (point-min))
     (cond
@@ -2138,8 +2139,12 @@ If SCAN, request a scan of that group as well."
                      (insert prefix)
                      (zerop (forward-line 1)))))))
     ;; Store the active file in a hash table.
-    (goto-char (point-min))
-    (let (group max min)
+    ;; Use a unibyte buffer in order to make `read' read non-ASCII
+    ;; group names (which have been encoded) as unibyte strings.
+    (mm-with-unibyte-buffer
+      (insert-buffer-substring cur)
+      (setq cur (current-buffer))
+      (goto-char (point-min))
       (while (not (eobp))
        (condition-case ()
            (progn
index 7608660f019984688d64df5a94b2c93ec293744e..8ff6d1d1459692c6d12f080670fd93b7108c0052 100644 (file)
@@ -693,7 +693,7 @@ nn*-request-list should have been called before calling this function."
              (setq group (symbol-name group)))
            (if (and (numberp (setq max (read buffer)))
                     (numberp (setq min (read buffer))))
-               (push (list group (cons min max))
+               (push (list (mm-string-as-unibyte group) (cons min max))
                      group-assoc)))
        (error nil))
       (widen)
@@ -708,6 +708,7 @@ nn*-request-list should have been called before calling this function."
   (let ((coding-system-for-write nnmail-active-file-coding-system))
     (when file-name
       (with-temp-file file-name
+       (mm-disable-multibyte)
        (nnmail-generate-active group-assoc)))))
 
 (defun nnmail-generate-active (alist)
index f483636418178b0834c918e70ecebb9ac3729b08..8a5afbe5b60784ae1cbbe01f58b190785334c63a 100644 (file)
@@ -258,7 +258,8 @@ non-nil.")
            (string-to-number (file-name-nondirectory path)))))))
 
 (deffoo nnml-request-group (group &optional server dont-check)
-  (let ((file-name-coding-system nnmail-pathname-coding-system))
+  (let ((file-name-coding-system nnmail-pathname-coding-system)
+       (decoded (nnml-decoded-group-name group server)))
     (cond
      ((not (nnml-possibly-change-directory group server))
       (nnheader-report 'nnml "Invalid group (no such directory)"))
@@ -268,15 +269,15 @@ non-nil.")
      ((not (file-directory-p nnml-current-directory))
       (nnheader-report 'nnml "%s is not a directory" nnml-current-directory))
      (dont-check
-      (nnheader-report 'nnml "Group %s selected" group)
+      (nnheader-report 'nnml "Group %s selected" decoded)
       t)
      (t
       (nnheader-re-read-dir nnml-current-directory)
       (nnmail-activate 'nnml)
       (let ((active (nth 1 (assoc group nnml-group-alist))))
        (if (not active)
-           (nnheader-report 'nnml "No such group: %s" group)
-         (nnheader-report 'nnml "Selected group %s" group)
+           (nnheader-report 'nnml "No such group: %s" decoded)
+         (nnheader-report 'nnml "Selected group %s" decoded)
          (nnheader-insert "211 %d %d %d %s\n"
                           (max (1+ (- (cdr active) (car active))) 0)
                           (car active) (cdr active) group)))))))
index c8c14da4df77c74f0392236f990418b97075030e..356ffefddeb4e9e74d61eb4d74b22b25713cd971 100644 (file)
@@ -364,6 +364,32 @@ be restored and the command retried."
 
   (throw 'nntp-with-open-group-error t))
 
+(defmacro nntp-insert-buffer-substring (buffer &optional start end)
+  "Copy string from unibyte buffer to multibyte current buffer."
+  (if (featurep 'xemacs)
+      `(insert-buffer-substring ,buffer ,start ,end)
+    `(if enable-multibyte-characters
+        (insert (with-current-buffer ,buffer
+                  (mm-string-to-multibyte
+                   ,(if (or start end)
+                        `(buffer-substring (or ,start (point-min))
+                                           (or ,end (point-max)))
+                      '(buffer-string)))))
+       (insert-buffer-substring ,buffer ,start ,end))))
+
+(defmacro nntp-copy-to-buffer (buffer start end)
+  "Copy string from unibyte current buffer to multibyte buffer."
+  (if (featurep 'xemacs)
+      `(copy-to-buffer ,buffer ,start ,end)
+    `(let ((string (buffer-substring ,start ,end)))
+       (with-current-buffer ,buffer
+        (erase-buffer)
+        (insert (if enable-multibyte-characters
+                    (mm-string-to-multibyte string)
+                  string))
+        (goto-char (point-min))
+        nil))))
+
 (defsubst nntp-wait-for (process wait-for buffer &optional decode discard)
   "Wait for WAIT-FOR to arrive from PROCESS."
 
@@ -409,7 +435,7 @@ be restored and the command retried."
            (save-excursion
              (set-buffer buffer)
              (goto-char (point-max))
-             (insert-buffer-substring (process-buffer process))
+             (nntp-insert-buffer-substring (process-buffer process))
              ;; Nix out "nntp reading...." message.
              (when nntp-have-messaged
                (setq nntp-have-messaged nil)
@@ -653,7 +679,7 @@ command whose response triggered the error."
                                              nntp-server-buffer))
                                    (buffer  (and process
                                                  (process-buffer process))))
-                               ;; When I an able to identify the
+                               ;; When I am able to identify the
                                ;; connection to the server AND I've
                                ;; received NO reponse for
                                ;; nntp-connection-timeout seconds.
@@ -738,7 +764,7 @@ command whose response triggered the error."
          (nnheader-fold-continuation-lines)
          ;; Remove all "\r"'s.
          (nnheader-strip-cr)
-         (copy-to-buffer nntp-server-buffer (point-min) (point-max))
+        (nntp-copy-to-buffer nntp-server-buffer (point-min) (point-max))
          'headers)))))
 
 (deffoo nntp-retrieve-groups (groups &optional server)
@@ -820,7 +846,8 @@ command whose response triggered the error."
 
            (if (not nntp-server-list-active-group)
                (progn
-                 (copy-to-buffer nntp-server-buffer (point-min) (point-max))
+                (nntp-copy-to-buffer nntp-server-buffer
+                                     (point-min) (point-max))
                  'group)
              ;; We have read active entries, so we just delete the
              ;; superfluous gunk.
@@ -828,7 +855,7 @@ command whose response triggered the error."
              (while (re-search-forward "^[.2-5]" nil t)
                (delete-region (match-beginning 0)
                               (progn (forward-line 1) (point))))
-             (copy-to-buffer nntp-server-buffer (point-min) (point-max))
+            (nntp-copy-to-buffer nntp-server-buffer (point-min) (point-max))
              'active)))))))
 
 (deffoo nntp-retrieve-articles (articles &optional group server)
@@ -893,7 +920,7 @@ command whose response triggered the error."
           (narrow-to-region
            (setq point (goto-char (point-max)))
            (progn
-             (insert-buffer-substring buf last-point (cdr entry))
+            (nntp-insert-buffer-substring buf last-point (cdr entry))
              (point-max)))
           (setq last-point (cdr entry))
           (nntp-decode-text)
@@ -1206,7 +1233,7 @@ password contained in '~/.nntp-authinfo'."
       (format " *server %s %s %s*"
              nntp-address nntp-port-number
              (gnus-buffer-exists-p buffer))))
-    (mm-enable-multibyte)
+    (mm-disable-multibyte)
     (set (make-local-variable 'after-change-functions) nil)
     (set (make-local-variable 'nntp-process-wait-for) nil)
     (set (make-local-variable 'nntp-process-callback) nil)
@@ -1390,7 +1417,7 @@ password contained in '~/.nntp-authinfo'."
                (goto-char (point-max))
                (save-restriction
                  (narrow-to-region (point) (point))
-                 (insert-buffer-substring buf start)
+                 (nntp-insert-buffer-substring buf start)
                  (when decode
                    (nntp-decode-text))))))
          ;; report it.
@@ -1619,7 +1646,7 @@ password contained in '~/.nntp-authinfo'."
        (when in-process-buffer-p
          (set-buffer buf)
          (goto-char (point-max))
-         (insert-buffer-substring process-buffer)
+         (nntp-insert-buffer-substring process-buffer)
          (set-buffer process-buffer)
          (erase-buffer)
          (set-buffer buf))
index 595d0c2ff640b1712cb5ced1312da53dec8b88cd..d152c2480ad167bcbcaf0ac9fe8527f4298d38b1 100644 (file)
@@ -242,16 +242,23 @@ Returns the process associated with the connection."
                                              mailhost port)))
                (when process
                  ;; There's a load of info printed that needs deleting.
-                 (while (when (memq (process-status process) '(open run))
-                          (pop3-accept-process-output process)
-                          (goto-char (point-max))
-                          (forward-line -1)
-                          (if (looking-at "\\+OK")
-                              (progn
-                                (delete-region (point-min) (point))
-                                nil)
+                 (let ((again 't))
+                   ;; repeat until
+                   ;; - either we received the +OK line
+                   ;; - or accept-process-output timed out without getting
+                   ;;   anything
+                   (while (and again
+                               (setq again (memq (process-status process)
+                                                 '(open run))))
+                     (setq again (pop3-accept-process-output process))
+                     (goto-char (point-max))
+                     (forward-line -1)
+                     (cond ((looking-at "\\+OK")
+                            (setq again nil)
+                            (delete-region (point-min) (point)))
+                           ((not again)
                             (pop3-quit process)
-                            (error "POP SSL connexion failed"))))
+                            (error "POP SSL connexion failed")))))
                  process)))
             ((eq pop3-stream-type 'starttls)
              ;; gnutls-cli, openssl don't accept service names