- numbers seen-list)
- (let ((i 0)
- (len (length numbers))
- overview number-alist mark-alist entity message-id
- num mark)
- (message "Creating msgdb...")
- (while numbers
- (setq entity
- (elmo-msgdb-create-overview-entity-from-file
- (car numbers) (elmo-message-file-name folder (car numbers))))
- (if (null entity)
- ()
- (setq num (elmo-msgdb-overview-entity-get-number entity))
- (setq overview
- (elmo-msgdb-append-element
- overview entity))
- (setq message-id (elmo-msgdb-overview-entity-get-id entity))
- (setq number-alist
- (elmo-msgdb-number-add number-alist
- num
- message-id))
- (if (setq mark (or (elmo-msgdb-global-mark-get message-id)
- (if (member message-id seen-list) nil
- elmo-msgdb-new-mark)))
- (setq mark-alist
- (elmo-msgdb-mark-append
- mark-alist
- num mark)))
- (when (> len elmo-display-progress-threshold)
- (setq i (1+ i))
- (elmo-display-progress
- 'elmo-cache-folder-msgdb-create "Creating msgdb..."
- (/ (* i 100) len))))
- (setq numbers (cdr numbers)))
- (message "Creating msgdb...done")
- (list overview number-alist mark-alist)))
+ numbers flag-table)
+ (let ((new-msgdb (elmo-make-msgdb))
+ entity message-id flags)
+ (elmo-with-progress-display (elmo-folder-msgdb-create (length numbers))
+ "Creating msgdb"
+ (dolist (number numbers)
+ (setq entity
+ (elmo-msgdb-create-message-entity-from-file
+ (elmo-msgdb-message-entity-handler new-msgdb)
+ number
+ (elmo-message-file-name folder number)))
+ (when entity
+ (setq message-id (elmo-message-entity-field entity 'message-id)
+ flags (elmo-flag-table-get flag-table message-id))
+ (elmo-global-flags-set flags folder number message-id)
+ (elmo-msgdb-append-entity new-msgdb entity flags))
+ (elmo-progress-notify 'elmo-folder-msgdb-create)))
+ new-msgdb))