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

[PATCH 2/3] Introduce a global level warn() function.

From
Shawn O. Pearce <spearce@spearce.org>
Date
Dec 22, 2006, 00:48 UTC
Message-ID
<20061222004832.GB14789@spearce.org>
In-Reply-To
<be6b1443171482e1930bd7744a0218db0c03d611.1166748450.git.spearce@spearce.org>

Like the existing error() function the new warn() function can be used to describe a situation that probably should not be occuring, but which the user (and Git) can continue to work around without running into too many problems.

An example situation is a bad commit SHA1 found in a reflog. Attempting to read this record out of the reflog isn't really an error as we have skipped over it in the past.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
---
 git-compat-util.h |    2 ++
 usage.c           |   19 +++++++++++++++++++
 2 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/git-compat-util.h b/git-compat-util.h
index 41fa7f6..304cdbf 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -71,10 +71,12 @@
 extern void usage(const char *err) NORETURN;
 extern void die(const char *err, ...) NORETURN __attribute__((format (printf, 1, 2)));
 extern int error(const char *err, ...) __attribute__((format (printf, 1, 2)));
+extern void warn(const char *err, ...) __attribute__((format (printf, 1, 2)));
 
 extern void set_usage_routine(void (*routine)(const char *err) NORETURN);
 extern void set_die_routine(void (*routine)(const char *err, va_list params) NORETURN);
 extern void set_error_routine(void (*routine)(const char *err, va_list params));
+extern void set_warn_routine(void (*routine)(const char *warn, va_list params));
 
 #ifdef NO_MMAP
 
diff --git a/usage.c b/usage.c
index 52c2e96..4dc5c77 100644
--- a/usage.c
+++ b/usage.c
@@ -29,12 +29,17 @@ static void error_builtin(const char *err, va_list params)
 	report("error: ", err, params);
 }
 
+static void warn_builtin(const char *warn, va_list params)
+{
+	report("warning: ", warn, params);
+}
 
 /* If we are in a dlopen()ed .so write to a global variable would segfault
  * (ugh), so keep things static. */
 static void (*usage_routine)(const char *err) NORETURN = usage_builtin;
 static void (*die_routine)(const char *err, va_list params) NORETURN = die_builtin;
 static void (*error_routine)(const char *err, va_list params) = error_builtin;
+static void (*warn_routine)(const char *err, va_list params) = warn_builtin;
 
 void set_usage_routine(void (*routine)(const char *err) NORETURN)
 {
@@ -51,6 +56,11 @@ void set_error_routine(void (*routine)(const char *err, va_list params))
 	error_routine = routine;
 }
 
+void set_warn_routine(void (*routine)(const char *warn, va_list params))
+{
+	warn_routine = routine;
+}
+
 
 void usage(const char *err)
 {
@@ -75,3 +85,12 @@ int error(const char *err, ...)
 	va_end(params);
 	return -1;
 }
+
+void warn(const char *warn, ...)
+{
+	va_list params;
+
+	va_start(params, warn);
+	warn_routine(warn, params);
+	va_end(params);
+}
-- 
1.4.4.3.ga78a1
Next: Shawn O. Pearce
Message 1 of 9 in “Introduce a global level warn() function.”
  1. 2/3 Introduce a global level warn() function.Shawn O. Pearce, Dec 22, 2006
  2. 3/3 Don't crash during repack of a reflog with pruned commits.Shawn O. Pearce, Dec 22, 2006
  3. Junio C HamanoDec 22, 2006
  4. Shawn PearceDec 22, 2006
  5. Jakub NarebskiDec 22, 2006
  6. Shawn PearceDec 22, 2006
  7. Shawn PearceDec 22, 2006
  8. Junio C HamanoDec 22, 2006
  9. Shawn PearceDec 22, 2006

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.