From: Brandon Casey Date: Mon, 03 Nov 2008 20:41:34 GMT Subject: [PATCH v2 2/3] packed_git: convert pack_local flag into a bitfield and add pack_keep Message-ID: <-RiFxYEd9Wiq2fWX74zYGUiEwrzLeoFDb1KuG3-Xo-s@cipher.nrlssc.navy.mil> In-Reply-To: From: Brandon Casey pack_keep will be set when a pack file has an associated .keep file. Signed-off-by: Brandon Casey --- This patch and the following one redo the previous 3-patch series using a bitfield as prudently suggested by Shawn. It seemed silly to keep the conversion of pack_local into a bitfield, and the introduction of pack_keep separate, so all 7 lines are in this one patch. -brandon cache.h | 3 ++- sha1_file.c | 5 +++++ 2 files changed, 7 insertions(+), 1 deletions(-) diff --git a/cache.h b/cache.h index b0edbf9..b80cb08 100644 --- a/cache.h +++ b/cache.h @@ -679,7 +679,8 @@ extern struct packed_git { int index_version; time_t mtime; int pack_fd; - int pack_local; + unsigned pack_local:1, + pack_keep:1; unsigned char sha1[20]; /* something like ".git/objects/pack/xxxxx.pack" */ char pack_name[FLEX_ARRAY]; /* more */ diff --git a/sha1_file.c b/sha1_file.c index ab2b520..f2b25bd 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -841,6 +841,11 @@ struct packed_git *add_packed_git(const char *path, int path_len, int local) return NULL; } memcpy(p->pack_name, path, path_len); + + strcpy(p->pack_name + path_len, ".keep"); + if (!access(p->pack_name, F_OK)) + p->pack_keep = 1; + strcpy(p->pack_name + path_len, ".pack"); if (stat(p->pack_name, &st) || !S_ISREG(st.st_mode)) { free(p); -- 1.6.0.3.552.g12334