From 0f25a27764060aa63ab8280e1841b8600e8ca011 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 8 Aug 2009 10:05:53 +0000 Subject: [PATCH] (rmail-add-mbox-headers, rmail-set-message-counters-counter): Search for rmail-unix-mail-delimiter instead of just "From ". (Bug#4076) --- lisp/ChangeLog | 6 +++++ lisp/mail/rmail.el | 55 +++++++++++++++++++++++++--------------------- 2 files changed, 36 insertions(+), 25 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ba824e86e87..0f8372f70a3 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2009-08-08 Eli Zaretskii + + * mail/rmail.el (rmail-add-mbox-headers) + (rmail-set-message-counters-counter): Search for + rmail-unix-mail-delimiter instead of just "From ". (Bug#4076) + 2009-08-08 Glenn Morris * Makefile.in (ELCFILES): Update. diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index f6e7af38346..f10b47bcd4c 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -2072,27 +2072,31 @@ new messages. Return the number of new messages." (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 @@ the message. Point is at the beginning of the message." (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))))) -- 2.39.2