]> git.ipfire.org Git - thirdparty/git.git/commitdiff
cat-file: use type enum instead of buffer for -t option
authorJeff King <peff@peff.net>
Fri, 16 May 2025 04:49:47 +0000 (00:49 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 16 May 2025 16:43:10 +0000 (09:43 -0700)
Now that we no longer support OBJECT_INFO_ALLOW_UNKNOWN_TYPE, there is
no need to pass a strbuf into oid_object_info_extended() to record the
type. The regular object_type enum is sufficient to capture all of the
types we will allow.

This simplifies the code a bit, and will eventually let us drop
object_info's type_name strbuf support.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/cat-file.c

index 4adc19aa294cec3184c5fd1773eb6a905c5ea3ea..67a5ff2b9ebd29d7d2bad988c44abc885dd9f44c 100644 (file)
@@ -109,7 +109,6 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name)
        unsigned long size;
        struct object_context obj_context = {0};
        struct object_info oi = OBJECT_INFO_INIT;
-       struct strbuf sb = STRBUF_INIT;
        unsigned flags = OBJECT_INFO_LOOKUP_REPLACE;
        unsigned get_oid_flags =
                GET_OID_RECORD_PATH |
@@ -132,16 +131,12 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name)
        buf = NULL;
        switch (opt) {
        case 't':
-               oi.type_name = &sb;
+               oi.typep = &type;
                if (oid_object_info_extended(the_repository, &oid, &oi, flags) < 0)
                        die("git cat-file: could not get object info");
-               if (sb.len) {
-                       printf("%s\n", sb.buf);
-                       strbuf_release(&sb);
-                       ret = 0;
-                       goto cleanup;
-               }
-               break;
+               printf("%s\n", type_name(type));
+               ret = 0;
+               goto cleanup;
 
        case 's':
                oi.sizep = &size;