Jeff King <peff@xxxxxxxx> writes: > It technically does typo-fix the error message, which I guess is a > functional change. But I didn't count that. :) > > Here it is with the commit message fixes and your reviewed-by. Thanks, both. Will queue, to eventually merge to 'maint'. > > -- >8 -- > Subject: cat-file: pass expand_data to print_object_or_die > > We currently individually pass the sha1, type, and size > fields calculated by sha1_object_info. However, if we pass > the whole struct, the called function can make more > intelligent decisions about which fields were actually > filled by sha1_object_info. > > This patch takes that first refactoring step, passing the > whole struct, so further patches can make those decisions > with less noise in their diffs. There should be no > functional change to this patch (aside from a minor typo fix > in the error message). > > As a side effect, we can rename the local variables in the > function to "type" and "size", since the names are no longer > taken. > > Reviewed-by: Jonathan Nieder <jrnieder@xxxxxxxxx> > Signed-off-by: Jeff King <peff@xxxxxxxx> > --- > builtin/cat-file.c | 21 +++++++++++---------- > 1 file changed, 11 insertions(+), 10 deletions(-) > > diff --git a/builtin/cat-file.c b/builtin/cat-file.c > index b2ca775..1434afb 100644 > --- a/builtin/cat-file.c > +++ b/builtin/cat-file.c > @@ -193,25 +193,26 @@ static size_t expand_format(struct strbuf *sb, const char *start, void *data) > return end - start + 1; > } > > -static void print_object_or_die(int fd, const unsigned char *sha1, > - enum object_type type, unsigned long size) > +static void print_object_or_die(int fd, struct expand_data *data) > { > - if (type == OBJ_BLOB) { > + const unsigned char *sha1 = data->sha1; > + > + if (data->type == OBJ_BLOB) { > if (stream_blob_to_fd(fd, sha1, NULL, 0) < 0) > die("unable to stream %s to stdout", sha1_to_hex(sha1)); > } > else { > - enum object_type rtype; > - unsigned long rsize; > + enum object_type type; > + unsigned long size; > void *contents; > > - contents = read_sha1_file(sha1, &rtype, &rsize); > + contents = read_sha1_file(sha1, &type, &size); > if (!contents) > die("object %s disappeared", sha1_to_hex(sha1)); > - if (rtype != type) > + if (type != data->type) > die("object %s changed type!?", sha1_to_hex(sha1)); > - if (rsize != size) > - die("object %s change size!?", sha1_to_hex(sha1)); > + if (size != data->size) > + die("object %s changed size!?", sha1_to_hex(sha1)); > > write_or_die(fd, contents, size); > free(contents); > @@ -250,7 +251,7 @@ static int batch_one_object(const char *obj_name, struct batch_options *opt, > strbuf_release(&buf); > > if (opt->print_contents) { > - print_object_or_die(1, data->sha1, data->type, data->size); > + print_object_or_die(1, data); > write_or_die(1, "\n", 1); > } > return 0; -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html