;;; Code:
;;
+(eval-when-compile (require 'cl))
(require 'elmo-vars)
(require 'elmo-util)
(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))
(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)
(not (string= (elmo-nntp-folder-group-internal
folder) "")))
(concat " active"
- (format " %s.*"
- (elmo-nntp-folder-group-internal folder)
- "")))))
+ (format
+ " %s.*"
+ (elmo-nntp-folder-group-internal folder))))))
(if (elmo-nntp-read-response session t)
(if (null (setq response (elmo-nntp-read-contents session)))
(error "NNTP List folders failed")
(progn
(setq regexp
(format "^\\(%s[^. ]+\\)\\([. ]\\).*\n"
- (if (and
- (elmo-nntp-folder-group-internal folder)
- (null (string=
- (elmo-nntp-folder-group-internal
- folder) "")))
+ (if (and (elmo-nntp-folder-group-internal folder)
+ (null (string=
+ (elmo-nntp-folder-group-internal
+ folder) "")))
(concat (elmo-nntp-folder-group-internal
folder)
- "\\.") "")))
+ "\\.")
+ "")))
(while (looking-at regexp)
(setq top-ng (elmo-match-buffer 1))
(if (string= (elmo-match-buffer 2) " ")
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)
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))
(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
(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
(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...")
(luna-define-method elmo-folder-process-crosspost ((folder elmo-nntp-folder))
(elmo-nntp-folder-process-crosspost folder))
-(luna-define-method elmo-folder-list-flagged-internal :around ((folder elmo-nntp-folder)
- flag)
+(luna-define-method elmo-folder-list-flagged :around ((folder elmo-nntp-folder)
+ flag &optional in-msgdb)
;; 2.3. elmo-folder-list-unreads return unread message list according to
;; `reads' slot.
- (case flag
- (unread
- (elmo-living-messages (luna-call-next-method)
- (elmo-nntp-folder-reads-internal folder)))
- ;; Should consider read, digest and any flag?
- (otherwise
- (luna-call-next-method))))
+ (let ((msgs (luna-call-next-method)))
+ (if in-msgdb
+ msgs
+ (case flag
+ (unread
+ (elmo-living-messages msgs (elmo-nntp-folder-reads-internal folder)))
+ ;; Should consider read, digest and any flag?
+ (otherwise
+ msgs)))))
(require 'product)
(product-provide (provide 'elmo-nntp) (require 'elmo-version))