*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Sun, 7 Nov 1999 21:07:39 +0000 (21:07 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Sun, 7 Nov 1999 21:07:39 +0000 (21:07 +0000)
lisp/ChangeLog
lisp/gnus-start.el
lisp/nnslashdot.el

index fc641e9..d902dfd 100644 (file)
@@ -1,3 +1,11 @@
+1999-11-07 01:17:53  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * nnslashdot.el (nnslashdot-request-list): Give out extended group 
+       names.
+
+       * gnus-start.el (gnus-ignored-newsgroups): Disregard bogus chars
+       if starting with a quote.
+
 1999-11-07 13:06:11  Shenghuo ZHU  <zsh@cs.rochester.edu>
 
        * gnus-srvr.el (gnus-browse-foreign-server): Support backslash in
@@ -492,7 +500,7 @@ Mon Sep 27 15:18:05 1999  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus-art.el (gnus-treat-predicate): Work for (not 5).
 
-1999-08-27  Peter von der Ah\e-Aé  <pahe@daimi.au.dk>\e$)A
+1999-08-27  Peter von der Ahé  <pahe@daimi.au.dk>
 
        * message.el (message-send): More helpful error message if sending
        fails
@@ -694,7 +702,7 @@ Fri Aug 27 13:17:48 1999  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
        * gnus-agent.el (gnus-agent-get-undownloaded-list): Don't
        mark cached articles as `undownloaded'.
 
-Tue Jul 20 02:39:56 1999  Peter von der Ah\e-Aé  <peter@ahe.dk>\e$)A
+Tue Jul 20 02:39:56 1999  Peter von der Ahé  <peter@ahe.dk>
 
        * gnus-sum.el (gnus-summary-exit): Allow gnus-use-adaptive-scoring
        to have buffer local values.
@@ -3246,7 +3254,7 @@ Mon Nov 30 23:38:02 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
 
        * mm-uu.el (mm-uu-dissect): Use mm-make-handle.
 
-1998-12-01 01:53:49  Fran\e-Açois Pinard  <pinard@iro.umontreal.ca>\e$)A
+1998-12-01 01:53:49  François Pinard  <pinard@iro.umontreal.ca>
 
        * nndoc.el (nndoc-mime-parts-type-p): Do related.
 
@@ -4992,7 +5000,7 @@ Mon Sep 14 18:55:38 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * rfc2047.el (rfc2047-q-encode-region): Would bug out.
 
-1998-09-13  Fran\e-Açois Pinard  <pinard@iro.umontreal.ca>\e$)A
+1998-09-13  François Pinard  <pinard@iro.umontreal.ca>
 
        * nndoc.el: Make nndoc-dissection-alist simpler for MIME, adjust all
           related functions.  Handle message/rfc822 parts.  Display subject on
index 87dc5f5..7b63a8d 100644 (file)
@@ -235,6 +235,7 @@ not match this regexp will be removed before saving the list."
  (mapconcat 'identity
            '("^to\\."                  ; not "real" groups
              "^[0-9. \t]+ "            ; all digits in name
+             "^[\"][]\"[#'()]"         ; bogus characters
              )
            "\\|")
   "*A regexp to match uninteresting newsgroups in the active file.
index 456fcac..8d2c2e3 100644 (file)
 (defvoo nnslashdot-active-url "http://slashdot.org/search.pl?section=&min=%d"
   "Where nnslashdot will fetch the active file from.")
 
-(defvoo nnslashdot-articles-url "http://slashdot.org/article.pl?sid=%s&threshold=%d&commentsort=0&mode=flat&startat=%d"
-  "Where nnslashdot will fetch articles from.")
+(defvoo nnslashdot-comments-url "http://slashdot.org/comments.pl?sid=%s&threshold=%d&commentsort=0&mode=flat&startat=%d"
+  "Where nnslashdot will fetch comments from.")
+
+(defvoo nnslashdot-article-url
+    "http://slashdot.org/article.pl?sid=%s&mode=nocomment"
+  "Where nnslashdot will fetch the article from.")
 
 (defvoo nnslashdot-threshold 0
   "The article threshold.")
   (let ((last (car (last articles)))
        (did nil)
        (start 1)
+       (sid (caddr (assoc group nnslashdot-groups)))
+       headers article subject score from date lines parent point
+       startats s)
+    (save-excursion
+      (set-buffer nnslashdot-buffer)
+      (erase-buffer)
+      (when (= start 1)
+       (url-insert-file-contents (format nnslashdot-article-url sid))
+       (setq buffer-file-name nil)
+       (goto-char (point-min))
+       (search-forward "Posted by ")
+       (when (looking-at "<a[^>]+>\\([^<]+\\)")
+         (setq from (match-string 1)))
+       (search-forward " on ")
+       (setq date (nnslashdot-date-to-date
+                   (buffer-substring (point) (1- (search-forward "<")))))
+       (forward-line 2)
+       (setq lines (count-lines (point)
+                                (search-forward
+                                 "A href=http://slashdot.org/article.pl")))
+       (push
+        (cons
+         1
+         (make-full-mail-header
+          1 group from date (concat "<" sid "%1@slashdot>")
+          "" 0 lines nil nil))
+        headers)
+       (goto-char (point-max))
+       (while (re-search-backward "startat=\\([0-9]+\\)" nil t)
+         (setq s (match-string 1))
+         (unless (memq s startats)
+           (push s startats)))
+       (unless startats
+         (push 1 startats)))
+      (dolist (start (sort startats '<))
+       (setq point (goto-char (point-max)))
+       (url-insert-file-contents
+        (format nnslashdot-comments-url sid nnslashdot-threshold start))
+       (setq buffer-file-name nil)
+       (goto-char point)
+       (while (re-search-forward
+               "<a name=\"\\([0-9]+\\)\"><b>\\([^<]+\\)</b>.*score:\\([^)]+\\))"
+               nil t)
+         (setq article (string-to-number (match-string 1))
+               subject (match-string 2)
+               score (match-string 3))
+         (when (string-match "^Re: *" subject)
+           (setq subject (concat "Re: " (substring subject (match-end 0)))))
+         (forward-line 1)
+         (if (looking-at "by <a[^>]+>\\([^<]+\\)</a>[ \t\n]*.*(\\([^)]+\\))")
+             (setq from (concat (match-string 1) " <" (match-string 2) ">"))
+           (looking-at "by \\(.+\\) on ")
+           (setq from (match-string 1)))
+         (goto-char (- (match-end 0) 5))
+         (search-forward " on ")
+         (setq date
+               (nnslashdot-date-to-date
+                (buffer-substring (point) (progn (end-of-line) (point)))))
+         (setq lines (/ (abs (- (search-forward "<td ")
+                                (search-forward "</td>")))
+                        70))
+         (forward-line 2)
+         (setq parent
+               (if (looking-at ".*cid=\\([0-9]+\\)")
+                   (match-string 1)
+                 nil))
+         (setq did t)
+         (push
+          (cons
+           (1+ article)
+           (make-full-mail-header
+            (1+ article) subject
+            from date
+            (concat "<" sid "%"
+                    (number-to-string (1+ article)) 
+                    "@slashdot>")
+            (if parent
+                (concat "<" sid "%"
+                        (number-to-string (1+ (string-to-number parent)))
+                        "@slashdot>")
+              "")
+            0 (string-to-number score) nil nil))
+          headers))))
+    (setq nnslashdot-headers
+         (sort headers (lambda (s1 s2) (< (car s1) (car s2)))))
+    (save-excursion
+      (set-buffer nntp-server-buffer)
+      (erase-buffer)
+      (dolist (header nnslashdot-headers)
+       (nnheader-insert-nov (cdr header))))
+    'nov))
+
+(deffoo nnslashdot-sane-retrieve-headers (articles &optional group
+                                                  server fetch-old)
+  (nnslashdot-possibly-change-server group server)
+  (let ((last (car (last articles)))
+       (did nil)
+       (start (car articles))
+       (sid (caddr (assoc group nnslashdot-groups)))
        headers article subject score from date lines parent point)
     (save-excursion
       (set-buffer nnslashdot-buffer)
       (erase-buffer)
+      (when (= start 1)
+       (url-insert-file-contents (format nnslashdot-article-url sid))
+       (setq buffer-file-name nil)
+       (goto-char (point-min))
+       (search-forward "Posted by ")
+       (when (looking-at "<a[^>]+>\\([^<]+\\)")
+         (setq from (match-string 1)))
+       (search-forward " on ")
+       (setq date (nnslashdot-date-to-date
+                   (buffer-substring (point) (1- (search-forward "<")))))
+       (forward-line 2)
+       (setq lines (count-lines (point)
+                                (search-forward
+                                 "A href=http://slashdot.org/article.pl")))
+       (push
+        (cons
+         1
+         (make-full-mail-header
+          1 group from date (concat "<" sid "%1@slashdot>")
+          "" 0 lines nil nil))
+        headers))
       (while (or (not article)
                 (and did
-                     (< (string-to-number article) last)))
+                     (< article last)))
        (when article
-         (setq start (1+ (string-to-number article))))
+         (setq start (1+ article)))
        (setq point (goto-char (point-max)))
        (url-insert-file-contents
-        (format nnslashdot-articles-url
-                (caddr (assoc group nnslashdot-groups))
-                nnslashdot-threshold start))
+        (format nnslashdot-comments-url sid nnslashdot-threshold start))
        (setq buffer-file-name nil)
        (goto-char point)
        (while (re-search-forward
                "<a name=\"\\([0-9]+\\)\"><b>\\([^<]+\\)</b>.*score\\([^)]+\\))"
                nil t)
-         (setq article (match-string 1)
+         (setq article (string-to-number (match-string 1))
                subject (match-string 2)
                score (match-string 3))
          (forward-line 1)
          (if (looking-at "by <a[^>]+>\\([^<]+\\)</a>[ \t\n]*.*(\\([^)]+\\))")
              (setq from (concat (match-string 1) " <" (match-string 2) ">"))
-           (looking-at "by \\([^ ]+\\) ")
+           (looking-at "by \\(.+\\) on ")
            (setq from (match-string 1)))
-         (goto-char (match-end 0))
-         (search-forward "on ")
+         (goto-char (- (match-end 0) 5))
+         (search-forward " on ")
          (setq date
                (nnslashdot-date-to-date
                 (buffer-substring (point) (progn (end-of-line) (point)))))
-         (setq lines (count-lines (search-forward "<td")
-                                  (search-forward "</td>")))
+         (setq lines (/ (abs (- (search-forward "<td ")
+                                (search-forward "</td>")))
+                        70))
          (forward-line 2)
          (setq parent
                (if (looking-at ".*cid=\\([0-9]+\\)")
          (setq did t)
          (push
           (cons
-           (string-to-number article)
+           (1+ article)
            (make-full-mail-header
-            (string-to-number article) (concat subject " (" score ")")
-            from date (concat "<" group "%" article "@slashdot>")
-            (if parent (concat "<" group "%" parent "@slashdot>") "")
+            (1+ article) (concat subject " (" score ")")
+            from date
+            (concat "<" sid "%"
+                    (number-to-string (1+ article)) 
+                    "@slashdot>")
+            (if parent
+                (concat "<" sid "%"
+                        (number-to-string (1+ (string-to-number parent)))
+                        "@slashdot>")
+              "")
             0 lines nil nil))
           headers))))
     (setq nnslashdot-headers
     (save-excursion
       (set-buffer nnslashdot-buffer)
       (goto-char (point-min))
-      (when (and (numberp article)
-              (search-forward (format "<a name=\"%d\">" article)))
-       (setq contents
-             (buffer-substring
-              (re-search-forward "<td[^>]+>")
-              (search-forward "</td>")))))
+      (when (numberp article)
+       (if (= article 1)
+           (progn
+             (search-forward " on ")
+             (forward-line 1)
+             (setq contents
+                   (buffer-substring
+                    (point)
+                    (search-forward
+                                 "A href=http://slashdot.org/article.pl"))))
+         (search-forward (format "<a name=\"%d\">" (1- article)))
+         (setq contents
+               (buffer-substring
+                (re-search-forward "<td[^>]+>")
+                (search-forward "</td>"))))))
     (when contents
       (save-excursion
        (set-buffer (or buffer nntp-server-buffer))
            (substring (nth 1 elem) 0 3) " "
            (substring (nth 2 elem) 0 2) " "
            (substring (nth 3 elem) 1 6) " "
+           (format-time-string "%Y") " "
            (nth 4 elem))))
 
 (provide 'nnslashdot)