;ELC   
;;; Compiled by amu@quiche-lorraine.mit.edu on Thu Jan  6 19:18:15 2000
;;; from file /afs/sipb.mit.edu/contrib/emacs/packages/gnus-5.8.3/lisp/nnspool.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 "`nnspool.el' was compiled for Emacs 19.29 or later"))

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


(byte-code "\302\303!\210\302\304!\210\302\305!\210\306\307\310\311\"\311\211FB\306\312D	B\311\207" [nnoo-definition-alist nnoo-state-alist require nnheader nntp nnoo nnspool mapcar #[(p) "C\207" [p] 1] nil "*internal-non-initialized-backend*"] 4)
#@67 Program to post news.
This is most commonly `inews' or `injnews'.
(defvar nnspool-inews-program news-inews-program (#$ . 893))
(nnoo-define 'nnspool-inews-program nil)
#@142 Switches for nnspool-request-post to pass to `inews' for posting news.
If you are using Cnews, you probably should set this variable to nil.
(defvar nnspool-inews-switches '("-h" "-S") (#$ . 1068))
(nnoo-define 'nnspool-inews-switches nil)
#@29 Local news spool directory.
(defvar nnspool-spool-directory (file-name-as-directory news-path) (#$ . 1314))
(nnoo-define 'nnspool-spool-directory nil)
#@27 Local news nov directory.
(defvar nnspool-nov-directory (concat nnspool-spool-directory "over.view/") (#$ . 1471))
(nnoo-define 'nnspool-nov-directory nil)
#@48 Where the local news library files are stored.
(defvar nnspool-lib-dir "/usr/lib/news/" (#$ . 1633))
(nnoo-define 'nnspool-lib-dir nil)
#@25 Local news active file.
(defvar nnspool-active-file (concat nnspool-lib-dir "active") (#$ . 1775))
(nnoo-define 'nnspool-active-file nil)
#@29 Local news newsgroups file.
(defvar nnspool-newsgroups-file (concat nnspool-lib-dir "newsgroups") (#$ . 1919))
(nnoo-define 'nnspool-newsgroups-file nil)
#@32 Local news distributions file.
(defvar nnspool-distributions-file (concat nnspool-lib-dir "distribs.pat") (#$ . 2079))
(nnoo-define 'nnspool-distributions-file nil)
#@26 Local news history file.
(defvar nnspool-history-file (concat nnspool-lib-dir "history") (#$ . 2250))
(nnoo-define 'nnspool-history-file nil)
#@30 Local news active date file.
(defvar nnspool-active-times-file (concat nnspool-lib-dir "active.times") (#$ . 2398))
(nnoo-define 'nnspool-active-times-file nil)
#@183 The number of the articles which indicates a large newsgroup.
If the number of the articles is greater than the value, verbose
messages will be shown to indicate the current status.
(defvar nnspool-large-newsgroup 50 (#$ . 2566))
(nnoo-define 'nnspool-large-newsgroup nil)
#@76 Non-nil means that nnspool will never return NOV lines instead of headers.
(defvar nnspool-nov-is-evil nil (#$ . 2845))
(nnoo-define 'nnspool-nov-is-evil nil)
#@151 If non-nil, use sed to get the relevant portion from the overview file.
If nil, nnspool will load the entire file into a buffer and process it
there.
(defconst nnspool-sift-nov-with-sed nil (#$ . 3011))
#@75 *A hook that will be run when an article has been rejected by the server.
(defvar nnspool-rejected-article-hook nil (#$ . -3220))
(nnoo-define 'nnspool-rejected-article-hook nil)
#@28 Coding system for nnspool.
(defvar nnspool-file-coding-system nnheader-file-coding-system (#$ . 3405))
(nnoo-define 'nnspool-file-coding-system nil)
#@45 Version numbers of this version of NNSPOOL.
(defconst nnspool-version "nnspool 2.0" (#$ . 3560))
#@31 Current news group directory.
(defvar nnspool-current-directory nil (#$ . 3663))
(byte-code "\303\304\305\"\210\306\300!\204 \305\300	B\303\300\305\"\210\306\302!\204 \307\302	B\303\302\305\"\210\310\311!\207" [nnspool-current-group current-load-list nnspool-status-string nnoo-define nnspool-current-directory nil boundp "" nnoo-define-basics-1 nnspool] 3)
#@35 Retrieve the headers of ARTICLES.
(defalias 'nnspool-retrieve-headers #[(articles &optional group server fetch-old) "\212q\210\306 \210\307	!\2058\nG\310\"#\247\205 #V$%&\311'\311(\311)\311*\n@\247\203C \312\n+\"\203C \313\2026\n\211A@\211)\203();\203p \314)!\211*\205f \315*@*A\"'*A)\202v \316)!''\203\317'!\203\320c\210\321)p\"\210\322c\210`(''\317'!\203\341 ,\323=\203\253 \324'!\210\202\341 \310\311-(.\324'\311(\211.\\\211($A@=\203\340 \325\326\311\323#?db\210\203\340 ,\203\261 (,W\204\261 *)(b\210\325\326\311\323#\203\367 \327u\210\330c\210\202db\210n\203\330c\210\202\331c\210`d|\210$\203C \fT\211\332\246\310U\203C \333\334\335\f\336_\245#\210\202C $\2032\333\334\337\"\210\340 \210\341.	)\207" [nntp-server-buffer group articles number count nnspool-current-directory erase-buffer nnspool-possibly-change-directory 0 nil nnspool-retrieve-headers-with-nov nov nnspool-find-id nnspool-article-pathname int-to-string file-exists-p "221 " princ " Article retrieved.\n" t nnheader-insert-file-contents search-forward "\n\n" -1 ".\n" "\n.\n" 20 nnheader-message 5 "nnspool: Receiving headers... %d%%" 100 "nnspool: Receiving headers...done" nnheader-fold-continuation-lines headers default-directory nnspool-large-newsgroup do-message nnspool-file-coding-system nnheader-file-coding-system file beg article ag fetch-old nnheader-max-head-length format-alist nnheader-head-chop-length] 8 (#$ . 4033)])
(nnoo-register-function 'nnspool-retrieve-headers)
(defalias 'nnspool-open-server #[(server &optional defs) "\304\305	#\210\306\n!\204 \307 \210\310\305\311\n#\207\312\313\314\n!!!\204( \307 \210\310\305\315\n#\207\306!\2044 \310\305\316#\207\310\305\317\n$\210\320\207" [server defs nnspool-spool-directory nnspool-active-file nnoo-change-server nnspool file-exists-p nnspool-close-server nnheader-report "Spool directory doesn't exist: %s" file-directory-p directory-file-name file-truename "Not a directory: %s" "The active file doesn't exist: %s" "Opened server %s using directory %s" t] 5])
(nnoo-register-function 'nnspool-open-server)
#@43 Select article by message ID (or number).
(defalias 'nnspool-request-article #[(id &optional group server buffer) "\306!\210	\206	 \n\307\211;\203% \310!\211\203+ \311@A\"\202+ \311\"\f\205Q \312\f!\205Q \313\f!?\205Q \212\314\f!)\205Q \247\203P B\202Q +\207" [group buffer nntp-server-buffer ag file id nnspool-possibly-change-directory nil nnspool-find-id nnspool-article-pathname file-exists-p file-directory-p nnspool-find-file nnspool-current-group] 3 (#$ . 6159)])
(nnoo-register-function 'nnspool-request-article)
#@48 Select article body by message ID (or number).
(defalias 'nnspool-request-body #[(id &optional group server) "\304!\210\305	!\211\205! \212q\210eb\210\306\307\310\311#\203 e`|\210\n))\207" [group id res nntp-server-buffer nnspool-possibly-change-directory nnspool-request-article search-forward "\n\n" nil t] 5 (#$ . 6705)])
(nnoo-register-function 'nnspool-request-body)
#@48 Select article head by message ID (or number).
(defalias 'nnspool-request-head #[(id &optional group server) "\304!\210\305	!\211\203$ \212q\210eb\210\306\307\310\311#\203  `Sd|\210\312 \210)\n)\207" [group id res nntp-server-buffer nnspool-possibly-change-directory nnspool-request-article search-forward "\n\n" nil t nnheader-fold-continuation-lines] 5 (#$ . 7087)])
(nnoo-register-function 'nnspool-request-head)
#@20 Select news GROUP.
(defalias 'nnspool-request-group #[(group &optional server dont-check) "\305!\306\307\n!\204 \310\311\312#\202d \n\310\311\313#\210\f\203* \310\311\313#\210\314\202d \315\n\306\316\314$\211\203= \317\320\321	\"\322\"	\203Z \323\324	G	@	A\203S 	A\211\202H 	@%\202d \310\311\325#\210\323\326\"*\207" [group dir pathname nnspool-current-directory dont-check nnspool-article-pathname nil file-directory-p nnheader-report nnspool "Invalid group name (no such directory): %s" "Selected group %s" t directory-files "^[0-9]+$" sort mapcar #[(name) "\301!\207" [name string-to-int] 2] < nnheader-insert "211 %d %d %d %s\n" "Empty group %s" "211 0 0 0 %s\n"] 7 (#$ . 7512)])
(nnoo-register-function 'nnspool-request-group)
(defalias 'nnspool-request-type #[(group &optional article) "\300\207" [news] 1])
(nnoo-register-function 'nnspool-request-type)
(defalias 'nnspool-close-group #[(group &optional server) "\300\207" [t] 1])
(nnoo-register-function 'nnspool-close-group)
#@25 List active newsgroups.
(defalias 'nnspool-request-list #[(&optional server) "\212\301!\206 \302\303\304!\")\207" [nnspool-active-file nnspool-find-file nnheader-report nnspool nnheader-file-error] 4 (#$ . 8517)])
(nnoo-register-function 'nnspool-request-list)
#@37 List newsgroups (defined in NNTP2).
(defalias 'nnspool-request-list-newsgroups #[(&optional server) "\212\301!\206 \302\303\304!\")\207" [nnspool-newsgroups-file nnspool-find-file nnheader-report nnspool nnheader-file-error] 4 (#$ . 8787)])
(nnoo-register-function 'nnspool-request-list-newsgroups)
#@40 List distributions (defined in NNTP2).
(defalias 'nnspool-request-list-distributions #[(&optional server) "\212\301!\206 \302\303\304!\")\207" [nnspool-distributions-file nnspool-find-file nnheader-report nnspool nnheader-file-error] 4 (#$ . 9095)])
(nnoo-register-function 'nnspool-request-list-distributions)
#@33 List groups created after DATE.
(defalias 'nnspool-request-newgroups #[(date &optional server) "\304!\205b \212db\210\305\306!\204 \307y\310U\204\n \311\312	!!\313\305\314!\203L \310\225Sb\210\315c\210\316\225b\210\317p!V\203L \316\224\316\225{\nB\211\203L \307y\310U\204 \320 \210\n\203` \n@\321\261\210\nA\211\204S +\322\207" [nnspool-active-times-file date groups seconds nnspool-find-file looking-at "\\([^ ]+\\) +\\([0-9]+\\)[0-9][0-9][0-9] " -1 0 time-to-seconds date-to-time nil "\\([^ ]+\\) +[0-9]+ " ".0" 1 read erase-buffer " 0 0 y\n" t] 4 (#$ . 9415)])
(nnoo-register-function 'nnspool-request-newgroups)
#@36 Post a new news in current buffer.
(defalias 'nnspool-request-post #[(&optional server) "\212\303\304\305!\306\307\310\217\211\205& \311\312\313\"\210\314\n\315\"\210\316\ned#\210\317\320\321\217\210\322,\207" [process-connection-type inews-buffer proc nil generate-new-buffer " *nnspool post*" err (byte-code "\303\304\305	\n%\207" [inews-buffer nnspool-inews-program nnspool-inews-switches apply start-process "*nnspool inews*"] 6) ((error (byte-code "\301\302\303#\207" [err nnheader-report nnspool "inews error: %S"] 4))) nnheader-report nnspool "" set-process-sentinel nnspool-inews-sentinel process-send-region #1=#:G82187 (process-send-eof proc) ((error)) t] 5 (#$ . 10046)])
(nnoo-register-function 'nnspool-request-post)
(defalias 'nnspool-inews-sentinel #[(proc status) "\212\302!q\210eb\210\303 \304U\204 \305\306\307\310#\203 \311p!\202B \312\313\307\310#\203/ \314\315\310\211#\210\202 \316\317\320\321 #\210\322\323\324	#\210\325 \210\326\327!)\207" [proc nnspool-status-string process-buffer buffer-size 0 search-forward "spooled" nil t kill-buffer re-search-forward "[ 	\n]+" replace-match " " nnheader-report nnspool "%s" buffer-string nnheader-message 5 "nnspool: %s" ding run-hooks nnspool-rejected-article-hook] 4])
(defalias 'nnspool-retrieve-headers-with-nov #[(articles &optional fetch-old) "\206 	?\205O \306\n\307#\f\310\311!\205N \212q\210\312 \210\2035 \313\f\"\202M \314!\210\203I \247\204I \315\202M \316\317\320\217),\207" [gnus-nov-is-evil nnspool-nov-is-evil nnspool-current-group nnspool-nov-directory articles nnspool-file-coding-system nnheader-group-pathname ".overview" nil file-exists-p erase-buffer nnspool-sift-nov-with-sed nnheader-insert-file-contents t #1=#:G82188 (byte-code "\304\203 \305	@Z]\202 	@\302	!@\"\210\306 \307U?\205Q \310y\210\311p!\211	@U\203. \312\207\203A \n@X\203A \211A\210\202. \203P \313\211A@!\210\202A \312\207" [fetch-old articles last arts nnheader-nov-delete-outside-range 1 buffer-size 0 -1 read t nnspool-insert-nov-head] 5) ((error)) last nnheader-file-coding-system arts nov nntp-server-buffer fetch-old] 4])
#@63 Read the head of ARTICLE, convert to NOV headers, and insert.
(defalias 'nnspool-insert-nov-head #[(article) "\212p\305\306\307!\310\311\n\"!\203$ \312!\210\313 	q\210db\210\314\f!\210)\315!+\207" [buf cur nnspool-current-group article headers nil nnheader-set-temp-buffer " *nnspool head*" nnheader-insert-head nnspool-article-pathname nnheader-insert-article-line nnheader-parse-head nnheader-insert-nov kill-buffer] 4 (#$ . 12181)])
(defalias 'nnspool-sift-nov-with-sed #[(articles file) "@A\203 A\211\202 @\304\305\306\307\306\310\311\nS	T#&*\207" [articles last first file call-process "awk" nil t format "BEGIN {firstmsg=%d; lastmsg=%d;}\n $1 >= firstmsg && $1 <= lastmsg {print;}"] 10])
(defalias 'nnspool-find-id #[(id) "\212\300\301!q\210\302 \210\303\304\305\217\210eb\210\306\307!\205  \310\311!\312\310\313!!B\314p!\210)\207" [get-buffer-create " *nnspool work*" erase-buffer #1=#:G82189 (byte-code "\302\303\304\305\304\306!	&\207" [id nnspool-history-file call-process "grep" nil t regexp-quote] 7) ((error)) looking-at "<[^>]+>[ 	]+[-0-9~]+[ 	]+\\([^ /	\n]+\\)/\\([0-9]+\\)[ 	\n]" match-string 1 string-to-int 2 kill-buffer] 4])
#@38 Insert FILE in server buffer safely.
(defalias 'nnspool-find-file #[(file) "q\210\301 \210\302\303\304\217\207" [nntp-server-buffer erase-buffer nil (byte-code "\303\n!\210)\304\207" [nnspool-file-coding-system coding-system-for-read file mm-insert-file-contents t] 2) ((file-error))] 3 (#$ . 13351)])
(defalias 'nnspool-possibly-change-directory #[(group) "\204 \304\207\305!\306	!\203 	\211\202 \307\310\311#)\207" [group pathname nnspool-current-directory nnspool-current-group t nnspool-article-pathname file-directory-p nnheader-report nnspool "No such newsgroup: %s"] 4])
#@26 Find the path for GROUP.
(defalias 'nnspool-article-pathname #[(group &optional article) "\303	\n#\207" [group nnspool-spool-directory article nnheader-group-pathname] 4 (#$ . 13948)])
(provide 'nnspool)
