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

[PATCH 06/10] add common fsck error printing function

From
MKMartin Koegler <mkoegler@auto.tuwien.ac.at>
Date
Feb 25, 2008, 21:54 UTC
Message-ID
<12039765001192-git-send-email-mkoegler@auto.tuwien.ac.at>
In-Reply-To
<12039765002397-git-send-email-mkoegler@auto.tuwien.ac.at>
Signed-off-by: Martin Koegler <mkoegler@auto.tuwien.ac.at>
---
 fsck.c |   30 ++++++++++++++++++++++++++++++
 fsck.h |    2 ++
 2 files changed, 32 insertions(+), 0 deletions(-)
diff --git a/fsck.c b/fsck.c
index 3ce33ff..a8c24a9 100644
--- a/fsck.c
+++ b/fsck.c
@@ -311,3 +311,33 @@ int fsck_object(struct object *obj, int strict, fsck_error error_func)
 	return error_func(obj, FSCK_ERROR, "unknown type '%d' (internal fsck error)",
 			  obj->type);
 }
+
+int fsck_error_function(struct object *obj, int type, const char* fmt, ...)
+{
+	va_list ap;
+	int len;
+	struct strbuf sb;
+	
+	strbuf_init(&sb, 0);
+	strbuf_addf(&sb, "object %s:", obj->sha1?sha1_to_hex(obj->sha1):"(null)");
+	
+	va_start(ap, fmt);
+	len = vsnprintf(sb.buf + sb.len, strbuf_avail(&sb), fmt, ap);
+	va_end(ap);
+	
+	if (len < 0)
+		len = 0;
+	if (len >= strbuf_avail(&sb)) {
+		strbuf_grow(&sb, len + 2);
+		va_start(ap, fmt);
+		len = vsnprintf(sb.buf + sb.len, strbuf_avail(&sb), fmt, ap);
+		va_end(ap);
+		if (len >= strbuf_avail(&sb)) {
+			die("this should not happen, your snprintf is broken");
+		}
+	}
+	
+	error(sb.buf);
+	strbuf_release(&sb);
+	return 1;
+}
diff --git a/fsck.h b/fsck.h
index a5d60d0..188c84b 100644
--- a/fsck.h
+++ b/fsck.h
@@ -17,6 +17,8 @@ typedef int (*fsck_walk_func)(struct object *obj, int type, void *data);
 /* callback for fsck_object, type is FSCK_ERROR or FSCK_WARN */
 typedef int (*fsck_error)(struct object *obj, int type, const char *err, ...);
 
+int fsck_error_function(struct object *obj, int type, const char* fmt, ...);
+
 /* descend in all linked child objects
  * the return value is:
  *    -1	error in processing the object
-- 
1.5.4.3.g3c5f
Previous: Martin KoeglerNext: Martin Koegler
Message 6 of 13 in “add generic, type aware object chain walker”
  1. 01/10 add generic, type aware object chain walkerMartin Koegler, Feb 25, 2008
  2. 02/10 builtin-fsck: move away from object-refs to fsck_walkMartin Koegler, Feb 25, 2008
  3. 03/10 Remove unused object-ref codeMartin Koegler, Feb 25, 2008
  4. 04/10 builtin-fsck: reports missing parent commitsMartin Koegler, Feb 25, 2008
  5. 05/10 builtin-fsck: move common object checking code to fsck.cMartin Koegler, Feb 25, 2008
  6. 06/10 add common fsck error printing functionMartin Koegler, Feb 25, 2008
  7. 07/10 unpack-object: cache for non written objectsMartin Koegler, Feb 25, 2008
  8. 08/10 unpack-objects: prevent writing of inconsistent objectsMartin Koegler, Feb 25, 2008
  9. 09/10 index-pack: introduce checking modeMartin Koegler, Feb 25, 2008
  10. 10/10 receive-pack: use strict mode for unpacking objectsMartin Koegler, Feb 25, 2008
  11. Junio C HamanoFeb 26, 2008
  12. Martin KoeglerFeb 26, 2008
  13. Junio C HamanoFeb 27, 2008

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.