Revision: miles@gnu.org--gnu-2005/gnus--devo--0--patch-47
[gnus] / lisp / nnmbox.el
index d3030ac..a1957fa 100644 (file)
@@ -1,8 +1,10 @@
 ;;; nnmbox.el --- mail mbox access for Gnus
-;; Copyright (C) 1995,96 Free Software Foundation, Inc.
 
-;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
-;;     Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+;;     Free Software Foundation, Inc.
+
+;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
+;;     Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
 ;; Keywords: news, mail
 
 ;; This file is part of GNU Emacs.
 ;; the Free Software Foundation; either version 2, or (at your option)
 ;; any later version.
 
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;;; Commentary:
 
 ;; For an overview of what the interface functions do, please see the
-;; Gnus sources.  
+;; Gnus sources.
 
 ;;; Code:
 
 (require 'nnheader)
-(require 'rmail)
+(require 'message)
 (require 'nnmail)
+(require 'nnoo)
+(require 'gnus-range)
 (eval-when-compile (require 'cl))
 
-(defvar nnmbox-mbox-file (expand-file-name "~/mbox")
+(nnoo-declare nnmbox)
+
+(defvoo nnmbox-mbox-file (expand-file-name "~/mbox")
   "The name of the mail box file in the user's home directory.")
 
-(defvar nnmbox-active-file (expand-file-name "~/.mbox-active")
+(defvoo nnmbox-active-file (expand-file-name "~/.mbox-active")
   "The name of the active file for the mail box.")
 
-(defvar nnmbox-get-new-mail t
+(defvoo nnmbox-get-new-mail t
   "If non-nil, nnmbox will check the incoming mail file and split the mail.")
 
-(defvar nnmbox-prepare-save-mail-hook nil
+(defvoo nnmbox-prepare-save-mail-hook nil
   "Hook run narrowed to an article before saving.")
 
 \f
 (defconst nnmbox-version "nnmbox 1.0"
   "nnmbox version.")
 
-(defvar nnmbox-current-group nil
+(defvoo nnmbox-current-group nil
   "Current nnmbox news group directory.")
 
-(defconst nnmbox-mbox-buffer nil)
+(defvar nnmbox-mbox-buffer nil)
 
-(defvar nnmbox-status-string "")
+(defvoo nnmbox-status-string "")
 
-(defvar nnmbox-group-alist nil)
-(defvar nnmbox-active-timestamp nil)
-
-\f
+(defvoo nnmbox-group-alist nil)
+(defvoo nnmbox-active-timestamp nil)
 
-(defvar nnmbox-current-server nil)
-(defvar nnmbox-server-alist nil)
-(defvar nnmbox-server-variables 
-  `((nnmbox-mbox-file ,nnmbox-mbox-file)
-    (nnmbox-active-file ,nnmbox-active-file)
-    (nnmbox-get-new-mail ,nnmbox-get-new-mail)
-    (nnmbox-current-group nil)
-    (nnmbox-status-string "")
-    (nnmbox-group-alist nil)))
+(defvoo nnmbox-file-coding-system mm-binary-coding-system)
+(defvoo nnmbox-file-coding-system-for-write nil)
+(defvoo nnmbox-active-file-coding-system mm-binary-coding-system)
+(defvoo nnmbox-active-file-coding-system-for-write nil)
 
+(defvar nnmbox-group-building-active-articles nil)
+(defvar nnmbox-group-active-articles nil)
 \f
 
 ;;; Interface functions
 
-(defun nnmbox-retrieve-headers (sequence &optional newsgroup server fetch-old)
+(nnoo-define-basics nnmbox)
+
+(deffoo nnmbox-retrieve-headers (sequence &optional newsgroup server fetch-old)
   (save-excursion
     (set-buffer nntp-server-buffer)
     (erase-buffer)
     (let ((number (length sequence))
          (count 0)
-         article art-string start stop)
-      (nnmbox-possibly-change-newsgroup newsgroup)
+         article start stop)
+      (nnmbox-possibly-change-newsgroup newsgroup server)
       (while sequence
        (setq article (car sequence))
-       (setq art-string (nnmbox-article-string article))
        (set-buffer nnmbox-mbox-buffer)
-       (if (or (search-forward art-string nil t)
-               (progn (goto-char (point-min))
-                      (search-forward art-string nil t)))
-           (progn
-             (setq start 
-                   (save-excursion
-                     (re-search-backward 
-                      (concat "^" rmail-unix-mail-delimiter) nil t)
-                     (point)))
-             (search-forward