* check-base64.el (toplevel): Remove (require 'wl).
[elisp/wanderlust.git] / elmo / elmo-pop3.el
index 92340b4..6dfb0d7 100644 (file)
@@ -1,4 +1,4 @@
-;;; elmo-pop3.el -- POP3 Interface for ELMO.
+;;; elmo-pop3.el --- POP3 Interface for ELMO.
 
 ;; Copyright (C) 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
 ;; Copyright (C) 1999,2000      Kenichi OKADA <okada@opaopa.org>
 ;;
 
 ;;; Commentary:
-;; 
+;;
 
 ;;; Code:
-;; 
+;;
 
 (require 'elmo-msgdb)
 (require 'elmo-net)
@@ -90,28 +90,29 @@ Debug information is inserted in the buffer \"*POP3 DEBUG*\"")
         (if elmo-pop3-stream-type-alist
             (append elmo-pop3-stream-type-alist
                     elmo-network-stream-type-alist)
-          elmo-network-stream-type-alist)))
+          elmo-network-stream-type-alist))
+       parse)
     (setq name (luna-call-next-method))
-    ;; Setup slots for elmo-net-folder
-    (when (string-match "^\\([^:/!]*\\)\\(/[^/:@!]+\\)?\\(:[^/:@!]+\\)?" name)
-      (elmo-net-folder-set-user-internal folder
-                                        (if (match-beginning 1)
-                                            (elmo-match-string 1 name)))
-      (if (eq (length (elmo-net-folder-user-internal folder)) 0)
-         (elmo-net-folder-set-user-internal folder
-                                            elmo-pop3-default-user))
-      (elmo-net-folder-set-auth-internal
-       folder
-       (if (match-beginning 2)
-          (intern (elmo-match-substring 2 name 1))
-        elmo-pop3-default-authenticate-type))
-      (elmo-pop3-folder-set-use-uidl-internal
-       folder
-       (if (match-beginning 3)
-          (string= (elmo-match-substring 3 name 1) "uidl")
-        elmo-pop3-default-use-uidl)))
+    ;; user
+    (setq parse (elmo-parse-token name "/:"))
+    (elmo-net-folder-set-user-internal folder
+                                      (if (eq (length (car parse)) 0)
+                                          elmo-pop3-default-user
+                                        (car parse)))
+    ;; auth
+    (setq parse (elmo-parse-prefixed-element ?/ (cdr parse) ":"))
+    (elmo-net-folder-set-auth-internal folder
+                                      (if (eq (length (car parse)) 0)
+                                          elmo-pop3-default-authenticate-type
+                                        (intern (downcase (car parse)))))
+    ;; uidl
+    (setq parse (elmo-parse-prefixed-element ?: (cdr parse)))
+    (elmo-pop3-folder-set-use-uidl-internal folder
+                                           (if (eq (length (car parse)) 0)
+                                               elmo-pop3-default-use-uidl
+                                             (string= (car parse) "uidl")))
     (unless (elmo-net-folder-server-internal folder)
-      (elmo-net-folder-set-server-internal folder 
+      (elmo-net-folder-set-server-internal folder
                                           elmo-pop3-default-server))
     (unless (elmo-net-folder-port-internal folder)
       (elmo-net-folder-set-port-internal folder
@@ -148,7 +149,7 @@ Debug information is inserted in the buffer \"*POP3 DEBUG*\"")
     (when (memq (process-status
                 (elmo-network-session-process-internal session))
                '(open run))
-      (let ((buffer (process-buffer 
+      (let ((buffer (process-buffer
                     (elmo-network-session-process-internal session))))
        (elmo-pop3-send-command (elmo-network-session-process-internal session)
                                "quit")
@@ -210,7 +211,7 @@ Debug information is inserted in the buffer \"*POP3 DEBUG*\"")
                (setq return-value nil))
            (setq elmo-pop3-read-point match-end)
            (if not-command
-               (setq response-continue nil))
+               (setq response-continue nil))
            (setq return-value
                  (if return-value
                      (concat return-value "\n" response-string)
@@ -225,7 +226,7 @@ Debug information is inserted in the buffer \"*POP3 DEBUG*\"")
     (insert output)
     (elmo-pop3-debug "RECEIVED: %s\n" output)
     (if (and elmo-pop3-total-size
-            (> elmo-pop3-total-size 
+            (> elmo-pop3-total-size
                (min elmo-display-retrieval-progress-threshold 100)))
        (elmo-display-progress
         'elmo-display-retrieval-progress
@@ -273,7 +274,7 @@ Debug information is inserted in the buffer \"*POP3 DEBUG*\"")
            (signal 'elmo-authenticate-error
                    '(elmo-pop3-auth-apop))))
     (signal 'elmo-open-error '(elmo-pop3-auth-apop))))
-    
+
 (luna-define-method elmo-network-initialize-session-buffer :after
   ((session elmo-pop3-session) buffer)
   (with-current-buffer buffer
@@ -310,7 +311,7 @@ Debug information is inserted in the buffer \"*POP3 DEBUG*\"")
 
 (luna-define-method elmo-network-authenticate-session ((session
                                                        elmo-pop3-session))
-  (with-current-buffer (process-buffer 
+  (with-current-buffer (process-buffer
                        (elmo-network-session-process-internal session))
     (let* ((process (elmo-network-session-process-internal session))
           (elmo-pop3-debug-inhibit-logging t)
@@ -374,7 +375,7 @@ Debug information is inserted in the buffer \"*POP3 DEBUG*\"")
                      (throw 'done nil)))
                (sasl-step-set-data
                 step
-                (elmo-base64-decode-string 
+                (elmo-base64-decode-string
                  (cadr (split-string response " "))))
                (setq step (sasl-next-step client step))
                (elmo-pop3-send-command
@@ -598,11 +599,11 @@ Debug information is inserted in the buffer \"*POP3 DEBUG*\"")
   (cond
    ((eq (following-char) ?+)
     (if (re-search-forward "\n\\.\r?\n" nil t)
-       t
+       t
       nil))
    ((looking-at "-")
     (if (search-forward "\n" nil t)
-       t
+       t
       nil))
    (t
     nil)))
@@ -852,7 +853,7 @@ Debug information is inserted in the buffer \"*POP3 DEBUG*\"")
        (unless elmo-inhibit-display-retrieval-progress
          (setq elmo-pop3-total-size size)
          (elmo-display-progress
-          'elmo-pop3-display-retrieval-progress
+          'elmo-display-retrieval-progress
           (format "Retrieving (0/%d bytes)..." elmo-pop3-total-size)
           0))
        (unwind-protect
@@ -888,8 +889,8 @@ Debug information is inserted in the buffer \"*POP3 DEBUG*\"")
              (error "Deleting message failed")))
        (error "Deleting message failed")))))
 
-(luna-define-method elmo-folder-delete-messages ((folder elmo-pop3-folder)
-                                                     msgs)
+(luna-define-method elmo-folder-delete-messages-plugged
+  ((folder elmo-pop3-folder) msgs)
   (let ((loc-alist (elmo-pop3-folder-location-alist-internal folder))
        (process (elmo-network-session-process-internal
                  (elmo-pop3-get-session folder))))