Function: gnus-read-header
gnus-read-header is a byte-compiled function defined in
gnus-sum.el.gz.
Signature
(gnus-read-header ID &optional HEADER)
Documentation
Read the headers of article ID and enter them into the Gnus system.
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-sum.el.gz
;;; Header reading.
(defun gnus-read-header (id &optional header)
"Read the headers of article ID and enter them into the Gnus system."
(let ((group gnus-newsgroup-name)
(gnus-override-method
(or
gnus-override-method
(and (gnus-news-group-p gnus-newsgroup-name)
(car (gnus-refer-article-methods)))))
where)
;; First we check to see whether the header in question is already
;; fetched.
(if (stringp id)
;; This is a Message-ID.
(setq header (or header (gnus-id-to-header id)))
;; This is an article number.
(setq header (or header (gnus-summary-article-header id))))
(if (and header
(not (gnus-summary-article-sparse-p (mail-header-number header))))
;; We have found the header.
header
;; We have to really fetch the header to this article.
(with-current-buffer nntp-server-buffer
(when (setq where (gnus-request-head id group))
(nnheader-fold-continuation-lines)
(goto-char (point-max))
(insert ".\n")
(goto-char (point-min))
(insert "211 ")
(princ (cond
((numberp id) id)
((cdr where) (cdr where))
(header (mail-header-number header))
(t gnus-reffed-article-number))
(current-buffer))
(insert " Article retrieved.\n"))
(if (or (not where)
(not (setq header (car (gnus-get-newsgroup-headers nil t)))))
() ; Malformed head.
(unless (gnus-summary-article-sparse-p (mail-header-number header))
(when (and (bound-and-true-p gnus-registry-enabled)
(not (gnus-ephemeral-group-p (car where))))
(gnus-registry-handle-action
(mail-header-id header) nil
(gnus-group-prefixed-name
(car where)
(or gnus-override-method (gnus-find-method-for-group group)))
(mail-header-subject header)
(mail-header-from header)))
(when (and (stringp id)
(or
(not (string= (gnus-group-real-name group)
(car where)))
(not (gnus-server-equal gnus-override-method
(gnus-group-method group)))))
;; If we fetched by Message-ID and the article came from
;; a different group (or server), we fudge some bogus
;; article numbers for this article.
(setf (mail-header-number header) gnus-reffed-article-number))
(with-current-buffer gnus-summary-buffer
(decf gnus-reffed-article-number)
(gnus-remove-header (mail-header-number header))
(push header gnus-newsgroup-headers)
(setq gnus-current-headers header)
(push (mail-header-number header) gnus-newsgroup-limit)))
header)))))