1 Return-Path: <teythoon@jade-hamburg.de>
\r
2 X-Original-To: notmuch@notmuchmail.org
\r
3 Delivered-To: notmuch@notmuchmail.org
\r
4 Received: from localhost (localhost [127.0.0.1])
\r
5 by olra.theworths.org (Postfix) with ESMTP id 1FC07431FAF
\r
6 for <notmuch@notmuchmail.org>; Mon, 30 Apr 2012 12:57:15 -0700 (PDT)
\r
7 X-Virus-Scanned: Debian amavisd-new at olra.theworths.org
\r
11 X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none]
\r
13 Received: from olra.theworths.org ([127.0.0.1])
\r
14 by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)
\r
15 with ESMTP id kXI9xPa24klg for <notmuch@notmuchmail.org>;
\r
16 Mon, 30 Apr 2012 12:57:10 -0700 (PDT)
\r
17 Received: from mail.cryptobitch.de (cryptobitch.de [88.198.7.68])
\r
18 (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits))
\r
19 (No client certificate requested)
\r
20 by olra.theworths.org (Postfix) with ESMTPS id ED603429E4A
\r
21 for <notmuch@notmuchmail.org>; Mon, 30 Apr 2012 12:56:56 -0700 (PDT)
\r
22 Received: from mail.jade-hamburg.de (mail.jade-hamburg.de [85.183.11.228])
\r
23 (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits))
\r
24 (No client certificate requested)
\r
25 by mail.cryptobitch.de (Postfix) with ESMTPSA id 86F32584BAB
\r
26 for <notmuch@notmuchmail.org>; Mon, 30 Apr 2012 21:56:55 +0200 (CEST)
\r
27 Received: by mail.jade-hamburg.de (Postfix, from userid 401)
\r
28 id 09262DF2A2; Mon, 30 Apr 2012 21:56:55 +0200 (CEST)
\r
29 Received: from thinkbox.jade-hamburg.de (unknown [10.1.1.153])
\r
30 (using TLSv1 with cipher AES256-SHA (256/256 bits))
\r
31 (No client certificate requested) (Authenticated sender: teythoon)
\r
32 by mail.jade-hamburg.de (Postfix) with ESMTPSA id A8391DF2A6;
\r
33 Mon, 30 Apr 2012 21:55:53 +0200 (CEST)
\r
34 Received: from teythoon by thinkbox.jade-hamburg.de with local (Exim 4.77)
\r
35 (envelope-from <teythoon@thinkbox.jade-hamburg.de>)
\r
36 id 1SOwhM-0003yv-DJ; Mon, 30 Apr 2012 21:55:52 +0200
\r
37 From: Justus Winter <4winter@informatik.uni-hamburg.de>
\r
38 To: notmuch@notmuchmail.org
\r
39 Subject: [PATCH 5/5] go: format the souce code using gofmt
\r
40 Date: Mon, 30 Apr 2012 21:55:44 +0200
\r
42 <1335815744-15258-5-git-send-email-4winter@informatik.uni-hamburg.de>
\r
43 X-Mailer: git-send-email 1.7.10
\r
45 <1335815744-15258-1-git-send-email-4winter@informatik.uni-hamburg.de>
\r
46 References: <20120430195420.2528.48612@thinkbox.jade-hamburg.de>
\r
47 <1335815744-15258-1-git-send-email-4winter@informatik.uni-hamburg.de>
\r
48 X-BeenThere: notmuch@notmuchmail.org
\r
49 X-Mailman-Version: 2.1.13
\r
51 List-Id: "Use and development of the notmuch mail system."
\r
52 <notmuch.notmuchmail.org>
\r
53 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
\r
54 <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
\r
55 List-Archive: <http://notmuchmail.org/pipermail/notmuch>
\r
56 List-Post: <mailto:notmuch@notmuchmail.org>
\r
57 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
\r
58 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
\r
59 <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
\r
60 X-List-Received-Date: Mon, 30 Apr 2012 19:57:15 -0000
\r
62 Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
\r
64 bindings/go/src/notmuch-addrlookup/addrlookup.go | 80 ++++++++++----------
\r
65 bindings/go/src/notmuch/notmuch.go | 87 +++++++++++-----------
\r
66 2 files changed, 85 insertions(+), 82 deletions(-)
\r
68 diff --git a/bindings/go/src/notmuch-addrlookup/addrlookup.go b/bindings/go/src/notmuch-addrlookup/addrlookup.go
\r
69 index dabfeb0..651b9a6 100644
\r
70 --- a/bindings/go/src/notmuch-addrlookup/addrlookup.go
\r
71 +++ b/bindings/go/src/notmuch-addrlookup/addrlookup.go
\r
72 @@ -22,18 +22,18 @@ type frequencies map[string]uint
\r
74 /* Used to sort the email addresses from most to least used */
\r
75 func sort_by_freq(m1, m2 *mail_addr_freq) int {
\r
76 - if (m1.count[0] == m2.count[0] &&
\r
77 + if m1.count[0] == m2.count[0] &&
\r
78 m1.count[1] == m2.count[1] &&
\r
79 - m1.count[2] == m2.count[2]) {
\r
80 + m1.count[2] == m2.count[2] {
\r
84 - if (m1.count[0] > m2.count[0] ||
\r
85 + if m1.count[0] > m2.count[0] ||
\r
86 m1.count[0] == m2.count[0] &&
\r
87 - m1.count[1] > m2.count[1] ||
\r
88 + m1.count[1] > m2.count[1] ||
\r
89 m1.count[0] == m2.count[0] &&
\r
90 - m1.count[1] == m2.count[1] &&
\r
91 - m1.count[2] > m2.count[2]) {
\r
92 + m1.count[1] == m2.count[1] &&
\r
93 + m1.count[2] > m2.count[2] {
\r
97 @@ -46,17 +46,17 @@ func (self *maddresses) Len() int {
\r
101 -func (self *maddresses) Less(i,j int) bool {
\r
102 +func (self *maddresses) Less(i, j int) bool {
\r
105 - v := sort_by_freq(m1, m2)
\r
107 + v := sort_by_freq(m1, m2)
\r
114 -func (self *maddresses) Swap(i,j int) {
\r
115 +func (self *maddresses) Swap(i, j int) {
\r
116 (*self)[i], (*self)[j] = (*self)[j], (*self)[i]
\r
119 @@ -66,7 +66,7 @@ func frequent_fullname(freqs frequencies) string {
\r
121 freqs_sz := len(freqs)
\r
123 - for mail,freq := range freqs {
\r
124 + for mail, freq := range freqs {
\r
125 if (freq > maxfreq && mail != "") || freqs_sz == 1 {
\r
126 // only use the entry if it has a real name
\r
127 // or if this is the only entry
\r
128 @@ -87,32 +87,32 @@ func addresses_by_frequency(msgs *notmuch.Messages, name string, pass uint, addr
\r
129 pattern = `.*` + strings.ToLower(name) + `.*`
\r
130 var re *regexp.Regexp = nil
\r
131 var err error = nil
\r
132 - if re,err = regexp.Compile(pattern); err != nil {
\r
133 + if re, err = regexp.Compile(pattern); err != nil {
\r
134 log.Printf("error: %v\n", err)
\r
139 headers := []string{"from"}
\r
141 headers = append(headers, "to", "cc", "bcc")
\r
144 - for ;msgs.Valid();msgs.MoveToNext() {
\r
145 + for ; msgs.Valid(); msgs.MoveToNext() {
\r
147 //println("==> msg [", msg.GetMessageId(), "]")
\r
148 - for _,header := range headers {
\r
149 + for _, header := range headers {
\r
150 froms := strings.ToLower(msg.GetHeader(header))
\r
151 //println(" froms: ["+froms+"]")
\r
152 - for _,from := range strings.Split(froms, ",") {
\r
153 + for _, from := range strings.Split(froms, ",") {
\r
154 from = strings.Trim(from, " ")
\r
155 match := re.FindString(from)
\r
156 //println(" -> match: ["+match+"]")
\r
157 - occ,ok := freqs[match]
\r
158 + occ, ok := freqs[match]
\r
163 - freqs[match] = occ+1
\r
164 + freqs[match] = occ + 1
\r
168 @@ -125,7 +125,7 @@ func search_address_passes(queries [3]*notmuch.Query, name string) []string {
\r
169 addr_to_realname := make(map[string]*frequencies)
\r
171 var pass uint = 0 // 0-based
\r
172 - for _,query := range queries {
\r
173 + for _, query := range queries {
\r
175 //println("**warning: idx [",idx,"] contains a nil query")
\r
177 @@ -133,9 +133,9 @@ func search_address_passes(queries [3]*notmuch.Query, name string) []string {
\r
178 msgs := query.SearchMessages()
\r
179 ht := addresses_by_frequency(msgs, name, pass, &addr_to_realname)
\r
180 for addr, count := range *ht {
\r
181 - freq,ok := addr_freq[addr]
\r
182 + freq, ok := addr_freq[addr]
\r
184 - freq = &mail_addr_freq{addr:addr, count:[3]uint{0,0,0}}
\r
185 + freq = &mail_addr_freq{addr: addr, count: [3]uint{0, 0, 0}}
\r
187 freq.count[pass] = count
\r
188 addr_freq[addr] = freq
\r
189 @@ -154,8 +154,8 @@ func search_address_passes(queries [3]*notmuch.Query, name string) []string {
\r
193 - for _,addr := range addrs {
\r
194 - freqs,ok := addr_to_realname[addr.addr]
\r
195 + for _, addr := range addrs {
\r
196 + freqs, ok := addr_to_realname[addr.addr]
\r
198 val = append(val, frequent_fullname(*freqs))
\r
200 @@ -187,29 +187,29 @@ func new_address_matcher() *address_matcher {
\r
201 home = os.Getenv("HOME")
\r
204 - if cfg,err = config.ReadDefault(path.Join(home, ".notmuch-config")); err != nil {
\r
205 - log.Fatalf("error loading config file:",err)
\r
206 + if cfg, err = config.ReadDefault(path.Join(home, ".notmuch-config")); err != nil {
\r
207 + log.Fatalf("error loading config file:", err)
\r
210 - db_path,_ := cfg.String("database", "path")
\r
211 - primary_email,_ := cfg.String("user", "primary_email")
\r
212 - addrbook_tag,err := cfg.String("user", "addrbook_tag")
\r
213 + db_path, _ := cfg.String("database", "path")
\r
214 + primary_email, _ := cfg.String("user", "primary_email")
\r
215 + addrbook_tag, err := cfg.String("user", "addrbook_tag")
\r
217 addrbook_tag = "addressbook"
\r
220 - self := &address_matcher{db:nil,
\r
221 - user_db_path:db_path,
\r
222 - user_primary_email:primary_email,
\r
223 - user_addrbook_tag:addrbook_tag}
\r
224 + self := &address_matcher{db: nil,
\r
225 + user_db_path: db_path,
\r
226 + user_primary_email: primary_email,
\r
227 + user_addrbook_tag: addrbook_tag}
\r
231 func (self *address_matcher) run(name string) {
\r
232 queries := [3]*notmuch.Query{}
\r
235 // open the database
\r
236 - self.db = notmuch.OpenDatabase(self.user_db_path,
\r
237 + self.db = notmuch.OpenDatabase(self.user_db_path,
\r
238 notmuch.DATABASE_MODE_READ_ONLY)
\r
240 // pass 1: look at all from: addresses with the address book tag
\r
241 @@ -222,7 +222,7 @@ func (self *address_matcher) run(name string) {
\r
242 // pass 2: look at all to: addresses sent from our primary mail
\r
245 - query = "to:"+name+"*"
\r
246 + query = "to:" + name + "*"
\r
248 if self.user_primary_email != "" {
\r
249 query = query + " from:" + self.user_primary_email
\r
250 @@ -230,17 +230,17 @@ func (self *address_matcher) run(name string) {
\r
251 queries[1] = self.db.CreateQuery(query)
\r
253 // if that leads only to a few hits, we check every from too
\r
254 - if queries[0].CountMessages() + queries[1].CountMessages() < 10 {
\r
255 + if queries[0].CountMessages()+queries[1].CountMessages() < 10 {
\r
258 - query = "from:"+name+"*"
\r
259 + query = "from:" + name + "*"
\r
261 queries[2] = self.db.CreateQuery(query)
\r
265 // actually retrieve and sort addresses
\r
266 results := search_address_passes(queries, name)
\r
267 - for _,v := range results {
\r
268 + for _, v := range results {
\r
269 if v != "" && v != "\n" {
\r
272 @@ -256,4 +256,4 @@ func main() {
\r
277 \ No newline at end of file
\r
279 diff --git a/bindings/go/src/notmuch/notmuch.go b/bindings/go/src/notmuch/notmuch.go
\r
280 index 524c956..46f4484 100644
\r
281 --- a/bindings/go/src/notmuch/notmuch.go
\r
282 +++ b/bindings/go/src/notmuch/notmuch.go
\r
283 @@ -15,24 +15,25 @@ import "unsafe"
\r
285 // Status codes used for the return values of most functions
\r
286 type Status C.notmuch_status_t
\r
289 STATUS_SUCCESS Status = 0
\r
290 STATUS_OUT_OF_MEMORY
\r
291 - STATUS_READ_ONLY_DATABASE
\r
292 - STATUS_XAPIAN_EXCEPTION
\r
293 - STATUS_FILE_ERROR
\r
294 - STATUS_FILE_NOT_EMAIL
\r
295 - STATUS_DUPLICATE_MESSAGE_ID
\r
296 - STATUS_NULL_POINTER
\r
297 - STATUS_TAG_TOO_LONG
\r
298 - STATUS_UNBALANCED_FREEZE_THAW
\r
300 - STATUS_LAST_STATUS
\r
301 + STATUS_READ_ONLY_DATABASE
\r
302 + STATUS_XAPIAN_EXCEPTION
\r
303 + STATUS_FILE_ERROR
\r
304 + STATUS_FILE_NOT_EMAIL
\r
305 + STATUS_DUPLICATE_MESSAGE_ID
\r
306 + STATUS_NULL_POINTER
\r
307 + STATUS_TAG_TOO_LONG
\r
308 + STATUS_UNBALANCED_FREEZE_THAW
\r
310 + STATUS_LAST_STATUS
\r
313 func (self Status) String() string {
\r
318 p = C.notmuch_status_to_string(C.notmuch_status_t(self))
\r
320 @@ -82,9 +83,10 @@ type Filenames struct {
\r
323 type DatabaseMode C.notmuch_database_mode_t
\r
326 - DATABASE_MODE_READ_ONLY DatabaseMode = 0
\r
327 - DATABASE_MODE_READ_WRITE
\r
328 + DATABASE_MODE_READ_ONLY DatabaseMode = 0
\r
329 + DATABASE_MODE_READ_WRITE
\r
332 // Create a new, empty notmuch database located at 'path'
\r
333 @@ -97,7 +99,7 @@ func NewDatabase(path string) *Database {
\r
337 - self := &Database{db:nil}
\r
338 + self := &Database{db: nil}
\r
339 self.db = C.notmuch_database_create(c_path)
\r
340 if self.db == nil {
\r
342 @@ -131,7 +133,7 @@ func OpenDatabase(path string, mode DatabaseMode) *Database {
\r
346 - self := &Database{db:nil}
\r
347 + self := &Database{db: nil}
\r
348 self.db = C.notmuch_database_open(c_path, C.notmuch_database_mode_t(mode))
\r
349 if self.db == nil {
\r
351 @@ -148,9 +150,9 @@ func (self *Database) Close() {
\r
352 /* Return the database path of the given database.
\r
354 func (self *Database) GetPath() string {
\r
356 - /* The return value is a string owned by notmuch so should not be
\r
357 - * modified nor freed by the caller. */
\r
359 + /* The return value is a string owned by notmuch so should not be
\r
360 + * modified nor freed by the caller. */
\r
361 var p *C.char = C.notmuch_database_get_path(self.db)
\r
364 @@ -180,7 +182,6 @@ func (self *Database) NeedsUpgrade() bool {
\r
366 // TODO: notmuch_database_upgrade
\r
369 /* Retrieve a directory object from the database for 'path'.
\r
371 * Here, 'path' should be a path relative to the path of 'database'
\r
372 @@ -201,7 +202,7 @@ func (self *Database) GetDirectory(path string) *Directory {
\r
376 - return &Directory{dir:c_dir}
\r
377 + return &Directory{dir: c_dir}
\r
380 /* Add a new message to the given notmuch database.
\r
381 @@ -244,8 +245,7 @@ func (self *Database) GetDirectory(path string) *Directory {
\r
382 * NOTMUCH_STATUS_READ_ONLY_DATABASE: Database was opened in read-only
\r
383 * mode so no message can be added.
\r
386 -(self *Database) AddMessage(fname string) (*Message, Status) {
\r
387 +func (self *Database) AddMessage(fname string) (*Message, Status) {
\r
388 var c_fname *C.char = C.CString(fname)
\r
389 defer C.free(unsafe.Pointer(c_fname))
\r
391 @@ -256,7 +256,7 @@ func
\r
392 var c_msg *C.notmuch_message_t = new(C.notmuch_message_t)
\r
393 st := Status(C.notmuch_database_add_message(self.db, c_fname, &c_msg))
\r
395 - return &Message{message:c_msg}, st
\r
396 + return &Message{message: c_msg}, st
\r
399 /* Remove a message from the given notmuch database.
\r
400 @@ -284,7 +284,7 @@ func
\r
401 * mode so no message can be removed.
\r
403 func (self *Database) RemoveMessage(fname string) Status {
\r
406 var c_fname *C.char = C.CString(fname)
\r
407 defer C.free(unsafe.Pointer(c_fname))
\r
409 @@ -309,7 +309,7 @@ func (self *Database) RemoveMessage(fname string) Status {
\r
410 * * A Xapian exception occurs
\r
412 func (self *Database) FindMessage(message_id string) (*Message, Status) {
\r
415 var c_msg_id *C.char = C.CString(message_id)
\r
416 defer C.free(unsafe.Pointer(c_msg_id))
\r
418 @@ -317,7 +317,7 @@ func (self *Database) FindMessage(message_id string) (*Message, Status) {
\r
419 return nil, STATUS_OUT_OF_MEMORY
\r
422 - msg := &Message{message:nil}
\r
423 + msg := &Message{message: nil}
\r
424 st := Status(C.notmuch_database_find_message(self.db, c_msg_id, &msg.message))
\r
425 if st != STATUS_SUCCESS {
\r
427 @@ -337,7 +337,7 @@ func (self *Database) GetAllTags() *Tags {
\r
431 - return &Tags{tags:tags}
\r
432 + return &Tags{tags: tags}
\r
435 /* Create a new query for 'database'.
\r
436 @@ -365,7 +365,7 @@ func (self *Database) GetAllTags() *Tags {
\r
437 * Will return NULL if insufficient memory is available.
\r
439 func (self *Database) CreateQuery(query string) *Query {
\r
442 var c_query *C.char = C.CString(query)
\r
443 defer C.free(unsafe.Pointer(c_query))
\r
445 @@ -377,11 +377,12 @@ func (self *Database) CreateQuery(query string) *Query {
\r
449 - return &Query{query:q}
\r
450 + return &Query{query: q}
\r
453 /* Sort values for notmuch_query_set_sort */
\r
454 type Sort C.notmuch_sort_t
\r
457 SORT_OLDEST_FIRST Sort = 0
\r
459 @@ -394,7 +395,7 @@ func (self *Query) String() string {
\r
460 // FIXME: do we own 'q' or not ?
\r
461 q := C.notmuch_query_get_query_string(self.query)
\r
462 //defer C.free(unsafe.Pointer(q))
\r
468 @@ -456,7 +457,7 @@ func (self *Query) SearchThreads() *Threads {
\r
469 if threads == nil {
\r
472 - return &Threads{threads:threads}
\r
473 + return &Threads{threads: threads}
\r
476 /* Execute a query for messages, returning a notmuch_messages_t object
\r
477 @@ -502,7 +503,7 @@ func (self *Query) SearchMessages() *Messages {
\r
481 - return &Messages{messages:msgs}
\r
482 + return &Messages{messages: msgs}
\r
485 /* Destroy a notmuch_query_t along with any associated resources.
\r
486 @@ -604,7 +605,7 @@ func (self *Messages) Get() *Message {
\r
490 - return &Message{message:msg}
\r
491 + return &Message{message: msg}
\r
494 /* Move the 'messages' iterator to the next message.
\r
495 @@ -656,7 +657,7 @@ func (self *Messages) CollectTags() *Tags {
\r
499 - return &Tags{tags:tags}
\r
500 + return &Tags{tags: tags}
\r
503 /* Get the message ID of 'message'.
\r
504 @@ -696,14 +697,14 @@ func (self *Message) GetMessageId() string {
\r
505 * message belongs to a single thread.
\r
507 func (self *Message) GetThreadId() string {
\r
510 if self.message == nil {
\r
513 id := C.notmuch_message_get_thread_id(self.message)
\r
515 // defer C.free(unsafe.Pointer(id))
\r
521 @@ -736,7 +737,7 @@ func (self *Message) GetReplies() *Messages {
\r
525 - return &Messages{messages:msgs}
\r
526 + return &Messages{messages: msgs}
\r
529 /* Get a filename for the email corresponding to 'message'.
\r
530 @@ -760,7 +761,7 @@ func (self *Message) GetFileName() string {
\r
531 fname := C.notmuch_message_get_filename(self.message)
\r
532 // we dont own fname
\r
533 // defer C.free(unsafe.Pointer(fname))
\r
539 @@ -769,6 +770,7 @@ func (self *Message) GetFileName() string {
\r
542 type Flag C.notmuch_message_flag_t
\r
545 MESSAGE_FLAG_MATCH Flag = 0
\r
547 @@ -815,16 +817,16 @@ func (self *Message) GetHeader(header string) string {
\r
548 if self.message == nil {
\r
553 var c_header *C.char = C.CString(header)
\r
554 defer C.free(unsafe.Pointer(c_header))
\r
557 /* we dont own value */
\r
558 value := C.notmuch_message_get_header(self.message, c_header)
\r
564 return C.GoString(value)
\r
567 @@ -866,7 +868,7 @@ func (self *Message) GetTags() *Tags {
\r
571 - return &Tags{tags:tags}
\r
572 + return &Tags{tags: tags}
\r
575 /* The longest possible tag value. */
\r
576 @@ -1123,4 +1125,5 @@ func (self *Filenames) Destroy() {
\r
578 C.notmuch_filenames_destroy(self.fnames)
\r