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

[PATCH 29/36] tree-walk: convert get_tree_entry_follow_symlinks internals to object_id

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
Feb 19, 2018, 22:59 UTC
Message-ID
<20180219225927.386065-30-sandals@crustytoothpaste.net>
In-Reply-To
<20180219225927.386065-1-sandals@crustytoothpaste.net>

Convert the internals of this function to use struct object_id. This is one of the last remaining callers of read_sha1_file_extended that has not been converted yet.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 tree-walk.c | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/tree-walk.c b/tree-walk.c
index 63a87ed666..521defdaa2 100644
--- a/tree-walk.c
+++ b/tree-walk.c
@@ -583,14 +583,14 @@ enum follow_symlinks_result get_tree_entry_follow_symlinks(unsigned char *tree_s
 	struct dir_state *parents = NULL;
 	size_t parents_alloc = 0;
 	size_t i, parents_nr = 0;
-	unsigned char current_tree_sha1[20];
+	struct object_id current_tree_oid;
 	struct strbuf namebuf = STRBUF_INIT;
 	struct tree_desc t;
 	int follows_remaining = GET_TREE_ENTRY_FOLLOW_SYMLINKS_MAX_LINKS;
 
 	init_tree_desc(&t, NULL, 0UL);
 	strbuf_addstr(&namebuf, name);
-	hashcpy(current_tree_sha1, tree_sha1);
+	hashcpy(current_tree_oid.hash, tree_sha1);
 
 	while (1) {
 		int find_result;
@@ -599,22 +599,22 @@ enum follow_symlinks_result get_tree_entry_follow_symlinks(unsigned char *tree_s
 
 		if (!t.buffer) {
 			void *tree;
-			unsigned char root[20];
+			struct object_id root;
 			unsigned long size;
-			tree = read_object_with_reference(current_tree_sha1,
+			tree = read_object_with_reference(current_tree_oid.hash,
 							  tree_type, &size,
-							  root);
+							  root.hash);
 			if (!tree)
 				goto done;
 
 			ALLOC_GROW(parents, parents_nr + 1, parents_alloc);
 			parents[parents_nr].tree = tree;
 			parents[parents_nr].size = size;
-			hashcpy(parents[parents_nr].sha1, root);
+			hashcpy(parents[parents_nr].sha1, root.hash);
 			parents_nr++;
 
 			if (namebuf.buf[0] == '\0') {
-				hashcpy(result, root);
+				hashcpy(result, root.hash);
 				retval = FOUND;
 				goto done;
 			}
@@ -671,14 +671,14 @@ enum follow_symlinks_result get_tree_entry_follow_symlinks(unsigned char *tree_s
 
 		/* Look up the first (or only) path component in the tree. */
 		find_result = find_tree_entry(&t, namebuf.buf,
-					      current_tree_sha1, mode);
+					      current_tree_oid.hash, mode);
 		if (find_result) {
 			goto done;
 		}
 
 		if (S_ISDIR(*mode)) {
 			if (!remainder) {
-				hashcpy(result, current_tree_sha1);
+				hashcpy(result, current_tree_oid.hash);
 				retval = FOUND;
 				goto done;
 			}
@@ -688,7 +688,7 @@ enum follow_symlinks_result get_tree_entry_follow_symlinks(unsigned char *tree_s
 				      1 + first_slash - namebuf.buf);
 		} else if (S_ISREG(*mode)) {
 			if (!remainder) {
-				hashcpy(result, current_tree_sha1);
+				hashcpy(result, current_tree_oid.hash);
 				retval = FOUND;
 			} else {
 				retval = NOT_DIR;
@@ -714,7 +714,7 @@ enum follow_symlinks_result get_tree_entry_follow_symlinks(unsigned char *tree_s
 			 */
 			retval = DANGLING_SYMLINK;
 
-			contents = read_sha1_file(current_tree_sha1, &type,
+			contents = read_sha1_file(current_tree_oid.hash, &type,
 						  &link_len);
 
 			if (!contents)
Previous: brian m. carlsonNext: brian m. carlson
Message 13 of 39 in “object_id part 12”
  1. 00/36 object_id part 12brian m. carlson, Feb 19, 2018
  2. 01/36 bulk-checkin: convert index_bulk_checkin to struct object_idbrian m. carlson, Feb 19, 2018
  3. 02/36 builtin/write-tree: convert to struct object_idbrian m. carlson, Feb 19, 2018
  4. 03/36 cache-tree: convert write_*_as_tree to object_idbrian m. carlson, Feb 19, 2018
  5. 07/36 ref-filter: convert grab_objectname to struct object_idbrian m. carlson, Feb 19, 2018
  6. 13/36 replace_object: convert struct replace_object to object_idbrian m. carlson, Feb 19, 2018
  7. 14/36 builtin/mktag: convert to struct object_idbrian m. carlson, Feb 19, 2018
  8. 18/36 sha1_file: convert read_loose_object to use struct object_idbrian m. carlson, Feb 19, 2018
  9. 20/36 streaming: convert open_istream to use struct object_idbrian m. carlson, Feb 19, 2018
  10. 21/36 builtin/mktree: convert to struct object_idbrian m. carlson, Feb 19, 2018
  11. 24/36 packfile: convert unpack_entry to struct object_idbrian m. carlson, Feb 19, 2018
  12. 22/36 sha1_file: convert assert_sha1_type to object_idbrian m. carlson, Feb 19, 2018
  13. 29/36 tree-walk: convert get_tree_entry_follow_symlinks internals to object_idbrian m. carlson, Feb 19, 2018
  14. 31/36 tree-walk: convert tree entry functions to object_idbrian m. carlson, Feb 19, 2018
  15. 32/36 sha1_file: convert read_object_with_reference to object_idbrian m. carlson, Feb 19, 2018
  16. 35/36 sha1_file: introduce a constant for max header lengthbrian m. carlson, Feb 19, 2018
  17. 33/36 sha1_file: convert read_sha1_file to struct object_idbrian m. carlson, Feb 19, 2018
  18. 34/36 Convert lookup_replace_object to struct object_idbrian m. carlson, Feb 19, 2018
  19. 23/36 sha1_file: convert retry_bad_packed_offset to struct object_idbrian m. carlson, Feb 19, 2018
  20. 28/36 builtin/notes: convert static functions to object_idbrian m. carlson, Feb 19, 2018
  21. 30/36 streaming: convert istream internals to struct object_idbrian m. carlson, Feb 19, 2018
  22. 36/36 convert: convert to struct object_idbrian m. carlson, Feb 19, 2018
  23. 25/36 Convert remaining callers of sha1_object_info_extended to object_idbrian m. carlson, Feb 19, 2018
  24. 26/36 sha1_file: convert sha1_object_info* to object_idbrian m. carlson, Feb 19, 2018
  25. 27/36 builtin/fmt-merge-msg: convert remaining code to object_idbrian m. carlson, Feb 19, 2018
  26. 19/36 sha1_file: convert check_sha1_signature to struct object_idbrian m. carlson, Feb 19, 2018
  27. 17/36 builtin/index-pack: convert struct ref_delta_entry to object_idbrian m. carlson, Feb 19, 2018
  28. 06/36 tree: convert read_tree_recursive to struct object_idbrian m. carlson, Feb 19, 2018
  29. 15/36 archive: convert write_archive_entry_fn_t to object_idbrian m. carlson, Feb 19, 2018
  30. 16/36 archive: convert sha1_file_to_archive to struct object_idbrian m. carlson, Feb 19, 2018
  31. 09/36 wt-status: convert struct wt_status_state to object_idbrian m. carlson, Feb 19, 2018
  32. 12/36 send-pack: convert remaining functions to struct object_idbrian m. carlson, Feb 19, 2018
  33. 08/36 strbuf: convert strbuf_add_unique_abbrev to use struct object_idbrian m. carlson, Feb 19, 2018
  34. 05/36 resolve-undo: convert struct resolve_undo_info to object_idbrian m. carlson, Feb 19, 2018
  35. 04/36 cache-tree: convert remnants to struct object_idbrian m. carlson, Feb 19, 2018
  36. 10/36 Convert find_unique_abbrev* to struct object_idbrian m. carlson, Feb 19, 2018
  37. 11/36 http-walker: convert struct object_request to use struct object_idbrian m. carlson, Feb 19, 2018
  38. Junio C HamanoFeb 21, 2018
  39. brian m. carlsonFeb 22, 2018

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.