Function: gnus-convert-old-newsrc
gnus-convert-old-newsrc is a byte-compiled function defined in
gnus-start.el.gz.
Signature
(gnus-convert-old-newsrc)
Documentation
Convert old newsrc formats into the current format, if needed.
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-start.el.gz
(defun gnus-convert-old-newsrc ()
"Convert old newsrc formats into the current format, if needed."
(let ((fcv (and gnus-newsrc-file-version
(gnus-continuum-version gnus-newsrc-file-version)))
(gcv (gnus-continuum-version)))
(when fcv
;; A newsrc file was loaded.
(let (prompt-displayed
(converters
(sort
(mapcar (lambda (date-func)
(cons (gnus-continuum-version (car date-func))
date-func))
;; This is a list of converters that must be run
;; to bring the newsrc file up to the current
;; version. If you create an incompatibility
;; with older versions, you should create an
;; entry here. The entry should consist of the
;; current gnus version (hardcoded so that it
;; doesn't change with each release) and the
;; function that must be applied to convert the
;; previous version into the current version.
'(("September Gnus v0.1" nil
gnus-convert-old-ticks)
("Oort Gnus v0.08" "legacy-gnus-agent"
gnus-agent-convert-to-compressed-agentview)
("Gnus v5.10.7" "legacy-gnus-agent"
gnus-agent-unlist-expire-days)
("Gnus v5.10.7" "legacy-gnus-agent"
gnus-agent-unhook-expire-days)))
#'car-less-than-car)))
;; Skip converters older than the file version
(while (and converters (>= fcv (caar converters)))
(pop converters))
;; Perform converters to bring older version up to date.
(when (and converters (< fcv (caar converters)))
(while (and converters (< fcv (caar converters))
(<= (caar converters) gcv))
(let* ((converter-spec (pop converters))
(convert-to (nth 1 converter-spec))
(load-from (nth 2 converter-spec))
(func (nth 3 converter-spec)))
(when (and load-from
(not (fboundp func)))
(load load-from t))
(or prompt-displayed
(not (gnus-convert-converter-needs-prompt func))
(while (let (c
(cursor-in-echo-area t)
(echo-keystrokes 0))
(message "Convert gnus from version `%s' to `%s'? (n/y/?)"
gnus-newsrc-file-version gnus-version)
(setq c (read-char-exclusive))
(cond ((or (eq c ?n) (eq c ?N))
(error "Can not start gnus without converting"))
((or (eq c ?y) (eq c ?Y))
(setq prompt-displayed t)
nil)
((eq c ?\?)
(message "This conversion is irreversible. \
To be safe, you should backup your files before proceeding.")
(sit-for 5)
t)
(t
(gnus-message 3 "Ignoring unexpected input")
(sit-for 3)
t)))))
(funcall func convert-to)))
(gnus-dribble-enter
(format-message ";Converted gnus from version `%s' to `%s'."
gnus-newsrc-file-version gnus-version)))))))