* wl-acap.el (wl-acap-init): If initialization via ACAP is interrupted,
authorteranisi <teranisi>
Thu, 29 Nov 2001 16:23:41 +0000 (16:23 +0000)
committerteranisi <teranisi>
Thu, 29 Nov 2001 16:23:41 +0000 (16:23 +0000)
resume msgdb directory.

* acap.el (acap-logging-out): New buffer local variable.
(acap-close): Set it.
(acap-wait-for-response): If acap-logging-out is non-nil, don't cause an error.

elmo/ChangeLog
elmo/acap.el
wl/ChangeLog
wl/wl-acap.el

index d26a83d..ff16909 100644 (file)
@@ -1,3 +1,10 @@
+2001-11-30  Yuuichi Teranishi  <teranisi@gohome.org>
+
+       * acap.el (acap-logging-out): New buffer local variable.
+       (acap-close): Set it.
+       (acap-wait-for-response): If acap-logging-out is non-nil, don't cause
+       an error.
+
 2001-11-28  Yuuichi Teranishi  <teranisi@gohome.org>
 
        * acap.el (acap-response-bye-p): New function.
index 780ea6c..4948740 100644 (file)
@@ -122,6 +122,9 @@ Valid states are `closed', `initial', `auth'.")
 (defvar acap-response nil
   "ACAP Response.")
 
+(defvar acap-logging-out nil
+  "Non-nil when ACAP is logging out.")
+
 (make-variable-buffer-local 'acap-state)
 (make-variable-buffer-local 'acap-auth)
 (make-variable-buffer-local 'acap-capability)
@@ -131,6 +134,7 @@ Valid states are `closed', `initial', `auth'.")
 (make-variable-buffer-local 'acap-server)
 (make-variable-buffer-local 'acap-port)
 (make-variable-buffer-local 'acap-response)
+(make-variable-buffer-local 'acap-logging-out)
 
 (defvar acap-network-stream-alist
   '((default . open-network-stream-as-binary)))
@@ -282,6 +286,7 @@ Valid states are `closed', `initial', `auth'.")
 
 (defun acap-close (process)
   (with-current-buffer (process-buffer process)
+    (setq acap-logging-out t)
     (unless (acap-response-ok-p (acap-send-command-wait process "LOGOUT"))
       (message "Server %s didn't let me log out" acap-server))
     (when (memq (process-status process) '(open run))
@@ -543,8 +548,10 @@ ENTRIES is a store-entry list."
     (while (and (not (acap-response-cont-p acap-response))
                (< acap-reached-tag tag))
       (when (acap-response-bye-p acap-response)
-       (error (prog1 (acap-response-bye-message acap-response)
-                (setq acap-response nil))))
+       (if acap-logging-out
+           (setq acap-response nil)
+         (error (prog1 (acap-response-bye-message acap-response)
+                  (setq acap-response nil)))))
       (or (and (not (memq (process-status process) '(open run)))
               (sit-for 1))
          (let ((len (/ (point-max) 1024))
index b570a55..a1f3830 100644 (file)
@@ -1,3 +1,8 @@
+2001-11-30  Yuuichi Teranishi  <teranisi@gohome.org>
+
+       * wl-acap.el (wl-acap-init): If initialization via ACAP is interrupted,
+       resume msgdb directory.
+
 2001-11-28  Yuuichi Teranishi  <teranisi@gohome.org>
 
        * wl.el (wl-exit): Call `wl-acap-exit'.
index a514094..62ab754 100644 (file)
@@ -104,6 +104,8 @@ If nil, default acap port is used."
   
 (defun wl-acap-init ()
   "A candidate for `wl-folder-init-function'."
+  (setq wl-acap-original-msgdb-dir nil)
+  (condition-case nil ; catch error and quit.
   (let ((service (wl-acap-find-acap-service))
        proc entries settings folder-top type)
     (unless (car service) (error "No ACAP service found"))
@@ -171,7 +173,12 @@ If nil, default acap port is used."
     (setq elmo-msgdb-dir (expand-file-name
                          (concat "acap/" (car service) "/" wl-acap-user)
                          elmo-msgdb-dir))
-    (acap-close proc)))
+    (acap-close proc))
+  (error (when wl-acap-original-msgdb-dir
+          (setq elmo-msgdb-dir wl-acap-original-msgdb-dir)))
+  (quit (when wl-acap-original-msgdb-dir
+         (setq elmo-msgdb-dir wl-acap-original-msgdb-dir)))))
+  
 
 (defun wl-acap-create-folder-entity (string)
   (with-temp-buffer