Sync with `t-gnus-6_14'
authoryamaoka <yamaoka>
Wed, 17 May 2000 01:02:56 +0000 (01:02 +0000)
committeryamaoka <yamaoka>
Wed, 17 May 2000 01:02:56 +0000 (01:02 +0000)
-----------------------
* dgnushack.el (dgnushack-texi-format): Use `output-coding-system' instead of
`coding-system-for-write' when old Mule is used.

Sync with Gnus
--------------
* nndraft.el (nndraft-request-replace-article): Replace `mm-text-coding-system'
with `mail-source-text-coding-system'; Replace `mm-auto-save-coding-system'
with `message-draft-coding-system'.

* mail-source.el (mail-source-fetch-maildir): Replace `mm-text-coding-system'
with `mail-source-text-coding-system'.
(mail-source-text-coding-system): New variable.

* others...

15 files changed:
ChangeLog
lisp/ChangeLog
lisp/dgnushack.el
lisp/gnus-cus.el
lisp/gnus-group.el
lisp/gnus-srvr.el
lisp/gnus-sum.el
lisp/gnus-util.el
lisp/mail-source.el
lisp/nndraft.el
lisp/nnfolder.el
lisp/nnheader.el
lisp/nnmail.el
lisp/nnmh.el
lisp/nnml.el

index 4dd8a73..a2d945e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2000-05-17  Katsumi Yamaoka <yamaoka@jpl.org>
+
+       * lisp/nndraft.el (nndraft-request-replace-article): Replace
+       `mm-text-coding-system' with `mail-source-text-coding-system';
+       Replace `mm-auto-save-coding-system' with
+       `message-draft-coding-system'.
+
+       * lisp/mail-source.el (mail-source-fetch-maildir): Replace
+       `mm-text-coding-system' with `mail-source-text-coding-system'.
+       (mail-source-text-coding-system): New variable.
+
+       * lisp/dgnushack.el (dgnushack-texi-format): Use
+       `output-coding-system' instead of `coding-system-for-write' when
+       old Mule is used.
+
 2000-05-16  Katsumi Yamaoka <yamaoka@jpl.org>
 
        * lisp/message.el (message-forward) Replace the use of `eolp' with
index 0a8b138..2aa2bcd 100644 (file)
@@ -1,3 +1,47 @@
+2000-05-16 18:15:24  Shenghuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-group.el (gnus-group-apropos): Group name charset.
+       * gnus-sum.el (gnus-set-mode-line): Ditto.
+       * gnus-group.el (gnus-group-decoded-name): New function.
+       (gnus-group-edit-group): Use it.
+       * gnus-cus.el (gnus-group-customize): Use it.
+
+2000-05-16 17:55:57  Karl Kleinpaste <karl@charcoal.com>
+
+       * gnus-util.el (gnus-put-text-property-excluding-newlines): Improve.
+
+2000-05-16 16:22:17  Shenghuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-group.el (gnus-group-name-charset-method-alist): New variable.
+       (gnus-group-name-charset-group-alist): Ditto.
+       (gnus-group-name-charset): New function.
+       (gnus-group-name-decode): New function.
+       (gnus-group-insert-group-line): Use them.
+       (gnus-group-prepare-flat-list-dead): Ditto.
+       (gnus-group-list-active): Ditto.
+       (gnus-group-describe-all-groups): Ditto.
+       (gnus-group-prepare-flat-list-dead-predicate): Ditto.
+       * gnus-srvr.el: (gnus-browse-foreign-server): Decode group name and 
+       add gnus-group property.
+       (gnus-browse-group-name): Read gnus-group property.
+       
+2000-05-16 15:27:08  Shenghuo ZHU  <zsh@cs.rochester.edu>
+
+       * nnfolder.el (nnfolder-possibly-change-group): Use
+       file-name-coding-system instead of pathname-coding-system.
+       * nnmail.el (nnmail-find-file): Ditto.
+       (nnmail-write-region): Ditto.
+       * nnmh.el (nnmh-retrieve-headers): Ditto.
+       (nnmh-request-article): Ditto.
+       (nnmh-request-group): Ditto.
+       (nnmh-request-list): Ditto.
+       (nnmh-possibly-change-directory): Ditto.
+       (nnmh-active-number): Ditto.
+       * nnml.el (nnml-possibly-change-directory): Ditto.
+       (nnml-request-list): Ditto.
+       (nnml-request-article): Ditto.
+       (nnml-retrieve-headers): Ditto.
+       
 2000-05-16  Simon Josefsson  <jas@pdc.kth.se>
 
        * nnimap.el (nnimap-request-accept-article): Don't unselect
index 9c01d4f..3afc5ab 100644 (file)
@@ -379,7 +379,8 @@ You must specify the name of the package path as follows:
   (require 'texinfmt)
   (let ((auto-save-default nil)
        (find-file-run-dired nil)
-       coding-system-for-write)
+       coding-system-for-write
+       output-coding-system)
     (let ((error 0)
          file
          (files ()))
@@ -403,7 +404,9 @@ You must specify the name of the package path as follows:
            (progn
              (if buffer-file-name (kill-buffer (current-buffer)))
              (find-file file)
-             (setq coding-system-for-write buffer-file-coding-system)
+             (if (boundp 'MULE)
+                 (setq coding-system-for-write buffer-file-coding-system)
+               (setq output-coding-system (symbol-value 'file-coding-system)))
              (when (and addsuffix
                         (re-search-forward
                          "^@setfilename[\t ]+\\([^\t\n ]+\\)" nil t)
index 1bc3c6c..801c0e8 100644 (file)
@@ -305,7 +305,7 @@ DOC is a documentation string for the parameter.")
                     :tag  "topic parameters"
                     "(gnus)Topic Parameters"))
     (widget-insert " for <")
-    (widget-insert (or group topic))
+    (widget-insert (gnus-group-decoded-name (or group topic)))
     (widget-insert "> and press ")
     (widget-create 'push-button
                   :tag "done"
index 42e5a02..4d1dd6b 100644 (file)
@@ -395,6 +395,24 @@ ticked: The number of ticked articles."
   :group 'gnus-group-icons
   :type '(repeat (cons (sexp :tag "Form") file)))
 
+(defcustom gnus-group-name-charset-method-alist nil
+  "*Alist for method and the charset for group names.
+
+For example:
+    (((nntp \"news.com.cn\") . cn-gb-2312))
+"
+  :group 'gnus-charset
+  :type '(repeat (cons (sexp :tag "Method") (symbol :tag "Charset"))))
+
+(defcustom gnus-group-name-charset-group-alist nil
+  "*Alist for group regexp and the charset for group names.
+
+For example:
+    ((\"\\.com\\.cn:\" . cn-gb-2312))
+"
+  :group 'gnus-charset
+  :type '(repeat (cons (regexp :tag "Group") (symbol :tag "Charset"))))
+
 ;;; Internal variables
 
 (defvar gnus-group-sort-alist-function 'gnus-group-sort-flat
@@ -882,6 +900,29 @@ The following commands are available:
     (when gnus-carpal
       (gnus-carpal-setup-buffer 'group))))
 
+(defsubst gnus-group-name-charset (method group)
+  (if (null method)
+      (setq method (gnus-find-method-for-group group)))
+  (let ((item (assoc method gnus-group-name-charset-method-alist))
+       (alist gnus-group-name-charset-group-alist)
+       result)
+    (if item 
+       (cdr item)
+      (while (setq item (pop alist))
+       (if (string-match (car item) group)
+           (setq alist nil
+                 result (cdr item))))
+      result)))
+
+(defsubst gnus-group-name-decode (string charset)
+  (if (and string charset (featurep 'mule))
+      (decode-coding-string string charset)
+    string))
+
+(defun gnus-group-decoded-name (string)
+  (let ((charset (gnus-group-name-charset nil string)))
+    (gnus-group-name-decode string charset)))
+
 (defun gnus-group-list-groups (&optional level unread lowest)
   "List newsgroups with level LEVEL or lower that have unread articles.
 Default is all subscribed groups.
@@ -1025,16 +1066,24 @@ If REGEXP, only list groups matching REGEXP."
          (when (string-match regexp group)
            (gnus-add-text-properties
             (point) (prog1 (1+ (point))
-                      (insert " " mark "     *: " group "\n"))
+                      (insert " " mark "     *: "
+                              (gnus-group-name-decode group 
+                                                      (gnus-group-name-charset
+                                                       nil group)) 
+                              "\n"))
             (list 'gnus-group (gnus-intern-safe group gnus-active-hashtb)
                   'gnus-unread t
                   'gnus-level level))))
       ;; This loop is used when listing all groups.
       (while groups
+       (setq group (pop groups))
        (gnus-add-text-properties
         (point) (prog1 (1+ (point))
                   (insert " " mark "     *: "
-                          (setq group (pop groups)) "\n"))
+                          (gnus-group-name-decode group 
+                                                  (gnus-group-name-charset
+                                                   nil group)) 
+                          "\n"))
         (list 'gnus-group (gnus-intern-safe group gnus-active-hashtb)
               'gnus-unread t
               'gnus-level level))))))
@@ -1086,7 +1135,11 @@ If REGEXP, only list groups matching REGEXP."
                                                    gnus-tmp-marked number
                                                    gnus-tmp-method)
   "Insert a group line in the group buffer."
-  (let* ((gnus-tmp-active (gnus-active gnus-tmp-group))
+  (let* ((gnus-tmp-method
+         (gnus-server-get-method gnus-tmp-group gnus-tmp-method)) 
+        (group-name-charset (gnus-group-name-charset gnus-tmp-method
+                                                     gnus-tmp-group))
+        (gnus-tmp-active (gnus-active gnus-tmp-group))
         (gnus-tmp-number-total
          (if gnus-tmp-active
              (1+ (- (cdr gnus-tmp-active) (car gnus-tmp-active)))
@@ -1103,10 +1156,14 @@ If REGEXP, only list groups matching REGEXP."
                ((<= gnus-tmp-level gnus-level-unsubscribed) ?U)
                ((= gnus-tmp-level gnus-level-zombie) ?Z)
                (t ?K)))
-        (gnus-tmp-qualified-group (gnus-group-real-name gnus-tmp-group))
+        (gnus-tmp-qualified-group 
+         (gnus-group-name-decode (gnus-group-real-name gnus-tmp-group)
+                                 group-name-charset))
         (gnus-tmp-newsgroup-description
          (if gnus-description-hashtb
-             (or (gnus-gethash gnus-tmp-group gnus-description-hashtb) "")
+             (or (gnus-group-name-decode
+                  (gnus-gethash gnus-tmp-group gnus-description-hashtb) 
+                  group-name-charset) "")
            ""))
         (gnus-tmp-moderated
          (if (and gnus-moderated-hashtb
@@ -1115,8 +1172,6 @@ If REGEXP, only list groups matching REGEXP."
         (gnus-tmp-moderated-string
          (if (eq gnus-tmp-moderated ?m) "(m)" ""))
         (gnus-tmp-group-icon "==&&==")
-        (gnus-tmp-method
-         (gnus-server-get-method gnus-tmp-group gnus-tmp-method)) ;
         (gnus-tmp-news-server (or (cadr gnus-tmp-method) ""))
         (gnus-tmp-news-method (or (car gnus-tmp-method) ""))
         (gnus-tmp-news-method-string
@@ -2018,7 +2073,7 @@ and NEW-NAME will be prompted for."
        ((eq part 'method) "select method")
        ((eq part 'params) "group parameters")
        (t "group info"))
-      group)
+      (gnus-group-decoded-name group))
      `(lambda (form)
        (gnus-group-edit-group-done ',part ,group form)))))
 
@@ -3050,10 +3105,14 @@ entail asking the server for the groups."
        group)
     (erase-buffer)
     (while groups
+      (setq group (pop groups))
       (gnus-add-text-properties
        (point) (prog1 (1+ (point))
                 (insert "       *: "
-                        (setq group (pop groups)) "\n"))
+                        (gnus-group-name-decode group 
+                                                (gnus-group-name-charset
+                                                 nil group))
+                        "\n"))
        (list 'gnus-group (gnus-intern-safe group gnus-active-hashtb)
             'gnus-unread t
             'gnus-level (inline (gnus-group-level group)))))
@@ -3212,8 +3271,12 @@ to use."
     (mapatoms
      (lambda (group)
        (setq b (point))
-       (insert (format "      *: %-20s %s\n" (symbol-name group)
-                      (symbol-value group)))
+       (let ((charset (gnus-group-name-charset nil (symbol-name group))))
+        (insert (format "      *: %-20s %s\n" 
+                        (gnus-group-name-decode
+                         (symbol-name group) charset)
+                        (gnus-group-name-decode
+                         (symbol-value group) charset))))
        (gnus-add-text-properties
        b (1+ b) (list 'gnus-group group
                       'gnus-unread t 'gnus-marked nil
@@ -3255,11 +3318,13 @@ to use."
        (while groups
          ;; Groups may be entered twice into the list of groups.
          (when (not (string= (car groups) prev))
-           (insert (setq prev (car groups)) "\n")
-           (when (and gnus-description-hashtb
-                      (setq des (gnus-gethash (car groups)
-                                              gnus-description-hashtb)))
-             (insert "  " des "\n")))
+           (setq prev (car groups))
+           (let ((charset (gnus-group-name-charset nil prev)))
+             (insert (gnus-group-name-decode prev charset) "\n")
+             (when (and gnus-description-hashtb
+                        (setq des (gnus-gethash (car groups)
+                                                gnus-description-hashtb)))
+               (insert "  " (gnus-group-name-decode des charset) "\n"))))
          (setq groups (cdr groups)))
        (goto-char (point-min))))
     (pop-to-buffer obuf)))
@@ -3588,7 +3653,11 @@ or `gnus-group-catchup-group-hook'."
          (when (funcall predicate group)
            (gnus-add-text-properties
             (point) (prog1 (1+ (point))
-                      (insert " " mark "     *: " group "\n"))
+                      (insert " " mark "     *: " 
+                              (gnus-group-name-decode group 
+                                                      (gnus-group-name-charset
+                                                       nil group))
+                              "\n"))
             (list 'gnus-group (gnus-intern-safe group gnus-active-hashtb)
                   'gnus-unread t
                   'gnus-level level)))))))
index c7ae7b7..23a251c 100644 (file)
@@ -626,17 +626,17 @@ The following commands are available:
       (setq groups (sort groups
                         (lambda (l1 l2)
                           (string< (car l1) (car l2)))))
-      (let ((buffer-read-only nil) 
-           (gnus-select-method nil) 
-           name)
+      (let ((buffer-read-only nil) charset)
        (while groups
-         (setq group (car groups)
-               name (format "%s" (car group)))
-         (insert (if (cadr (gnus-gethash 
-                            (gnus-group-prefixed-name name method)
-                            gnus-newsrc-hashtb))
-                     " " "K")
-                 (format "%7d: " (cdr group)) name "\n")
+         (setq group (car groups))
+         (setq charset (gnus-group-name-charset method group))
+         (gnus-add-text-properties
+          (point)
+          (prog1 (1+ (point))
+            (insert
+             (format "K%7d: %s\n" (cdr group)
+                     (gnus-group-name-decode (car group) charset))))
+          (list 'gnus-group (car group)))
          (setq groups (cdr groups))))
       (switch-to-buffer (current-buffer))
       (goto-char (point-min))
@@ -724,11 +724,12 @@ buffer.
 (defun gnus-browse-group-name ()
   (save-excursion
     (beginning-of-line)
-    (when (re-search-forward ": \\(.*\\)$" (gnus-point-at-eol) t)
-      (gnus-group-prefixed-name
-       ;; Remove text props.
-       (format "%s" (match-string 1))
-       gnus-browse-current-method))))
+    (let ((name (get-text-property (point) 'gnus-group)))
+      (when (re-search-forward ": \\(.*\\)$" (gnus-point-at-eol) t)
+       (gnus-group-prefixed-name
+        (or name
+            (format "%s" (match-string 1)))
+        gnus-browse-current-method)))))
 
 (defun gnus-browse-unsubscribe-group ()
   "Toggle subscription of the current group in the browse buffer."
index 9a303aa..9995d24 100644 (file)
@@ -4487,7 +4487,11 @@ If WHERE is `summary', the summary mode line format will be used."
        (let* ((mformat (symbol-value
                         (intern
                          (format "gnus-%s-mode-line-format-spec" where))))
-              (gnus-tmp-group-name gnus-newsgroup-name)
+              (gnus-tmp-group-name (gnus-group-name-decode 
+                                    gnus-newsgroup-name
+                                    (gnus-group-name-charset 
+                                     nil
+                                     gnus-newsgroup-name)))
               (gnus-tmp-article-number (or gnus-current-article 0))
               (gnus-tmp-unread gnus-newsgroup-unreads)
               (gnus-tmp-unread-and-unticked (length gnus-newsgroup-unreads))
index 366e76c..0a62b5f 100644 (file)
@@ -614,7 +614,7 @@ Bind `print-quoted' and `print-readably' to t while printing."
     (save-excursion
       (save-restriction
        (goto-char beg)
-       (while (re-search-forward "[ \t]*\n" end 'move)
+       (while (re-search-forward "[ \t]+\\|[ \t]*\n" end 'move)
          (gnus-put-text-property beg (match-beginning 0) prop val)
          (setq beg (point)))
        (gnus-put-text-property beg (point) prop val)))))
index ff254c5..9c616ff 100644 (file)
@@ -77,6 +77,12 @@ If non-nil, this maildrop will be checked periodically for new mail."
   :group 'mail-source
   :type 'number)
 
+(defvar mail-source-text-coding-system
+  (if (memq system-type '(windows-nt ms-dos ms-windows))
+      'raw-text-dos
+    'raw-text)
+  "Text-safe coding system (For removing ^M).")
+
 ;;; Internal variables.
 
 (defvar mail-source-string ""
@@ -619,10 +625,14 @@ This only works when `display-time' is enabled."
            (when (and (not (file-directory-p file))
                       (not (if function
                                (funcall function file mail-source-crash-box)
-                             (let ((coding-system-for-write 
-                                    mm-text-coding-system)
-                                   (coding-system-for-read 
-                                    mm-text-coding-system))
+                             (let ((coding-system-for-write
+                                    mail-source-text-coding-system)
+                                   (coding-system-for-read
+                                    mail-source-text-coding-system)
+                                   (output-coding-system
+                                    mail-source-text-coding-system)
+                                   (input-coding-system
+                                    mail-source-text-coding-system))
                                (with-temp-file mail-source-crash-box
                                  (insert-file-contents file)
                                  (goto-char (point-min))
index 29c207a..763b7bc 100644 (file)
   (nndraft-possibly-change-group group)
   (let ((nnmail-file-coding-system
         (if (equal group "drafts")
-            mm-auto-save-coding-system
-          mm-text-coding-system)))
+            message-draft-coding-system
+          mail-source-text-coding-system)))
     (nnoo-parent-function 'nndraft 'nnmh-request-replace-article
                          (list article group buffer))))
 
index 9870186..fe757b6 100644 (file)
@@ -586,33 +586,52 @@ deleted.  Point is left where the deleted region was."
   ;; Change group.
   (when (and group
             (not (equal group nnfolder-current-group)))
-    (nnmail-activate 'nnfolder)
-    (if dont-check
-       (setq nnfolder-current-group group
-             nnfolder-current-buffer nil)
-      ;; If we have to change groups, see if we don't already have the
-      ;; folder in memory.  If we do, verify the modtime and destroy
-      ;; the folder if needed so we can rescan it.
-      (setq nnfolder-current-buffer
-           (nth 1 (assoc group nnfolder-buffer-alist)))
-
-      ;; If the buffer is not live, make sure it isn't in the alist.  If it
-      ;; is live, verify that nobody else has touched the file since last
-      ;; time.
-      (when (and nnfolder-current-buffer
-                (not (gnus-buffer-live-p nnfolder-current-buffer)))
-       (setq nnfolder-current-buffer nil))
-
-      (setq nnfolder-current-group group)
-
-      (when (or (not nnfolder-current-buffer)
-               (not (verify-visited-file-modtime
-                     nnfolder-current-buffer)))
-       (save-excursion
-         (when (setq nnfolder-current-buffer (nnfolder-read-folder group))
-           (set-buffer nnfolder-current-buffer)
-           (push (list group nnfolder-current-buffer)
-                 nnfolder-buffer-alist)))))))
+    (let ((file-name-coding-system nnmail-pathname-coding-system)
+         (pathname-coding-system nnmail-pathname-coding-system))
+      (nnmail-activate 'nnfolder)
+      (when (and (not (assoc group nnfolder-group-alist))
+                (not (file-exists-p
+                      (nnfolder-group-pathname group))))
+       ;; The group doesn't exist, so we create a new entry for it.
+       (push (list group (cons 1 0)) nnfolder-group-alist)
+       (nnfolder-save-active nnfolder-group-alist nnfolder-active-file))
+
+      (if dont-check
+         (setq nnfolder-current-group group
+               nnfolder-current-buffer nil)
+       (let (inf file)
+         ;; If we have to change groups, see if we don't already have the
+         ;; folder in memory.  If we do, verify the modtime and destroy
+         ;; the folder if needed so we can rescan it.
+         (setq nnfolder-current-buffer
+               (nth 1 (assoc group nnfolder-buffer-alist)))
+
+         ;; If the buffer is not live, make sure it isn't in the alist.  If it
+         ;; is live, verify that nobody else has touched the file since last
+         ;; time.
+         (when (and nnfolder-current-buffer
+                    (not (gnus-buffer-live-p nnfolder-current-buffer)))
+           (setq nnfolder-buffer-alist (delq inf nnfolder-buffer-alist)
+                 nnfolder-current-buffer nil))
+
+         (setq nnfolder-current-group group)
+
+         (when (or (not nnfolder-current-buffer)
+                   (not (verify-visited-file-modtime
+                         nnfolder-current-buffer)))
+           (save-excursion
+             (setq file (nnfolder-group-pathname group))
+             ;; See whether we need to create the new file.
+             (unless (file-exists-p file)
+               (gnus-make-directory (file-name-directory file))
+               (let ((nnmail-file-coding-system 
+                      (or nnfolder-file-coding-system-for-write
+                          nnfolder-file-coding-system-for-write)))
+                 (nnmail-write-region 1 1 file t 'nomesg)))
+             (when (setq nnfolder-current-buffer (nnfolder-read-folder group))
+               (set-buffer nnfolder-current-buffer)
+               (push (list group nnfolder-current-buffer)
+                     nnfolder-buffer-alist)))))))))
 
 (defun nnfolder-save-mail (group-art-list)
   "Called narrowed to an article."
index 0a098bf..c100d3a 100644 (file)
@@ -455,6 +455,7 @@ the line could be found."
     (let* ((file nil)
           (number (length articles))
           (count 0)
+          (file-name-coding-system 'binary)
           (pathname-coding-system 'binary)
           (case-fold-search t)
           (cur (current-buffer))
index 6f0e139..d496f71 100644 (file)
@@ -471,9 +471,10 @@ parameter.  It should return nil, `warn' or `delete'."
   (set-buffer nntp-server-buffer)
   (delete-region (point-min) (point-max))
   (let ((format-alist nil)
-        (after-insert-file-functions nil))
+       (after-insert-file-functions nil))
     (condition-case ()
        (let ((auto-mode-alist (nnheader-auto-mode-alist))
+             (file-name-coding-system nnmail-pathname-coding-system)
              (pathname-coding-system nnmail-pathname-coding-system))
          (insert-file-contents-as-coding-system
           nnmail-file-coding-system file)
@@ -1630,8 +1631,8 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
 
 (defun nnmail-write-region (start end filename &optional append visit lockname)
   "Do a `write-region', and then set the file modes."
-  (let ((pathname-coding-system nnmail-pathname-coding-system))
-    
+  (let ((file-name-coding-system nnmail-pathname-coding-system)
+       (pathname-coding-system nnmail-pathname-coding-system))
     (write-region-as-coding-system
      nnmail-file-coding-system start end filename append visit lockname)
     (set-file-modes filename nnmail-default-file-modes)))
index 9b1fdbe..6551b2f 100644 (file)
@@ -86,7 +86,8 @@ as unread by Gnus.")
           (large (and (numberp nnmail-large-newsgroup)
                       (> number nnmail-large-newsgroup)))
           (count 0)
-          (pathname-coding-system 'binary)
+          (file-name-coding-system nnmail-pathname-coding-system)
+          (pathname-coding-system nnmail-pathname-coding-system)
           beg article)
       (nnmh-possibly-change-directory newsgroup server)
       ;; We don't support fetching by Message-ID.
@@ -133,6 +134,7 @@ as unread by Gnus.")
           (large (and (numberp nnmail-large-newsgroup)
                       (> number nnmail-large-newsgroup)))
           (count 0)
+          (file-name-coding-system 'binary)
           (pathname-coding-system 'binary)
           (case-fold-search t)
           ;;beg
@@ -169,7 +171,8 @@ as unread by Gnus.")
   (let ((file (if (stringp id)
                  nil
                (concat nnmh-current-directory (int-to-string id))))
-       (pathname-coding-system 'binary)
+       (file-name-coding-system nnmail-pathname-coding-system)
+       (pathname-coding-system nnmail-pathname-coding-system)
        (nntp-server-buffer (or buffer nntp-server-buffer)))
     (and (stringp file)
         (file-exists-p file)
@@ -181,7 +184,8 @@ as unread by Gnus.")
   (nnheader-init-server-buffer)
   (nnmh-possibly-change-directory group server)
   (let ((pathname (nnmail-group-pathname group nnmh-directory))
-       (pathname-coding-system 'binary)
+       (file-name-coding-system nnmail-pathname-coding-system)
+       (pathname-coding-system nnmail-pathname-coding-system)
        dir)
     (cond
      ((not (file-directory-p pathname))
@@ -224,7 +228,8 @@ as unread by Gnus.")
 (deffoo nnmh-request-list (&optional server dir)
   (nnheader-insert "")
   (nnmh-possibly-change-directory nil server)
-  (let ((pathname-coding-system 'binary)
+  (let ((file-name-coding-system nnmail-pathname-coding-system)
+       (pathname-coding-system nnmail-pathname-coding-system)
        (nnmh-toplev
         (file-truename (or dir (file-name-as-directory nnmh-directory)))))
     (nnmh-request-list-1 nnmh-toplev))
@@ -439,7 +444,8 @@ as unread by Gnus.")
     (nnmh-open-server server))
   (when newsgroup
     (let ((pathname (nnmail-group-pathname newsgroup nnmh-directory))
-         (pathname-coding-system 'binary))
+         (file-name-coding-system nnmail-pathname-coding-system)
+         (pathname-coding-system nnmail-pathname-coding-system))
       (if (file-directory-p pathname)
          (setq nnmh-current-directory pathname)
        (error "No such newsgroup: %s" newsgroup)))))
@@ -488,7 +494,8 @@ as unread by Gnus.")
   "Compute the next article number in GROUP."
   (let ((active (cadr (assoc group nnmh-group-alist)))
        (dir (nnmail-group-pathname group nnmh-directory))
-       (pathname-coding-system 'binary)
+       (file-name-coding-system nnmail-pathname-coding-system)
+       (pathname-coding-system nnmail-pathname-coding-system)
        file)
     (unless active
       ;; The group wasn't known to nnmh, so we just create an active
index bf54e8a..7d5ac45 100644 (file)
@@ -105,7 +105,8 @@ all.  This may very well take some time.")
       (let ((file nil)
            (number (length sequence))
            (count 0)
-           (pathname-coding-system 'binary)
+           (file-name-coding-system nnmail-pathname-coding-system)
+           (pathname-coding-system nnmail-pathname-coding-system)
            beg article)
        (if (stringp (car sequence))
            'headers
@@ -166,7 +167,8 @@ all.  This may very well take some time.")
 (deffoo nnml-request-article (id &optional group server buffer)
   (nnml-possibly-change-directory group server)
   (let* ((nntp-server-buffer (or buffer nntp-server-buffer))
-        (pathname-coding-system 'binary)
+        (file-name-coding-system nnmail-pathname-coding-system)
+        (pathname-coding-system nnmail-pathname-coding-system)
         path gpath group-num)
     (if (stringp id)
        (when (and (setq group-num (nnml-find-group-number id))
@@ -197,7 +199,8 @@ all.  This may very well take some time.")
            (string-to-int (file-name-nondirectory path)))))))
 
 (deffoo nnml-request-group (group &optional server dont-check)
-  (let ((pathname-coding-system 'binary))
+  (let ((file-name-coding-system nnmail-pathname-coding-system)
+       (pathname-coding-system nnmail-pathname-coding-system))
     (cond
      ((not (nnml-possibly-change-directory group server))
       (nnheader-report 'nnml "Invalid group (no such directory)"))
@@ -255,7 +258,8 @@ all.  This may very well take some time.")
 (deffoo nnml-request-list (&optional server)
   (save-excursion
     (let ((nnmail-file-coding-system nnmail-active-file-coding-system)
-         (pathname-coding-system 'binary))
+         (file-name-coding-system nnmail-pathname-coding-system)
+         (pathname-coding-system nnmail-pathname-coding-system))
       (nnmail-find-file nnml-active-file))
     (setq nnml-group-alist (nnmail-get-active))
     t))
@@ -571,7 +575,8 @@ all.  This may very well take some time.")
   (if (not group)
       t
     (let ((pathname (nnmail-group-pathname group nnml-directory))
-         (pathname-coding-system 'binary))
+         (file-name-coding-system nnmail-pathname-coding-system)
+         (pathname-coding-system nnmail-pathname-coding-system))
       (when (not (equal pathname nnml-current-directory))
        (setq nnml-current-directory pathname
              nnml-current-group group