builtin/repack.c: use named flags for existing_packs

We use the `util` pointer for items in the `existing_packs` string list
to indicate which packs are going to be deleted. Since that has so far
been the only use of that `util` pointer, we just set it to 0 or 1.

But we're going to add an additional state to this field in the next
patch, so prepare for that by adding a #define for the first bit so we
can more expressively inspect the flags state.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Taylor Blau 2022-05-20 19:18:08 -04:00 committed by Junio C Hamano
parent 4571324b99
commit 72263ffc32

View File

@ -22,6 +22,8 @@
#define LOOSEN_UNREACHABLE 2 #define LOOSEN_UNREACHABLE 2
#define PACK_CRUFT 4 #define PACK_CRUFT 4
#define DELETE_PACK 1
static int pack_everything; static int pack_everything;
static int delta_base_offset = 1; static int delta_base_offset = 1;
static int pack_kept_objects = -1; static int pack_kept_objects = -1;
@ -564,7 +566,7 @@ static void midx_included_packs(struct string_list *include,
} }
} else { } else {
for_each_string_list_item(item, existing_nonkept_packs) { for_each_string_list_item(item, existing_nonkept_packs) {
if (item->util) if ((uintptr_t)item->util & DELETE_PACK)
continue; continue;
string_list_insert(include, xstrfmt("%s.idx", item->string)); string_list_insert(include, xstrfmt("%s.idx", item->string));
} }
@ -1002,7 +1004,8 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
* was given) and that we will actually delete this pack * was given) and that we will actually delete this pack
* (if `-d` was given). * (if `-d` was given).
*/ */
item->util = (void*)(intptr_t)!string_list_has_string(&names, sha1); if (!string_list_has_string(&names, sha1))
item->util = (void*)(uintptr_t)((size_t)item->util | DELETE_PACK);
} }
} }
@ -1026,7 +1029,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
if (delete_redundant) { if (delete_redundant) {
int opts = 0; int opts = 0;
for_each_string_list_item(item, &existing_nonkept_packs) { for_each_string_list_item(item, &existing_nonkept_packs) {
if (!item->util) if (!((uintptr_t)item->util & DELETE_PACK))
continue; continue;
remove_redundant_pack(packdir, item->string); remove_redundant_pack(packdir, item->string);
} }