;;; Interface functions
+(eval-when-compile
+ (defmacro nnrss-string-as-multibyte (string)
+ (if (featurep 'xemacs)
+ string
+ `(string-as-multibyte ,string))))
+
(deffoo nnrss-retrieve-headers (articles &optional group server fetch-old)
(nnrss-possibly-change-group group server)
(let (e)
(when text
(insert text)
(goto-char point)
- (while (re-search-forward "\n" nil t)
+ (while (search-forward "\n" nil t)
(replace-match " "))
(goto-char (point-max))
(insert "\n\n"))
(when text
(insert "<html><head></head><body>\n" text "\n</body></html>")
(goto-char point)
- (while (re-search-forward "\n" nil t)
+ (while (search-forward "\n" nil t)
(replace-match " "))
(goto-char (point-max))
(insert "\n\n"))
(defun nnrss-fetch (url &optional local)
"Fetch URL and put it in a the expected Lisp structure."
(with-temp-buffer
- ;some CVS versions of url.el need this to close the connection quickly
- (let* (xmlform htmlform)
+ ;;some CVS versions of url.el need this to close the connection quickly
+ (let (xmlform htmlform)
;; bit o' work necessary for w3 pre-cvs and post-cvs
(if local
(let ((coding-system-for-read 'binary))
(insert-file-contents url))
(mm-url-insert url))
-;; Because xml-parse-region can't deal with anything that isn't
-;; xml and w3-parse-buffer can't deal with some xml, we have to
-;; parse with xml-parse-region first and, if that fails, parse
-;; with w3-parse-buffer. Yuck. Eventually, someone should find out
-;; why w3-parse-buffer fails to parse some well-formed xml and
-;; fix it.
-
- (condition-case err
- (setq xmlform (xml-parse-region (point-min) (point-max)))
- (error (if (fboundp 'w3-parse-buffer)
- (setq htmlform (caddar (w3-parse-buffer
- (current-buffer))))
- (message "nnrss: Not valid XML and w3 parse not available (%s)"
- url))))
- (if htmlform
- htmlform
- xmlform))))
+ ;; Because xml-parse-region can't deal with anything that isn't
+ ;; xml and w3-parse-buffer can't deal with some xml, we have to
+ ;; parse with xml-parse-region first and, if that fails, parse
+ ;; with w3-parse-buffer. Yuck. Eventually, someone should find out
+ ;; why w3-parse-buffer fails to parse some well-formed xml and
+ ;; fix it.
+
+ (condition-case err
+ (setq xmlform (xml-parse-region (point-min) (point-max)))
+ (error (if (fboundp 'w3-parse-buffer)
+ (setq htmlform (caddar (w3-parse-buffer
+ (current-buffer))))
+ (message "nnrss: Not valid XML and w3 parse not available (%s)"
+ url))))
+ (if htmlform
+ htmlform
+ xmlform))))
(defun nnrss-possibly-change-group (&optional group server)
(when (and server
(defvar nnrss-extra-categories '(nnrss-snarf-moreover-categories))
(defun nnrss-generate-active ()
- (if (y-or-n-p "Fetch extra categories? ")
- (dolist (func nnrss-extra-categories)
- (funcall func)))
+ (when (y-or-n-p "Fetch extra categories? ")
+ (mapc 'funcall nnrss-extra-categories))
(save-excursion
(set-buffer nntp-server-buffer)
(erase-buffer)
(let ((coding-system-for-read 'binary))
(load file nil t t))
(dolist (e nnrss-group-data)
- (puthash (or (nth 2 e) (nth 3 e)) t nnrss-group-hashtb)
+ (puthash (or (nth 2 e) (nth 6 e)) t nnrss-group-hashtb)
(when (and (car e) (> nnrss-group-min (car e)))
(setq nnrss-group-min (car e)))
(when (and (car e) (< nnrss-group-max (car e)))
(defalias 'nnrss-insert 'nnrss-insert-w3)
-(if (featurep 'xemacs)
- (defalias 'nnrss-string-as-multibyte 'identity)
- (defalias 'nnrss-string-as-multibyte 'string-as-multibyte))
-
;;; Snarf functions
(defun nnrss-check-group (group server)
(if (setq url (nnrss-decode-entities-unibyte-string
(nnrss-node-text rss-ns 'link (cddr item))))
(not (gethash url nnrss-group-hashtb))
- (setq subject (nnrss-node-text rss-ns 'title item))
- (not (gethash subject nnrss-group-hashtb))))
- (setq subject (or subject (nnrss-node-text rss-ns 'title item)))
- (setq extra (or (nnrss-node-text content-ns 'encoded item)
+ (setq extra (or (nnrss-node-text content-ns 'encoded item)
+ (nnrss-node-text rss-ns 'description item)))
+ (not (gethash extra nnrss-group-hashtb))))
+ (setq subject (nnrss-node-text rss-ns 'title item))
+ (setq extra (or extra
+ (nnrss-node-text content-ns 'encoded item)
(nnrss-node-text rss-ns 'description item)))
(setq author (or (nnrss-node-text rss-ns 'author item)
(nnrss-node-text dc-ns 'creator item)
date
(and extra (nnrss-decode-entities-unibyte-string extra)))
nnrss-group-data)
- (puthash (or url subject) t nnrss-group-hashtb)
+ (puthash (or url extra) t nnrss-group-hashtb)
(setq changed t))
- (setq subject nil))
+ (setq extra nil))
(when changed
(nnrss-save-group-data group server)
(let ((pair (assoc group nnrss-server-data)))