Revert "debbugs: Simplify mbox processing."
authorRicardo Wurmus <rekado@elephly.net>
Thu, 7 May 2020 12:50:53 +0000 (14:50 +0200)
committerRicardo Wurmus <rekado@elephly.net>
Thu, 7 May 2020 12:50:53 +0000 (14:50 +0200)
This reverts commit e0dc3c668ff23c2a5abd580ef9cee5d6414123cc.

mumi/debbugs.scm

index c08a7bdd770a5e301d052646bb0effe397b91639..7873c863bb59adfa8506790d1248fd45a85d1502 100644 (file)
@@ -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)))