mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-28 13:44:12 +01:00
cli: abstract common config get/set code
Pretty straightforward abstraction similar to get/set list.
This commit is contained in:
parent
075d53dde5
commit
3b36898f0b
1 changed files with 35 additions and 51 deletions
|
@ -496,6 +496,32 @@ notmuch_config_is_new (notmuch_config_t *config)
|
||||||
return config->is_new;
|
return config->is_new;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *
|
||||||
|
_config_get (notmuch_config_t *config, char **field,
|
||||||
|
const char *group, const char *key)
|
||||||
|
{
|
||||||
|
/* read from config file and cache value, if not cached already */
|
||||||
|
if (*field == NULL) {
|
||||||
|
char *value;
|
||||||
|
value = g_key_file_get_string (config->key_file, group, key, NULL);
|
||||||
|
if (value) {
|
||||||
|
*field = talloc_strdup (config, value);
|
||||||
|
free (value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return *field;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_config_set (notmuch_config_t *config, char **field,
|
||||||
|
const char *group, const char *key, const char *value)
|
||||||
|
{
|
||||||
|
g_key_file_set_string (config->key_file, group, key, value);
|
||||||
|
|
||||||
|
/* drop the cached value */
|
||||||
|
talloc_free (*field);
|
||||||
|
*field = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static const char **
|
static const char **
|
||||||
_config_get_list (notmuch_config_t *config,
|
_config_get_list (notmuch_config_t *config,
|
||||||
|
@ -504,6 +530,7 @@ _config_get_list (notmuch_config_t *config,
|
||||||
{
|
{
|
||||||
assert(outlist);
|
assert(outlist);
|
||||||
|
|
||||||
|
/* read from config file and cache value, if not cached already */
|
||||||
if (*outlist == NULL) {
|
if (*outlist == NULL) {
|
||||||
|
|
||||||
char **inlist = g_key_file_get_string_list (config->key_file,
|
char **inlist = g_key_file_get_string_list (config->key_file,
|
||||||
|
@ -535,6 +562,8 @@ _config_set_list (notmuch_config_t *config,
|
||||||
size_t length, const char ***config_var )
|
size_t length, const char ***config_var )
|
||||||
{
|
{
|
||||||
g_key_file_set_string_list (config->key_file, group, name, list, length);
|
g_key_file_set_string_list (config->key_file, group, name, list, length);
|
||||||
|
|
||||||
|
/* drop the cached value */
|
||||||
talloc_free (*config_var);
|
talloc_free (*config_var);
|
||||||
*config_var = NULL;
|
*config_var = NULL;
|
||||||
}
|
}
|
||||||
|
@ -542,85 +571,40 @@ _config_set_list (notmuch_config_t *config,
|
||||||
const char *
|
const char *
|
||||||
notmuch_config_get_database_path (notmuch_config_t *config)
|
notmuch_config_get_database_path (notmuch_config_t *config)
|
||||||
{
|
{
|
||||||
char *path;
|
return _config_get (config, &config->database_path, "database", "path");
|
||||||
|
|
||||||
if (config->database_path == NULL) {
|
|
||||||
path = g_key_file_get_string (config->key_file,
|
|
||||||
"database", "path", NULL);
|
|
||||||
if (path) {
|
|
||||||
config->database_path = talloc_strdup (config, path);
|
|
||||||
free (path);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return config->database_path;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
notmuch_config_set_database_path (notmuch_config_t *config,
|
notmuch_config_set_database_path (notmuch_config_t *config,
|
||||||
const char *database_path)
|
const char *database_path)
|
||||||
{
|
{
|
||||||
g_key_file_set_string (config->key_file,
|
_config_set (config, &config->database_path, "database", "path", database_path);
|
||||||
"database", "path", database_path);
|
|
||||||
|
|
||||||
talloc_free (config->database_path);
|
|
||||||
config->database_path = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
notmuch_config_get_user_name (notmuch_config_t *config)
|
notmuch_config_get_user_name (notmuch_config_t *config)
|
||||||
{
|
{
|
||||||
char *name;
|
return _config_get (config, &config->user_name, "user", "name");
|
||||||
|
|
||||||
if (config->user_name == NULL) {
|
|
||||||
name = g_key_file_get_string (config->key_file,
|
|
||||||
"user", "name", NULL);
|
|
||||||
if (name) {
|
|
||||||
config->user_name = talloc_strdup (config, name);
|
|
||||||
free (name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return config->user_name;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
notmuch_config_set_user_name (notmuch_config_t *config,
|
notmuch_config_set_user_name (notmuch_config_t *config,
|
||||||
const char *user_name)
|
const char *user_name)
|
||||||
{
|
{
|
||||||
g_key_file_set_string (config->key_file,
|
_config_set (config, &config->user_name, "user", "name", user_name);
|
||||||
"user", "name", user_name);
|
|
||||||
|
|
||||||
talloc_free (config->user_name);
|
|
||||||
config->user_name = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
notmuch_config_get_user_primary_email (notmuch_config_t *config)
|
notmuch_config_get_user_primary_email (notmuch_config_t *config)
|
||||||
{
|
{
|
||||||
char *email;
|
return _config_get (config, &config->user_primary_email, "user", "primary_email");
|
||||||
|
|
||||||
if (config->user_primary_email == NULL) {
|
|
||||||
email = g_key_file_get_string (config->key_file,
|
|
||||||
"user", "primary_email", NULL);
|
|
||||||
if (email) {
|
|
||||||
config->user_primary_email = talloc_strdup (config, email);
|
|
||||||
free (email);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return config->user_primary_email;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
notmuch_config_set_user_primary_email (notmuch_config_t *config,
|
notmuch_config_set_user_primary_email (notmuch_config_t *config,
|
||||||
const char *primary_email)
|
const char *primary_email)
|
||||||
{
|
{
|
||||||
g_key_file_set_string (config->key_file,
|
_config_set (config, &config->user_primary_email, "user", "primary_email", primary_email);
|
||||||
"user", "primary_email", primary_email);
|
|
||||||
|
|
||||||
talloc_free (config->user_primary_email);
|
|
||||||
config->user_primary_email = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char **
|
const char **
|
||||||
|
|
Loading…
Reference in a new issue