Re: [PATCH 1/2] cat-file: pass expand_data to print_object_or_die

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]