Commit ad136a7c authored by Miles Bader's avatar Miles Bader

Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-716

Merge from gnus--rel--5.10

Patches applied:

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-74
   Update from CVS

2004-12-02  Katsumi Yamaoka  <yamaoka@jpl.org>

   * lisp/gnus/message.el (message-forward-make-body-mml): Remove headers
   according to message-forward-ignored-headers if a message is
   decoded.

2004-12-02  Romain Francoise  <romain@orebokech.com>

   * lisp/gnus/message.el (message-forward-make-body-plain): Always remove
   headers according to message-forward-ignored-headers.

2004-11-26  Katsumi Yamaoka  <yamaoka@jpl.org>

   * lisp/gnus/lpath.el: Remove bbdb-create-internal, bbdb-records,
   spam-BBDB-register-routine and spam-enter-ham-BBDB.

   * lisp/gnus/nnrss.el (nnrss-string-as-multibyte): Redefine it as a macro in
   order to silence the byte compiler.

   * lisp/gnus/pop3.el (pop3-md5): Define it before being used.

   * lisp/gnus/spam.el: Fix the way to silence the byte compiler, which
   complained about bbdb-buffer, bbdb-create-internal,
   bbdb-search-simple, mail-check-payment, spam-BBDB-register-routine,
   spam-enter-ham-BBDB, spam-stat-buffer-change-to-non-spam,
   spam-stat-buffer-change-to-spam, spam-stat-buffer-is-non-spam,
   spam-stat-buffer-is-spam, spam-stat-load,
   spam-stat-register-ham-routine, spam-stat-register-spam-routine,
   spam-stat-save and spam-stat-split-fancy.

2004-11-26  Katsumi Yamaoka  <yamaoka@jpl.org>

   * lisp/gnus/canlock.el (canlock-password): Remove `:size 0' or `:size 1'
   which may confuse users.
   (canlock-password-for-verify): Ditto.

   * lisp/gnus/deuglify.el (gnus-outlook-deuglify-unwrap-stop-chars): Ditto.

   * lisp/gnus/gnus-art.el (gnus-emphasis-alist): Ditto.

   * lisp/gnus/gnus-registry.el (gnus-registry-max-entries): Ditto.

   * lisp/gnus/gnus-score.el (gnus-adaptive-word-length-limit): Ditto.

   * lisp/gnus/gnus-start.el (gnus-save-killed-list): Ditto.

   * lisp/gnus/gnus-sum.el (gnus-thread-hide-subtree): Ditto.
   (gnus-sum-thread-tree-root): Ditto.
   (gnus-sum-thread-tree-false-root): Ditto.
   (gnus-sum-thread-tree-single-indent): Ditto.

   * lisp/gnus/message.el (message-courtesy-message): Ditto.
   (message-archive-note): Ditto.
   (message-subscribed-address-file): Ditto.
   (message-user-fqdn): Ditto.

   * lisp/gnus/spam-report.el (spam-report-gmane-regex): Ditto.

   * lisp/gnus/spam.el (spam-blackhole-good-server-regex): Ditto.

2004-11-25  Reiner Steib  <Reiner.Steib@gmx.de>

   * lisp/gnus/message.el (message-forbidden-properties): Fixed typo in doc
   string.

2004-11-25  Lars Magne Ingebrigtsen  <larsi@gnus.org>

   * lisp/gnus/message.el (message-strip-forbidden-properties): Bind
   buffer-read-only (etc) to nil.

2004-11-25  Reiner Steib  <Reiner.Steib@gmx.de>

   * lisp/gnus/gnus-util.el (gnus-replace-in-string): Added doc string.

   * lisp/gnus/nnmail.el (nnmail-split-header-length-limit): Increase to 2048
   to avoid problems when splitting mails with many recipients.

2004-11-23  Katsumi Yamaoka  <yamaoka@jpl.org>

   * lisp/gnus/rfc2047.el (rfc2047-header-encoding-alist): Add In-Reply-To to
   address-mime.  Suggested by ARISAWA Akihiro <ari@mbf.ocn.ne.jp>.

2004-11-22  Marek Martin  <marek.martin@mum.pri.ee>  (tiny change)

   * lisp/gnus/nnfolder.el (nnfolder-request-create-group): Save current buffer.

2004-11-22  Reiner Steib  <Reiner.Steib@gmx.de>

   * man/message.texi (Various Message Variables): Mention that all mail
   file variables are derived from `message-directory'.

   * man/gnus.texi (Splitting Mail): Clarify bogus group.

2004-11-16  Reiner Steib  <Reiner.Steib@gmx.de>

   * man/gnus.texi (Filtering Spam Using The Spam ELisp Package):
parent e9962ae1
2004-12-02 Katsumi Yamaoka <yamaoka@jpl.org>
* message.el (message-forward-make-body-mml): Remove headers
according to message-forward-ignored-headers if a message is
decoded.
2004-12-02 Romain Francoise <romain@orebokech.com>
* message.el (message-forward-make-body-plain): Always remove
headers according to message-forward-ignored-headers.
2004-11-26 Katsumi Yamaoka <yamaoka@jpl.org>
* lpath.el: Remove bbdb-create-internal, bbdb-records,
spam-BBDB-register-routine and spam-enter-ham-BBDB.
* nnrss.el (nnrss-string-as-multibyte): Redefine it as a macro in
order to silence the byte compiler.
* pop3.el (pop3-md5): Define it before being used.
* spam.el: Fix the way to silence the byte compiler, which
complained about bbdb-buffer, bbdb-create-internal,
bbdb-search-simple, mail-check-payment, spam-BBDB-register-routine,
spam-enter-ham-BBDB, spam-stat-buffer-change-to-non-spam,
spam-stat-buffer-change-to-spam, spam-stat-buffer-is-non-spam,
spam-stat-buffer-is-spam, spam-stat-load,
spam-stat-register-ham-routine, spam-stat-register-spam-routine,
spam-stat-save and spam-stat-split-fancy.
2004-11-26 Katsumi Yamaoka <yamaoka@jpl.org>
* canlock.el (canlock-password): Remove `:size 0' or `:size 1'
which may confuse users.
(canlock-password-for-verify): Ditto.
* deuglify.el (gnus-outlook-deuglify-unwrap-stop-chars): Ditto.
* gnus-art.el (gnus-emphasis-alist): Ditto.
* gnus-registry.el (gnus-registry-max-entries): Ditto.
* gnus-score.el (gnus-adaptive-word-length-limit): Ditto.
* gnus-start.el (gnus-save-killed-list): Ditto.
* gnus-sum.el (gnus-thread-hide-subtree): Ditto.
(gnus-sum-thread-tree-root): Ditto.
(gnus-sum-thread-tree-false-root): Ditto.
(gnus-sum-thread-tree-single-indent): Ditto.
* message.el (message-courtesy-message): Ditto.
(message-archive-note): Ditto.
(message-subscribed-address-file): Ditto.
(message-user-fqdn): Ditto.
* spam-report.el (spam-report-gmane-regex): Ditto.
* spam.el (spam-blackhole-good-server-regex): Ditto.
2004-11-25 Reiner Steib <Reiner.Steib@gmx.de>
* message.el (message-forbidden-properties): Fixed typo in doc
string.
2004-11-25 Lars Magne Ingebrigtsen <larsi@gnus.org>
* message.el (message-strip-forbidden-properties): Bind
buffer-read-only (etc) to nil.
2004-11-25 Reiner Steib <Reiner.Steib@gmx.de>
* gnus-util.el (gnus-replace-in-string): Added doc string.
* nnmail.el (nnmail-split-header-length-limit): Increase to 2048
to avoid problems when splitting mails with many recipients.
2004-11-23 Katsumi Yamaoka <yamaoka@jpl.org>
* rfc2047.el (rfc2047-header-encoding-alist): Add In-Reply-To to
address-mime. Suggested by ARISAWA Akihiro <ari@mbf.ocn.ne.jp>.
2004-11-22 Marek Martin <marek.martin@mum.pri.ee> (tiny change)
* nnfolder.el (nnfolder-request-create-group): Save current buffer.
2004-11-22 Stefan Monnier <monnier@iro.umontreal.ca>
* gnus-sum.el (gnus-summary-exit): Remove redundant and harmful
......
......@@ -55,13 +55,13 @@
(defcustom canlock-password nil
"Password to use when signing a Cancel-Lock or a Cancel-Key header."
:type '(radio (const :format "Not specified " nil)
(string :tag "Password" :size 0))
(string :tag "Password"))
:group 'canlock)
(defcustom canlock-password-for-verify canlock-password
"Password to use when verifying a Cancel-Lock or a Cancel-Key header."
:type '(radio (const :format "Not specified " nil)
(string :tag "Password" :size 0))
(string :tag "Password"))
:group 'canlock)
(defcustom canlock-force-insert-header nil
......
;;; deuglify.el --- deuglify broken Outlook (Express) articles
;; Copyright (C) 2002, 2003 Free Software Foundation, Inc.
;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
;; Copyright (C) 2001, 2002 Raymond Scholz
;; Author: Raymond Scholz <rscholz@zonix.de>
......@@ -257,7 +257,7 @@
"Characters that inhibit unwrapping if they are the last one on the cited line above the possible wrapped line."
:version "21.4"
:type '(radio (const :format "None " nil)
(string :size 0 :value ".?!"))
(string :value ".?!"))
:group 'gnus-outlook-deuglify)
(defcustom gnus-outlook-deuglify-no-wrap-chars "`"
......
......@@ -399,15 +399,15 @@ is the face used for highlighting."
:value
(gnus-emphasis-custom-value-to-external value))))
(widget-group-value-create widget))
(regexp :format "%t: %v\n" :size 1)
(integer :format "Match group: %v\n" :size 0)
(integer :format "Emphasize group: %v\n" :size 0)
regexp
(integer :format "Match group: %v")
(integer :format "Emphasize group: %v")
face)
(group :tag "Simple"
:value (("_" . "_") nil default)
(cons :format "%v"
(regexp :format "Start regexp: %v\n" :size 0)
(regexp :format "End regexp: %v\n" :size 0))
(regexp :format "Start regexp: %v")
(regexp :format "End regexp: %v"))
(boolean :format "Show start and end patterns: %[%v%]\n"
:on " On " :off " Off ")
face)))
......
;;; gnus-registry.el --- article registry for Gnus
;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
;; Free Software Foundation, Inc.
;; Author: Ted Zlatanov <tzz@lifelogs.com>
......@@ -128,7 +128,7 @@ way."
"Maximum number of entries in the registry, nil for unlimited."
:group 'gnus-registry
:type '(radio (const :format "Unlimited " nil)
(integer :format "Maximum number: %v\n" :size 0)))
(integer :format "Maximum number: %v")))
;; Function(s) missing in Emacs 20
(when (memq nil (mapcar 'fboundp '(puthash)))
......
......@@ -240,7 +240,7 @@ This variable allows the same syntax as `gnus-home-score-file'."
:version "21.4"
:group 'gnus-score-adapt
:type '(radio (const :format "Unlimited " nil)
(integer :format "Maximum length: %v\n" :size 0)))
(integer :format "Maximum length: %v")))
(defcustom gnus-ignored-adaptive-words nil
"List of words to be ignored when doing adaptive word scoring."
......
......@@ -258,7 +258,7 @@ not match this regexp will be removed before saving the list."
(and value (not (stringp value))))
:value t)
(const nil)
(regexp :format "%t: %v\n" :size 0)))
regexp))
(defcustom gnus-ignored-newsgroups
(mapconcat 'identity
......
......@@ -264,7 +264,7 @@ to expose hidden threads."
(not (or (consp value) (functionp value))))
:value t)
(const nil)
(sexp :tag "Predicate specifier" :size 0)))
(sexp :tag "Predicate specifier")))
(defcustom gnus-thread-hide-killed t
"*If non-nil, hide killed threads automatically."
......@@ -4639,19 +4639,19 @@ Unscored articles will be counted as having a score of zero."
"With %B spec, used for the root of a thread.
If nil, use subject instead."
:version "21.4"
:type '(radio (const :format "%v " nil) (string :size 0))
:type '(radio (const :format "%v " nil) string)
:group 'gnus-thread)
(defcustom gnus-sum-thread-tree-false-root "> "
"With %B spec, used for a false root of a thread.
If nil, use subject instead."
:version "21.4"
:type '(radio (const :format "%v " nil) (string :size 0))
:type '(radio (const :format "%v " nil) string)
:group 'gnus-thread)
(defcustom gnus-sum-thread-tree-single-indent ""
"With %B spec, used for a thread with just one message.
If nil, use subject instead."
:version "21.4"
:type '(radio (const :format "%v " nil) (string :size 0))
:type '(radio (const :format "%v " nil) string)
:group 'gnus-thread)
(defcustom gnus-sum-thread-tree-vertical "| "
"With %B spec, used for drawing a vertical line."
......
......@@ -60,10 +60,20 @@
((fboundp 'replace-in-string)
(defalias 'gnus-replace-in-string 'replace-in-string))
((fboundp 'replace-regexp-in-string)
(defun gnus-replace-in-string (string regexp newtext &optional literal)
(defun gnus-replace-in-string (string regexp newtext &optional literal)
"Replace all matches for REGEXP with NEWTEXT in STRING.
If LITERAL is non-nil, insert NEWTEXT literally. Return a new
string containing the replacements.
This is a compatibility function for different Emacsen."
(replace-regexp-in-string regexp newtext string nil literal)))
(t
(defun gnus-replace-in-string (string regexp newtext &optional literal)
"Replace all matches for REGEXP with NEWTEXT in STRING.
If LITERAL is non-nil, insert NEWTEXT literally. Return a new
string containing the replacements.
This is a compatibility function for different Emacsen."
(let ((start 0) tail)
(while (string-match regexp string start)
(setq tail (- (length string) (match-end 0)))
......
......@@ -146,7 +146,7 @@ If the string contains the format spec \"%s\", the Newsgroups
the article has been posted to will be inserted there.
If this variable is nil, no such courtesy message will be added."
:group 'message-sending
:type '(radio (string :format "%t: %v\n" :size 0) (const nil)))
:type '(radio string (const nil)))
(defcustom message-ignored-bounced-headers
"^\\(Received\\|Return-Path\\|Delivered-To\\):"
......@@ -373,8 +373,7 @@ Archives \(such as groups.google.com\) respect this header."
"Note to insert why you wouldn't want this posting archived.
If nil, don't insert any text in the body."
:version "21.4"
:type '(radio (string :format "%t: %v\n" :size 0)
(const nil))
:type '(radio string (const nil))
:link '(custom-manual "(message)Header Commands")
:group 'message-various)
......@@ -698,8 +697,7 @@ non-nil, each line of this file should be a mailing list address."
:version "21.4"
:group 'message-interface
:link '(custom-manual "(message)Mailing Lists")
:type '(radio (file :format "%t: %v\n" :size 0)
(const nil)))
:type '(radio file (const nil)))
(defcustom message-subscribed-addresses nil
"*Specifies a list of addresses the user is subscribed to.
......@@ -1442,7 +1440,7 @@ no, only reply back to the author."
:group 'message-headers
:link '(custom-manual "(message)News Headers")
:type '(radio (const :format "%v " nil)
(string :format "FQDN: %v\n" :size 0)))
(string :format "FQDN: %v")))
(defcustom message-use-idna (and (condition-case nil (require 'idna)
(file-error))
......@@ -2403,7 +2401,7 @@ message composition doesn't break too bad."
;; fontified: is used by font-lock.
;; syntax-table, local-map: I dunno.
;; We need to add XEmacs names to the list.
"Property list of with properties.forbidden in message buffers.
"Property list of with properties forbidden in message buffers.
The values of the properties are ignored, only the property names are used.")
(defun message-tamago-not-in-use-p (pos)
......@@ -2426,11 +2424,13 @@ This function is intended to be called from `after-change-functions'.
See also `message-forbidden-properties'."
(when (and message-strip-special-text-properties
(message-tamago-not-in-use-p begin))
(while (not (= begin end))
(when (not (get-text-property begin 'message-hidden))
(remove-text-properties begin (1+ begin)
message-forbidden-properties))
(incf begin))))
(let ((buffer-read-only nil)
(inhibit-read-only t))
(while (not (= begin end))
(when (not (get-text-property begin 'message-hidden))
(remove-text-properties begin (1+ begin)
message-forbidden-properties))
(incf begin)))))
;;;###autoload
(define-derived-mode message-mode text-mode "Message"
......@@ -6193,8 +6193,7 @@ Optional DIGEST will use digest to forward."
(setq e (point))
(insert
"\n-------------------- End of forwarded message --------------------\n")
(when (and (not current-prefix-arg)
message-forward-ignored-headers)
(when message-forward-ignored-headers
(save-restriction
(narrow-to-region b e)
(goto-char b)
......@@ -6240,7 +6239,7 @@ Optional DIGEST will use digest to forward."
(goto-char (point-max))))
(setq e (point))
(insert "<#/mml>\n")
(when (and (not current-prefix-arg)
(when (and (not message-forward-decoded-p)
message-forward-ignored-headers)
(save-restriction
(narrow-to-region b e)
......
;;; nnfolder.el --- mail folder access for Gnus
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
;; Free Software Foundation, Inc.
;; Author: Simon Josefsson <simon@josefsson.org> (adding MARKS)
......@@ -370,10 +370,11 @@ the group. Then the marks file will be regenerated properly by Gnus.")
(deffoo nnfolder-request-create-group (group &optional server args)
(nnfolder-possibly-change-group nil server)
(nnmail-activate 'nnfolder)
(when group
(unless (assoc group nnfolder-group-alist)
(push (list group (cons 1 0)) nnfolder-group-alist)
(nnfolder-save-active nnfolder-group-alist nnfolder-active-file)
(when (and group
(not (assoc group nnfolder-group-alist)))
(push (list group (cons 1 0)) nnfolder-group-alist)
(nnfolder-save-active nnfolder-group-alist nnfolder-active-file)
(save-current-buffer
(nnfolder-read-folder group)))
t)
......
......@@ -554,7 +554,7 @@ parameter. It should return nil, `warn' or `delete'."
:group 'nnmail
:type '(repeat symbol))
(defcustom nnmail-split-header-length-limit 512
(defcustom nnmail-split-header-length-limit 2048
"Header lines longer than this limit are excluded from the split function."
:version "21.1"
:group 'nnmail
......
......@@ -82,6 +82,12 @@ ARTICLE is the article number of the current headline.")
;;; 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)
......@@ -410,10 +416,6 @@ ARTICLE is the article number of the current headline.")
(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)
......
......@@ -348,6 +348,22 @@ If NOW, use that time instead."
;; AUTHORIZATION STATE
(eval-and-compile
(if (fboundp 'md5)
(defalias 'pop3-md5 'md5)
(defvar pop3-md5-program "md5"
"*Program to encode its input in MD5.")
(defun pop3-md5 (string)
(with-temp-buffer
(insert string)
(call-process-region (point-min) (point-max)
pop3-md5-program
t (current-buffer) nil)
;; The meaningful output is the first 32 characters.
;; Don't return the newline that follows them!
(buffer-substring (point-min) (+ 32 (point-min)))))))
(defun pop3-user (process user)
"Send USER information to POP3 server."
(pop3-send-command process (format "USER %s" user))
......@@ -378,22 +394,6 @@ If NOW, use that time instead."
;; TRANSACTION STATE
(eval-and-compile
(if (fboundp 'md5)
(defalias 'pop3-md5 'md5)
(defvar pop3-md5-program "md5"
"*Program to encode its input in MD5.")
(defun pop3-md5 (string)
(with-temp-buffer
(insert string)
(call-process-region (point-min) (point-max)
pop3-md5-program
t (current-buffer) nil)
;; The meaningful output is the first 32 characters.
;; Don't return the newline that follows them!
(buffer-substring (point-min) (+ 32 (point-min)))))))
(defun pop3-stat (process)
"Return the number of messages in the maildrop and the maildrop's size."
(pop3-send-command process "STAT")
......
......@@ -71,7 +71,7 @@ Value is what BODY returns."
'(("Newsgroups" . nil)
("Followup-To" . nil)
("Message-ID" . nil)
("\\(Resent-\\)?\\(From\\|Cc\\|To\\|Bcc\\|Reply-To\\|Sender\
("\\(Resent-\\)?\\(From\\|Cc\\|To\\|Bcc\\|\\(In-\\)?Reply-To\\|Sender\
\\|Mail-Followup-To\\|Mail-Copies-To\\|Approved\\)" . address-mime)
(t . mime))
"*Header/encoding method alist.
......
......@@ -43,7 +43,7 @@ If you are using spam.el, consider setting gnus-spam-process-newsgroups
or the gnus-group-spam-exit-processor-report-gmane group/topic parameter
instead."
:type '(radio (const nil)
(regexp :format "%t: %v\n" :size 0 :value "^nntp\+.*:gmane\."))
(regexp :value "^nntp\+.*:gmane\."))
:group 'spam-report)
(defcustom spam-report-gmane-spam-header
......
......@@ -295,8 +295,7 @@ All unmarked article in such group receive the spam mark on group entry."
(defcustom spam-blackhole-good-server-regex nil
"String matching IP addresses that should not be checked in the blackholes."
:type '(radio (const nil)
(regexp :format "%t: %v\n" :size 0))
:type '(radio (const nil) regexp)
:group 'spam)
(defcustom spam-face 'gnus-splash-face
......@@ -1257,6 +1256,9 @@ functions")
;;;; Hashcash.
(eval-when-compile
(autoload 'mail-check-payment "hashcash"))
(condition-case nil
(progn
(require 'hashcash)
......@@ -1265,9 +1267,7 @@ functions")
"Check the headers for hashcash payments."
(mail-check-payment))) ;mail-check-payment returns a boolean
(file-error (progn
(defalias 'mail-check-payment 'ignore)
(defalias 'spam-check-hashcash 'ignore))))
(file-error))
;;;; BBDB
......@@ -1276,66 +1276,67 @@ functions")
;; all this is done inside a condition-case to trap errors
(condition-case nil
(progn
(require 'bbdb)
(require 'bbdb-com)
(defun spam-enter-ham-BBDB (addresses &optional remove)
"Enter an address into the BBDB; implies ham (non-spam) sender"
(dolist (from addresses)
(when (stringp from)
(let* ((parsed-address (gnus-extract-address-components from))
(name (or (nth 0 parsed-address) "Ham Sender"))
(remove-function (if remove
'bbdb-delete-record-internal
'ignore))
(net-address (nth 1 parsed-address))
(record (and net-address
(bbdb-search-simple nil net-address))))
(when net-address
(gnus-message 5 "%s address %s %s BBDB"
(if remove "Deleting" "Adding")
from
(if remove "from" "to"))
(if record
(funcall remove-function record)
(bbdb-create-internal name nil net-address nil nil
"ham sender added by spam.el")))))))
(defun spam-BBDB-register-routine (articles &optional unregister)
(let (addresses)
(dolist (article articles)
(when (stringp (spam-fetch-field-from-fast article))
(push (spam-fetch-field-from-fast article) addresses)))
;; now do the register/unregister action
(spam-enter-ham-BBDB addresses unregister)))
(defun spam-BBDB-unregister-routine (articles)
(spam-BBDB-register-routine articles t))
(defun spam-check-BBDB ()
"Mail from people in the BBDB is classified as ham or non-spam"
(let ((who (nnmail-fetch-field "from"))
(spam-split-group (if spam-split-symbolic-return
'spam
spam-split-group)))
(when who
(setq who (nth 1 (gnus-extract-address-components who)))
(if (bbdb-search-simple nil who)
t
(if spam-use-BBDB-exclusive
spam-split-group
nil))))))
(file-error (progn
(defalias 'bbdb-search-simple 'ignore)
(defalias 'spam-check-BBDB 'ignore)
(defalias 'spam-BBDB-register-routine 'ignore)
(defalias 'spam-enter-ham-BBDB 'ignore)
(defalias 'bbdb-create-internal 'ignore)
(defalias 'bbdb-delete-record-internal 'ignore)
(defalias 'bbdb-records 'ignore))))
(eval-when-compile
(autoload 'bbdb-buffer "bbdb")
(autoload 'bbdb-create-internal "bbdb")
(autoload 'bbdb-search-simple "bbdb"))
(eval-and-compile
(when (condition-case nil
(progn
(require 'bbdb)
(require 'bbdb-com))
(file-error
(defalias 'spam-BBDB-register-routine 'ignore)
(defalias 'spam-enter-ham-BBDB 'ignore)
nil))
(defun spam-enter-ham-BBDB (addresses &optional remove)
"Enter an address into the BBDB; implies ham (non-spam) sender"
(dolist (from addresses)
(when (stringp from)
(let* ((parsed-address (gnus-extract-address-components from))
(name (or (nth 0 parsed-address) "Ham Sender"))
(remove-function (if remove
'bbdb-delete-record-internal
'ignore))
(net-address (nth 1 parsed-address))
(record (and net-address
(bbdb-search-simple nil net-address))))
(when net-address
(gnus-message 5 "%s address %s %s BBDB"
(if remove "Deleting" "Adding")
from
(if remove "from" "to"))
(if record
(funcall remove-function record)
(bbdb-create-internal name nil net-address nil nil
"ham sender added by spam.el")))))))
(defun spam-BBDB-register-routine (articles &optional unregister)
(let (addresses)
(dolist (article articles)
(when (stringp (spam-fetch-field-from-fast article))
(push (spam-fetch-field-from-fast article) addresses)))
;; now do the register/unregister action
(spam-enter-ham-BBDB addresses unregister)))
(defun spam-BBDB-unregister-routine (articles)
(spam-BBDB-register-routine articles t))
(defun spam-check-BBDB ()
"Mail from people in the BBDB is classified as ham or non-spam"
(let ((who (nnmail-fetch-field "from"))
(spam-split-group (if spam-split-symbolic-return
'spam
spam-split-group)))
(when who
(setq who (nth 1 (gnus-extract-address-components who)))
(if (bbdb-search-simple nil who)
t
(if spam-use-BBDB-exclusive
spam-split-group
nil)))))))
;;;; ifile
......@@ -1411,66 +1412,63 @@ Uses `gnus-newsgroup-name' if category is nil (for ham registration)."
;;;; spam-stat
(condition-case nil
(progn
(let ((spam-stat-install-hooks nil))
(require 'spam-stat))
(defun spam-check-stat ()
"Check the spam-stat backend for the classification of this message"
(let ((spam-split-group (if spam-split-symbolic-return
'spam
spam-split-group))
(spam-stat-split-fancy-spam-group spam-split-group) ; override
(spam-stat-buffer (buffer-name)) ; stat the current buffer
category return)
(spam-stat-split-fancy)))
(defun spam-stat-register-spam-routine (articles &optional unregister)
(dolist (article articles)
(let ((article-string (spam-get-article-as-string article)))
(with-temp-buffer
(insert article-string)
(if unregister
(spam-stat-buffer-change-to-non-spam)
(eval-when-compile
(autoload 'spam-stat-buffer-change-to-non-spam "spam-stat")
(autoload 'spam-stat-buffer-change-to-spam "spam-stat")
(autoload 'spam-stat-buffer-is-non-spam "spam-stat")
(autoload 'spam-stat-buffer-is-spam "spam-stat")
(autoload 'spam-stat-load "spam-stat")
(autoload 'spam-stat-save "spam-stat")
(autoload 'spam-stat-split-fancy "spam-stat"))
(eval-and-compile
(when (condition-case nil
(let ((spam-stat-install-hooks nil))
(require 'spam-stat))
(file-error
(defalias 'spam-stat-register-ham-routine 'ignore)
(defalias 'spam-stat-register-spam-routine 'ignore)
nil))
(defun spam-check-stat ()
"Check the spam-stat backend for the classification of this message"
(let ((spam-split-group (if spam-split-symbolic-return
'spam
spam-split-group))
(spam-stat-split-fancy-spam-group spam-split-group) ; override