aboutsummaryrefslogtreecommitdiff
path: root/lib/prefix.cc
diff options
context:
space:
mode:
authorDavid Bremner <david@tethera.net>2020-08-08 11:16:37 -0300
committerDavid Bremner <david@tethera.net>2021-02-06 18:56:05 -0400
commit4743e87c2c79c37208bb60d6617ef203796fc5c2 (patch)
tree5375640448e91c4bf77bb29a7d5c0791bf3ce8f1 /lib/prefix.cc
parent763445beaec906440fbdd497755718ef860b88e4 (diff)
lib: cache configuration information from database
The main goal is to allow configuration information to be temporarily overridden by a separate config file. That will require further changes not in this commit. The performance impact is unclear, and will depend on the balance between number of queries and number of distinct metadata items read on the first call to n_d_get_config.
Diffstat (limited to 'lib/prefix.cc')
-rw-r--r--lib/prefix.cc18
1 files changed, 9 insertions, 9 deletions
diff --git a/lib/prefix.cc b/lib/prefix.cc
index dd7b193d..71a76991 100644
--- a/lib/prefix.cc
+++ b/lib/prefix.cc
@@ -166,8 +166,7 @@ _notmuch_database_setup_standard_query_fields (notmuch_database_t *notmuch)
notmuch_status_t
_notmuch_database_setup_user_query_fields (notmuch_database_t *notmuch)
{
- notmuch_config_list_t *list;
- notmuch_status_t status;
+ notmuch_string_map_iterator_t *list;
notmuch->user_prefix = _notmuch_string_map_create (notmuch);
if (notmuch->user_prefix == NULL)
@@ -177,15 +176,16 @@ _notmuch_database_setup_user_query_fields (notmuch_database_t *notmuch)
if (notmuch->user_header == NULL)
return NOTMUCH_STATUS_OUT_OF_MEMORY;
- status = notmuch_database_get_config_list (notmuch, CONFIG_HEADER_PREFIX, &list);
- if (status)
- return status;
+ list = _notmuch_string_map_iterator_create (notmuch->config, CONFIG_HEADER_PREFIX, FALSE);
+ if (! list)
+ INTERNAL_ERROR ("unable to read headers from configuration");
- for (; notmuch_config_list_valid (list); notmuch_config_list_move_to_next (list)) {
+ for (; _notmuch_string_map_iterator_valid (list);
+ _notmuch_string_map_iterator_move_to_next (list)) {
prefix_t query_field;
- const char *key = notmuch_config_list_key (list)
+ const char *key = _notmuch_string_map_iterator_key (list)
+ sizeof (CONFIG_HEADER_PREFIX) - 1;
_notmuch_string_map_append (notmuch->user_prefix,
@@ -194,7 +194,7 @@ _notmuch_database_setup_user_query_fields (notmuch_database_t *notmuch)
_notmuch_string_map_append (notmuch->user_header,
key,
- notmuch_config_list_value (list));
+ _notmuch_string_map_iterator_value (list));
query_field.name = talloc_strdup (notmuch, key);
query_field.prefix = _user_prefix (notmuch, key);
@@ -204,7 +204,7 @@ _notmuch_database_setup_user_query_fields (notmuch_database_t *notmuch)
_setup_query_field_default (&query_field, notmuch);
}
- notmuch_config_list_destroy (list);
+ _notmuch_string_map_iterator_destroy (list);
return NOTMUCH_STATUS_SUCCESS;
}