notmuch-index-message: Use local-part of email addres in lieu of name.
authorCarl Worth <cworth@cworth.org>
Wed, 14 Oct 2009 20:46:01 +0000 (13:46 -0700)
committerCarl Worth <cworth@cworth.org>
Wed, 14 Oct 2009 20:47:18 +0000 (13:47 -0700)
If there's no name given, take the portion of the email addres
before the '@' sign.

One step closer to matching sup's terms in the database.

notmuch-index-message.cc

index 1922dd373856a32efb8c0f6f0ac4c857554da4ca..913306582e74fc8cd29f778318d2c03e39b3a8cb 100644 (file)
@@ -139,11 +139,29 @@ gen_terms_address_name (Xapian::TermGenerator term_gen,
                        const char *prefix_name)
 {
     const char *name;
                        const char *prefix_name)
 {
     const char *name;
+    int own_name = 0;
 
     name = internet_address_get_name (address);
 
 
     name = internet_address_get_name (address);
 
+    /* In the absence of a name, we'll strip the part before the @
+     * from the address. */
+    if (! name) {
+       InternetAddressMailbox *mailbox = INTERNET_ADDRESS_MAILBOX (address);
+       const char *addr = internet_address_mailbox_get_addr (mailbox);
+       const char *at;
+
+       at = strchr (addr, '@');
+       if (at) {
+           name = strndup (addr, at - addr);
+           own_name = 1;
+       }
+    }
+
     if (name)
        gen_terms (term_gen, prefix_name, name);
     if (name)
        gen_terms (term_gen, prefix_name, name);
+
+    if (own_name)
+       free ((void *) name);
 }
 
 static void
 }
 
 static void