messages: patch-messages: Use mbox file.
authorRicardo Wurmus <rekado@elephly.net>
Tue, 7 Apr 2020 12:23:24 +0000 (14:23 +0200)
committerRicardo Wurmus <rekado@elephly.net>
Tue, 7 Apr 2020 12:23:24 +0000 (14:23 +0200)
mumi/messages.scm

index 58a3335d1ff719861a4244d659f05882834b8df8..4e8920f0d402a43c3dc86d0456b46f5837c0dead 100644 (file)
@@ -249,20 +249,15 @@ the difference by providing the current file size as an offset."
 (define-public (patch-messages bug-id)
   "Return list of messages relating to the bug BUG-ID.  Cache the
 result for a while."
-  (let ((key (list 'patch-messages bug-id)))
-    (or (cached? key)
-        (cache! key
-                (map (lambda (msg)
-                       (with-input-from-file (mu:path msg)
-                         (lambda ()
-                           (match (mbox->emails (current-input-port))
-                             ((email) (parse-email email))
-                             (_ #f)))))
-                     (sort
-                      (mu:message-list (format #f "bugid:~a" bug-id))
-                      (lambda (a b)
-                        (< (mu:date a)
-                           (mu:date b)))))))))
+  (define mbox (bug-id->mbox-file bug-id))
+  (if (file-exists? mbox)
+      (let ((key (list 'patch-messages bug-id)))
+        (or (cached? key)
+            (cache! key
+                    (call-with-input-file mbox
+                      (lambda (port)
+                        (map parse-email (mbox->emails port)))))))
+      '()))
 
 (define* (search-bugs query #:key (sets '()) (max 400))
   "Return a list of all bugs matching the given QUERY string.