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

[PATCH v2 08/21] fsck: convert init_skiplist to struct object_id

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
Mar 26, 2017, 16:01 UTC
Message-ID
<20170326160143.769630-9-sandals@crustytoothpaste.net>
In-Reply-To
<20170326160143.769630-1-sandals@crustytoothpaste.net>

Convert a hardcoded constant buffer size to a use of GIT_MAX_HEXSZ, and use parse_oid_hex to reduce the dependency on the size of the hash. This function is a caller of sha1_array_append, which will be converted later.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 fsck.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/fsck.c b/fsck.c
index 939792752b..aff4ae6fd4 100644
--- a/fsck.c
+++ b/fsck.c
@@ -134,8 +134,8 @@ static void init_skiplist(struct fsck_options *options, const char *path)
 {
 	static struct sha1_array skiplist = SHA1_ARRAY_INIT;
 	int sorted, fd;
-	char buffer[41];
-	unsigned char sha1[20];
+	char buffer[GIT_MAX_HEXSZ + 1];
+	struct object_id oid;
 
 	if (options->skiplist)
 		sorted = options->skiplist->sorted;
@@ -148,17 +148,18 @@ static void init_skiplist(struct fsck_options *options, const char *path)
 	if (fd < 0)
 		die("Could not open skip list: %s", path);
 	for (;;) {
+		const char *p;
 		int result = read_in_full(fd, buffer, sizeof(buffer));
 		if (result < 0)
 			die_errno("Could not read '%s'", path);
 		if (!result)
 			break;
-		if (get_sha1_hex(buffer, sha1) || buffer[40] != '\n')
+		if (parse_oid_hex(buffer, &oid, &p) || *p != '\n')
 			die("Invalid SHA-1: %s", buffer);
-		sha1_array_append(&skiplist, sha1);
+		sha1_array_append(&skiplist, oid.hash);
 		if (sorted && skiplist.nr > 1 &&
 				hashcmp(skiplist.sha1[skiplist.nr - 2],
-					sha1) > 0)
+					oid.hash) > 0)
 			sorted = 0;
 	}
 	close(fd);
Previous: brian m. carlsonNext: brian m. carlson
Message 2 of 40 in “object_id part 7”
  1. 00/21 object_id part 7brian m. carlson, Mar 26, 2017
  2. 08/21 fsck: convert init_skiplist to struct object_idbrian m. carlson, Mar 26, 2017
  3. 12/21 sha1_name: convert disambiguate_hint_fn to take object_idbrian m. carlson, Mar 26, 2017
  4. 16/21 Make sha1_array_append take a struct object_id *brian m. carlson, Mar 26, 2017
  5. Jeff KingMar 28, 2017
  6. Junio C HamanoMar 28, 2017
  7. brian m. carlsonMar 29, 2017
  8. Junio C HamanoMar 29, 2017
  9. brian m. carlsonMar 29, 2017
  10. 09/21 parse-options-cb: convert sha1_array_append caller to struct object_idbrian m. carlson, Mar 26, 2017
  11. 18/21 Convert sha1_array_lookup to take struct object_idbrian m. carlson, Mar 26, 2017
  12. 17/21 Convert remaining callers of sha1_array_lookup to object_idbrian m. carlson, Mar 26, 2017
  13. 10/21 test-sha1-array: convert most code to struct object_idbrian m. carlson, Mar 26, 2017
  14. 21/21 Documentation: update and rename api-sha1-array.txtbrian m. carlson, Mar 26, 2017
  15. 07/21 builtin/receive-pack: convert portions to struct object_idbrian m. carlson, Mar 26, 2017
  16. Jeff KingMar 28, 2017
  17. brian m. carlsonMar 29, 2017
  18. Jeff KingMar 30, 2017
  19. 20/21 Rename sha1_array to oid_arraybrian m. carlson, Mar 26, 2017
  20. 05/21 builtin/pull: convert portions to struct object_idbrian m. carlson, Mar 26, 2017
  21. 19/21 Convert sha1_array_for_each_unique and for_each_abbrev to object_idbrian m. carlson, Mar 26, 2017
  22. 06/21 builtin/receive-pack: fix incorrect pointer arithmeticbrian m. carlson, Mar 26, 2017
  23. Jeff KingMar 28, 2017
  24. Junio C HamanoMar 28, 2017
  25. 14/21 builtin/pull: convert to struct object_idbrian m. carlson, Mar 26, 2017
  26. 01/21 Define new hash-size constants for allocating memorybrian m. carlson, Mar 26, 2017
  27. 03/21 Convert GIT_SHA1_RAWSZ used for allocation to GIT_MAX_RAWSZbrian m. carlson, Mar 26, 2017
  28. 11/21 sha1_name: convert struct disambiguate_state to object_idbrian m. carlson, Mar 26, 2017
  29. 15/21 sha1-array: convert internal storage for struct sha1_array to object_idbrian m. carlson, Mar 26, 2017
  30. Jeff KingMar 28, 2017
  31. 13/21 submodule: convert check_for_new_submodule_commits to object_idbrian m. carlson, Mar 26, 2017
  32. 02/21 Convert GIT_SHA1_HEXSZ used for allocation to GIT_MAX_HEXSZbrian m. carlson, Mar 26, 2017
  33. 04/21 builtin/diff: convert to struct object_idbrian m. carlson, Mar 26, 2017
  34. Jeff KingMar 28, 2017
  35. brian m. carlsonMar 28, 2017
  36. Jeff KingMar 28, 2017
  37. Jeff KingMar 28, 2017
  38. Junio C HamanoMar 28, 2017
  39. Jeff KingMar 28, 2017
  40. Junio C HamanoMar 28, 2017

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.