[PATCH 1/3] packed_git: convert pack_local flag into generic bit mask
From: <hidden>
Date: 2016-06-15 22:45:34
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Brandon Casey <redacted>
This converts the pack_local flag of the packed_git structure into a generic
bit mask and introduces a PACK_LOCAL mask and an ispacklocal() access macro.
So instead of this:
if (p->pack_local)
do_something
you would do this:
if (ispacklocal(p))
do_something
This is in preparation for adding a flag indicating whether a .keep file is
present.
Signed-off-by: Brandon Casey <redacted>
---
builtin-count-objects.c | 2 +-
builtin-gc.c | 2 +-
builtin-pack-objects.c | 2 +-
cache.h | 5 ++++-
pack-redundant.c | 4 ++--
server-info.c | 4 ++--
sha1_file.c | 5 +++--
7 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/builtin-count-objects.c b/builtin-count-objects.c
index ab35b65..3f981d6 100644
--- a/builtin-count-objects.c
+++ b/builtin-count-objects.c@@ -108,7 +108,7 @@ int cmd_count_objects(int argc, const char **argv, const char *prefix) if (!packed_git) prepare_packed_git(); for (p = packed_git; p; p = p->next) { - if (!p->pack_local) + if (!ispacklocal(p)) continue; if (open_pack_index(p)) continue;
diff --git a/builtin-gc.c b/builtin-gc.c
index 7af65bb..0473158 100644
--- a/builtin-gc.c
+++ b/builtin-gc.c@@ -135,7 +135,7 @@ static int too_many_packs(void) size_t len; int keep; - if (!p->pack_local) + if (!ispacklocal(p)) continue; len = strlen(p->pack_name); if (PATH_MAX <= len + 1)
diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c
index 59c30d1..6a8b9bf 100644
--- a/builtin-pack-objects.c
+++ b/builtin-pack-objects.c@@ -701,7 +701,7 @@ static int add_object_entry(const unsigned char *sha1, enum object_type type, break; if (incremental) return 0; - if (local && !p->pack_local) + if (local && !ispacklocal(p)) return 0; } }
diff --git a/cache.h b/cache.h
index b0edbf9..0cb9350 100644
--- a/cache.h
+++ b/cache.h@@ -679,12 +679,15 @@ extern struct packed_git { int index_version; time_t mtime; int pack_fd; - int pack_local; + unsigned int flags; unsigned char sha1[20]; /* something like ".git/objects/pack/xxxxx.pack" */ char pack_name[FLEX_ARRAY]; /* more */ } *packed_git; +#define PACK_LOCAL 1 +#define ispacklocal(p) ((p)->flags & PACK_LOCAL) + struct pack_entry { off_t offset; unsigned char sha1[20];
diff --git a/pack-redundant.c b/pack-redundant.c
index 25b81a4..964f18f 100644
--- a/pack-redundant.c
+++ b/pack-redundant.c@@ -544,7 +544,7 @@ static struct pack_list * add_pack(struct packed_git *p) unsigned long off = 0, step; const unsigned char *base; - if (!p->pack_local && !(alt_odb || verbose)) + if (!ispacklocal(p) && !(alt_odb || verbose)) return NULL; l.pack = p;
@@ -562,7 +562,7 @@ static struct pack_list * add_pack(struct packed_git *p) } /* this list will be pruned in cmp_two_packs later */ l.unique_objects = llist_copy(l.all_objects); - if (p->pack_local) + if (ispacklocal(p)) return pack_list_insert(&local_packs, &l); else return pack_list_insert(&altodb_packs, &l);
diff --git a/server-info.c b/server-info.c
index c1c073b..2eb20f5 100644
--- a/server-info.c
+++ b/server-info.c@@ -168,14 +168,14 @@ static void init_pack_info(const char *infofile, int force) /* we ignore things on alternate path since they are * not available to the pullers in general. */ - if (!p->pack_local) + if (!ispacklocal(p)) continue; i++; } num_pack = i; info = xcalloc(num_pack, sizeof(struct pack_info *)); for (i = 0, p = packed_git; p; p = p->next) { - if (!p->pack_local) + if (!ispacklocal(p)) continue; info[i] = xcalloc(1, sizeof(struct pack_info)); info[i]->p = p;
diff --git a/sha1_file.c b/sha1_file.c
index ab2b520..e4141c9 100644
--- a/sha1_file.c
+++ b/sha1_file.c@@ -851,7 +851,8 @@ struct packed_git *add_packed_git(const char *path, int path_len, int local) * actually mapping the pack file. */ p->pack_size = st.st_size; - p->pack_local = local; + if (local) + p->flags |= PACK_LOCAL; p->mtime = st.st_mtime; if (path_len < 40 || get_sha1_hex(path + path_len - 40, p->sha1)) hashclr(p->sha1);
@@ -941,7 +942,7 @@ static int sort_pack(const void *a_, const void *b_) * remote ones could be on a network mounted filesystem. * Favor local ones for these reasons. */ - st = a->pack_local - b->pack_local; + st = ispacklocal(a) - ispacklocal(b); if (st) return -st;
--
1.6.0.2.588.g3102