On Thu, Jun 7, 2018 at 4:03 PM, Derrick Stolee <stolee@xxxxxxxxx> wrote: > @@ -114,14 +119,56 @@ int write_midx_file(const char *object_dir) > midx_name); > } > > + strbuf_addf(&pack_dir, "%s/pack", object_dir); > + dir = opendir(pack_dir.buf); > + > + if (!dir) { > + error_errno("unable to open pack directory: %s", > + pack_dir.buf); _() > + strbuf_release(&pack_dir); > + return 1; > + } > + > + strbuf_addch(&pack_dir, '/'); > + pack_dir_len = pack_dir.len; > + ALLOC_ARRAY(packs, alloc_packs); > + while ((de = readdir(dir)) != NULL) { > + if (is_dot_or_dotdot(de->d_name)) > + continue; > + > + if (ends_with(de->d_name, ".idx")) { > + ALLOC_GROW(packs, nr_packs + 1, alloc_packs); > + > + strbuf_setlen(&pack_dir, pack_dir_len); > + strbuf_addstr(&pack_dir, de->d_name); > + > + packs[nr_packs] = add_packed_git(pack_dir.buf, > + pack_dir.len, > + 0); > + if (!packs[nr_packs]) > + warning("failed to add packfile '%s'", > + pack_dir.buf); > + else > + nr_packs++; > + } > + } > + closedir(dir); > + strbuf_release(&pack_dir); Can we refactor and share this scanning-for-packs code with packfile.c? I'm pretty sure it does something similar in there. > - write_midx_header(f, num_chunks, num_packs); > + write_midx_header(f, num_chunks, nr_packs); Hmm.. could have stuck to one name from the beginning... -- Duy