* [patch] `gnus-agent-fetch-headers' problems
@ 1998-08-27 8:11 Mike McEwan
1998-08-27 8:52 ` Lars Magne Ingebrigtsen
0 siblings, 1 reply; 2+ messages in thread
From: Mike McEwan @ 1998-08-27 8:11 UTC (permalink / raw)
I think I may have finally found out how my `agent' .overview files
sometimes have their NOV lines out of sequence :-).
The problem is when, in what I may term my `headers only' groups, I
mark articles for download via `gnus-downloadable-mark'. The articles
are downloaded just fine, but come expiry time, this means that higher
numbered headers/articles can be expired *before* these lower numbered
articles I've later taken an interest in: Having been more recently
downloaded their entries appear later in the history file.
The net effect of this is that I end up with gaps in the
`gnus-agent-group-alist' for the group concerned. When then
calculating what articles to download in `gnus-agent-fetch-headers',
the resultant list of articles includes *again* the already expired
articles in these `gaps'. This list, with old headers to fetch, is not
necessarily a continuous sequence, but `nntp-retrieve-headers-with-xover'
thinks that it *is* and fetches the headers via `XOVER first-last' where
the gap between articles is less than 5 (default). Headers can then be
retrieved that were *not* asked for in the list of headers to fetch.
Anyone falling asleep here :-). Continuing...
Having retrieved headers into ` *Gnus agent overview*' that are not
in the list of articles requested then results in in the test:
(if (eq article (read (current-buffer)))
in `gnus-agent-copy-nov-line' never being true when we hit one of the
nov lines that we didn't ask for. `gnus-agent-braid-nov' continues:
(setq articles (cdr articles))
until we hit an article that *should* have its NOV line appended at
the end of the buffer. At this point the entire contents of ` *Gnus
agent overview*' are whacked on to the end of the .overview file,
regardless of the lowly numbered wanted/unwanted articles at the
beginning of this buffer.
My .overview file is now out of sequence and can have duplicate NOV
lines where unwanted articles have been retrieved a second time.
Good to get that out of my system, it's been bugging me for months
:-). The patch below does it for me (so far). Lars, I don't
understand the method that is used in `gnus-agent-fetch-headers' to
work out what we want to download. It asks for everything that is
unread, but not in `gnus-agent-group-alist'. Surely we're only
interested in those headers *after* the last one in this alist?
Headers that is, articles are obviously different.
--
Mike.
(I think the following should apply OK. I've had to do a bit of manual
editing to hack out some other stuff I had in here.)
(setq articles (cdr articles))--- ChangeLog.orig Wed Aug 26 05:20:31 1998
+++ ChangeLog Thu Aug 27 08:06:35 1998
@@ -1,3 +1,16 @@
+1998-08-27 Mike McEwan <mike@lotusland.demon.co.uk>
+
+ * gnus-agent.el (gnus-agent-fetch-group-1): Leave the calculation
+ of `articles' to `gnus-agent-fetch-headers'.
+ (gnus-agent-fetch-headers): We only want headers that are after
+ the last entry in `gnus-group-alist'.
+
Sat Aug 22 10:28:25 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
* gnus.el: Gnus v5.6.39 is released.
--- gnus-agent.el.orig Sun Aug 23 03:21:05 1998
+++ gnus-agent.el Thu Aug 27 08:01:40 1998
@@ -750,18 +750,10 @@
(insert "\n"))
(pop gnus-agent-group-alist))))
-(defun gnus-agent-fetch-headers (group articles &optional force)
- (gnus-agent-load-alist group)
- ;; Find out what headers we need to retrieve.
- (when articles
- (while (and articles
- (assq (car articles) gnus-agent-article-alist))
- (pop articles))
- (let ((arts articles))
- (while (cdr arts)
- (if (assq (cadr arts) gnus-agent-article-alist)
- (setcdr arts (cddr arts))
- (setq arts (cdr arts)))))
+(defun gnus-agent-fetch-headers (group &optional force)
+ (let ((articles (gnus-uncompress-range
+ (cons (1+ (caar (last (gnus-agent-load-alist group))))
+ (cdr (gnus-active group))))))
;; Fetch them.
(when articles
(gnus-message 7 "Fetching headers for %s..." group)
@@ -782,7 +774,7 @@
(gnus-agent-enter-history "last-header-fetched-for-session"
(list (cons group (nth (- (length articles) 1) articles)))
(gnus-time-to-day (current-time)))
- t)))))
+ articles)))))
(defsubst gnus-agent-copy-nov-line (article)
(let (b e)
@@ -842,7 +834,7 @@
(gnus-agent-article-name ".agentview" group)))))
(defun gnus-agent-save-alist (group &optional articles state dir)
- "Load the article-state alist for GROUP."
+ "Save the article-state alist for GROUP."
(nnheader-temp-write (if dir
(concat dir ".agentview")
(gnus-agent-article-name ".agentview" group))
@@ -896,8 +888,7 @@
category predicate info marks score-param)
;; Fetch headers.
(when (and (or (gnus-active group) (gnus-activate-group group))
- (setq articles (gnus-list-of-unread-articles group))
- (gnus-agent-fetch-headers group articles))
+ (setq articles (gnus-agent-fetch-headers group)))
;; Parse them and see which articles we want to fetch.
(setq gnus-newsgroup-dependencies
(make-vector (length articles) 0))
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~1998-08-27 8:52 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1998-08-27 8:11 [patch] `gnus-agent-fetch-headers' problems Mike McEwan
1998-08-27 8:52 ` Lars Magne Ingebrigtsen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).