diff options
-rw-r--r-- | mumi/debbugs.scm | 19 |
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))) |