From b25562e63fe8afaf0f103362a4e672e9ccdc2d68 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Sat, 7 Jan 2023 08:48:55 -0500 Subject: object-file: inline calls to read_object() Since read_object() is these days just a thin wrapper around oid_object_info_extended(), and since it only has two callers, let's just inline those calls. This has a few positive outcomes: - it's a net reduction in source code lines - even though the callers end up with a few extra lines, they're now more flexible and can use object_info flags directly. So no more need to convert die_if_corrupt between parameter/flag, and we can ask for lookup replacement with a flag rather than doing it ourselves. - there's one fewer function in an already crowded namespace (e.g., the difference between read_object() and read_object_file() was not immediately obvious; now we only have one of them). Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- object-file.c | 45 +++++++++++++++++---------------------------- 1 file changed, 17 insertions(+), 28 deletions(-) (limited to 'object-file.c') diff --git a/object-file.c b/object-file.c index 80a0cd3b35..ed1babbac2 100644 --- a/object-file.c +++ b/object-file.c @@ -1671,23 +1671,6 @@ int oid_object_info(struct repository *r, return type; } -static void *read_object(struct repository *r, - const struct object_id *oid, enum object_type *type, - unsigned long *size, - int die_if_corrupt) -{ - struct object_info oi = OBJECT_INFO_INIT; - void *content; - oi.typep = type; - oi.sizep = size; - oi.contentp = &content; - - if (oid_object_info_extended(r, oid, &oi, die_if_corrupt - ? OBJECT_INFO_DIE_IF_CORRUPT : 0) < 0) - return NULL; - return content; -} - int pretend_object_file(void *buf, unsigned long len, enum object_type type, struct object_id *oid) { @@ -1709,8 +1692,8 @@ int pretend_object_file(void *buf, unsigned long len, enum object_type type, /* * This function dies on corrupt objects; the callers who want to - * deal with them should arrange to call read_object() and give error - * messages themselves. + * deal with them should arrange to call oid_object_info_extended() and give + * error messages themselves. */ void *read_object_file_extended(struct repository *r, const struct object_id *oid, @@ -1718,16 +1701,19 @@ void *read_object_file_extended(struct repository *r, unsigned long *size, int lookup_replace) { + struct object_info oi = OBJECT_INFO_INIT; + unsigned flags = OBJECT_INFO_DIE_IF_CORRUPT; void *data; - const struct object_id *repl = lookup_replace ? - lookup_replace_object(r, oid) : oid; - errno = 0; - data = read_object(r, repl, type, size, 1); - if (data) - return data; + oi.typep = type; + oi.sizep = size; + oi.contentp = &data; + if (lookup_replace) + flags |= OBJECT_INFO_LOOKUP_REPLACE; + if (oid_object_info_extended(r, oid, &oi, flags)) + return NULL; - return NULL; + return data; } void *read_object_with_reference(struct repository *r, @@ -2255,6 +2241,7 @@ int force_object_loose(const struct object_id *oid, time_t mtime) { void *buf; unsigned long len; + struct object_info oi = OBJECT_INFO_INIT; enum object_type type; char hdr[MAX_HEADER_LEN]; int hdrlen; @@ -2262,8 +2249,10 @@ int force_object_loose(const struct object_id *oid, time_t mtime) if (has_loose_object(oid)) return 0; - buf = read_object(the_repository, oid, &type, &len, 0); - if (!buf) + oi.typep = &type; + oi.sizep = &len; + oi.contentp = &buf; + if (oid_object_info_extended(the_repository, oid, &oi, 0)) return error(_("cannot read object for %s"), oid_to_hex(oid)); hdrlen = format_object_header(hdr, sizeof(hdr), type, len); ret = write_loose_object(oid, hdr, hdrlen, buf, len, mtime, 0); -- cgit v1.2.3