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

[PATCH 30/36] streaming: convert istream internals to struct object_id

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

Convert the various open_istream variants to take a pointer to struct object_id. Introduce a temporary, which will be removed later, to work around the fact that lookup_replace_object still returns a pointer to unsigned char.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 streaming.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/streaming.c b/streaming.c
index 344678e95f..3f4be1ea2c 100644
--- a/streaming.c
+++ b/streaming.c
@@ -14,7 +14,7 @@ enum input_source {
 
 typedef int (*open_istream_fn)(struct git_istream *,
 			       struct object_info *,
-			       const unsigned char *,
+			       const struct object_id *,
 			       enum object_type *);
 typedef int (*close_istream_fn)(struct git_istream *);
 typedef ssize_t (*read_istream_fn)(struct git_istream *, char *, size_t);
@@ -27,7 +27,7 @@ struct stream_vtbl {
 #define open_method_decl(name) \
 	int open_istream_ ##name \
 	(struct git_istream *st, struct object_info *oi, \
-	 const unsigned char *sha1, \
+	 const struct object_id *oid, \
 	 enum object_type *type)
 
 #define close_method_decl(name) \
@@ -142,13 +142,16 @@ struct git_istream *open_istream(const struct object_id *oid,
 	struct object_info oi = OBJECT_INFO_INIT;
 	const unsigned char *real = lookup_replace_object(oid->hash);
 	enum input_source src = istream_source(real, type, &oi);
+	struct object_id realoid;
+
+	hashcpy(realoid.hash, real);
 
 	if (src < 0)
 		return NULL;
 
 	st = xmalloc(sizeof(*st));
-	if (open_istream_tbl[src](st, &oi, real, type)) {
-		if (open_istream_incore(st, &oi, real, type)) {
+	if (open_istream_tbl[src](st, &oi, &realoid, type)) {
+		if (open_istream_incore(st, &oi, &realoid, type)) {
 			free(st);
 			return NULL;
 		}
@@ -338,7 +341,7 @@ static struct stream_vtbl loose_vtbl = {
 
 static open_method_decl(loose)
 {
-	st->u.loose.mapped = map_sha1_file(sha1, &st->u.loose.mapsize);
+	st->u.loose.mapped = map_sha1_file(oid->hash, &st->u.loose.mapsize);
 	if (!st->u.loose.mapped)
 		return -1;
 	if ((unpack_sha1_header(&st->z,
@@ -489,7 +492,7 @@ static struct stream_vtbl incore_vtbl = {
 
 static open_method_decl(incore)
 {
-	st->u.incore.buf = read_sha1_file_extended(sha1, type, &st->size, 0);
+	st->u.incore.buf = read_sha1_file_extended(oid->hash, type, &st->size, 0);
 	st->u.incore.read_ptr = 0;
 	st->vtbl = &incore_vtbl;
 
Previous: brian m. carlsonNext: brian m. carlson
Message 21 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.