Function: gnus-agent-check-overview-buffer
gnus-agent-check-overview-buffer is a byte-compiled function defined
in gnus-agent.el.gz.
Signature
(gnus-agent-check-overview-buffer &optional BUFFER)
Documentation
Check the overview file given for sanity.
In particular, checks that the file is sorted by article number and that there are no duplicates.
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-agent.el.gz
(defun gnus-agent-check-overview-buffer (&optional buffer)
"Check the overview file given for sanity.
In particular, checks that the file is sorted by article number
and that there are no duplicates."
(let ((prev-num -1)
(backed-up nil))
(save-excursion
(when buffer
(set-buffer buffer))
(save-restriction
(widen)
(goto-char (point-min))
(while (< (point) (point-max))
(let ((p (point))
(cur (condition-case nil
(read (current-buffer))
(error nil))))
(cond
((or (not (integerp cur))
(not (eq (char-after) ?\t)))
(or backed-up
(setq backed-up (gnus-agent-backup-overview-buffer)))
(gnus-message 1
"Overview buffer contains garbage `%s'."
(buffer-substring
p (line-end-position))))
((= cur prev-num)
(or backed-up
(setq backed-up (gnus-agent-backup-overview-buffer)))
(gnus-message 1
"Duplicate overview line for %d" cur)
(delete-region p (progn (forward-line 1) (point))))
((< cur prev-num)
(or backed-up
(setq backed-up (gnus-agent-backup-overview-buffer)))
(gnus-message 1 "Overview buffer not sorted!")
(sort-numeric-fields 1 (point-min) (point-max))
(goto-char (point-min))
(setq prev-num -1))
(t
(setq prev-num cur)))
(forward-line 1)))))))