This is intended to help along the "unpack large blobs in stream" series that Han Xin has been submitting. The v9 of it is available at[1], but not currently picked up by Junio. This changes those parts of the object-file.c API that took a "const char *" type to take an "enum object_type" instead. We had a lot of places that would convert back & forth between the two for no good reason. We're still left with the "literally" interface for "git hash-object --literally", but it's now a tiny part of the API that's sidelined. This also has various small API cleanups, such as returning "void" in a case where no caller did (or should) use a return value in the case of hash_object_file(). We then introduce the format_object_header() helper, part of that was in Han Xin's version, but we had various other in-tree users that could use it (which I found later, after my initial RFC patch). We can then split up the two classes of API users of check_object_signature() to use two different functions, which suits their uses much better. Half of them were making use of a very early return. 1. https://lore.kernel.org/git/20220120112114.47618-1-chiyutianyi@xxxxxxxxx/ Ævar Arnfjörð Bjarmason (10): object-file.c: split up declaration of unrelated variables object-file API: return "void", not "int" from hash_object_file() object-file API: add a format_object_header() function object-file API: have write_object_file() take "enum object_type" object-file API: provide a hash_object_file_oideq() object-file API: replace some use of check_object_signature() object-file API: have hash_object_file() take "enum object_type" object-file API: replace check_object_signature() with stream_* object-file.c: add a literal version of write_object_file_prepare() object-file API: pass an enum to read_object_with_reference() apply.c | 12 ++-- builtin/cat-file.c | 11 +-- builtin/checkout.c | 2 +- builtin/fast-export.c | 4 +- builtin/fast-import.c | 12 ++-- builtin/grep.c | 4 +- builtin/hash-object.c | 4 +- builtin/index-pack.c | 10 ++- builtin/mktag.c | 7 +- builtin/mktree.c | 2 +- builtin/notes.c | 3 +- builtin/pack-objects.c | 2 +- builtin/receive-pack.c | 2 +- builtin/replace.c | 4 +- builtin/tag.c | 2 +- builtin/unpack-objects.c | 8 +-- bulk-checkin.c | 4 +- cache-tree.c | 8 +-- cache.h | 13 ++-- commit.c | 2 +- convert.c | 2 +- diffcore-rename.c | 2 +- dir.c | 2 +- http-push.c | 2 +- log-tree.c | 2 +- match-trees.c | 2 +- merge-ort.c | 4 +- merge-recursive.c | 2 +- notes-cache.c | 2 +- notes.c | 8 +-- object-file.c | 142 ++++++++++++++++++++++++++------------- object-store.h | 39 ++++++++--- object.c | 6 +- pack-check.c | 8 ++- read-cache.c | 2 +- tree-walk.c | 6 +- 36 files changed, 213 insertions(+), 134 deletions(-) -- 2.35.0.913.g12b4baa2536