summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mumi/debbugs.scm19
1 files changed, 6 insertions, 13 deletions
diff --git a/mumi/debbugs.scm b/mumi/debbugs.scm
index 7873c86..c08a7bd 100644
--- a/mumi/debbugs.scm
+++ b/mumi/debbugs.scm
@@ -76,23 +76,16 @@ ends with ^C.
(#\etx
(let ((mails*
(if (member type keep)
- ;; 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"))
+ (let* ((contents (string-join (drop (reverse lines) 1) "\n"))
(mail (catch #t
(lambda ()
- (parse-email content))
+ (parse-email
+ (and=> (call-with-input-string contents mbox->emails)
+ first)))
(lambda args
(format (current-error-port)
- "failed to process email~%")
+ "failed to process email~% ~a~%"
+ args)
#f))))
(let ((id (and mail (assoc-ref (email-headers mail) 'message-id))))
(if (and id (not (hash-ref msgids id)))