mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
lib: save path of xapian database in notmuch struct.
This will allow re-opening in a different mode (read/write vs. read-only) with current Xapian API. It will also prove useful when updating the compact functions to support more flexible database location.
This commit is contained in:
parent
1121299905
commit
f0717aa380
2 changed files with 14 additions and 9 deletions
|
@ -189,8 +189,12 @@ operator& (notmuch_field_flag_t a, notmuch_field_flag_t b)
|
||||||
struct _notmuch_database {
|
struct _notmuch_database {
|
||||||
bool exception_reported;
|
bool exception_reported;
|
||||||
|
|
||||||
|
/* Path to database parent directory and or/mail root */
|
||||||
char *path;
|
char *path;
|
||||||
|
|
||||||
|
/* Path to actual database */
|
||||||
|
const char *xapian_path;
|
||||||
|
|
||||||
int atomic_nesting;
|
int atomic_nesting;
|
||||||
/* true if changes have been made in this atomic section */
|
/* true if changes have been made in this atomic section */
|
||||||
bool atomic_dirty;
|
bool atomic_dirty;
|
||||||
|
|
19
lib/open.cc
19
lib/open.cc
|
@ -199,7 +199,7 @@ notmuch_database_open_with_config (const char *database_path,
|
||||||
notmuch_status_t status = NOTMUCH_STATUS_SUCCESS;
|
notmuch_status_t status = NOTMUCH_STATUS_SUCCESS;
|
||||||
void *local = talloc_new (NULL);
|
void *local = talloc_new (NULL);
|
||||||
notmuch_database_t *notmuch = NULL;
|
notmuch_database_t *notmuch = NULL;
|
||||||
char *notmuch_path, *xapian_path, *incompat_features;
|
char *notmuch_path, *incompat_features;
|
||||||
char *message = NULL;
|
char *message = NULL;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
int err;
|
int err;
|
||||||
|
@ -225,12 +225,6 @@ notmuch_database_open_with_config (const char *database_path,
|
||||||
goto DONE;
|
goto DONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! (xapian_path = talloc_asprintf (local, "%s/%s", notmuch_path, "xapian"))) {
|
|
||||||
message = strdup ("Out of memory\n");
|
|
||||||
status = NOTMUCH_STATUS_OUT_OF_MEMORY;
|
|
||||||
goto DONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Initialize the GLib type system and threads */
|
/* Initialize the GLib type system and threads */
|
||||||
#if ! GLIB_CHECK_VERSION (2, 35, 1)
|
#if ! GLIB_CHECK_VERSION (2, 35, 1)
|
||||||
g_type_init ();
|
g_type_init ();
|
||||||
|
@ -252,16 +246,23 @@ notmuch_database_open_with_config (const char *database_path,
|
||||||
notmuch->writable_xapian_db = NULL;
|
notmuch->writable_xapian_db = NULL;
|
||||||
notmuch->atomic_nesting = 0;
|
notmuch->atomic_nesting = 0;
|
||||||
notmuch->view = 1;
|
notmuch->view = 1;
|
||||||
|
|
||||||
|
if (! (notmuch->xapian_path = talloc_asprintf (notmuch, "%s/%s", notmuch_path, "xapian"))) {
|
||||||
|
message = strdup ("Out of memory\n");
|
||||||
|
status = NOTMUCH_STATUS_OUT_OF_MEMORY;
|
||||||
|
goto DONE;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
std::string last_thread_id;
|
std::string last_thread_id;
|
||||||
std::string last_mod;
|
std::string last_mod;
|
||||||
|
|
||||||
if (mode == NOTMUCH_DATABASE_MODE_READ_WRITE) {
|
if (mode == NOTMUCH_DATABASE_MODE_READ_WRITE) {
|
||||||
notmuch->writable_xapian_db = new Xapian::WritableDatabase (xapian_path,
|
notmuch->writable_xapian_db = new Xapian::WritableDatabase (notmuch->xapian_path,
|
||||||
DB_ACTION);
|
DB_ACTION);
|
||||||
notmuch->xapian_db = notmuch->writable_xapian_db;
|
notmuch->xapian_db = notmuch->writable_xapian_db;
|
||||||
} else {
|
} else {
|
||||||
notmuch->xapian_db = new Xapian::Database (xapian_path);
|
notmuch->xapian_db = new Xapian::Database (notmuch->xapian_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check version. As of database version 3, we represent
|
/* Check version. As of database version 3, we represent
|
||||||
|
|
Loading…
Reference in a new issue