tag: add repository argument to parse_tag_buffer

Add a repository argument to allow the callers of parse_tag_buffer
to be more specific about which repository to act on. This is a small
mechanical change; it doesn't change the implementation to handle
repositories other than the_repository yet.

As with the previous commits, use a macro to catch callers passing a
repository other than the_repository at compile time.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Stefan Beller 2018-06-28 18:22:04 -07:00 committed by Junio C Hamano
parent ce71efb713
commit 0e740fed5d
6 changed files with 8 additions and 7 deletions

View File

@ -405,7 +405,7 @@ static int check_one_mergetag(struct commit *commit,
tag = lookup_tag(the_repository, &tag_oid); tag = lookup_tag(the_repository, &tag_oid);
if (!tag) if (!tag)
return error(_("bad mergetag in commit '%s'"), ref); return error(_("bad mergetag in commit '%s'"), ref);
if (parse_tag_buffer(tag, extra->value, extra->len)) if (parse_tag_buffer(the_repository, tag, extra->value, extra->len))
return error(_("malformed mergetag in commit '%s'"), ref); return error(_("malformed mergetag in commit '%s'"), ref);
/* iterate over new parents */ /* iterate over new parents */

View File

@ -503,7 +503,7 @@ static int show_one_mergetag(struct commit *commit,
return -1; /* error message already given */ return -1; /* error message already given */
strbuf_init(&verify_message, 256); strbuf_init(&verify_message, 256);
if (parse_tag_buffer(tag, extra->value, extra->len)) if (parse_tag_buffer(the_repository, tag, extra->value, extra->len))
strbuf_addstr(&verify_message, "malformed mergetag\n"); strbuf_addstr(&verify_message, "malformed mergetag\n");
else if (is_common_merge(commit) && else if (is_common_merge(commit) &&
!oidcmp(&tag->tagged->oid, !oidcmp(&tag->tagged->oid,

View File

@ -225,7 +225,7 @@ struct object *parse_object_buffer_the_repository(const struct object_id *oid, e
} else if (type == OBJ_TAG) { } else if (type == OBJ_TAG) {
struct tag *tag = lookup_tag(the_repository, oid); struct tag *tag = lookup_tag(the_repository, oid);
if (tag) { if (tag) {
if (parse_tag_buffer(tag, buffer, size)) if (parse_tag_buffer(the_repository, tag, buffer, size))
return NULL; return NULL;
obj = &tag->object; obj = &tag->object;
} }

View File

@ -1809,7 +1809,7 @@ static void check_tag(const void *buf, size_t size)
{ {
struct tag t; struct tag t;
memset(&t, 0, sizeof(t)); memset(&t, 0, sizeof(t));
if (parse_tag_buffer(&t, buf, size)) if (parse_tag_buffer(the_repository, &t, buf, size))
die("corrupt tag"); die("corrupt tag");
} }

4
tag.c
View File

@ -126,7 +126,7 @@ void release_tag_memory(struct tag *t)
t->date = 0; t->date = 0;
} }
int parse_tag_buffer(struct tag *item, const void *data, unsigned long size) int parse_tag_buffer_the_repository(struct tag *item, const void *data, unsigned long size)
{ {
struct object_id oid; struct object_id oid;
char type[20]; char type[20];
@ -203,7 +203,7 @@ int parse_tag(struct tag *item)
return error("Object %s not a tag", return error("Object %s not a tag",
oid_to_hex(&item->object.oid)); oid_to_hex(&item->object.oid));
} }
ret = parse_tag_buffer(item, data, size); ret = parse_tag_buffer(the_repository, item, data, size);
free(data); free(data);
return ret; return ret;
} }

3
tag.h
View File

@ -13,7 +13,8 @@ struct tag {
}; };
#define lookup_tag(r, o) lookup_tag_##r(o) #define lookup_tag(r, o) lookup_tag_##r(o)
extern struct tag *lookup_tag_the_repository(const struct object_id *oid); extern struct tag *lookup_tag_the_repository(const struct object_id *oid);
extern int parse_tag_buffer(struct tag *item, const void *data, unsigned long size); #define parse_tag_buffer(r, i, d, s) parse_tag_buffer_##r(i, d, s)
extern int parse_tag_buffer_the_repository(struct tag *item, const void *data, unsigned long size);
extern int parse_tag(struct tag *item); extern int parse_tag(struct tag *item);
extern void release_tag_memory(struct tag *t); extern void release_tag_memory(struct tag *t);
extern struct object *deref_tag(struct object *, const char *, int); extern struct object *deref_tag(struct object *, const char *, int);