]> git.notmuchmail.org Git - notmuch/commitdiff
lib/open: factor out library initialization
authorDavid Bremner <david@tethera.net>
Fri, 29 Jan 2021 11:44:18 +0000 (07:44 -0400)
committerDavid Bremner <david@tethera.net>
Sat, 20 Mar 2021 10:24:24 +0000 (07:24 -0300)
This is slightly more tidy, but more importantly it allows for re-use
of this code in n_d_create_with_config. That re-use will be crucial
when we no longer call n_d_open_with_config from
n_d_create_with_config.

lib/open.cc

index 7fc9a14ffbb8d9608eb2f55c319118b54afe89f2..069c0664de35f0e3ae7364b3085c1c60c512310b 100644 (file)
@@ -220,6 +220,24 @@ _set_database_path (notmuch_database_t *notmuch,
     _notmuch_config_cache (notmuch, NOTMUCH_CONFIG_DATABASE_PATH, path);
 }
 
+static void
+_init_libs ()
+{
+
+    static int initialized = 0;
+
+    /* Initialize the GLib type system and threads */
+#if ! GLIB_CHECK_VERSION (2, 35, 1)
+    g_type_init ();
+#endif
+
+    /* Initialize gmime */
+    if (! initialized) {
+       g_mime_init ();
+       initialized = 1;
+    }
+}
+
 notmuch_status_t
 notmuch_database_open_with_config (const char *database_path,
                                   notmuch_database_mode_t mode,
@@ -237,7 +255,8 @@ notmuch_database_open_with_config (const char *database_path,
     int err;
     unsigned int version;
     GKeyFile *key_file = NULL;
-    static int initialized = 0;
+
+    _init_libs ();
 
     notmuch = _alloc_notmuch ();
     if (! notmuch) {
@@ -271,17 +290,6 @@ notmuch_database_open_with_config (const char *database_path,
        goto DONE;
     }
 
-    /* Initialize the GLib type system and threads */
-#if ! GLIB_CHECK_VERSION (2, 35, 1)
-    g_type_init ();
-#endif
-
-    /* Initialize gmime */
-    if (! initialized) {
-       g_mime_init ();
-       initialized = 1;
-    }
-
     try {
        std::string last_thread_id;
        std::string last_mod;
@@ -467,6 +475,8 @@ notmuch_database_create_with_config (const char *database_path,
     int err;
     void *local = talloc_new (NULL);
 
+    _init_libs ();
+
     if ((status = _choose_database_path (local, config_path, profile,
                                         &key_file, &database_path, &message)))
        goto DONE;