diff options
Diffstat (limited to 'worker')
-rw-r--r-- | worker/lib/parse.go | 10 | ||||
-rw-r--r-- | worker/maildir/search.go | 8 |
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 } |