Mercurial > emacs
changeset 104197:b0dfefd17d86
(rmail-add-mbox-headers, rmail-set-message-counters-counter): Search for
rmail-unix-mail-delimiter instead of just "From ". (Bug#4076)
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Sat, 08 Aug 2009 10:05:30 +0000 |
parents | 779845050ee8 |
children | bf054fdb0bf0 |
files | lisp/mail/rmail.el |
diffstat | 1 files changed, 30 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/mail/rmail.el Sat Aug 08 02:39:45 2009 +0000 +++ b/lisp/mail/rmail.el Sat Aug 08 10:05:30 2009 +0000 @@ -2072,27 +2072,31 @@ (start (point)) (value "------U-") (case-fold-search nil) - limit) + (delim (concat "\n\n" rmail-unix-mail-delimiter)) + limit stop) ;; Detect an empty inbox file. (unless (= start (point-max)) ;; Scan the new messages to establish a count and to ensure that ;; an attribute header is present. - (while (looking-at "From ") - ;; Determine if a new attribute header needs to be added to - ;; the message. - (if (search-forward "\n\n" nil t) - (progn - (setq count (1+ count)) - (narrow-to-region start (point)) - (unless (mail-fetch-field rmail-attribute-header) - (backward-char 1) - (insert rmail-attribute-header ": " value "\n")) - (widen)) - (rmail-error-bad-format)) - ;; Move to the next message. - (if (search-forward "\n\nFrom " nil 'move) - (forward-char -5)) - (setq start (point)))) + (if (looking-at rmail-unix-mail-delimiter) + (while (not stop) + ;; Determine if a new attribute header needs to be + ;; added to the message. + (if (search-forward "\n\n" nil t) + (progn + (setq count (1+ count)) + (narrow-to-region start (point)) + (unless (mail-fetch-field rmail-attribute-header) + (backward-char 1) + (insert rmail-attribute-header ": " value "\n")) + (widen)) + (rmail-error-bad-format)) + ;; Move to the next message. + (if (not (re-search-forward delim nil 'move)) + (setq stop t) + (goto-char (match-beginning 0)) + (forward-char 2)) + (setq start (point))))) count)))) (defun rmail-get-header-1 (name) @@ -2480,18 +2484,19 @@ (let ((start (point))) (while (search-backward "\n\nFrom " stop t) (forward-char 2) - (rmail-collect-deleted start) - (setq messages-head (cons (point-marker) messages-head) - total-messages (1+ total-messages) - start (point)) - ;; Show progress after every 20 messages or so. - (if (zerop (% total-messages 20)) - (message "Counting messages...%d" total-messages))) + (when (looking-at rmail-unix-mail-delimiter) + (rmail-collect-deleted start) + (setq messages-head (cons (point-marker) messages-head) + total-messages (1+ total-messages) + start (point)) + ;; Show progress after every 20 messages or so. + (if (zerop (% total-messages 20)) + (message "Counting messages...%d" total-messages)))) ;; Handle the first message, maybe. (if stop (goto-char stop) (goto-char (point-min))) - (unless (not (looking-at "From ")) + (unless (not (looking-at rmail-unix-mail-delimiter)) (rmail-collect-deleted start) (setq messages-head (cons (point-marker) messages-head) total-messages (1+ total-messages)))))