(elmo-nntp-server-command-index): Add entry `xhdr'.
[elisp/wanderlust.git] / elmo / elmo-nntp.el
index dbd373e..894e571 100644 (file)
@@ -32,6 +32,7 @@
 
 ;;; Code:
 ;;
+(eval-when-compile (require 'cl))
 
 (require 'elmo-vars)
 (require 'elmo-util)
@@ -176,7 +177,8 @@ Don't cache if nil.")
 
 (defconst elmo-nntp-server-command-index '((xover . 0)
                                           (listgroup . 1)
-                                          (list-active . 2)))
+                                          (list-active . 2)
+                                          (xhdr . 3)))
 
 (defmacro elmo-nntp-get-server-command (session)
   (` (assoc (cons (elmo-network-session-server-internal (, session))
@@ -417,7 +419,8 @@ Don't cache if nil.")
       (with-current-buffer outbuf
        (erase-buffer)
        (insert-buffer-substring (elmo-network-session-buffer session)
-                                start (- end 3))))
+                                start (- end 3))
+       (elmo-delete-cr-buffer)))
     t))
 
 (defun elmo-nntp-select-group (session group &optional force)
@@ -504,7 +507,7 @@ Don't cache if nil.")
                            (not (string= (elmo-nntp-folder-group-internal
                                           folder) "")))
                       (concat " active"
-                              (format 
+                              (format
                                " %s.*"
                                (elmo-nntp-folder-group-internal folder))))))
          (if (elmo-nntp-read-response session t)
@@ -623,18 +626,7 @@ Don't cache if nil.")
            ret-val)))
 
 (defun elmo-nntp-make-msglist (beg-str end-str)
-  (elmo-set-work-buf
-   (let ((beg-num (string-to-int beg-str))
-        (end-num (string-to-int end-str))
-        i)
-     (setq i beg-num)
-     (insert "(")
-     (while (<= i end-num)
-       (insert (format "%s " i))
-       (setq i (1+ i)))
-     (insert ")")
-     (goto-char (point-min))
-     (read (current-buffer)))))
+  (elmo-make-number-list (string-to-int beg-str) (string-to-int end-str)))
 
 (luna-define-method elmo-folder-list-messages-plugged ((folder
                                                        elmo-nntp-folder)
@@ -935,7 +927,7 @@ Don't cache if nil.")
          ret-list ret-val beg)
       (set-buffer tmp-buffer)
       (erase-buffer)
-      (elmo-set-buffer-multibyte nil)
+      (set-buffer-multibyte nil)
       (insert string)
       (goto-char (point-min))
       (setq beg (point))
@@ -969,8 +961,8 @@ Don't cache if nil.")
       (with-current-buffer (elmo-network-session-buffer session)
        (std11-field-body "Newsgroups")))))
 
-(luna-define-method elmo-message-fetch-with-cache-process :around
-  ((folder elmo-nntp-folder) number strategy &optional section unread)
+(luna-define-method elmo-message-fetch :around
+  ((folder elmo-nntp-folder) number strategy &optional unread section)
   (when (luna-call-next-method)
     (elmo-nntp-setup-crosspost-buffer folder number)
     (unless unread
@@ -1378,10 +1370,8 @@ Returns a list of cons cells like (NUMBER . VALUE)"
        (elmo-display-progress
         'elmo-nntp-retrieve-headers "Getting headers..." 100))
       (message "Getting headers...done")
-      ;; Remove all "\r"'s.
-      (goto-char (point-min))
-      (while (search-forward "\r\n" nil t)
-       (replace-match "\n"))
+      ;; Replace all CRLF with LF.
+      (elmo-delete-cr-buffer)
       (copy-to-buffer outbuf (point-min) (point-max)))))
 
 ;; end of from Gnus
@@ -1390,7 +1380,7 @@ Returns a list of cons cells like (NUMBER . VALUE)"
   (save-excursion
     (let ((new-msgdb (elmo-make-msgdb))
          beg entity i num message-id)
-      (elmo-set-buffer-multibyte nil)
+      (set-buffer-multibyte nil)
       (goto-char (point-min))
       (setq i 0)
       (message "Creating msgdb...")