summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mumi/debbugs.scm19
1 files changed, 13 insertions, 6 deletions
diff --git a/mumi/debbugs.scm b/mumi/debbugs.scm
index c08a7bd..7873c86 100644
--- a/mumi/debbugs.scm
+++ b/mumi/debbugs.scm
@@ -76,16 +76,23 @@ ends with ^C.
(#\etx
(let ((mails*
(if (member type keep)
- (let* ((contents (string-join (drop (reverse lines) 1) "\n"))
+ ;; TODO: This is very ugly. The first few
+ ;; lines of the raw messages stored in Debbugs
+ ;; logs seem to confuse the email parser, so we
+ ;; try to strip them off.
+ (let* ((content (string-join
+ (drop-while (lambda (line)
+ (or (string-prefix? "From " line)
+ (string-prefix? "Received" line)
+ (string-prefix? "\t" line)
+ (string-prefix? " " line)))
+ (reverse lines)) "\n"))
(mail (catch #t
(lambda ()
- (parse-email
- (and=> (call-with-input-string contents mbox->emails)
- first)))
+ (parse-email content))
(lambda args
(format (current-error-port)
- "failed to process email~% ~a~%"
- args)
+ "failed to process email~%")
#f))))
(let ((id (and mail (assoc-ref (email-headers mail) 'message-id))))
(if (and id (not (hash-ref msgids id)))