@@ -186,18 +186,24 @@ int load_idx(const char *path, const unsigned int hashsz, void *idx_map,
return 0;
}
+static char *pack_name_to_idx(const char *pack_name)
+{
+ size_t len;
+
+ if (!strip_suffix(pack_name, ".pack", &len))
+ BUG("pack_name does not end in .pack");
+ return xstrfmt("%.*s.idx", (int)len, pack_name);
+}
+
int open_pack_index(struct packed_git *p)
{
char *idx_name;
- size_t len;
int ret;
if (p->index_data)
return 0;
- if (!strip_suffix(p->pack_name, ".pack", &len))
- BUG("pack_name does not end in .pack");
- idx_name = xstrfmt("%.*s.idx", (int)len, p->pack_name);
+ idx_name = pack_name_to_idx(p->pack_name);
ret = check_packed_git_idx(idx_name, p);
free(idx_name);
return ret;
When we open a pack .idx, we have to convert the "foo.pack" name stored in the packed_git struct to "foo.idx". This isn't too complicated, but we do encode some policy in the form of a BUG(). Let's pull this into its own function so it can be reused. Signed-off-by: Jeff King <peff@peff.net> --- packfile.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-)