Return-Path: X-Original-To: notmuch@notmuchmail.org Delivered-To: notmuch@notmuchmail.org Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id 1FC07431FAF for ; Mon, 30 Apr 2012 12:57:15 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none] autolearn=disabled Received: from olra.theworths.org ([127.0.0.1]) by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id kXI9xPa24klg for ; Mon, 30 Apr 2012 12:57:10 -0700 (PDT) Received: from mail.cryptobitch.de (cryptobitch.de [88.198.7.68]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by olra.theworths.org (Postfix) with ESMTPS id ED603429E4A for ; Mon, 30 Apr 2012 12:56:56 -0700 (PDT) Received: from mail.jade-hamburg.de (mail.jade-hamburg.de [85.183.11.228]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.cryptobitch.de (Postfix) with ESMTPSA id 86F32584BAB for ; Mon, 30 Apr 2012 21:56:55 +0200 (CEST) Received: by mail.jade-hamburg.de (Postfix, from userid 401) id 09262DF2A2; Mon, 30 Apr 2012 21:56:55 +0200 (CEST) Received: from thinkbox.jade-hamburg.de (unknown [10.1.1.153]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: teythoon) by mail.jade-hamburg.de (Postfix) with ESMTPSA id A8391DF2A6; Mon, 30 Apr 2012 21:55:53 +0200 (CEST) Received: from teythoon by thinkbox.jade-hamburg.de with local (Exim 4.77) (envelope-from ) id 1SOwhM-0003yv-DJ; Mon, 30 Apr 2012 21:55:52 +0200 From: Justus Winter <4winter@informatik.uni-hamburg.de> To: notmuch@notmuchmail.org Subject: [PATCH 5/5] go: format the souce code using gofmt Date: Mon, 30 Apr 2012 21:55:44 +0200 Message-Id: <1335815744-15258-5-git-send-email-4winter@informatik.uni-hamburg.de> X-Mailer: git-send-email 1.7.10 In-Reply-To: <1335815744-15258-1-git-send-email-4winter@informatik.uni-hamburg.de> References: <20120430195420.2528.48612@thinkbox.jade-hamburg.de> <1335815744-15258-1-git-send-email-4winter@informatik.uni-hamburg.de> X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Apr 2012 19:57:15 -0000 Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de> --- bindings/go/src/notmuch-addrlookup/addrlookup.go | 80 ++++++++++---------- bindings/go/src/notmuch/notmuch.go | 87 +++++++++++----------- 2 files changed, 85 insertions(+), 82 deletions(-) diff --git a/bindings/go/src/notmuch-addrlookup/addrlookup.go b/bindings/go/src/notmuch-addrlookup/addrlookup.go index dabfeb0..651b9a6 100644 --- a/bindings/go/src/notmuch-addrlookup/addrlookup.go +++ b/bindings/go/src/notmuch-addrlookup/addrlookup.go @@ -22,18 +22,18 @@ type frequencies map[string]uint /* Used to sort the email addresses from most to least used */ func sort_by_freq(m1, m2 *mail_addr_freq) int { - if (m1.count[0] == m2.count[0] && + if m1.count[0] == m2.count[0] && m1.count[1] == m2.count[1] && - m1.count[2] == m2.count[2]) { + m1.count[2] == m2.count[2] { return 0 } - if (m1.count[0] > m2.count[0] || + if m1.count[0] > m2.count[0] || m1.count[0] == m2.count[0] && - m1.count[1] > m2.count[1] || + m1.count[1] > m2.count[1] || m1.count[0] == m2.count[0] && - m1.count[1] == m2.count[1] && - m1.count[2] > m2.count[2]) { + m1.count[1] == m2.count[1] && + m1.count[2] > m2.count[2] { return -1 } @@ -46,17 +46,17 @@ func (self *maddresses) Len() int { return len(*self) } -func (self *maddresses) Less(i,j int) bool { +func (self *maddresses) Less(i, j int) bool { m1 := (*self)[i] m2 := (*self)[j] - v := sort_by_freq(m1, m2) - if v<=0 { + v := sort_by_freq(m1, m2) + if v <= 0 { return true } return false } -func (self *maddresses) Swap(i,j int) { +func (self *maddresses) Swap(i, j int) { (*self)[i], (*self)[j] = (*self)[j], (*self)[i] } @@ -66,7 +66,7 @@ func frequent_fullname(freqs frequencies) string { fullname := "" freqs_sz := len(freqs) - for mail,freq := range freqs { + for mail, freq := range freqs { if (freq > maxfreq && mail != "") || freqs_sz == 1 { // only use the entry if it has a real name // or if this is the only entry @@ -87,32 +87,32 @@ func addresses_by_frequency(msgs *notmuch.Messages, name string, pass uint, addr pattern = `.*` + strings.ToLower(name) + `.*` var re *regexp.Regexp = nil var err error = nil - if re,err = regexp.Compile(pattern); err != nil { + if re, err = regexp.Compile(pattern); err != nil { log.Printf("error: %v\n", err) return &freqs } - + headers := []string{"from"} if pass == 1 { headers = append(headers, "to", "cc", "bcc") } - for ;msgs.Valid();msgs.MoveToNext() { + for ; msgs.Valid(); msgs.MoveToNext() { msg := msgs.Get() //println("==> msg [", msg.GetMessageId(), "]") - for _,header := range headers { + for _, header := range headers { froms := strings.ToLower(msg.GetHeader(header)) //println(" froms: ["+froms+"]") - for _,from := range strings.Split(froms, ",") { + for _, from := range strings.Split(froms, ",") { from = strings.Trim(from, " ") match := re.FindString(from) //println(" -> match: ["+match+"]") - occ,ok := freqs[match] + occ, ok := freqs[match] if !ok { freqs[match] = 0 occ = 0 } - freqs[match] = occ+1 + freqs[match] = occ + 1 } } } @@ -125,7 +125,7 @@ func search_address_passes(queries [3]*notmuch.Query, name string) []string { addr_to_realname := make(map[string]*frequencies) var pass uint = 0 // 0-based - for _,query := range queries { + for _, query := range queries { if query == nil { //println("**warning: idx [",idx,"] contains a nil query") continue @@ -133,9 +133,9 @@ func search_address_passes(queries [3]*notmuch.Query, name string) []string { msgs := query.SearchMessages() ht := addresses_by_frequency(msgs, name, pass, &addr_to_realname) for addr, count := range *ht { - freq,ok := addr_freq[addr] + freq, ok := addr_freq[addr] if !ok { - freq = &mail_addr_freq{addr:addr, count:[3]uint{0,0,0}} + freq = &mail_addr_freq{addr: addr, count: [3]uint{0, 0, 0}} } freq.count[pass] = count addr_freq[addr] = freq @@ -154,8 +154,8 @@ func search_address_passes(queries [3]*notmuch.Query, name string) []string { } sort.Sort(&addrs) - for _,addr := range addrs { - freqs,ok := addr_to_realname[addr.addr] + for _, addr := range addrs { + freqs, ok := addr_to_realname[addr.addr] if ok { val = append(val, frequent_fullname(*freqs)) } else { @@ -187,29 +187,29 @@ func new_address_matcher() *address_matcher { home = os.Getenv("HOME") } - if cfg,err = config.ReadDefault(path.Join(home, ".notmuch-config")); err != nil { - log.Fatalf("error loading config file:",err) + if cfg, err = config.ReadDefault(path.Join(home, ".notmuch-config")); err != nil { + log.Fatalf("error loading config file:", err) } - db_path,_ := cfg.String("database", "path") - primary_email,_ := cfg.String("user", "primary_email") - addrbook_tag,err := cfg.String("user", "addrbook_tag") + db_path, _ := cfg.String("database", "path") + primary_email, _ := cfg.String("user", "primary_email") + addrbook_tag, err := cfg.String("user", "addrbook_tag") if err != nil { addrbook_tag = "addressbook" } - self := &address_matcher{db:nil, - user_db_path:db_path, - user_primary_email:primary_email, - user_addrbook_tag:addrbook_tag} + self := &address_matcher{db: nil, + user_db_path: db_path, + user_primary_email: primary_email, + user_addrbook_tag: addrbook_tag} return self } func (self *address_matcher) run(name string) { queries := [3]*notmuch.Query{} - + // open the database - self.db = notmuch.OpenDatabase(self.user_db_path, + self.db = notmuch.OpenDatabase(self.user_db_path, notmuch.DATABASE_MODE_READ_ONLY) // pass 1: look at all from: addresses with the address book tag @@ -222,7 +222,7 @@ func (self *address_matcher) run(name string) { // pass 2: look at all to: addresses sent from our primary mail query = "" if name != "" { - query = "to:"+name+"*" + query = "to:" + name + "*" } if self.user_primary_email != "" { query = query + " from:" + self.user_primary_email @@ -230,17 +230,17 @@ func (self *address_matcher) run(name string) { queries[1] = self.db.CreateQuery(query) // if that leads only to a few hits, we check every from too - if queries[0].CountMessages() + queries[1].CountMessages() < 10 { + if queries[0].CountMessages()+queries[1].CountMessages() < 10 { query = "" if name != "" { - query = "from:"+name+"*" + query = "from:" + name + "*" } queries[2] = self.db.CreateQuery(query) } - + // actually retrieve and sort addresses results := search_address_passes(queries, name) - for _,v := range results { + for _, v := range results { if v != "" && v != "\n" { fmt.Println(v) } @@ -256,4 +256,4 @@ func main() { name = os.Args[1] } app.run(name) -} \ No newline at end of file +} diff --git a/bindings/go/src/notmuch/notmuch.go b/bindings/go/src/notmuch/notmuch.go index 524c956..46f4484 100644 --- a/bindings/go/src/notmuch/notmuch.go +++ b/bindings/go/src/notmuch/notmuch.go @@ -15,24 +15,25 @@ import "unsafe" // Status codes used for the return values of most functions type Status C.notmuch_status_t + const ( STATUS_SUCCESS Status = 0 STATUS_OUT_OF_MEMORY - STATUS_READ_ONLY_DATABASE - STATUS_XAPIAN_EXCEPTION - STATUS_FILE_ERROR - STATUS_FILE_NOT_EMAIL - STATUS_DUPLICATE_MESSAGE_ID - STATUS_NULL_POINTER - STATUS_TAG_TOO_LONG - STATUS_UNBALANCED_FREEZE_THAW - - STATUS_LAST_STATUS + STATUS_READ_ONLY_DATABASE + STATUS_XAPIAN_EXCEPTION + STATUS_FILE_ERROR + STATUS_FILE_NOT_EMAIL + STATUS_DUPLICATE_MESSAGE_ID + STATUS_NULL_POINTER + STATUS_TAG_TOO_LONG + STATUS_UNBALANCED_FREEZE_THAW + + STATUS_LAST_STATUS ) func (self Status) String() string { var p *C.char - + // p is read-only p = C.notmuch_status_to_string(C.notmuch_status_t(self)) if p != nil { @@ -82,9 +83,10 @@ type Filenames struct { } type DatabaseMode C.notmuch_database_mode_t + const ( - DATABASE_MODE_READ_ONLY DatabaseMode = 0 - DATABASE_MODE_READ_WRITE + DATABASE_MODE_READ_ONLY DatabaseMode = 0 + DATABASE_MODE_READ_WRITE ) // Create a new, empty notmuch database located at 'path' @@ -97,7 +99,7 @@ func NewDatabase(path string) *Database { return nil } - self := &Database{db:nil} + self := &Database{db: nil} self.db = C.notmuch_database_create(c_path) if self.db == nil { return nil @@ -131,7 +133,7 @@ func OpenDatabase(path string, mode DatabaseMode) *Database { return nil } - self := &Database{db:nil} + self := &Database{db: nil} self.db = C.notmuch_database_open(c_path, C.notmuch_database_mode_t(mode)) if self.db == nil { return nil @@ -148,9 +150,9 @@ func (self *Database) Close() { /* Return the database path of the given database. */ func (self *Database) GetPath() string { - - /* The return value is a string owned by notmuch so should not be - * modified nor freed by the caller. */ + + /* The return value is a string owned by notmuch so should not be + * modified nor freed by the caller. */ var p *C.char = C.notmuch_database_get_path(self.db) if p != nil { s := C.GoString(p) @@ -180,7 +182,6 @@ func (self *Database) NeedsUpgrade() bool { // TODO: notmuch_database_upgrade - /* Retrieve a directory object from the database for 'path'. * * Here, 'path' should be a path relative to the path of 'database' @@ -201,7 +202,7 @@ func (self *Database) GetDirectory(path string) *Directory { if c_dir == nil { return nil } - return &Directory{dir:c_dir} + return &Directory{dir: c_dir} } /* Add a new message to the given notmuch database. @@ -244,8 +245,7 @@ func (self *Database) GetDirectory(path string) *Directory { * NOTMUCH_STATUS_READ_ONLY_DATABASE: Database was opened in read-only * mode so no message can be added. */ -func -(self *Database) AddMessage(fname string) (*Message, Status) { +func (self *Database) AddMessage(fname string) (*Message, Status) { var c_fname *C.char = C.CString(fname) defer C.free(unsafe.Pointer(c_fname)) @@ -256,7 +256,7 @@ func 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)) - return &Message{message:c_msg}, st + return &Message{message: c_msg}, st } /* Remove a message from the given notmuch database. @@ -284,7 +284,7 @@ func * mode so no message can be removed. */ func (self *Database) RemoveMessage(fname string) Status { - + var c_fname *C.char = C.CString(fname) defer C.free(unsafe.Pointer(c_fname)) @@ -309,7 +309,7 @@ func (self *Database) RemoveMessage(fname string) Status { * * A Xapian exception occurs */ func (self *Database) FindMessage(message_id string) (*Message, Status) { - + var c_msg_id *C.char = C.CString(message_id) defer C.free(unsafe.Pointer(c_msg_id)) @@ -317,7 +317,7 @@ func (self *Database) FindMessage(message_id string) (*Message, Status) { return nil, STATUS_OUT_OF_MEMORY } - msg := &Message{message:nil} + msg := &Message{message: nil} st := Status(C.notmuch_database_find_message(self.db, c_msg_id, &msg.message)) if st != STATUS_SUCCESS { return nil, st @@ -337,7 +337,7 @@ func (self *Database) GetAllTags() *Tags { if tags == nil { return nil } - return &Tags{tags:tags} + return &Tags{tags: tags} } /* Create a new query for 'database'. @@ -365,7 +365,7 @@ func (self *Database) GetAllTags() *Tags { * Will return NULL if insufficient memory is available. */ func (self *Database) CreateQuery(query string) *Query { - + var c_query *C.char = C.CString(query) defer C.free(unsafe.Pointer(c_query)) @@ -377,11 +377,12 @@ func (self *Database) CreateQuery(query string) *Query { if q == nil { return nil } - return &Query{query:q} + return &Query{query: q} } /* Sort values for notmuch_query_set_sort */ type Sort C.notmuch_sort_t + const ( SORT_OLDEST_FIRST Sort = 0 SORT_NEWEST_FIRST @@ -394,7 +395,7 @@ func (self *Query) String() string { // FIXME: do we own 'q' or not ? q := C.notmuch_query_get_query_string(self.query) //defer C.free(unsafe.Pointer(q)) - + if q != nil { s := C.GoString(q) return s @@ -456,7 +457,7 @@ func (self *Query) SearchThreads() *Threads { if threads == nil { return nil } - return &Threads{threads:threads} + return &Threads{threads: threads} } /* Execute a query for messages, returning a notmuch_messages_t object @@ -502,7 +503,7 @@ func (self *Query) SearchMessages() *Messages { if msgs == nil { return nil } - return &Messages{messages:msgs} + return &Messages{messages: msgs} } /* Destroy a notmuch_query_t along with any associated resources. @@ -604,7 +605,7 @@ func (self *Messages) Get() *Message { if msg == nil { return nil } - return &Message{message:msg} + return &Message{message: msg} } /* Move the 'messages' iterator to the next message. @@ -656,7 +657,7 @@ func (self *Messages) CollectTags() *Tags { if tags == nil { return nil } - return &Tags{tags:tags} + return &Tags{tags: tags} } /* Get the message ID of 'message'. @@ -696,14 +697,14 @@ func (self *Message) GetMessageId() string { * message belongs to a single thread. */ func (self *Message) GetThreadId() string { - + if self.message == nil { return "" } id := C.notmuch_message_get_thread_id(self.message) // we dont own id // defer C.free(unsafe.Pointer(id)) - + if id == nil { return "" } @@ -736,7 +737,7 @@ func (self *Message) GetReplies() *Messages { if msgs == nil { return nil } - return &Messages{messages:msgs} + return &Messages{messages: msgs} } /* Get a filename for the email corresponding to 'message'. @@ -760,7 +761,7 @@ func (self *Message) GetFileName() string { fname := C.notmuch_message_get_filename(self.message) // we dont own fname // defer C.free(unsafe.Pointer(fname)) - + if fname == nil { return "" } @@ -769,6 +770,7 @@ func (self *Message) GetFileName() string { } type Flag C.notmuch_message_flag_t + const ( MESSAGE_FLAG_MATCH Flag = 0 ) @@ -815,16 +817,16 @@ func (self *Message) GetHeader(header string) string { if self.message == nil { return "" } - + var c_header *C.char = C.CString(header) defer C.free(unsafe.Pointer(c_header)) - + /* we dont own value */ value := C.notmuch_message_get_header(self.message, c_header) if value == nil { return "" } - + return C.GoString(value) } @@ -866,7 +868,7 @@ func (self *Message) GetTags() *Tags { if tags == nil { return nil } - return &Tags{tags:tags} + return &Tags{tags: tags} } /* The longest possible tag value. */ @@ -1123,4 +1125,5 @@ func (self *Filenames) Destroy() { } C.notmuch_filenames_destroy(self.fnames) } + /* EOF */ -- 1.7.10