lib: add notmuch_config_get_bool

Booleans have no out of band values, so return a status for errors.
This commit is contained in:
David Bremner 2020-08-26 08:41:48 -03:00
parent 53f27aaf73
commit a4af7a2a1b
2 changed files with 45 additions and 0 deletions

View file

@ -359,6 +359,32 @@ _notmuch_config_load_from_file (notmuch_database_t *notmuch,
return status; return status;
} }
notmuch_status_t
notmuch_config_get_bool (notmuch_database_t *notmuch, notmuch_config_key_t key, notmuch_bool_t *val)
{
const char *key_string, *val_string;
key_string = _notmuch_config_key_to_string (key);
if (! key_string) {
return NOTMUCH_STATUS_ILLEGAL_ARGUMENT;
}
val_string = _notmuch_string_map_get (notmuch->config, key_string);
if (! val_string) {
*val = FALSE;
return NOTMUCH_STATUS_SUCCESS;
}
if (strcase_equal (val_string, "false") || strcase_equal (val_string, "no"))
*val = FALSE;
else if (strcase_equal (val_string, "true") || strcase_equal (val_string, "yes"))
*val = TRUE;
else
return NOTMUCH_STATUS_ILLEGAL_ARGUMENT;
return NOTMUCH_STATUS_SUCCESS;
}
static const char * static const char *
_notmuch_config_key_to_string (notmuch_config_key_t key) { _notmuch_config_key_to_string (notmuch_config_key_t key) {
switch (key) { switch (key) {

View file

@ -2532,6 +2532,25 @@ notmuch_config_values_start (notmuch_config_values_t *values);
void void
notmuch_config_values_destroy (notmuch_config_values_t *values); notmuch_config_values_destroy (notmuch_config_values_t *values);
/**
* get a configuration value from an open database as Boolean
*
* This value reflects all configuration information given at the time
* the database was opened.
*
* @param[in] notmuch database
* @param[in] key configuration key
* @param[out] val configuration value, converted to Boolean
*
* @since libnotmuch 5.4 (notmuch 0.32)
*
* @retval #NOTMUCH_STATUS_ILLEGAL_ARGUMENT if either key is unknown
* or the corresponding value does not convert to Boolean.
*/
notmuch_status_t
notmuch_config_get_bool (notmuch_database_t *notmuch,
notmuch_config_key_t key,
notmuch_bool_t *val);
/** /**
* get the current default indexing options for a given database. * get the current default indexing options for a given database.
* *