- (setq extras elmo-msgdb-extra-fields
- extra nil)
- (while extras
- (setq ext (downcase (car extras)))
- (when (setq field-index (cdr (assoc ext elmo-nntp-overview-index)))
- (when (> (length ov-entity) field-index)
- (setq field (aref ov-entity field-index))
- (when (eq field-index 8) ;; xref
- (setq field (elmo-msgdb-remove-field-string field)))
- (setq extra (cons (cons ext field) extra))))
- (setq extras (cdr extras)))
- (setq overview
- (elmo-msgdb-append-element
- overview
- (cons (aref ov-entity 4)
- (vector num
- (elmo-msgdb-get-last-message-id
- (aref ov-entity 5))
- ;; from
- (elmo-mime-string (elmo-delete-char
- ?\"
- (or
- (aref ov-entity 2)
- elmo-no-from) 'uni))
- ;; subject
- (elmo-mime-string (or (aref ov-entity 1)
- elmo-no-subject))
- (aref ov-entity 3) ;date
- nil ; to
- nil ; cc
- (string-to-int
- (aref ov-entity 6)) ; size
- extra ; extra-field-list
- ))))
- (setq number-alist
- (elmo-msgdb-number-add number-alist num
- (aref ov-entity 4)))
- (setq message-id (aref ov-entity 4))
- (setq seen (member message-id seen-list))
- (if (setq gmark (or (elmo-msgdb-global-mark-get message-id)
- (if (elmo-file-cache-status
- (elmo-file-cache-get message-id))
- (if seen
- nil
- already-mark)
- (if seen
- (if elmo-nntp-use-cache
- seen-mark)
- new-mark))))
- (setq mark-alist
- (elmo-msgdb-mark-append mark-alist
- num gmark))))
+ (setq entity (elmo-msgdb-make-message-entity
+ (elmo-msgdb-message-entity-handler new-msgdb)
+ :message-id (aref ov-entity 4)
+ :number num
+ :references (elmo-msgdb-get-last-message-id
+ (aref ov-entity 5))
+ :from (elmo-with-enable-multibyte
+ (eword-decode-string
+ (elmo-delete-char ?\"
+ (or (aref ov-entity 2)
+ elmo-no-from))))
+ :subject (or (elmo-with-enable-multibyte
+ (eword-decode-string
+ (aref ov-entity 1)))
+ elmo-no-subject)
+ :date (aref ov-entity 3)
+ :size (string-to-number (aref ov-entity 6))))
+ (dolist (extra elmo-msgdb-extra-fields)
+ (setq extra (downcase extra))
+ (when (and (setq field-index
+ (cdr (assoc extra elmo-nntp-overview-index)))
+ (> (length ov-entity) field-index))
+ (setq field (aref ov-entity field-index))
+ (when (eq field-index 8) ;; xref
+ (setq field (elmo-msgdb-remove-field-string field)))
+ (elmo-message-entity-set-field entity (intern extra) field)))
+ (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 num message-id)
+ (elmo-msgdb-append-entity new-msgdb entity flags))