+ (forward-line 0)
+ (setq found t)))
+ (unless found
+ (goto-char (point-min))
+ (when (search-forward (concat "X-Nnshimbun-Original-Id: " id) nil t)
+ (forward-line 0)
+ (setq found t)))
+ (if found
+ (if nov
+ (nnheader-parse-nov)
+ ;; We return the article number.
+ (ignore-errors (read (current-buffer))))))))
+
+(defun nnshimbun-nov-fix-header (group header args)
+ (save-excursion
+ (set-buffer (nnshimbun-open-nov group))
+ (when (nnheader-find-nov-line (mail-header-number header))
+ (dolist (arg args)
+ (if (eq (car arg) 'id)
+ (let ((extra (mail-header-extra header)) x)
+ (when (setq x (assq 'X-Nnshimbun-Original-Id extra))
+ (setq extra (delq x extra)))
+ (mail-header-set-extra
+ header
+ (cons (cons 'X-Nnshimbun-Original-Id (cdr arg)) extra)))
+ (let ((func (intern (concat "mail-header-set-" (symbol-name (car arg))))))
+ (if (cdr arg) (eval (list func header (cdr arg)))))))
+ (let ((xref (mail-header-xref header)))
+ (when (string-match "^Xref: " xref)
+ (mail-header-set-xref header (substring xref 6))))
+ (delete-region (point) (progn (forward-line 1) (point)))
+ (nnheader-insert-nov header))))