(defconst gnus-maintainer "Lars Magne Ingebrigtsen <larsi@ifi.uio.no>"
"The mail address of the Gnus maintainer.")
-(defconst gnus-version "(ding) Gnus v0.43"
+(defconst gnus-version "(ding) Gnus v0.44"
"Version number for this version of Gnus.")
(defvar gnus-info-nodes
(defun gnus-add-to-range-old (ranges list)
"Return a list of ranges that has all articles from both RANGES and LIST.
Note: LIST has to be sorted over `<'."
- (let* ((ranges (if (and ranges (atom (car ranges))) (list ranges) ranges))
+ (let* ((ranges (if (and ranges (not (listp (cdr ranges))))
+ (list ranges) ranges))
(inrange ranges)
did-one
range nranges first last)
;; If the range of read articles is a single range, then the
;; first unread article is the article after the last read
;; article. Sounds logical, doesn't it?
- (if (atom (car read))
+ (if (not (listp (cdr read)))
(setq first (1+ (cdr read)))
;; `read' is a list of ranges.
(while read
(setq num 0))
((not range)
(setq num (- (1+ (cdr active)) (car active))))
- ((atom (car range))
+ ((not (listp (cdr range)))
;; Fix a single (num . num) range according to the
;; active hash table.
(and (< (cdr range) (car active)) (setcdr range (car active)))
(>= (car active)
(or (and (atom (car (cdr range))) (car (cdr range)))
(car (car (cdr range))))))
- (setcdr (car range) (cdr (car (cdr range))))
+ (if (numberp (car range))
+ (setcar range
+ (cons (car range)
+ (or (and (numberp (car (cdr range)))
+ (car (cdr range)))
+ (cdr (car (cdr range))))))
+ (setcdr (car range)
+ (or (and (numberp (nth 1 range)) (nth 1 range))
+ (cdr (car (cdr range))))))
(setcdr range (cdr (cdr range))))
;; Adjust the first element to be the same as the lower limit.
(if (and (not (atom (car range)))
(setq itotal (1+ (- (cdr active) (car active))))
(if (setq ireads (nth 2 info))
(let ((itreads
- (if (atom (car ireads))
+ (if (not (listp (cdr ireads)))
(setq ireads (list (cons (car ireads) (cdr ireads))))
(setq ireads (copy-alist ireads)))))
- (if (< (cdr (car ireads)) (car active))
+ (if (< (or (and (numberp (car ireads)) (car ireads))
+ (cdr (car ireads))) (car active))
(setq ireads (setq itreads (cdr ireads))))
- (if (and ireads (< (car (car ireads)) (car active)))
- (setcar (car ireads) (1+ (car active))))
+ (if (and ireads (< (or (and (numberp (car ireads))
+ (car ireads))
+ (car (car ireads))) (car active)))
+ (setcar (or (and (numberp (car ireads)) ireads)
+ (car ireads)) (1+ (car active))))
(while itreads
- (setcar (car itreads)
- (+ (- (car (car itreads)) (car active)) offset))
- (setcdr (car itreads)
- (+ (- (cdr (car itreads)) (car active)) offset))
+ (setcar (or (and (numberp (car itreads)) itreads)
+ (car itreads))
+ (+ (- (or (and (numberp (car itreads)) (car itreads))
+ (car (car itreads))) (car active)) offset))
+ (if (not (numberp (car itreads)))
+ (setcdr (car itreads)
+ (+ (- (cdr (car itreads)) (car active)) offset)))
(setq itreads (cdr itreads)))
(setq reads (nconc reads ireads))))
(setq offset (+ offset (1- itotal)))