aboutsummaryrefslogtreecommitdiffstats
path: root/worker
diff options
context:
space:
mode:
Diffstat (limited to 'worker')
-rw-r--r--worker/lib/parse.go10
-rw-r--r--worker/maildir/search.go8
2 files changed, 11 insertions, 7 deletions
diff --git a/worker/lib/parse.go b/worker/lib/parse.go
index ded7a83b..a14a6d33 100644
--- a/worker/lib/parse.go
+++ b/worker/lib/parse.go
@@ -21,8 +21,9 @@ var dateRe = regexp.MustCompile(`(((Mon|Tue|Wed|Thu|Fri|Sat|Sun))[,]?\s[0-9]{1,2
`([0-9]{4})\s([0-9]{2}):([0-9]{2})(:([0-9]{2}))?\s([\+|\-][0-9]{4})\s?`)
func FetchEntityPartReader(e *message.Entity, index []int) (io.Reader, error) {
- if len(index) < 1 {
- return nil, fmt.Errorf("no part to read")
+ if len(index) == 0 {
+ // non multipart, simply return everything
+ return bufReader(e)
}
if mpr := e.MultipartReader(); mpr != nil {
idx := 0
@@ -41,10 +42,7 @@ func FetchEntityPartReader(e *message.Entity, index []int) (io.Reader, error) {
}
}
}
- if index[0] != 1 {
- return nil, fmt.Errorf("cannont return non-first part of non-multipart")
- }
- return bufReader(e)
+ return nil, fmt.Errorf("FetchEntityPartReader: unexpected code reached")
}
//TODO: the UI doesn't seem to like readers which aren't buffers
diff --git a/worker/maildir/search.go b/worker/maildir/search.go
index 005f6faa..ad3a45f3 100644
--- a/worker/maildir/search.go
+++ b/worker/maildir/search.go
@@ -10,6 +10,7 @@ import (
"git.sr.ht/~sircmpwn/getopt"
+ "git.sr.ht/~sircmpwn/aerc/lib"
"git.sr.ht/~sircmpwn/aerc/models"
)
@@ -138,7 +139,12 @@ func (w *Worker) searchKey(key uint32, criteria *searchCriteria,
}
if parts&BODY > 0 {
// TODO: select which part to search, maybe look for text/plain
- reader, err := message.NewBodyPartReader([]int{1})
+ mi, err := message.MessageInfo()
+ if err != nil {
+ return false, err
+ }
+ path := lib.FindFirstNonMultipart(mi.BodyStructure, nil)
+ reader, err := message.NewBodyPartReader(path)
if err != nil {
return false, err
}