
(provide (quote mhspool))

(require (quote nntp))

(defvar mhspool-list-directory-switches (quote ("-R")) "\
*Switches for nntp-request-list to pass to `ls' for gettting file lists.
One entry should appear on one line. You may need to add `-1' option.")

(defconst mhspool-version "MHSPOOL 1.5" "\
Version numbers of this version of MHSPOOL.")

(defvar mhspool-spool-directory "~/Mail" "\
Private mail directory.")

(defvar mhspool-current-directory nil "\
Current news group directory.")

(defun mhspool-retrieve-headers (sequence) "\
Return list of article headers specified by SEQUENCE of article id.
The format of list is
 `([NUMBER SUBJECT FROM XREF LINES DATE MESSAGE-ID REFERENCES] ...)'.
Reader macros for the vector are defined as `nntp-header-FIELD'.
Writer macros for the vector are defined as `nntp-set-header-FIELD'.
News group must be selected before calling me." (byte-code "ŠqˆÂGÒÂÒÂÂÂÂÒÂÂ
	…£@‰ˆÓ!P‰ˆÔ	!…D Õ	!?…sÖ ˆ×	!ˆebˆØÙÂÚ#ˆÛe`\"ˆebˆÜÝÂÐ#…p ÞßÐÐ#ˆ‚_ ˆebˆàcˆebˆØáÂÐ#ƒ‘ â`Šã ˆ`)\"‰
‚• ä‰
ˆebˆØåÂÐ#ƒ° â`Šã ˆ`)\"‰‚´ æ‰ˆebˆØçÂÐ#ƒÏ â`Šã ˆ`)\"‰	‚Ó Â‰	ˆebˆØèÂÐ#ƒî â`Šã ˆ`)\"‰‚ò Â‰ˆebˆØéÂÐ#ƒêâ`Šã ˆ`)\"!‰‚Ò‰ˆebˆØëÂÐ#ƒ.â`Šã ˆ`)\"‰‚2Â‰ˆebˆØìÂÐ#†CØíÂÐ#ƒUâ`Šã ˆ`)\"‰‚YÂ‰ˆî
	&B‰ˆA‰ˆT‰ˆï!…ŸV…Ÿðñò\"!…Ÿóôõö÷\"\"\"ˆ‚& ˆï!…µV…µóø!ˆù!.)‡" [nntp-server-buffer file nil number sequence count headers article subject message-id from xref lines date references mhspool-current-directory t nntp-large-newsgroup 0 prin1-to-string file-exists-p file-directory-p erase-buffer insert-file-contents search-forward "

" move narrow-to-region re-search-forward "\\(?
[ 	]+\\)+" replace-match " " "
" "
From: " buffer-substring end-of-line "(Unknown User)" "
Subject: " "(None)" "
Message-ID: " "
Date: " "
Lines: " string-to-int "
Xref: " "
References: " "
In-Reply-To: " vector numberp zerop % 20 message "MHSPOOL: %d%% of headers received." / * 100 "MHSPOOL: 100%% of headers received." nreverse] 43))

(defun mhspool-open-server (host &optional service) "\
Open news server on HOST.
If HOST is nil, use value of environment variable `NNTPSERVER'.
If optional argument SERVICE is non-nil, open by the service name." (byte-code "† ÇÈ!ÂÉÊ\"ƒ+ ËÌÍÎ!ÏÎ!OÌÐÂ\"\"!‰ˆÑ ‰‚. Â‰ˆÒ‰ˆ;…H ;…H Ó!…H ÔÑ \"ƒT Õ\"‰‚v ÔÑ \"ƒe Ö×\"‰‚v ?ƒp Ø‰‚v ÖÙ\"‰ˆ	*‡" [host status nil mhspool-spool-directory nntp-status-string service t getenv "NNTPSERVER" string-match ":\\(.+\\)$" file-name-as-directory expand-file-name match-beginning 1 match-end "~/" system-name "" file-directory-p string-equal mhspool-open-server-internal format "No such directory: %s.  Goodbye." "NNTP server is not specified." "MHSPOOL: cannot talk to %s."] 18))

(defun mhspool-close-server nil "\
Close news server." (byte-code "À ‡" [mhspool-close-server-internal] 2))

(fset (quote mhspool-request-quit) (symbol-function (quote mhspool-close-server)))

(defun mhspool-server-opened nil "\
Return server process status, T or NIL.
If the stream is opened, return T, otherwise return NIL." (byte-code "… Á!‡" [nntp-server-buffer get-buffer] 2))

(defun mhspool-status-message nil "\
Return server status response as string." (byte-code "‡" [nntp-status-string] 1))

(defun mhspool-request-article (id) "\
Select article by message ID (or number)." (byte-code "	Ã
!P;… Ä!… Å!?… ŠÆ!))‡" [file mhspool-current-directory id prin1-to-string file-exists-p file-directory-p mhspool-find-file] 5))

(defun mhspool-request-body (id) "\
Select article body by message ID (or number)." (byte-code "Ä!… Š	qˆebˆÅÆÂÃ#… Çe`\"ˆÃ)‡" [id nntp-server-buffer nil t mhspool-request-article search-forward "

" delete-region] 5))

(defun mhspool-request-head (id) "\
Select article head by message ID (or number)." (byte-code "Ä!… Š	qˆebˆÅÆÂÃ#… Ç`Sd\"ˆÃ)‡" [id nntp-server-buffer nil t mhspool-request-article search-forward "

" delete-region] 5))

(defun mhspool-request-stat (id) "\
Select article by message ID (or number)." (byte-code "ÀÁ!‡" [error "MHSPOOL: STAT is not implemented."] 2))

(defun mhspool-request-group (group) "\
Select news GROUP." (byte-code "ÂÃ!!ƒ Ã!‰‚% ÂÃÄÅÆ#!!…% ÃÄÅÆ#!‰‡" [group mhspool-current-directory file-directory-p mhspool-article-pathname mhspool-replace-chars-in-string 46 47] 11))

(defun mhspool-request-list nil "\
List valid newsgoups." (byte-code "ŠÁÁÊËÁ\"!ÌÍ!ÎQÏÐ!qˆÑ ˆqˆÑ ˆÒÓÔÁÈÁÕ	C\"&ˆebˆÖÁÈ#…š ×ØÙÚ!ÛÚ!\"ÜÝ#‰ˆÁ‰ˆÞÚ!ˆm?…` ßà!?… ßá!…w âØÙã!Ûã!\"!
B‰ˆÞÚ!ˆ‚W ˆ
…– äåæÒçK
\"ÒèK
\"$\"ˆ‚8 ˆé!ˆqˆê -)‡" [newsgroup nil articles directory mhspool-spool-directory folder-regexp buffer nntp-server-buffer t mhspool-list-directory-switches file-name-as-directory expand-file-name "^" regexp-quote "\\(.+\\):$" get-buffer-create " *GNUS file listing*" erase-buffer apply call-process "ls" append re-search-forward mhspool-replace-chars-in-string buffer-substring match-beginning 1 match-end 47 46 forward-line looking-at "^$" "^[0-9]+$" string-to-int 0 princ format "%s %d %d n
" max min kill-buffer buffer-size] 33))

(defun mhspool-request-last nil "\
Set current article pointer to the previous article
in the current news group." (byte-code "ÀÁ!‡" [error "MHSPOOL: LAST is not implemented."] 2))

(defun mhspool-request-next nil "\
Advance current article pointer." (byte-code "ÀÁ!‡" [error "MHSPOOL: NEXT is not implemented."] 2))

(defun mhspool-request-post nil "\
Post a new news in current buffer." (byte-code "Â‰ˆÁ‡" [nntp-status-string nil "MHSPOOL: what do you mean post?"] 2))

(defun mhspool-open-server-internal (host &optional service) "\
Open connection to news server on HOST by SERVICE (default is nntp)." (byte-code "ŠÇÈ \"?… ÉÊ\"ˆËÌ!‰ˆ	qˆÍp!ˆÎ ˆÏ ˆÃ‰ˆÅ‰ˆ‰ˆÐÑ!ˆÃ)‡" [host nntp-server-buffer case-fold-search t nntp-server-process nil nntp-server-name string-equal system-name error "MHSPOOL: cannot talk to %s." get-buffer-create " *nntpd*" buffer-flush-undo erase-buffer kill-all-local-variables run-hooks nntp-server-hook] 9))

(defun mhspool-close-server-internal nil "\
Close connection to news server." (byte-code "… Ã!ˆÁ‰ˆÁ‰‡" [nntp-server-buffer nil nntp-server-process kill-buffer] 3))

(defun mhspool-find-file (file) "\
Insert FILE in server buffer safely." (byte-code "qˆÁ ˆÂÃÄ�‡" [nntp-server-buffer erase-buffer nil (byte-code "Ã!ˆebˆÄÅÁÂ#… ÆÇ`d\"È\"… ÉÊ!ˆÂ‡" [file nil t insert-file-contents search-forward "

" string-equal buffer-substring "" delete-char 1] 6) ((file-error (byte-code "À‡" [nil] 1)))] 4))

(defun mhspool-article-pathname (group) "\
Make pathname for GROUP." (byte-code "Â!	ÃQ‡" [mhspool-spool-directory group file-name-as-directory "/"] 4))

(defun mhspool-replace-chars-in-string (string from to) "\
Replace characters in STRING from FROM to TO." (byte-code "ÅÆOGÅ
	W…% 
HU… 
Iˆ
T‰ˆ‚
 ˆ+‡" [string len idx from to 0 nil] 4))
