lib/open: factor out library initialization

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.
This commit is contained in:
David Bremner 2021-01-29 07:44:18 -04:00
parent 6251e2bb9e
commit 82aa3f4d27

View 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;