object-file API: pass an enum to read_object_with_reference()

Change the read_object_with_reference() function to take an "enum
object_type". It was not prepared to handle an arbitrary "const
char *type", as it was itself calling type_from_string().

Let's change the only caller that passes in user data to use
type_from_string(), and convert the rest to use e.g. "OBJ_TREE"
instead of "tree_type".

The "cat-file" caller is not on the codepath that
handles"--allow-unknown", so the type_from_string() there is safe. Its
use of type_from_string() doesn't functionally differ from that of the
pre-image.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Ævar Arnfjörð Bjarmason
2022-02-05 00:48:34 +01:00
committed by Junio C Hamano
parent 2bbb28a3ee
commit 6aea6baeb3
7 changed files with 19 additions and 17 deletions

View File

@ -154,7 +154,10 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name,
break;
case 0:
if (type_from_string(exp_type) == OBJ_BLOB) {
{
enum object_type exp_type_id = type_from_string(exp_type);
if (exp_type_id == OBJ_BLOB) {
struct object_id blob_oid;
if (oid_object_info(the_repository, &oid, NULL) == OBJ_TAG) {
char *buffer = read_object_file(&oid, &type,
@ -176,10 +179,10 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name,
* fall-back to the usual case.
*/
}
buf = read_object_with_reference(the_repository,
&oid, exp_type, &size, NULL);
buf = read_object_with_reference(the_repository, &oid,
exp_type_id, &size, NULL);
break;
}
default:
die("git cat-file: unknown option: %s", exp_type);
}