unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* [PATCH 1/2] cli: abstract common config get/set code
@ 2013-08-18 15:20 Jani Nikula
  2013-08-18 15:20 ` [PATCH 2/2] cli: define config getters and setters using a macro Jani Nikula
  2014-01-15 13:24 ` [PATCH 1/2] cli: abstract common config get/set code David Bremner
  0 siblings, 2 replies; 5+ messages in thread
From: Jani Nikula @ 2013-08-18 15:20 UTC (permalink / raw)
  To: notmuch

Pretty straightforward abstraction similar to get/set list.
---
 notmuch-config.c |   80 ++++++++++++++++++++----------------------------------
 1 file changed, 29 insertions(+), 51 deletions(-)

diff --git a/notmuch-config.c b/notmuch-config.c
index befe9b5..305d213 100644
--- a/notmuch-config.c
+++ b/notmuch-config.c
@@ -496,6 +496,29 @@ notmuch_config_is_new (notmuch_config_t *config)
     return config->is_new;
 }
 
+static const char *
+_config_get (notmuch_config_t *config, char **field,
+	     const char *group, const char *key)
+{
+    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);
+    talloc_free (*field);
+    *field = NULL;
+}
 
 static const char **
 _config_get_list (notmuch_config_t *config,
@@ -542,85 +565,40 @@ _config_set_list (notmuch_config_t *config,
 const char *
 notmuch_config_get_database_path (notmuch_config_t *config)
 {
-    char *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;
+    return _config_get (config, &config->database_path, "database", "path");
 }
 
 void
 notmuch_config_set_database_path (notmuch_config_t *config,
 				  const char *database_path)
 {
-    g_key_file_set_string (config->key_file,
-			   "database", "path", database_path);
-
-    talloc_free (config->database_path);
-    config->database_path = NULL;
+    _config_set (config, &config->database_path, "database", "path", database_path);
 }
 
 const char *
 notmuch_config_get_user_name (notmuch_config_t *config)
 {
-    char *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;
+    return _config_get (config, &config->user_name, "user", "name");
 }
 
 void
 notmuch_config_set_user_name (notmuch_config_t *config,
 			      const char *user_name)
 {
-    g_key_file_set_string (config->key_file,
-			   "user", "name", user_name);
-
-    talloc_free (config->user_name);
-    config->user_name = NULL;
+    _config_set (config, &config->user_name, "user", "name", user_name);
 }
 
 const char *
 notmuch_config_get_user_primary_email (notmuch_config_t *config)
 {
-    char *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;
+    return _config_get (config, &config->user_primary_email, "user", "primary_email");
 }
 
 void
 notmuch_config_set_user_primary_email (notmuch_config_t *config,
 				       const char *primary_email)
 {
-    g_key_file_set_string (config->key_file,
-			   "user", "primary_email", primary_email);
-
-    talloc_free (config->user_primary_email);
-    config->user_primary_email = NULL;
+    _config_set (config, &config->user_primary_email, "user", "primary_email", primary_email);
 }
 
 const char **
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-01-15 13:29 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-18 15:20 [PATCH 1/2] cli: abstract common config get/set code Jani Nikula
2013-08-18 15:20 ` [PATCH 2/2] cli: define config getters and setters using a macro Jani Nikula
2013-08-18 18:09   ` Tomi Ollila
2014-01-15 13:29   ` David Bremner
2014-01-15 13:24 ` [PATCH 1/2] cli: abstract common config get/set code David Bremner

Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).