diff options
| author | David Bremner <david@tethera.net> | 2021-02-13 13:17:52 -0400 |
|---|---|---|
| committer | David Bremner <david@tethera.net> | 2021-03-27 09:26:14 -0300 |
| commit | 0c6db22930b58fcea972e71b45f7ea0e6055ed20 (patch) | |
| tree | 95a5ef2b6d5844c1edb88b73fb8e1eb1545976a0 | |
| parent | 2fc40e24de4fb06428273e6f55ebd72faabde778 (diff) | |
lib/config: add notmuch_config_get_values_string
This is to support the less common (at least in the notmuch codebase)
case of accessing a ;-delimited list config value with an arbitrary
string key.
| -rw-r--r-- | lib/config.cc | 14 | ||||
| -rw-r--r-- | lib/notmuch.h | 17 | ||||
| -rwxr-xr-x | test/T590-libconfig.sh | 23 |
3 files changed, 49 insertions, 5 deletions
diff --git a/lib/config.cc b/lib/config.cc index 8bd3c35a..24418f98 100644 --- a/lib/config.cc +++ b/lib/config.cc @@ -261,13 +261,19 @@ _notmuch_config_load_from_database (notmuch_database_t *notmuch) notmuch_config_values_t * notmuch_config_get_values (notmuch_database_t *notmuch, notmuch_config_key_t key) { - notmuch_config_values_t *values = NULL; - bool ok = false; - const char *key_str = _notmuch_config_key_to_string (key); if (! key_str) - goto DONE; + return NULL; + + return notmuch_config_get_values_string (notmuch, key_str); +} + +notmuch_config_values_t * +notmuch_config_get_values_string (notmuch_database_t *notmuch, const char *key_str) +{ + notmuch_config_values_t *values = NULL; + bool ok = false; values = talloc (notmuch, notmuch_config_values_t); if (unlikely (! values)) diff --git a/lib/notmuch.h b/lib/notmuch.h index da556e50..dd3d06a1 100644 --- a/lib/notmuch.h +++ b/lib/notmuch.h @@ -2494,7 +2494,6 @@ notmuch_config_list_move_to_next (notmuch_config_list_t *config_list); void notmuch_config_list_destroy (notmuch_config_list_t *config_list); - /** * Configuration keys known to libnotmuch */ @@ -2566,6 +2565,22 @@ notmuch_config_values_t * notmuch_config_get_values (notmuch_database_t *notmuch, notmuch_config_key_t key); /** + * Returns an iterator for a ';'-delimited list of configuration values + * + * These values reflect all configuration information given at the + * time the database was opened. + * + * @param[in] notmuch database + * @param[in] key configuration key + * + * @since libnotmuch 5.4 (notmuch 0.32) + * + * @retval NULL in case of error. + */ +notmuch_config_values_t * +notmuch_config_get_values_string (notmuch_database_t *notmuch, const char *key); + +/** * Is the given 'config_values' iterator pointing at a valid element. * * @param[in] values iterator diff --git a/test/T590-libconfig.sh b/test/T590-libconfig.sh index dc9964cf..edbba6c4 100755 --- a/test/T590-libconfig.sh +++ b/test/T590-libconfig.sh @@ -255,6 +255,29 @@ EOF test_expect_equal_file EXPECTED OUTPUT restore_database +test_begin_subtest "notmuch_config_get_values_string" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} ${NOTMUCH_CONFIG} %NULL% +{ + notmuch_config_values_t *values; + EXPECT0(notmuch_database_set_config (db, "test.list", "x;y;z")); + for (values = notmuch_config_get_values_string (db, "test.list"); + notmuch_config_values_valid (values); + notmuch_config_values_move_to_next (values)) + { + puts (notmuch_config_values_get (values)); + } +} +EOF +cat <<'EOF' >EXPECTED +== stdout == +x +y +z +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT +restore_database + test_begin_subtest "notmuch_config_get_values (restart)" cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} ${NOTMUCH_CONFIG} %NULL% { |
