lib: add _notmuch_string_map_set

This will be used (and tested) by the configuration caching code to be
added in the next commit.
This commit is contained in:
David Bremner 2020-12-20 17:10:53 -04:00
parent 8b7c09c66b
commit 763445beae
2 changed files with 23 additions and 0 deletions

View file

@ -638,6 +638,11 @@ _notmuch_string_map_append (notmuch_string_map_t *map,
const char *key, const char *key,
const char *value); const char *value);
void
_notmuch_string_map_set (notmuch_string_map_t *map,
const char *key,
const char *value);
const char * const char *
_notmuch_string_map_get (notmuch_string_map_t *map, const char *key); _notmuch_string_map_get (notmuch_string_map_t *map, const char *key);

View file

@ -143,6 +143,24 @@ bsearch_first (notmuch_string_pair_t *array, size_t len, const char *key, bool e
} }
void
_notmuch_string_map_set (notmuch_string_map_t *map,
const char *key,
const char *val)
{
notmuch_string_pair_t *pair;
/* this means that calling string_map_set invalidates iterators */
_notmuch_string_map_sort (map);
pair = bsearch_first (map->pairs, map->length, key, true);
if (! pair)
_notmuch_string_map_append (map, key, val);
else {
talloc_free (pair->value);
pair->value = talloc_strdup (map->pairs, val);
}
}
const char * const char *
_notmuch_string_map_get (notmuch_string_map_t *map, const char *key) _notmuch_string_map_get (notmuch_string_map_t *map, const char *key)
{ {