* store: allow setting my-addresses

This commit is contained in:
djcb 2012-06-19 17:59:16 +03:00
parent eb6e0906bd
commit 39ff643e48
3 changed files with 35 additions and 6 deletions

View File

@ -51,7 +51,7 @@ public:
/* create a read-write MuStore */
_MuStore (const char *path, const char *contacts_path,
const char **my_addresses,
bool rebuild) {
bool rebuild) :_my_addresses(NULL) {
init (path, contacts_path, my_addresses, rebuild, false);
@ -88,7 +88,8 @@ public:
MU_WRITE_LOG ("%s: opened %s read-only", __FUNCTION__, this->path());
}
void init (const char *path, const char *contacts_path, const char **my_addresses,
void init (const char *path, const char *contacts_path,
const char **my_addresses,
bool rebuild, bool read_only) {
_batch_size = DEFAULT_BATCH_SIZE;
@ -100,16 +101,24 @@ public:
_ref_count = 1;
_version = NULL;
/* copy 'my adresses' */
_my_addresses = NULL;
set_my_addresses (my_addresses);
}
void set_my_addresses (const char **my_addresses) {
if (_my_addresses) {
mu_str_free_list (_my_addresses);
_my_addresses = NULL;
}
while (my_addresses && *my_addresses) {
_my_addresses = g_slist_prepend
(_my_addresses, g_strdup (*my_addresses));
++my_addresses;
}
}
void check_set_version () {
/* check version...*/
gchar *version;

View File

@ -58,7 +58,6 @@ mu_store_unref (MuStore *store)
{
g_return_val_if_fail (store, NULL);
if (store->unref() == 0) {
try { delete store; } MU_XAPIAN_CATCH_BLOCK;
}
@ -117,3 +116,12 @@ mu_store_database_is_locked (const gchar *xpath)
return FALSE;
}
void
mu_store_set_my_addresses (MuStore *store, const char **my_addresses)
{
g_return_if_fail (store);
store->set_my_addresses (my_addresses);
}

View File

@ -133,6 +133,18 @@ XapianDatabase* mu_store_get_read_only_database (MuStore *store);
void mu_store_set_batch_size (MuStore *store, guint batchsize);
/**
* register a char** of email addresses as 'my' addresses, ie. mark
* message that have these addresses in one of the address fields as
* 'personal' (e.g., in mu-contacts). calling this function overrides
* any 'my addresses' that were set before, using this function or
* through mu_store_new_writable
*
* @param store a valid store object
* @param my_addresses a char** of email addresses
*/
void mu_store_set_my_addresses (MuStore *store, const char **my_addresses);
/**
* get the numbers of documents in the database