Thread (30 messages) 30 messages, 4 authors, 12d ago
COOLING12d

[PATCH v4 1/3] advice: pass the entire advice_setting to vadvise()

From: Vsevolod Myalitsin <hidden>
Date: 2026-09-10 09:11:47
Subsystem: the rest · Maintainer: Linus Torvalds

Currently, vadvise() takes the advice level and configuration key as
separate arguments. Pass the entire advice_setting structure instead.

This keeps the advice configuration together and makes it possible for
vadvise() to access additional properties of an advice setting without
changing its interface again.

Signed-off-by: Vsevolod Myalitsin <redacted>
---
 advice.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/advice.c b/advice.c
index 63bf8b0c5f..b556c8b38e 100644
--- a/advice.c
+++ b/advice.c
@@ -40,10 +40,12 @@ enum advice_level {
 	ADVICE_LEVEL_ENABLED,
 };
 
-static struct {
+struct advice_setting {
 	const char *key;
 	enum advice_level level;
-} advice_setting[] = {
+};
+
+static struct advice_setting advice_setting[] = {
 	[ADVICE_ADD_EMBEDDED_REPO]			= { "addEmbeddedRepo" },
 	[ADVICE_ADD_EMPTY_PATHSPEC]			= { "addEmptyPathspec" },
 	[ADVICE_ADD_IGNORED_FILE]			= { "addIgnoredFile" },
@@ -98,16 +100,17 @@ static const char turn_off_instructions[] =
 N_("\n"
    "Disable this message with \"git config set advice.%s false\"");
 
-static void vadvise(const char *advice, int display_instructions,
-		    const char *key, va_list params)
+static void vadvise(const char *advice,
+	const struct advice_setting *setting, va_list params)
 {
 	struct strbuf buf = STRBUF_INIT;
 	const char *cp, *np;
 
 	strbuf_vaddf(&buf, advice, params);
 
-	if (display_instructions)
-		strbuf_addf(&buf, turn_off_instructions, key);
+	if (setting && setting->level == ADVICE_LEVEL_NONE) {
+		strbuf_addf(&buf, turn_off_instructions,
+					setting->key);
 
 	for (cp = buf.buf; *cp; cp = np) {
 		np = strchrnul(cp, '\n');
@@ -126,7 +129,7 @@ void advise(const char *advice, ...)
 {
 	va_list params;
 	va_start(params, advice);
-	vadvise(advice, 0, "", params);
+	vadvise(advice, NULL, params);
 	va_end(params);
 }
 
@@ -155,8 +158,7 @@ void advise_if_enabled(enum advice_type type, const char *advice, ...)
 		return;
 
 	va_start(params, advice);
-	vadvise(advice, !advice_setting[type].level, advice_setting[type].key,
-		params);
+	vadvise(advice, &advice_setting[type], params);
 	va_end(params);
 }
 
-- 
2.50.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help