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.

Add the cocci patch that converted the callers.

Signed-off-by: Jonathan Nieder <[email protected]>
Signed-off-by: Stefan Beller <[email protected]>
---
 builtin/replace.c                      | 2 +-
 contrib/coccinelle/object_parser.cocci | 9 +++++++++
 log-tree.c                             | 2 +-
 object.c                               | 2 +-
 sha1_file.c                            | 2 +-
 tag.c                                  | 4 ++--
 tag.h                                  | 3 ++-
 7 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/builtin/replace.c b/builtin/replace.c
index b79dd15fdb..d1a939c17b 100644
--- a/builtin/replace.c
+++ b/builtin/replace.c
@@ -363,7 +363,7 @@ static void check_one_mergetag(struct commit *commit,
        tag = lookup_tag(the_repository, &tag_oid);
        if (!tag)
                die(_("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))
                die(_("malformed mergetag in commit '%s'"), ref);
 
        /* iterate over new parents */
diff --git a/contrib/coccinelle/object_parser.cocci 
b/contrib/coccinelle/object_parser.cocci
index 8b9b1c717a..0e2ebdfccb 100644
--- a/contrib/coccinelle/object_parser.cocci
+++ b/contrib/coccinelle/object_parser.cocci
@@ -20,6 +20,15 @@ expression E;
 +the_repository,
  E)
 
+@@
+expression E;
+expression F;
+expression G;
+@@
+ parse_tag_buffer(
++the_repository,
+ E, F, G)
+
 @@
 expression E;
 @@
diff --git a/log-tree.c b/log-tree.c
index ff64a61e57..1137506884 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -507,7 +507,7 @@ static void show_one_mergetag(struct commit *commit,
                return; /* error message already given */
 
        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");
        else if (is_common_merge(commit) &&
                 !oidcmp(&tag->tagged->oid,
diff --git a/object.c b/object.c
index 5ebbb32a92..c9ce89cf37 100644
--- a/object.c
+++ b/object.c
@@ -222,7 +222,7 @@ struct object *parse_object_buffer(const struct object_id 
*oid, enum object_type
        } else if (type == OBJ_TAG) {
                struct tag *tag = lookup_tag(the_repository, oid);
                if (tag) {
-                       if (parse_tag_buffer(tag, buffer, size))
+                       if (parse_tag_buffer(the_repository, tag, buffer, size))
                               return NULL;
                        obj = &tag->object;
                }
diff --git a/sha1_file.c b/sha1_file.c
index c296b76329..df8bd4c260 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -1759,7 +1759,7 @@ static void check_tag(const void *buf, size_t size)
 {
        struct tag 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");
 }
 
diff --git a/tag.c b/tag.c
index 8935f3c8c9..7ff9943847 100644
--- a/tag.c
+++ b/tag.c
@@ -118,7 +118,7 @@ static timestamp_t parse_tag_date(const char *buf, const 
char *tail)
        return parse_timestamp(dateptr, NULL, 10);
 }
 
-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;
        char type[20];
@@ -195,7 +195,7 @@ int parse_tag(struct tag *item)
                return error("Object %s not a tag",
                             oid_to_hex(&item->object.oid));
        }
-       ret = parse_tag_buffer(item, data, size);
+       ret = parse_tag_buffer(the_repository, item, data, size);
        free(data);
        return ret;
 }
diff --git a/tag.h b/tag.h
index 97d58ebf7b..31498e788a 100644
--- a/tag.h
+++ b/tag.h
@@ -13,7 +13,8 @@ struct tag {
 };
 #define lookup_tag(r, o) lookup_tag_##r(o)
 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 struct object *deref_tag(struct object *, const char *, int);
 extern struct object *deref_tag_noverify(struct object *);
-- 
2.15.1.433.g936d1b9894.dirty

Reply via email to