X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=lib%2Fdatabase.cc;h=94022d7ce3ae9c060ecf18baaca1aa95afa11781;hp=e4ef14e0c1ee7d7a748e9116de5a20a11e035860;hb=6c0adab23eadb81bb1254f4b82175902df11bb3f;hpb=567bcbc294b3aed632d18eb22056840292bdeb1e diff --git a/lib/database.cc b/lib/database.cc index e4ef14e0..94022d7c 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -26,6 +26,9 @@ #include #include /* g_free, GPtrArray, GHashTable */ +#include /* g_type_init */ + +#include /* g_mime_init */ using namespace std; @@ -80,13 +83,17 @@ typedef struct { * STRING is the name of a file within that * directory for this mail message. * - * A mail document also has two values: + * A mail document also has four values: * * TIMESTAMP: The time_t value corresponding to the message's * Date header. * * MESSAGE_ID: The unique ID of the mail mess (see "id" above) * + * FROM: The value of the "From" header + * + * SUBJECT: The value of the "Subject" header + * * In addition, terms from the content of the message are added with * "from", "to", "attachment", and "subject" prefixes for use by the * user in searching. Similarly, terms from the path of the mail @@ -580,6 +587,7 @@ notmuch_database_open (const char *path, struct stat st; int err; unsigned int i, version; + static int initialized = 0; if (asprintf (¬much_path, "%s/%s", path, ".notmuch") == -1) { notmuch_path = NULL; @@ -600,7 +608,16 @@ notmuch_database_open (const char *path, goto DONE; } - notmuch = talloc (NULL, notmuch_database_t); + /* Initialize the GLib type system and threads */ + g_type_init (); + + /* Initialize gmime */ + if (! initialized) { + g_mime_init (0); + initialized = 1; + } + + notmuch = talloc_zero (NULL, notmuch_database_t); notmuch->exception_reported = FALSE; notmuch->path = talloc_strdup (notmuch, path); @@ -686,6 +703,7 @@ notmuch_database_open (const char *path, } catch (const Xapian::Error &error) { fprintf (stderr, "A Xapian exception occurred opening database: %s\n", error.get_msg().c_str()); + notmuch_database_close (notmuch); notmuch = NULL; } @@ -1443,7 +1461,7 @@ _notmuch_database_link_message_to_parents (notmuch_database_t *notmuch, keys = g_hash_table_get_keys (parents); for (l = keys; l; l = l->next) { char *parent_message_id; - const char *parent_thread_id; + const char *parent_thread_id = NULL; parent_message_id = (char *) l->data;