Make sure to update the go binding to reflect the recent changes to notmuch api. --- .../go/src/notmuch-addrlookup/addrlookup.go | 22 ++++++++++-- contrib/go/src/notmuch/notmuch.go | 34 +++++++++++-------- 2 files changed, 39 insertions(+), 17 deletions(-) diff --git a/contrib/go/src/notmuch-addrlookup/addrlookup.go b/contrib/go/src/notmuch-addrlookup/addrlookup.go index 916e5bb2..b1023f24 100644 --- a/contrib/go/src/notmuch-addrlookup/addrlookup.go +++ b/contrib/go/src/notmuch-addrlookup/addrlookup.go @@ -130,7 +130,12 @@ func search_address_passes(queries [3]*notmuch.Query, name string) []string { //println("**warning: idx [",idx,"] contains a nil query") continue } - msgs := query.SearchMessages() + + msgs, status := query.SearchMessages() + if status != notmuch.STATUS_SUCCESS { + continue + } + ht := addresses_by_frequency(msgs, name, pass, &addr_to_realname) for addr, count := range *ht { freq, ok := addr_freq[addr] @@ -231,8 +236,21 @@ func (self *address_matcher) run(name string) { } queries[1] = self.db.CreateQuery(query) + cnt1, cnt2 := uint(0), uint(0) + status := notmuch.STATUS_SUCCESS + // if that leads only to a few hits, we check every from too - if queries[0].CountMessages()+queries[1].CountMessages() < 10 { + cnt1, status = queries[0].CountMessages() + if status != notmuch.STATUS_SUCCESS { + log.Fatalf("Failed to count messages: %v.", status) + } + + cnt2, status = queries[1].CountMessages() + if status != notmuch.STATUS_SUCCESS { + log.Fatalf("Failed to count messages: %v.", status) + } + + if cnt1+cnt2 < 10 { query = "" if name != "" { query = "from:" + name + "*" diff --git a/contrib/go/src/notmuch/notmuch.go b/contrib/go/src/notmuch/notmuch.go index 5496198a..c04c4c5a 100644 --- a/contrib/go/src/notmuch/notmuch.go +++ b/contrib/go/src/notmuch/notmuch.go @@ -255,10 +255,10 @@ func (self *Database) AddMessage(fname string) (*Message, Status) { return nil, STATUS_OUT_OF_MEMORY } - var c_msg *C.notmuch_message_t = new(C.notmuch_message_t) - st := Status(C.notmuch_database_add_message(self.db, c_fname, &c_msg)) + msg := &Message{message: nil} + st := Status(C.notmuch_database_add_message(self.db, c_fname, &msg.message)) - return &Message{message: c_msg}, st + return msg, st } /* Remove a message from the given notmuch database. @@ -454,12 +454,13 @@ func (self *Query) GetSort() Sort { * * If a Xapian exception occurs this function will return NULL. */ -func (self *Query) SearchThreads() *Threads { - threads := C.notmuch_query_search_threads(self.query) - if threads == nil { - return nil +func (self *Query) SearchThreads() (*Threads, Status) { + threads := &Threads{threads: nil} + st := Status(C.notmuch_query_search_threads(self.query, &threads.threads)) + if st != STATUS_SUCCESS { + return nil, st } - return &Threads{threads: threads} + return threads, st } /* Execute a query for messages, returning a notmuch_messages_t object @@ -500,12 +501,13 @@ func (self *Query) SearchThreads() *Threads { * * If a Xapian exception occurs this function will return NULL. */ -func (self *Query) SearchMessages() *Messages { - msgs := C.notmuch_query_search_messages(self.query) - if msgs == nil { - return nil +func (self *Query) SearchMessages() (*Messages, Status) { + msgs := &Messages{messages: nil} + st := Status(C.notmuch_query_search_messages(self.query, &msgs.messages)) + if st != STATUS_SUCCESS { + return nil, st } - return &Messages{messages: msgs} + return msgs, st } /* Destroy a notmuch_query_t along with any associated resources. @@ -530,8 +532,10 @@ func (self *Query) Destroy() { * If a Xapian exception occurs, this function may return 0 (after * printing a message). */ -func (self *Query) CountMessages() uint { - return uint(C.notmuch_query_count_messages(self.query)) +func (self *Query) CountMessages() (uint, Status) { + var cnt C.uint + st := Status(C.notmuch_query_count_messages(self.query, &cnt)) + return uint(cnt), st } /* Is the given 'threads' iterator pointing at a valid thread. -- 2.30.1 _______________________________________________ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-leave@notmuchmail.org