From: Jeff King Date: Fri, 16 May 2025 04:49:47 +0000 (-0400) Subject: cat-file: use type enum instead of buffer for -t option X-Git-Tag: v2.50.0-rc0~13^2~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=aac2abeca7077aa5f87f4132b98d37dd938b3573;p=thirdparty%2Fgit.git cat-file: use type enum instead of buffer for -t option 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 Signed-off-by: Junio C Hamano --- diff --git a/builtin/cat-file.c b/builtin/cat-file.c index 4adc19aa29..67a5ff2b9e 100644 --- a/builtin/cat-file.c +++ b/builtin/cat-file.c @@ -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;