*** empty log message ***
[gnus] / lisp / nneething.el
index 540263b..97f5d2f 100644 (file)
@@ -1,7 +1,7 @@
-;;; nneething.el --- random file access for Gnus
-;; Copyright (C) 1995,96,97 Free Software Foundation, Inc.
+;;; nneething.el --- arbitrary file access for Gnus
+;; Copyright (C) 1995,96,97,98 Free Software Foundation, Inc.
 
-;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;;     Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
 ;; Keywords: news, mail
 
 
 ;;; Code:
 
+(eval-when-compile (require 'cl))
+
 (require 'nnheader)
 (require 'nnmail)
 (require 'nnoo)
 (require 'gnus-util)
-(require 'cl)
 
 (nnoo-declare nneething)
 
@@ -55,7 +56,6 @@ If this variable is nil, no files will be excluded.")
   "Current news group directory.")
 
 (defvoo nneething-status-string "")
-(defvoo nneething-group-alist nil)
 
 (defvoo nneething-message-id-number 0)
 (defvoo nneething-work-buffer " *nneething work*")
@@ -64,9 +64,12 @@ If this variable is nil, no files will be excluded.")
 (defvoo nneething-map nil)
 (defvoo nneething-read-only nil)
 (defvoo nneething-active nil)
+(defvoo nneething-directory nil)
 
 \f
 
+(autoload 'gnus-encode-coding-string "gnus-ems")
+
 ;;; Interface functions.
 
 (nnoo-define-basics nneething)
@@ -100,11 +103,11 @@ If this variable is nil, no files will be excluded.")
 
          (and large
               (zerop (% count 20))
-              (message "nneething: Receiving headers... %d%%"
+              (nnheader-message 5 "nneething: Receiving headers... %d%%"
                        (/ (* count 100) number))))
 
        (when large
-         (message "nneething: Receiving headers...done"))
+         (nnheader-message 5 "nneething: Receiving headers...done"))
 
        (nnheader-fold-continuation-lines)
        'headers))))
@@ -151,28 +154,27 @@ If this variable is nil, no files will be excluded.")
   (setq nneething-current-directory nil)
   t)
 
+(deffoo nneething-open-server (server &optional defs)
+  (nnheader-init-server-buffer)
+  (if (nneething-server-opened server)
+      t
+    (unless (assq 'nneething-directory defs)
+      (setq defs (append defs (list (list 'nneething-directory server)))))
+    (nnoo-change-server 'nneething server defs)))
+
 \f
 ;;; Internal functions.
 
-(defun nneething-possibly-change-directory (group &optional dir)
-  (when group
-    (if (and nneething-group
-            (string= group nneething-group))
-       t
-      (let (entry)
-       (if (setq entry (assoc group nneething-group-alist))
-           (progn
-             (setq nneething-group group)
-             (setq nneething-directory (nth 1 entry))
-             (setq nneething-map (nth 2 entry))
-             (setq nneething-active (nth 3 entry)))
-         (setq nneething-group group)
-         (setq nneething-directory dir)
-         (setq nneething-map nil)
-         (setq nneething-active (cons 1 0))
-         (nneething-create-mapping)
-         (push (list group dir nneething-map nneething-active)
-               nneething-group-alist))))))
+(defun nneething-possibly-change-directory (group &optional server)
+  (when (and server
+            (not (nneething-server-opened server)))
+    (nneething-open-server server))
+  (when (and group
+            (not (equal nneething-group group)))
+    (setq nneething-group group)
+    (setq nneething-map nil)
+    (setq nneething-active (cons 1 0))
+    (nneething-create-mapping)))
 
 (defun nneething-map-file ()
   ;; We make sure that the .nneething directory exists.