;;; elmo-pipe.el -- PIPE Interface for ELMO.
-;; Copyright 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
+;; Copyright (C) 1998,1999,2000 Yuuichi Teranishi <teranisi@gohome.org>
;; Author: Yuuichi Teranishi <teranisi@gohome.org>
;; Keywords: mail, net news
(require 'elmo-msgdb)
-(defsubst elmo-pipe-spec-src (spec)
- (nth 1 spec))
-
-(defsubst elmo-pipe-spec-dst (spec)
- (nth 2 spec))
-
(defalias 'elmo-pipe-msgdb-create 'elmo-pipe-msgdb-create-as-numlist)
(defun elmo-pipe-msgdb-create-as-numlist (spec numlist new-mark already-mark
- seen-mark important-mark
+ seen-mark important-mark
seen-list)
(elmo-msgdb-create-as-numlist (elmo-pipe-spec-dst spec)
numlist new-mark already-mark
(defun elmo-pipe-append-msg (spec string &optional msg no-see)
(elmo-append-msg (elmo-pipe-spec-dst spec) string))
-(defun elmo-pipe-read-msg (spec number outbuf)
+(defun elmo-pipe-read-msg (spec number outbuf &optional msgdb unread)
(elmo-call-func (elmo-pipe-spec-dst spec)
- "read-msg"
- number outbuf))
+ "read-msg"
+ number outbuf msgdb unread))
(defun elmo-pipe-delete-msgs (spec msgs)
(elmo-delete-msgs (elmo-pipe-spec-dst spec) msgs))
(defvar elmo-pipe-drained-hook nil "A hook called when the pipe is flushed.")
(defun elmo-pipe-drain (src dst)
- (let ((msgdb (elmo-msgdb-load src))
- elmo-nntp-use-cache
- elmo-imap4-use-cache
- elmo-pop3-use-cache) ; Inhibit caching while moving messages.
+ "Move all messages of SRC to DST."
+ (let ((elmo-inhibit-read-cache t); Inhibit caching while moving messages.
+ elmo-pop3-use-uidl) ; No need to use UIDL
(message "Checking %s..." src)
- (elmo-move-msgs src (elmo-list-folder src) dst msgdb)
- (elmo-msgdb-save src msgdb)
+ (let ((srclist (elmo-list-folder src))
+ (msgdb (elmo-msgdb-load src)))
+ (elmo-move-msgs src srclist dst msgdb)
+ ;; Don't save msgdb here.
+ ;; Because summary view of original folder is not updated yet.
+ ;; (elmo-msgdb-save src msgdb)
+ (elmo-commit src))
(run-hooks 'elmo-pipe-drained-hook)))
-(defun elmo-pipe-list-folder (spec)
+(defun elmo-pipe-list-folder (spec &optional nohide)
(elmo-pipe-drain (elmo-pipe-spec-src spec)
(elmo-pipe-spec-dst spec))
- (elmo-list-folder (elmo-pipe-spec-dst spec)))
-
-(defun elmo-pipe-list-folder-unread (spec mark-alist unread-marks)
- (elmo-list-folder-unread (elmo-pipe-spec-dst spec) mark-alist unread-marks))
+ (let ((killed (and elmo-use-killed-list
+ (elmo-msgdb-killed-list-load
+ (elmo-msgdb-expand-path spec))))
+ numbers)
+ (setq numbers (elmo-list-folder (elmo-pipe-spec-dst spec)))
+ (elmo-living-messages numbers killed)))
+
+(defun elmo-pipe-list-folder-unread (spec number-alist mark-alist unread-marks)
+ (elmo-list-folder-unread (elmo-pipe-spec-dst spec)
+ number-alist mark-alist unread-marks))
-(defun elmo-pipe-list-folder-important (spec overview)
- (elmo-list-folder-important (elmo-pipe-spec-dst spec) overview))
+(defun elmo-pipe-list-folder-important (spec number-alist)
+ (elmo-list-folder-important (elmo-pipe-spec-dst spec) number-alist))
(defun elmo-pipe-max-of-folder (spec)
- (let ((src-length (length (elmo-list-folder (elmo-pipe-spec-src spec))))
- (dst-list (elmo-list-folder (elmo-pipe-spec-dst spec))))
+ (let* (elmo-pop3-use-uidl
+ (src-length (length (elmo-list-folder (elmo-pipe-spec-src spec))))
+ (dst-list (elmo-list-folder (elmo-pipe-spec-dst spec))))
(cons (+ src-length (elmo-max-of-list dst-list))
(+ src-length (length dst-list)))))
(elmo-get-msg-filename (elmo-pipe-spec-dst spec) number loc-alist))
(defun elmo-pipe-sync-number-alist (spec number-alist)
- (elmo-call-func (elmo-pipe-spec-src spec)
+ (elmo-call-func (elmo-pipe-spec-src spec)
"sync-number-alist" number-alist)) ; ??
(defun elmo-pipe-server-diff (spec)
nil)
-(provide 'elmo-pipe)
+(defalias 'elmo-pipe-folder-diff 'elmo-generic-folder-diff)
+
+(require 'product)
+(product-provide (provide 'elmo-pipe) (require 'elmo-version))
;;; elmo-pipe.el ends here