projects
/
elisp
/
gnus.git-
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Synch with Gnus.
[elisp/gnus.git-]
/
lisp
/
nnweb.el
diff --git
a/lisp/nnweb.el
b/lisp/nnweb.el
index
5394105
..
ded79d9
100644
(file)
--- a/
lisp/nnweb.el
+++ b/
lisp/nnweb.el
@@
-1,5
+1,6
@@
;;; nnweb.el --- retrieving articles via web search engines
;;; nnweb.el --- retrieving articles via web search engines
-;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc.
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000
+;; Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: news
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: news
@@
-29,6
+30,7
@@
;;; Code:
(eval-when-compile (require 'cl))
;;; Code:
(eval-when-compile (require 'cl))
+(eval-when-compile (require 'gnus-clfns))
(require 'nnoo)
(require 'message)
(require 'nnoo)
(require 'message)
@@
-120,7
+122,6
@@
and `altavista'.")
(deffoo nnweb-request-scan (&optional group server)
(nnweb-possibly-change-server group server)
(deffoo nnweb-request-scan (&optional group server)
(nnweb-possibly-change-server group server)
- (setq nnweb-hashtb (gnus-make-hashtable 4095))
(funcall (nnweb-definition 'map))
(unless nnweb-ephemeral-p
(nnweb-write-active)
(funcall (nnweb-definition 'map))
(unless nnweb-ephemeral-p
(nnweb-write-active)
@@
-138,8
+139,6
@@
and `altavista'.")
(setq nnweb-search (nth 3 info))
(unless dont-check
(nnweb-read-overview group)))))
(setq nnweb-search (nth 3 info))
(unless dont-check
(nnweb-read-overview group)))))
- (unless dont-check
- (nnweb-request-scan group))
(cond
((not nnweb-articles)
(nnheader-report 'nnweb "No matching articles"))
(cond
((not nnweb-articles)
(nnheader-report 'nnweb "No matching articles"))
@@
-292,6
+291,7
@@
and `altavista'.")
(when group
(when (and (not nnweb-ephemeral-p)
(not (equal group nnweb-group)))
(when group
(when (and (not nnweb-ephemeral-p)
(not (equal group nnweb-group)))
+ (setq nnweb-hashtb (gnus-make-hashtable 4095))
(nnweb-request-group group nil t))))
(defun nnweb-init (server)
(nnweb-request-group group nil t))))
(defun nnweb-init (server)
@@
-314,6
+314,8
@@
and `altavista'.")
(mm-enable-multibyte)
(let ((coding-system-for-read 'binary)
(coding-system-for-write 'binary)
(mm-enable-multibyte)
(let ((coding-system-for-read 'binary)
(coding-system-for-write 'binary)
+ (input-coding-system 'binary)
+ (output-coding-system 'binary)
(default-process-coding-system 'binary))
(nnweb-insert url))
(setq buf (buffer-string)))
(default-process-coding-system 'binary))
(nnweb-insert url))
(setq buf (buffer-string)))
@@
-348,9
+350,13
@@
and `altavista'.")
(setq url-current-callback-data data
url-be-asynchronous t
url-current-callback-func callback)
(setq url-current-callback-data data
url-be-asynchronous t
url-current-callback-func callback)
- (url-retrieve url))
+ (url-retrieve url nil))
(setq-default url-be-asynchronous old-asynch)))
(setq-default url-be-asynchronous old-asynch)))
+(if (fboundp 'url-retrieve-synchronously)
+ (defun nnweb-url-retrieve-asynch (url callback &rest data)
+ (url-retrieve url callback data)))
+
;;;
;;; DejaNews functions.
;;;
;;;
;;; DejaNews functions.
;;;
@@
-392,6
+398,8
@@
and `altavista'.")
(setq date "Jan 1 00:00:00 0000"))
(incf i)
(setq url (concat url "&fmt=text"))
(setq date "Jan 1 00:00:00 0000"))
(incf i)
(setq url (concat url "&fmt=text"))
+ (when (string-match "&context=[^&]+" url)
+ (setq url (replace-match "" t t url)))
(unless (nnweb-get-hashtb url)
(push
(list
(unless (nnweb-get-hashtb url)
(push
(list
@@
-719,17
+727,21
@@
and `altavista'.")
"Decode all HTML entities."
(goto-char (point-min))
(while (re-search-forward "&\\(#[0-9]+\\|[a-z]+\\);" nil t)
"Decode all HTML entities."
(goto-char (point-min))
(while (re-search-forward "&\\(#[0-9]+\\|[a-z]+\\);" nil t)
- (replace-match (char-to-string
- (if (eq (aref (match-string 1) 0) ?\#)
- (string-to-number (substring (match-string 1) 1))
+ (let ((elem (if (eq (aref (match-string 1) 0) ?\#)
+ (let ((c
+ (string-to-number (substring
+ (match-string 1) 1))))
+ (if (mm-char-or-char-int-p c) c 32))
(or (cdr (assq (intern (match-string 1))
w3-html-entities))
(or (cdr (assq (intern (match-string 1))
w3-html-entities))
- ?#)))
- t t)))
+ ?#))))
+ (unless (stringp elem)
+ (setq elem (char-to-string elem)))
+ (replace-match elem t t))))
-(defun nnweb-decode-entities-string (str)
+(defun nnweb-decode-entities-string (string)
(with-temp-buffer
(with-temp-buffer
- (insert str)
+ (insert string)
(nnweb-decode-entities)
(buffer-substring (point-min) (point-max))))
(nnweb-decode-entities)
(buffer-substring (point-min) (point-max))))
@@
-753,14
+765,11
@@
If FOLLOW-REFRESH is non-nil, redirect refresh url in META."
(narrow-to-region (point) (point))
(url-insert-file-contents url)
(goto-char (point-min))
(narrow-to-region (point) (point))
(url-insert-file-contents url)
(goto-char (point-min))
- (while (re-search-forward
- "HTTP-EQUIV=\"Refresh\"[^>]*URL=\\([^\"]+\\)\""
- nil t)
+ (when (re-search-forward
+ "<meta[ \t\r\n]*http-equiv=\"Refresh\"[^>]*URL=\\([^\"]+\\)\"" nil t)
(let ((url (match-string 1)))
(delete-region (point-min) (point-max))
(let ((url (match-string 1)))
(delete-region (point-min) (point-max))
- (nnweb-insert url))
- (goto-char (point-min)))
- (goto-char (point-max)))
+ (nnweb-insert url t))))
(url-insert-file-contents url))
(setq buffer-file-name name)))
(url-insert-file-contents url))
(setq buffer-file-name name)))
@@
-813,6
+822,11
@@
If FOLLOW-REFRESH is non-nil, redirect refresh url in META."
(listp (cdr element)))
(nnweb-text-1 element)))))
(listp (cdr element)))
(nnweb-text-1 element)))))
+(defun nnweb-replace-in-string (string match newtext)
+ (while (string-match match string)
+ (setq string (replace-match newtext t t string)))
+ string)
+
(provide 'nnweb)
;;; nnweb.el ends here
(provide 'nnweb)
;;; nnweb.el ends here