git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v4 1/5] pager.c: replace `git_config()` with `git_config_get_value()`

From
Tanay Abhra <tanayabh@gmail.com>
Date
Jul 30, 2014, 13:39 UTC
Message-ID
<1406727549-22334-2-git-send-email-tanayabh@gmail.com>
In-Reply-To
<1406727549-22334-1-git-send-email-tanayabh@gmail.com>

Use `git_config_get_value()` instead of `git_config()` to take advantage of the config-set API which provides a cleaner control flow.

Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
---
 pager.c | 40 +++++++++++++---------------------------
 1 file changed, 13 insertions(+), 27 deletions(-)
diff --git a/pager.c b/pager.c
index 8b5cbc5..b7eb7e7 100644
--- a/pager.c
+++ b/pager.c
@@ -6,12 +6,6 @@
 #define DEFAULT_PAGER "less"
 #endif
 
-struct pager_config {
-	const char *cmd;
-	int want;
-	char *value;
-};
-
 /*
  * This is split up from the rest of git so that we can do
  * something different on Windows.
@@ -155,30 +149,22 @@ int decimal_width(int number)
 	return width;
 }
 
-static int pager_command_config(const char *var, const char *value, void *data)
+/* returns 0 for "no pager", 1 for "use pager", and -1 for "not specified" */
+int check_pager_config(const char *cmd)
 {
-	struct pager_config *c = data;
-	if (starts_with(var, "pager.") && !strcmp(var + 6, c->cmd)) {
-		int b = git_config_maybe_bool(var, value);
+	int want = -1;
+	struct strbuf key = STRBUF_INIT;
+	const char *value = NULL;
+	strbuf_addf(&key, "pager.%s", cmd);
+	if (!git_config_get_value(key.buf, &value)) {
+		int b = git_config_maybe_bool(key.buf, value);
 		if (b >= 0)
-			c->want = b;
+			want = b;
 		else {
-			c->want = 1;
-			c->value = xstrdup(value);
+			want = 1;
+			pager_program = xstrdup(value);
 		}
 	}
-	return 0;
-}
-
-/* returns 0 for "no pager", 1 for "use pager", and -1 for "not specified" */
-int check_pager_config(const char *cmd)
-{
-	struct pager_config c;
-	c.cmd = cmd;
-	c.want = -1;
-	c.value = NULL;
-	git_config(pager_command_config, &c);
-	if (c.value)
-		pager_program = c.value;
-	return c.want;
+	strbuf_release(&key);
+	return want;
 }
-- 
1.9.0.GIT
Previous: Tanay AbhraNext: Tanay Abhra
Message 2 of 16 in “git_config callers rewritten with the new config cache API”
  1. 0/5 git_config callers rewritten with the new config cache APITanay Abhra, Jul 30, 2014
  2. 1/5 pager.c: replace `git_config()` with `git_config_get_value()`Tanay Abhra, Jul 30, 2014
  3. 2/5 notes.c: replace `git_config()` with `git_config_get_value_multi()`Tanay Abhra, Jul 30, 2014
  4. Matthieu MoyJul 30, 2014
  5. Tanay AbhraJul 30, 2014
  6. Matthieu MoyJul 30, 2014
  7. Matthieu MoyJul 31, 2014
  8. Tanay AbhraJul 31, 2014
  9. 3/5 imap-send.c: replace `git_config()` with `git_config_get_*()` familyTanay Abhra, Jul 30, 2014
  10. 4/5 branch.c: replace `git_config()` with `git_config_get_string()Tanay Abhra, Jul 30, 2014
  11. Matthieu MoyJul 30, 2014
  12. 5/5 alias.c: replace `git_config()` with `git_config_get_string()`Tanay Abhra, Jul 30, 2014
  13. Matthieu MoyJul 30, 2014
  14. Tanay AbhraJul 30, 2014
  15. Matthieu MoyJul 30, 2014
  16. Ramsay JonesJul 31, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.