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

[PATCHv3 7/9] packfile: add repository argument to unpack_entry

From
Stefan Beller <sbeller@google.com>
Date
Apr 25, 2018, 18:21 UTC
Message-ID
<20180425182106.162972-8-sbeller@google.com>
In-Reply-To
<20180425182106.162972-1-sbeller@google.com>

Add a repository argument to allow the callers of unpack_entry to be more specific about which repository to act on. This is a small mechanical change; it doesn't change the implementation to handle repositories other than the_repository yet.

As with the previous commits, use a macro to catch callers passing a repository other than the_repository at compile time.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
---
 fast-import.c | 2 +-
 pack-check.c  | 3 ++-
 packfile.c    | 7 ++++---
 packfile.h    | 3 ++-
 4 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/fast-import.c b/fast-import.c
index afe06bd7c1..b009353e93 100644
--- a/fast-import.c
+++ b/fast-import.c
@@ -1376,7 +1376,7 @@ static void *gfi_unpack_entry(
 		 */
 		p->pack_size = pack_size + the_hash_algo->rawsz;
 	}
-	return unpack_entry(p, oe->idx.offset, &type, sizep);
+	return unpack_entry(the_repository, p, oe->idx.offset, &type, sizep);
 }
 
 static const char *get_mode(const char *str, uint16_t *modep)
diff --git a/pack-check.c b/pack-check.c
index 385d964bdd..d3a57df34f 100644
--- a/pack-check.c
+++ b/pack-check.c
@@ -1,4 +1,5 @@
 #include "cache.h"
+#include "repository.h"
 #include "pack.h"
 #include "pack-revindex.h"
 #include "progress.h"
@@ -134,7 +135,7 @@ static int verify_packfile(struct packed_git *p,
 			data = NULL;
 			data_valid = 0;
 		} else {
-			data = unpack_entry(p, entries[i].offset, &type, &size);
+			data = unpack_entry(the_repository, p, entries[i].offset, &type, &size);
 			data_valid = 1;
 		}
 
diff --git a/packfile.c b/packfile.c
index 2876e04bb1..d5ac48ef18 100644
--- a/packfile.c
+++ b/packfile.c
@@ -1279,7 +1279,7 @@ static void *cache_or_unpack_entry(struct packed_git *p, off_t base_offset,
 
 	ent = get_delta_base_cache_entry(p, base_offset);
 	if (!ent)
-		return unpack_entry(p, base_offset, type, base_size);
+		return unpack_entry(the_repository, p, base_offset, type, base_size);
 
 	if (type)
 		*type = ent->type;
@@ -1485,8 +1485,9 @@ static void *read_object_the_repository(const struct object_id *oid,
 	return content;
 }
 
-void *unpack_entry(struct packed_git *p, off_t obj_offset,
-		   enum object_type *final_type, unsigned long *final_size)
+void *unpack_entry_the_repository(struct packed_git *p, off_t obj_offset,
+				  enum object_type *final_type,
+				  unsigned long *final_size)
 {
 	struct pack_window *w_curs = NULL;
 	off_t curpos = obj_offset;
diff --git a/packfile.h b/packfile.h
index bc8d840b1b..1efa57a90e 100644
--- a/packfile.h
+++ b/packfile.h
@@ -115,7 +115,8 @@ extern off_t nth_packed_object_offset(const struct packed_git *, uint32_t n);
 extern off_t find_pack_entry_one(const unsigned char *sha1, struct packed_git *);
 
 extern int is_pack_valid(struct packed_git *);
-extern void *unpack_entry(struct packed_git *, off_t, enum object_type *, unsigned long *);
+#define unpack_entry(r, p, of, ot, s) unpack_entry_##r(p, of, ot, s)
+extern void *unpack_entry_the_repository(struct packed_git *, off_t, enum object_type *, unsigned long *);
 extern unsigned long unpack_object_header_buffer(const unsigned char *buf, unsigned long len, enum object_type *type, unsigned long *sizep);
 extern unsigned long get_size_from_delta(struct packed_git *, struct pack_window **, off_t);
 extern int unpack_object_header(struct packed_git *, struct pack_window **, off_t *, unsigned long *);
-- 
2.17.0.441.gb46fe60e1d-goog
Previous: Stefan BellerNext: Jonathan Tan
Message 22 of 24 in “[PATCHv2 0/9] object store: oid_object_info is the next contender”
  1. Stefan BellerApr 24, 2018
  2. 1/9 cache.h: add repository argument to oid_object_info_extendedStefan Beller, Apr 24, 2018
  3. 2/9 cache.h: add repository argument to oid_object_infoStefan Beller, Apr 24, 2018
  4. 3/9 packfile: add repository argument to retry_bad_packed_offsetStefan Beller, Apr 24, 2018
  5. 4/9 packfile: add repository argument to packed_to_object_typeStefan Beller, Apr 24, 2018
  6. 5/9 packfile: add repository argument to packed_object_infoStefan Beller, Apr 24, 2018
  7. 9/9 cache.h: allow oid_object_info to handle arbitrary repositoriesStefan Beller, Apr 24, 2018
  8. Jonathan TanApr 24, 2018
  9. 8/9 packfile: add repository argument to cache_or_unpack_entryStefan Beller, Apr 24, 2018
  10. 7/9 packfile: add repository argument to unpack_entryStefan Beller, Apr 24, 2018
  11. 6/9 packfile: add repository argument to read_objectStefan Beller, Apr 24, 2018
  12. 9/9 cache.h: allow sha1_object_info to handle arbitrary repositoriesStefan Beller, Apr 24, 2018
  13. 0/9 object store: oid_object_info is the next contenderStefan Beller, Apr 25, 2018
  14. 1/9 cache.h: add repository argument to oid_object_info_extendedStefan Beller, Apr 25, 2018
  15. 3/9 packfile: add repository argument to retry_bad_packed_offsetStefan Beller, Apr 25, 2018
  16. 6/9 packfile: add repository argument to read_objectStefan Beller, Apr 25, 2018
  17. 9/9 cache.h: allow oid_object_info to handle arbitrary repositoriesStefan Beller, Apr 25, 2018
  18. 2/9 cache.h: add repository argument to oid_object_infoStefan Beller, Apr 25, 2018
  19. 5/9 packfile: add repository argument to packed_object_infoStefan Beller, Apr 25, 2018
  20. 4/9 packfile: add repository argument to packed_to_object_typeStefan Beller, Apr 25, 2018
  21. 8/9 packfile: add repository argument to cache_or_unpack_entryStefan Beller, Apr 25, 2018
  22. 7/9 packfile: add repository argument to unpack_entryStefan Beller, Apr 25, 2018
  23. Jonathan TanApr 25, 2018
  24. Brandon WilliamsApr 26, 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.