Addition.
[elisp/gnus.git-] / lisp / gnus-nocem.el
index 1e6207d..d678531 100644 (file)
@@ -1,6 +1,5 @@
 ;;; gnus-nocem.el --- NoCeM pseudo-cancellation treatment
-
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+;; Copyright (C) 1995,96,97,98 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; Keywords: news
   :type '(repeat (string :tag "Group")))
 
 (defcustom gnus-nocem-issuers
-  '("AutoMoose-1"                      ; CancelMoose[tm]
-    "clewis@ferret.ocunix"             ; Chris Lewis
-    "cosmo.roadkill"
-    "SpamHippo"
-    "hweede@snafu.de")
+  '("AutoMoose-1" "Automoose-1"                ; CancelMoose[tm]
+    "rbraver@ohww.norman.ok.us"                ; Robert Braver
+    "clewis@ferret.ocunix.on.ca"       ; Chris Lewis
+    "jem@xpat.com"                     ; Despammer from Korea
+    "snowhare@xmission.com"            ; Benjamin "Snowhare" Franz
+    "red@redpoll.mrfs.oh.us (Richard E. Depew)" ; ARMM! ARMM!
+    )
   "*List of NoCeM issuers to pay attention to.
 
-This can also be a list of `(ISSUER CONDITION ...)' elements.
-
-See <URL:http://www.xs4all.nl/~rosalind/nocemreg/nocemreg.html> for an
-issuer registry."
+This can also be a list of `(ISSUER CONDITIONS)' elements."
   :group 'gnus-nocem
   :type '(repeat (choice string sexp)))
 
@@ -86,19 +84,6 @@ matches an previously scanned and verified nocem message."
   :group 'gnus-nocem
   :type 'boolean)
 
-(defcustom gnus-nocem-check-article-limit 500
-  "*If non-nil, the maximum number of articles to check in any NoCeM group."
-  :group 'gnus-nocem
-  :type '(choice (const :tag "unlimited" nil)
-                (integer 1000)))
-
-(defcustom gnus-nocem-check-from t
-  "Non-nil means check for valid issuers in message bodies.
-Otherwise don't bother fetching articles unless their author matches a
-valid issuer, which is much faster if you are selective about the issuers."
-  :group 'gnus-nocem
-  :type 'boolean)
-
 ;;; Internal variables
 
 (defvar gnus-nocem-active nil)
@@ -136,7 +121,7 @@ valid issuer, which is much faster if you are selective about the issuers."
   (interactive)
   (let ((groups gnus-nocem-groups)
        (gnus-inhibit-demon t)
-       group active gactive articles check-headers)
+       group active gactive articles)
     (gnus-make-directory gnus-nocem-directory)
     ;; Load any previous NoCeM headers.
     (gnus-nocem-load-cache)
@@ -161,7 +146,7 @@ valid issuer, which is much faster if you are selective about the issuers."
          (save-excursion
            (let ((dependencies (make-vector 10 nil))
                  headers header)
-             (with-temp-buffer
+             (nnheader-temp-write nil
                (setq headers
                      (if (eq 'nov
                              (gnus-retrieve-headers
@@ -182,34 +167,13 @@ valid issuer, which is much faster if you are selective about the issuers."
                  ;; are not allowed to have references, so we can
                  ;; ignore scanning followups.
                  (and (string-match "@@NCM" (mail-header-subject header))
-                      (and gnus-nocem-check-from
-                           (let ((case-fold-search t))
-                             (catch 'ok
-                               (mapcar
-                                (lambda (author)
-                                  (if (consp author)
-                                      (setq author (car author)))
-                                  (if (string-match
-                                       author (mail-header-from header))
-                                      (throw 'ok t)))
-                                gnus-nocem-issuers)
-                               nil)))
                       (or gnus-nocem-liberal-fetch
                           (and (or (string= "" (mail-header-references
                                                 header))
                                    (null (mail-header-references header)))
                                (not (member (mail-header-message-id header)
                                             gnus-nocem-seen-message-ids))))
-                      (push header check-headers)))
-               (let* ((i 0)
-                      (check-headers
-                       (last check-headers gnus-nocem-check-article-limit))
-                      (len (length check-headers)))
-                 (dolist (h check-headers)
-                   (gnus-message
-                    7 "Checking article %d in %s for NoCeM (%d of %d)..."
-                    (mail-header-number h) group (incf i) len)
-                   (gnus-nocem-check-article group h)))))))
+                      (gnus-nocem-check-article group header)))))))
        (setq gnus-nocem-active
              (cons (list group gactive)
                    (delq (assoc group gnus-nocem-active)
@@ -221,13 +185,14 @@ valid issuer, which is much faster if you are selective about the issuers."
 (defun gnus-nocem-check-article (group header)
   "Check whether the current article is an NCM article and that we want it."
   ;; Get the article.
+  (gnus-message 7 "Checking article %d in %s for NoCeM..."
+               (mail-header-number header) group)
   (let ((date (mail-header-date header))
-       (gnus-newsgroup-name group)
        issuer b e type)
     (when (or (not date)
-             (time-less-p
-              (time-since (date-to-time date))
-              (days-to-time gnus-nocem-expiry-wait)))
+             (nnmail-time-less
+              (nnmail-time-since (nnmail-date-to-time date))
+              (nnmail-days-to-time gnus-nocem-expiry-wait)))
       (gnus-request-article-this-buffer (mail-header-number header) group)
       (goto-char (point-min))
       (when (re-search-forward "-----BEGIN PGP MESSAGE-----" nil t)
@@ -306,7 +271,7 @@ valid issuer, which is much faster if you are selective about the issuers."
                              gnus-nocem-real-group-hashtb)
            ;; Valid group.
            (beginning-of-line)
-           (while (eq (char-after) ?\t)
+           (while (= (following-char) ?\t)
              (forward-line -1))
            (setq id (buffer-substring (point) (1- (search-forward "\t"))))
            (unless (gnus-gethash id gnus-nocem-hashtb)
@@ -314,7 +279,7 @@ valid issuer, which is much faster if you are selective about the issuers."
              (gnus-sethash id t gnus-nocem-hashtb)
              (push id ncm))
            (forward-line 1)
-           (while (eq (char-after) ?\t)
+           (while (= (following-char) ?\t)
              (forward-line 1))))))
       (when ncm
        (setq gnus-nocem-touched-alist t)
@@ -337,13 +302,13 @@ valid issuer, which is much faster if you are selective about the issuers."
   "Save the NoCeM cache."
   (when (and gnus-nocem-alist
             gnus-nocem-touched-alist)
-    (with-temp-file (gnus-nocem-cache-file)
+    (nnheader-temp-write (gnus-nocem-cache-file)
       (gnus-prin1 `(setq gnus-nocem-alist ',gnus-nocem-alist)))
     (setq gnus-nocem-touched-alist nil)))
 
 (defun gnus-nocem-save-active ()
   "Save the NoCeM active file."
-  (with-temp-file (gnus-nocem-active-file)
+  (nnheader-temp-write (gnus-nocem-active-file)
     (gnus-prin1 `(setq gnus-nocem-active ',gnus-nocem-active))))
 
 (defun gnus-nocem-alist-to-hashtb ()
@@ -351,11 +316,11 @@ valid issuer, which is much faster if you are selective about the issuers."
   (let* ((alist gnus-nocem-alist)
         (pprev (cons nil alist))
         (prev pprev)
-        (expiry (days-to-time gnus-nocem-expiry-wait))
+        (expiry (nnmail-days-to-time gnus-nocem-expiry-wait))
         entry)
     (setq gnus-nocem-hashtb (gnus-make-hashtable (* (length alist) 51)))
     (while (setq entry (car alist))
-      (if (not (time-less-p (time-since (car entry)) expiry))
+      (if (not (nnmail-time-less (nnmail-time-since (car entry)) expiry))
          ;; This entry has expired, so we remove it.
          (setcdr prev (cdr alist))
        (setq prev alist)