;ELC   
;;; Compiled by amu@quiche-lorraine.mit.edu on Thu Jan  6 19:17:12 2000
;;; from file /afs/sipb.mit.edu/contrib/emacs/packages/gnus-5.8.3/lisp/gnus-cache.el
;;; in Emacs version 20.4.1
;;; with bytecomp version 2.56
;;; 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-cache.el' was compiled for Emacs 19.29 or later"))

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


(byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\207" [require gnus gnus-int gnus-range gnus-start] 2)
#@25 *The cache active file.
(custom-declare-variable 'gnus-cache-active-file '(concat (file-name-as-directory gnus-cache-directory) "active") '(#$ . -762) :group 'gnus-cache :type 'file)
#@46 Classes of articles to enter into the cache.
(custom-declare-variable 'gnus-cache-enter-articles ''(ticked dormant) '(#$ . 951) :group 'gnus-cache :type '(set (const ticked) (const dormant) (const unread) (const read)))
#@47 Classes of articles to remove from the cache.
(custom-declare-variable 'gnus-cache-remove-articles ''(read) '(#$ . 1177) :group 'gnus-cache :type '(set (const ticked) (const dormant) (const unread) (const read)))
#@225 *Groups that match this regexp will be cached.

If you only want to cache your nntp groups, you could set this
variable to "^nntp".

If a group matches both gnus-cacheable-groups and gnus-uncacheable-groups
it's not cached.
(custom-declare-variable 'gnus-cacheable-groups 'nil '(#$ . -1397) :group 'gnus-cache :type '(choice (const :tag "off" nil) regexp))
#@232 *Groups that match this regexp will not be cached.

If you want to avoid caching your nnml groups, you could set this
variable to "^nnml".

If a group matches both gnus-cacheable-groups and gnus-uncacheable-groups
it's not cached.
(custom-declare-variable 'gnus-uncacheable-groups 'nil '(#$ . -1761) :group 'gnus-cache :type '(choice (const :tag "off" nil) regexp))
#@41 Coding system used on Gnus cache files.
(defvar gnus-cache-overview-coding-system 'raw-text (#$ . 2133))
#@41 Coding system used on Gnus cache files.
(defvar gnus-cache-coding-system 'raw-text (#$ . 2244))
(byte-code "\305\300!\204 \306\300	B\305\302!\204 \306\302	B\305\303!\204  \306\303	B\305\304!\204, \306\304	B\307\310\311\"\210\307\312\313\"\207" [gnus-cache-removable-articles current-load-list gnus-cache-buffer gnus-cache-active-hashtb gnus-cache-active-altered boundp nil autoload nnml-generate-nov-databases-1 "nnml" nnvirtual-find-group-art "nnvirtual"] 3)
#@23 Initialize the cache.
(defalias 'gnus-cache-open #[nil "\302!\204 	\205 	\303=?\205 \304 \207" [gnus-cache-directory gnus-use-cache file-exists-p passive gnus-cache-read-active] 2 (#$ . 2720)])
(byte-code "\300\301\302\217\207" [#1=#:G81943 (byte-code "\300\301\302\"\207" [gnus-add-shutdown gnus-cache-close gnus] 3) ((error))] 3)
#@22 Shut down the cache.
(defalias 'gnus-cache-close #[nil "\301 \210\302 \210\303\211\207" [gnus-cache-active-hashtb gnus-cache-write-active gnus-cache-save-buffers nil] 2 (#$ . 3062)])
(defalias 'gnus-cache-save-buffers #[nil "\205Y A\306@\307\"\310\n!\2038 \212\nq\210\311 \312V\203( \313	!\210)\2027 \314	!\2032 \315	!\210\316\317\320\217\210)\n\211\211\205L \n;\203I \321\202J \322\n!)\203T \323!\210)\316\211*\207" [gnus-cache-buffer overview-file buffer gnus-cache-overview-coding-system coding-system-for-write buf gnus-cache-file-name ".overview" buffer-modified-p buffer-size 0 gnus-write-buffer file-exists-p delete-file nil (byte-code "\301\302!!\207" [overview-file delete-directory file-name-directory] 3) ((error)) get-buffer buffer-name kill-buffer] 5])
(defalias 'gnus-cache-possibly-enter-article #[(group article ticked dormant unread &optional force) "\204 	\306=?\205$\n\247\205$\n\307V\205$\n\310\211\311\"!\203I \312\"#\313\314#\"\2039 #\307\225\310O\202; #)\n\"\211$@\"$A)\205#\307V\205#\204\201 %\203e \313%\"\"\205#&\203t \313&\"\"?\205#\315'()*$\205#\316\317\"\"\211!?\205#\320\321\f!!\210\316\f!\203\236 \322\202#\212+q\210\323\324!\210\310\211,\325\"\"\210*\326 \307V\203!\327\f!\210\330\322!\211\307I\210\331\"!\210-Aq\210db\210\332y\210\310\333\334\217\203\344 \332y\210\202\327 o\203m\204\375 \307y\210\335p!W\203\336y\210\202\307y\210\202\336y\210\307y\210\337!\210.q\210\340\"\"\210\n/B/\341\n!\210)\322+\207" [force gnus-use-cache article headers file number passive 0 nil gnus-virtual-group-p nnvirtual-find-group-art string-match "^[^:]+:" gnus-cache-member-of-class file-exists-p gnus-cache-file-name gnus-make-directory file-name-directory t require gnus-art gnus-request-article-this-buffer buffer-size gnus-write-buffer nnheader-parse-head gnus-cache-change-buffer -1 (byte-code "o?\205\n \301p!V\207" [number read] 2) ((error (byte-code "\300y\210`\301y\210`|\210\302\207" [0 1 t] 2))) read 1 nnheader-insert-nov gnus-cache-update-active gnus-summary-update-secondary-mark group gname result gnus-cacheable-groups gnus-uncacheable-groups gnus-cache-enter-articles ticked dormant unread nntp-server-buffer gnus-article-decode-hook gnus-cache-buffer gnus-summary-buffer gnus-newsgroup-cached] 6])
#@42 Mark ARTICLE for later possible removal.
(defalias 'gnus-cache-enter-remove-article #[(article) "\205	 	B\211\207" [article gnus-cache-removable-articles] 2 (#$ . 5381)])
#@49 Possibly remove some of the removable articles.
(defalias 'gnus-cache-possibly-remove-articles #[nil "\305!\204	 \306 \207	\307\203> \310\311\312\f\"\203# \f\313\225\307O\202$ \f)\211A@\"\211\203 \nAC\n@\306 \210*\202 *\307\211\207" [gnus-newsgroup-name gnus-cache-removable-articles ga arts gname gnus-virtual-group-p gnus-cache-possibly-remove-articles-1 nil nnvirtual-find-group-art string-match "^[^:]+:" 0] 4 (#$ . 5561)])
#@49 Possibly remove some of the removable articles.
(defalias 'gnus-cache-possibly-remove-articles-1 #[nil "\306=?\205? 	\n\307\310!\210\203< \211A@\211\f>\203 \311\211\f>>>\2067 >$\210\202 +\312 \207" [gnus-use-cache gnus-cache-removable-articles gnus-newsgroup-cached article cache-articles articles passive nil gnus-cache-change-buffer gnus-cache-possibly-remove-article gnus-cache-save-buffers gnus-newsgroup-name gnus-newsgroup-marked gnus-newsgroup-dormant gnus-newsgroup-unreads gnus-newsgroup-unselected] 6 (#$ . 6009)])
#@43 Retrieve ARTICLE in GROUP from the cache.
(defalias 'gnus-cache-request-article #[(article group) "\306	\"\307\310!\205 \311 \210\312 \210\f\313!\210)\314*\207" [group article buffer-read-only file gnus-cache-coding-system coding-system-for-read gnus-cache-file-name nil file-exists-p erase-buffer gnus-kill-all-overlays insert-file-contents t] 3 (#$ . 6563)])
#@71 Alter the ACTIVE info for GROUP to reflect the articles in the cache.
(defalias 'gnus-cache-possibly-alter-active #[(group active) "\205( \304	\"J\211\205' \n@@W\203 \n@\240\210\nAAV\205' \nA\241)\207" [gnus-cache-active-hashtb group cache-active active intern-soft] 4 (#$ . 6937)])
#@45 Retrieve the headers for ARTICLES in GROUP.
(defalias 'gnus-cache-retrieve-headers #[(articles group &optional fetch-old) "\306!\211\211\204 \307\310\f#)\202\201 \311\312\f\n\"\f\"\313\314\"\307\307\203: \f\2058 \310#)\315 \210\212\316!\204K \202\200 \204e q\210\317 \210\320!\210)\321\202\200 \321=\203v \322\n\"\210\202\200 \323\311\n\f\"\"\210,)\207" [group gnus-newsgroup-cached cached gnus-use-cache articles fetch-old gnus-cache-articles-in-group nil gnus-retrieve-headers gnus-sorted-intersection gnus-sorted-complement gnus-cache-file-name ".overview" gnus-cache-save-buffers file-exists-p erase-buffer insert-file-contents nov gnus-cache-braid-nov gnus-cache-braid-heads type cache-file uncached-articles nntp-server-buffer gnus-cache-overview-coding-system coding-system-for-read] 6 (#$ . 7234)])
#@145 Enter the next N articles into the cache.
If not given a prefix, use the process marked articles instead.
Returns the list of articles entered.
(defalias 'gnus-cache-enter-article #[(&optional n) "\305!\306\211\211A@\211\203< \307\n!\210\310\n!\203/ \311\f\n\306\211\211\312&\2035 \n	B\2025 \313\314\315\n#\210\316\n!\210\202 \317\320!\210\321 \210	\237+\207" [n out article articles gnus-newsgroup-name gnus-summary-work-articles nil gnus-summary-remove-process-mark natnump gnus-cache-possibly-enter-article t gnus-message 2 "Can't cache article %d" gnus-summary-update-secondary-mark gnus-summary-next-subject 1 gnus-summary-position-point] 7 (#$ . 8093) "P"])
#@146 Remove the next N articles from the cache.
If not given a prefix, use the process marked articles instead.
Returns the list of articles removed.
(defalias 'gnus-cache-remove-article #[(n) "\305!\210\306	!\307\211\f\203/ \f\211A@\310!\210\311\307\211\211\312%\203( \nB\313!\210\202\f \314\315!\210\316 \210\n\237+\207" [gnus-newsgroup-name n out article articles gnus-cache-change-buffer gnus-summary-work-articles nil gnus-summary-remove-process-mark gnus-cache-possibly-remove-article t gnus-summary-update-secondary-mark gnus-summary-next-subject 1 gnus-summary-position-point] 6 (#$ . 8774) "P"])
#@53 Say whether ARTICLE is cached in the current group.
(defalias 'gnus-cached-article-p #[(article) "	>\207" [article gnus-newsgroup-cached] 2 (#$ . 9391)])
#@72 Insert all the articles cached for this group into the current buffer.
(defalias 'gnus-summary-insert-cached-articles #[nil "\303\304!\305\"\306	]\211\204 \307\310\311\"\210\n\205$ \312\n\211A@\313\"\210\202 *\207" [gnus-newsgroup-cached gnus-verbose cached sort copy-sequence < 6 gnus-message 3 "No cached articles for this group" gnus-summary-goto-subject t] 4 (#$ . 9552) nil])
(defalias 'gnus-summary-limit-include-cached 'gnus-summary-insert-cached-articles)
(defalias 'gnus-cache-change-buffer #[(group) "\203 	@\230\204 \303 \210?\2052 \212	\304\305!qB\306 \210\307	\310\"\311\n!\203- \312\n!\210)\313\314!)\207" [gnus-cache-buffer group file gnus-cache-save-buffers gnus-get-buffer-create " *gnus-cache-overview*" erase-buffer gnus-cache-file-name ".overview" file-exists-p nnheader-insert-file-contents set-buffer-modified-p nil] 3])
(defalias 'gnus-cache-member-of-class #[(class ticked dormant unread) "\203\n \300	>\2060 \n\203 \302	>\2060 \203 \303	>\2060 ?\2050 ?\2050 \n?\2050 \304	>\207" [ticked class dormant unread read] 2])
(defalias 'gnus-cache-file-name #[(group article) "\303!\303\304\305\306!\203 	\202, \307\310	\311\312#\313\312#\314\315	\"\203& 	\316\224\311I\210\310	\313\311#)\317\"!\n;\2038 \n\202; \320\n!Q\207" [gnus-cache-directory group article file-name-as-directory nnheader-translate-file-chars gnus-use-long-file-name not-cache nnheader-replace-duplicate-chars-in-string nnheader-replace-chars-in-string 47 95 46 string-match ":" 0 t int-to-string] 8])
#@56 If ARTICLE is in the cache, remove it and re-enter it.
(defalias 'gnus-cache-update-article #[(group article) "\304!\210\305	\306\211\211\307%\205 \306\310	\306\211\211\307&)\207" [group article gnus-use-cache gnus-newsgroup-name gnus-cache-change-buffer gnus-cache-possibly-remove-article nil t gnus-cache-possibly-enter-article] 7 (#$ . 11071)])
#@41 Possibly remove ARTICLE from the cache.
(defalias 'gnus-cache-possibly-remove-article #[(article ticked dormant unread &optional force) "	\306\307\f!\203, \310\f\311\312\"\203 \313\225\306O\202 )	\"\211@A)\314\f\"\315\n!\205\204 \204I \316$\205\204 \212\317\n!\210Aq\210eb\210\320\321!\322P!\204m \323\324\321!\322Qd\325#\203w \313y\210`\326y\210`|\210)\327	 \" \330	!\210\325+\207" [gnus-newsgroup-name article file number group gname nil gnus-virtual-group-p nnvirtual-find-group-art string-match "^[^:]+:" 0 gnus-cache-file-name file-exists-p gnus-cache-member-of-class delete-file looking-at int-to-string "	" search-forward "\n" t 1 delq gnus-summary-update-secondary-mark result force gnus-cache-remove-articles ticked dormant unread gnus-cache-buffer gnus-newsgroup-cached] 6 (#$ . 11430)])
#@51 Return a sorted list of cached articles in GROUP.
(defalias 'gnus-cache-articles-in-group #[(group) "\303\304\305\"!\306\307\n!\2050 \310\311\312\313\n\306\314\315$\"\316\"\211\203/ \317	@\315#\210\317\320	!@\"\210	*\207" [group articles dir file-name-directory gnus-cache-file-name 1 nil file-exists-p sort mapcar #[(name) "\301!\207" [name string-to-int] 2] directory-files "^[0-9]+$" t < gnus-cache-update-active last] 9 (#$ . 12268)])
(defalias 'gnus-cache-braid-nov #[(group cached &optional file) "\306\307!\310\211\311 \210\212\nq\210\312 \210\313\206 \314\315\"!\210)eb\210\316c\210eb\210)q\210eb\210\203\207 m\204K \317p!@W\203K \320y\210\2027 \321y\210\212\nq\210\322\316\323@!\324Q\310\325#\203n \321y\210`\310\210`\202p \310)	\203~ \326\n	#\210\316c\210A\211\2047 \327\n!+\207" [end beg cache-buf gnus-cache-overview-coding-system coding-system-for-read file gnus-get-buffer-create " *gnus-cache*" nil gnus-cache-save-buffers erase-buffer insert-file-contents gnus-cache-file-name ".overview" "\n" read 1 0 search-forward int-to-string "	" t insert-buffer-substring kill-buffer group nntp-server-buffer cached] 5])
(defalias 'gnus-cache-braid-heads #[(group cached) "\306\307!\212q\210\310 \210)	q\210eb\210\n\203v m\2046 \311\312!\2036 \313\224b\210\314p!\n@W\2036 \315\316\317\320#\210\202 \321y\210\212q\210\310 \210\322\323\n@\"!\210)eb\210\324c\210\325\n@p\"\210\326c\210\315\327\317\320#\210`d|\210\330u\210\331c\210)\332!\210\nA\211\204 \333!)\207" [cache-buf nntp-server-buffer cached gnus-cache-coding-system coding-system-for-read group gnus-get-buffer-create " *gnus-cache*" erase-buffer looking-at "2.. +\\([0-9]+\\) " 1 read search-forward "\n.\n" nil move 0 insert-file-contents gnus-cache-file-name "220 " princ " Article retrieved.\n" "\n\n" -1 "." insert-buffer-substring kill-buffer] 5])
#@121 Go through all groups and put the articles into the cache.

Usage:
$ emacs -batch -l ~/.emacs -l gnus -f gnus-jog-cache
(defalias 'gnus-jog-cache #[nil "\306\307\306\211\211\211\310 \210\311 \210\312\306\313\".\207" [gnus-large-newsgroup gnus-novice-user gnus-use-dribble-file nnmail-spool-file gnus-expert-user gnus-mark-article-hook nil t gnus gnus-group-mark-buffer gnus-group-iterate #[(group) "\303\304	\303\305#\210\n\306=\205 \307 \210\310 \210\311p!)\207" [gnus-auto-select-next group major-mode nil gnus-summary-read-group t gnus-summary-mode gnus-uu-mark-buffer gnus-cache-enter-article kill-buffer] 4]] 6 (#$ . 14137) nil])
#@29 Read the cache active file.
(defalias 'gnus-cache-read-active #[(&optional force) "\305!\210\306	!\203 \307\310	!8\311U\204 \n\203 \312 \207\212\313 \210\314	!\210\315\316\317\320ed\"!\211\"\210\316\211)\207" [gnus-cache-directory gnus-cache-active-file force gnus-cache-active-hashtb gnus-cache-active-altered gnus-make-directory file-exists-p 7 file-attributes 0 gnus-cache-generate-active gnus-set-work-buffer insert-file-contents gnus-active-to-gnus-format nil gnus-make-hashtable count-lines] 6 (#$ . 14787)])
#@45 Write the active hashtb to the active file.
(defalias 'gnus-cache-write-active #[(&optional force) "\204\f 	\205 \n\205 \304	\305#\210\306\211\207" [force gnus-cache-active-hashtb gnus-cache-active-altered gnus-cache-active-file gnus-write-active-file t nil] 4 (#$ . 15314)])
#@103 Update the upper bound of the active info of GROUP to NUMBER.
If LOW, update the lower bound instead.
(defalias 'gnus-cache-update-active #[(group number &optional low) "\306	\"J\211\204 \307	\"\211BL\210\202% \f\203! \n\240\210\202% \n\241\210\310\211)\207" [group gnus-cache-active-hashtb active number low gnus-cache-active-altered intern-soft intern t] 4 (#$ . 15602)])
#@33 Generate the cache active file.
(defalias 'gnus-cache-generate-active #[(&optional directory) "?\306\206	 \n!\307\310\"	\203 \311\2022 \312\313\314\315\306\n!!!P\316!\"\210\317\316!\320\225\321O\322\323#\321\321)	\203F \324\325\326\"\210\327\330!*\312\331\f\"\203T \332\333\334\211\f$\203~ \312\335\336@!\"\203q \337\336\211A@!!B\202T \211A@)B)\202T \340\341\"\211\203\224 \342\f*\"@\343!BL\210)\203\273 \344)@!\203\262 \312\345\336)@!\"\204\262 \346)@!\210)A\211)\204\231 	\205\307 \347\334!\210\324\325\350\".\207" [directory top gnus-cache-directory files group nums expand-file-name directory-files full "" string-match "^" regexp-quote file-name-as-directory directory-file-name nnheader-replace-chars-in-string 0 nil 47 46 gnus-message 5 "Generating the cache active file..." gnus-make-hashtable 123 "^\\(nn[^_]+\\)_" replace-match "\\1:" t "^[0-9]+$" file-name-nondirectory string-to-int sort < intern gnus-last-element file-directory-p "^\\." gnus-cache-generate-active gnus-cache-write-active "Generating the cache active file...done" alphs gnus-cache-active-hashtb] 7 (#$ . 15990) nil])
#@49 Generate NOV files recursively starting in DIR.
(defalias 'gnus-cache-generate-nov-databases #[(dir) "\302 \210\303\304	!)\207" [nnml-generate-active-function dir gnus-cache-close identity nnml-generate-nov-databases-1] 2 (#$ . 17129) (list gnus-cache-directory)])
#@40 Move the cache tree to somewhere else.
(defalias 'gnus-cache-move-cache #[(dir) "\302	\"\207" [gnus-cache-directory dir rename-file] 3 (#$ . 17401) "FMove the cache tree to: "])
(provide 'gnus-cache)
