;;; gnus-int.el --- backend interface functions for Gnus
-;; Copyright (C) 1996,97,98 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000
+;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
+;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
;; Keywords: news
;; This file is part of GNU Emacs.
(defun gnus-server-opened (gnus-command-method)
"Check whether a connection to GNUS-COMMAND-METHOD has been opened."
- (when (stringp gnus-command-method)
- (setq gnus-command-method (gnus-server-to-method gnus-command-method)))
- (funcall (inline (gnus-get-function gnus-command-method 'server-opened))
- (nth 1 gnus-command-method)))
+ (unless (eq (gnus-server-status gnus-command-method)
+ 'denied)
+ (when (stringp gnus-command-method)
+ (setq gnus-command-method (gnus-server-to-method gnus-command-method)))
+ (funcall (inline (gnus-get-function gnus-command-method 'server-opened))
+ (nth 1 gnus-command-method))))
(defun gnus-status-message (gnus-command-method)
"Return the status message from GNUS-COMMAND-METHOD.
articles (gnus-group-real-name group)
(nth 1 gnus-command-method) fetch-old))))
+(defun gnus-retrieve-parsed-headers (articles group &optional fetch-old
+ dependencies force-new)
+ "Request parsed-headers for ARTICLES in GROUP.
+If FETCH-OLD, retrieve all headers (or some subset thereof) in the group."
+ (unless dependencies
+ (setq dependencies
+ (save-excursion
+ (set-buffer gnus-summary-buffer)
+ gnus-newsgroup-dependencies)))
+ (let ((gnus-command-method (gnus-find-method-for-group group))
+ headers)
+ (if (and gnus-use-cache (numberp (car articles)))
+ (setq headers
+ (gnus-cache-retrieve-parsed-headers articles group fetch-old
+ dependencies force-new))
+ (let ((func (gnus-get-function gnus-command-method
+ 'retrieve-parsed-headers 'no-error)))
+ (if func
+ (setq headers (funcall func articles dependencies
+ (gnus-group-real-name group)
+ (nth 1 gnus-command-method) fetch-old
+ force-new)
+ gnus-headers-retrieved-by (car headers)
+ headers (cdr headers))
+ (setq gnus-headers-retrieved-by
+ (funcall
+ (gnus-get-function gnus-command-method 'retrieve-headers)
+ articles (gnus-group-real-name group)
+ (nth 1 gnus-command-method) fetch-old))
+ )))
+ (or headers
+ (if (eq gnus-headers-retrieved-by 'nov)
+ (gnus-get-newsgroup-headers-xover
+ articles nil dependencies gnus-newsgroup-name t)
+ (gnus-get-newsgroup-headers dependencies)))
+ ))
+
(defun gnus-retrieve-articles (articles group)
"Request ARTICLES in GROUP."
(let ((gnus-command-method (gnus-find-method-for-group group)))
"Set marks on articles in the backend."
(let ((gnus-command-method (gnus-find-method-for-group group)))
(if (not (gnus-check-backend-function
- 'request-set-mark (car gnus-command-method)))
- action
+ 'request-set-mark (car gnus-command-method)))
+ action
(funcall (gnus-get-function gnus-command-method 'request-set-mark)
- (gnus-group-real-name group) action
- (nth 1 gnus-command-method)))))
+ (gnus-group-real-name group) action
+ (nth 1 gnus-command-method)))))
(defun gnus-request-update-mark (group article mark)
"Allow the backend to change the mark the user tries to put on an article."
(defun gnus-request-scan (group gnus-command-method)
"Request a SCAN being performed in GROUP from GNUS-COMMAND-METHOD.
If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned."
- (when gnus-plugged
- (let ((gnus-command-method
- (if group (gnus-find-method-for-group group) gnus-command-method))
- (gnus-inhibit-demon t))
- (funcall (gnus-get-function gnus-command-method 'request-scan)
- (and group (gnus-group-real-name group))
- (nth 1 gnus-command-method)))))
+ (let ((gnus-command-method
+ (if group (gnus-find-method-for-group group) gnus-command-method))
+ (gnus-inhibit-demon t)
+ (mail-source-plugged gnus-plugged))
+ (if (or gnus-plugged (not (gnus-agent-method-p gnus-command-method)))
+ (funcall (gnus-get-function gnus-command-method 'request-scan)
+ (and group (gnus-group-real-name group))
+ (nth 1 gnus-command-method)))))
(defsubst gnus-request-update-info (info gnus-command-method)
"Request that GNUS-COMMAND-METHOD update INFO."
(goto-char (point-max))
(unless (bolp)
(insert "\n"))
- (unless no-encode
- (save-restriction
- (message-narrow-to-head)
- (mail-encode-encoded-word-buffer))
- (message-encode-message-body))
(let ((func (car (or gnus-command-method
(gnus-find-method-for-group group)))))
(funcall (intern (format "%s-request-accept-article" func))
last)))
(defun gnus-request-replace-article (article group buffer &optional no-encode)
- (unless no-encode
- (save-restriction
- (message-narrow-to-head)
- (mail-encode-encoded-word-buffer))
- (message-encode-message-body))
(let ((func (car (gnus-group-name-to-method group))))
(funcall (intern (format "%s-request-replace-article" func))
article (gnus-group-real-name group) buffer)))