-;;; 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)
(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
(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")
(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)
(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
(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
(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)
(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
(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)))
(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
(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))))