-(defun elmo-shimbun-msgdb-to-headers (folder expire-days)
- (let (headers)
- (dolist (ov (elmo-msgdb-get-overview (elmo-folder-msgdb folder)))
- (when (and (elmo-msgdb-overview-entity-get-extra-field ov "xref")
- (if expire-days
- (< (elmo-shimbun-lapse-seconds
- (elmo-shimbun-parse-time-string
- (elmo-msgdb-overview-entity-get-date ov)))
- (* expire-days 86400 ; seconds per day
- ))
- t))
- (setq headers
- (cons (shimbun-make-header
- (elmo-msgdb-overview-entity-get-number ov)
- (shimbun-mime-encode-string
- (elmo-msgdb-overview-entity-get-subject ov))
- (shimbun-mime-encode-string
- (elmo-msgdb-overview-entity-get-from ov))
- (elmo-msgdb-overview-entity-get-date ov)
- (elmo-msgdb-overview-entity-get-id ov)
- (elmo-msgdb-overview-entity-get-references ov)
- 0
- 0
- (elmo-msgdb-overview-entity-get-extra-field ov "xref"))
- headers))))
- (nreverse headers)))
-
-(defun elmo-shimbun-folder-setup (folder)
- ;; Resume headers from existing msgdb.
- (elmo-shimbun-folder-set-headers-internal
- folder
- (elmo-shimbun-msgdb-to-headers folder nil))
- (elmo-shimbun-folder-set-header-hash-internal
- folder
- (elmo-make-hash
- (length (elmo-shimbun-folder-headers-internal folder))))
- (dolist (header (elmo-shimbun-folder-headers-internal folder))
- (elmo-set-hash-val
- (shimbun-header-id header) header
- (elmo-shimbun-folder-header-hash-internal folder))))
+(defun elmo-shimbun-entity-to-header (entity)
+ (let (message-id shimbun-id)
+ (if (setq message-id (elmo-msgdb-overview-entity-get-extra-field
+ entity "x-original-id"))
+ (setq shimbun-id (elmo-msgdb-overview-entity-get-id entity))
+ (setq message-id (elmo-msgdb-overview-entity-get-id entity)
+ shimbun-id nil))
+ (elmo-set-work-buf
+ (set-buffer-multibyte t)
+ (shimbun-make-header
+ (elmo-msgdb-overview-entity-get-number entity)
+ (shimbun-mime-encode-string
+ (decode-mime-charset-string
+ (elmo-msgdb-overview-entity-get-subject-no-decode entity)
+ elmo-mime-charset))
+ (shimbun-mime-encode-string
+ (decode-mime-charset-string
+ (elmo-msgdb-overview-entity-get-from-no-decode entity)
+ elmo-mime-charset))
+ (elmo-msgdb-overview-entity-get-date entity)
+ message-id
+ (elmo-msgdb-overview-entity-get-references entity)
+ 0
+ 0
+ (elmo-msgdb-overview-entity-get-extra-field entity "xref")
+ (and shimbun-id
+ (list (cons "x-shimbun-id" shimbun-id)))))))
+
+(defsubst elmo-shimbun-folder-header-hash-setup (folder headers)
+ (let ((hash (or (elmo-shimbun-folder-header-hash-internal folder)
+ (elmo-make-hash (length headers)))))
+ (dolist (header headers)
+ (elmo-set-hash-val (shimbun-header-id header) header hash))
+ (elmo-shimbun-folder-set-header-hash-internal folder hash)))