;ELC   
;;; Compiled by pot@pot.cnuce.cnr.it on Tue Mar 18 15:43:31 2003
;;; from file /home/pot/gnu/emacs-pretest.new/lisp/gnus/gnus-nocem.el
;;; in Emacs version 21.3
;;; with bytecomp version 2.85.4.1
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.
(if (and (boundp 'emacs-version)
	 (< (aref emacs-version (1- (length emacs-version))) ?A)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`gnus-nocem.el' was compiled for Emacs 19.29 or later"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\306\307\310\311\312\313%\207" [require gnus nnmail gnus-art gnus-sum gnus-range custom-declare-group gnus-nocem nil "NoCeM pseudo-cancellation treatment" :group gnus-score] 6)
#@59 *List of groups that will be searched for NoCeM messages.
(custom-declare-variable 'gnus-nocem-groups ''("news.lists.filters" "news.admin.net-abuse.bulletins" "alt.nocem.misc" "news.admin.net-abuse.announce") '(#$ . -881) :group 'gnus-nocem :type '(repeat (string :tag "Group")))
#@197 *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.
(custom-declare-variable 'gnus-nocem-issuers ''("AutoMoose-1" "clewis@ferret.ocunix" "cosmo.roadkill" "SpamHippo" "hweede@snafu.de") '(#$ . -1168) :group 'gnus-nocem :type '(repeat (choice string sexp)))
#@46 *Directory where NoCeM files will be stored.
(custom-declare-variable 'gnus-nocem-directory '(nnheader-concat gnus-article-save-directory "NoCeM/") '(#$ . -1574) :group 'gnus-nocem :type 'directory)
#@53 *Number of days to keep NoCeM headers in the cache.
(custom-declare-variable 'gnus-nocem-expiry-wait '15 '(#$ . -1779) :group 'gnus-nocem :type 'integer)
#@183 *Function called to verify that the NoCeM message is valid.
One likely value is `mc-verify'.  If the function in this variable
isn't bound, the message will be used unconditionally.
(custom-declare-variable 'gnus-nocem-verifyer ''mc-verify '(#$ . -1940) :group 'gnus-nocem :type '(radio (function-item mc-verify) (function :tag "other")))
#@196 *If t try to fetch all messages which have @@NCM in the subject.
Otherwise don't fetch messages which have references or whose message-id
matches a previously scanned and verified nocem message.
(custom-declare-variable 'gnus-nocem-liberal-fetch 'nil '(#$ . -2286) :group 'gnus-nocem :type 'boolean)
#@74 *If non-nil, the maximum number of articles to check in any NoCeM group.
(custom-declare-variable 'gnus-nocem-check-article-limit '500 '(#$ . -2592) :group 'gnus-nocem :version "21.1" :type '(choice (const :tag "unlimited" nil) (integer 1000)))
#@204 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.
(custom-declare-variable 'gnus-nocem-check-from 't '(#$ . 2844) :group 'gnus-nocem :version "21.1" :type 'boolean)
(byte-code "\301B\306\301!\204\f \307\302B\306\302!\204 \307\303B\306\303!\204$ \307\304B\306\304!\2040 \307\305B\306\305!\204< \307\307\207" [current-load-list gnus-nocem-active gnus-nocem-alist gnus-nocem-touched-alist gnus-nocem-hashtb gnus-nocem-seen-message-ids boundp nil] 2)
(defalias 'gnus-nocem-active-file #[nil "\301!\302P\207" [gnus-nocem-directory file-name-as-directory "active"] 2])
(defalias 'gnus-nocem-cache-file #[nil "\301!\302P\207" [gnus-nocem-directory file-name-as-directory "cache"] 2])
#@42 Real-name mappings of subscribed groups.
(defvar gnus-nocem-real-group-hashtb nil (#$ . 3698))
#@79 Fill up a hash table with the real-name mappings from the user's active file.
(defalias 'gnus-fill-real-hashtb #[nil "\302G!\303\304\"\207" [gnus-newsrc-alist gnus-nocem-real-group-hashtb gnus-make-hashtable mapcar #[(group) "@\303\304	\"\203 	\305\225\306O\202 	)\307\n\"\310L\207" [group gname gnus-nocem-real-group-hashtb string-match "^[^:]+:" 0 nil intern t] 3]] 3 (#$ . 3799)])
#@47 Scan all NoCeM groups for new NoCeM messages.
(defalias 'gnus-nocem-scan-groups #[nil "\306\307\211\211\211\211./\3100!\210\311 \210\312 \210\313\314 !\203, 1\204, \315\316\317\217\210/\211A/@\211\203@\320!\211\203, \3211\"A@A@W\204.\f\203\\ \fAAW\203.\212\322\323\307\"\307\211234\324\325\326!!5\327\216r5q\210\330\331\f\203\203 \fAT\202\205 @AB!\211\"\332=\203\233 \333\n\3074#\202\237 \3344!33\211A3@\2112\203\356 \335\3362\337H\"\203\241 6\203\241 \3067\340\341\215)\203\241 8\204\346 2\342H\343\230\204\334 2\342H\204\241 2\344H9\235\204\241 2	B\202\241 \345:\346	;\"\211G<	\307=\211>\203,>@=\347\350\351=\345H:T\211:<&\210\352=\"\210>A\211>\204.\fD\353\3211\"1\"B1\202, \354 \210\355 .\207" [gnus-nocem-groups check-headers articles gactive active group t nil gnus-make-directory gnus-nocem-load-cache gnus-fill-real-hashtb file-exists-p gnus-nocem-active-file #1=#:G97342 (byte-code "\300\301 \302\211\211$\207" [load gnus-nocem-active-file t] 5) ((error)) gnus-activate-group assoc make-vector 10 get-buffer-create generate-new-buffer-name " *temp*" ((byte-code "\301!\203\n \302!\210\301\207" [#2=#:temp-buffer buffer-name kill-buffer] 2)) gnus-retrieve-headers gnus-uncompress-range nov gnus-get-newsgroup-headers-xover gnus-get-newsgroup-headers string-match "@@NCM" 1 ok (byte-code "\301\302\"\210\303\207" [gnus-nocem-issuers mapcar #[(author) ":\203 @\302	\303H\"\205 \304\305\306\"\207" [author header string-match 2 throw ok t] 4] nil] 3) 5 "" 4 0 last gnus-message 7 "Checking article %d in %s for NoCeM (%d of %d)..." gnus-nocem-check-article delq gnus-nocem-save-cache gnus-nocem-save-active gnus-inhibit-demon groups gnus-nocem-directory gnus-nocem-active header headers dependencies #2# gnus-nocem-check-from case-fold-search gnus-nocem-liberal-fetch gnus-nocem-seen-message-ids i gnus-nocem-check-article-limit len h #3=#:--dolist-temp--97343] 9 (#$ . 4198) nil])
#@74 Check whether the current article is an NCM article and that we want it.
(defalias 'gnus-nocem-check-article #[(group header) "\306H	\307\211\211\211\211\203# \310\311\312!!\313!\"\205\216 \314\315H	\"\210eb\210\316\317\307\320#\203: e\315\224|\210\316\321\307\320#\203G \315\225d|\210eb\210\322\323\307\320#\211\205\216 \322\324\307\320#\211\205\216 \f}\210\325\326!\325\326!~\210\327\n\"\204z \330\331\"\202\216 \332!\205\216 \333 \205\216 \334H B\211 .\207" [header group type e b issuer 3 nil time-less-p time-since date-to-time days-to-time gnus-request-article-this-buffer 0 re-search-forward "-----BEGIN PGP MESSAGE-----" t "-----END PGP MESSAGE-----\n?" search-forward "\n@@BEGIN NCM HEADERS\n" "\n@@BEGIN NCM BODY\n" mail-fetch-field "issuer" gnus-nocem-message-wanted-p message "invalid NoCeM issuer: %s" gnus-nocem-verify-issuer gnus-nocem-enter-article 4 gnus-newsgroup-name date gnus-nocem-expiry-wait gnus-nocem-seen-message-ids] 7 (#$ . 6176)])
(defalias 'gnus-nocem-message-wanted-p #[(issuer type) "\306\211\211\f\235\203 \307\202d \310\f\"A\211\205d \n\211A@\211\203c 	;\2034 \311	\"\202 	:\203[ 	@\312=\203[ 	\211A@);\203[ \311	\211A@)\"?\202 \313\314	\"\210\202 ,\207" [gnus-nocem-issuers condition conditions wanted issuers issuer nil t assoc string-match not error "Invalid NoCeM condition: %S" type x] 5])
#@60 Verify using PGP that the canceler is who she says she is.
(defalias 'gnus-nocem-verify-issuer #[(person) "\301!\203 \302\303\304\217\207\305\207" [gnus-nocem-verifyer fboundp #1=#:G97344 (funcall gnus-nocem-verifyer) ((error)) t] 3 (#$ . 7562)])
#@49 Enter the current article into the NoCeM cache.
(defalias 'gnus-nocem-enter-article #[nil "eb\210\306\307\310\311#\306\312\310\311#p\310\211\211\211\205\301 \f\205\301 \313\224T}\210eb\210\306\314\310\311#\203\246 \315\316\317\217\203( 9\203( \320!\204I \310L\210\202( \321\322!\323\324\"\203` \313\225\310O\202b )\"J\203( \325 \210\310f\326=\203z \327y\210\202m `\306\314!S{\321	\"J\204\226 \330	\"\311L\210	\nB\331y\210\310f\326=\203( \331y\210\202\231 \n\203\300 \311\332 \211A\310\241\210)\nB B \311.\207" [group id ncm buf e b search-forward "\n@@BEGIN NCM BODY\n" nil t "\n@@END NCM BODY\n" 0 "	" #1=#:G97345 (byte-code "\304\n!)\211\207" [gnus-active-hashtb obarray buf group read] 2) ((error)) boundp intern-soft symbol-name string-match "^[^:]+:" beginning-of-line 9 -1 intern 1 current-time gname gnus-nocem-real-group-hashtb gnus-nocem-hashtb gnus-nocem-touched-alist time gnus-nocem-alist] 7 (#$ . 7817)])
#@23 Load the NoCeM cache.
(defalias 'gnus-nocem-load-cache #[nil "?\205 \301\302 !\205 \303\302 \304\211\211$\210\305 \207" [gnus-nocem-alist file-exists-p gnus-nocem-cache-file load t gnus-nocem-alist-to-hashtb] 5 (#$ . 8780) nil])
#@23 Save the NoCeM cache.
(defalias 'gnus-nocem-save-cache #[nil "\2053 	\2053 \304 \305\306\307!!\310\216r\nq\210\311\312\300\313DE!\210)r\nq\210~\210\314ed\315\316%\210,\315\211\207" [gnus-nocem-alist gnus-nocem-touched-alist #1=#:temp-buffer #2=#:temp-file gnus-nocem-cache-file get-buffer-create generate-new-buffer-name " *temp file*" ((byte-code "\301!\203\n \302!\210\301\207" [#1# buffer-name kill-buffer] 2)) gnus-prin1 setq quote write-region nil 0] 6 (#$ . 9018)])
#@29 Save the NoCeM active file.
(defalias 'gnus-nocem-save-active #[nil "\303 \304\305\306!!\307\216rq\210\310\311\302\312\nDE!)rq\210~\210\313ed	\314\315%\210,\207" [#1=#:temp-buffer #2=#:temp-file gnus-nocem-active gnus-nocem-active-file get-buffer-create generate-new-buffer-name " *temp file*" ((byte-code "\301!\203\n \302!\210\301\207" [#1# buffer-name kill-buffer] 2)) gnus-prin1 setq quote write-region nil 0] 7 (#$ . 9504)])
#@50 Create a hashtable from the Message-IDs we have.
(defalias 'gnus-nocem-alist-to-hashtb #[nil "\306	B\211\307\f!\306\310	G\311_!	@\211\205W \312\313@!\"\2042 	A\241\210\202P 	A\211\203P \314@\"\315L\210A\211\204= 	A\211\202 -\207" [gnus-nocem-alist alist pprev prev gnus-nocem-expiry-wait expiry nil days-to-time gnus-make-hashtable 51 time-less-p time-since intern t entry gnus-nocem-hashtb] 4 (#$ . 9946)])
(gnus-add-shutdown 'gnus-nocem-close 'gnus)
#@33 Clear internal NoCeM variables.
(defalias 'gnus-nocem-close #[nil "\306\306\306\306\306\306\211\207" [gnus-nocem-alist gnus-nocem-hashtb gnus-nocem-active gnus-nocem-touched-alist gnus-nocem-seen-message-ids gnus-nocem-real-group-hashtb nil] 2 (#$ . 10434)])
#@56 Say whether article ID in the current group is wanted.
(defalias 'gnus-nocem-unwanted-article-p #[(id) "\205	 \302	\"J\207" [gnus-nocem-hashtb id intern-soft] 3 (#$ . 10705)])
(provide 'gnus-nocem)
