Subject: Re: [PATCH v7 26/30] t/helper/hexdump: add helper to print hexdump of stdin

From: Junio C Hamano <[email-masked]>
Date: Mon, 23 May 2022 14:19:15 -0700

"Jeff Hostetler via GitGitGadget" <[email-masked]> writes:

> +int cmd__hexdump(int argc, const char **argv)
> +{
> +	char buf[1024];
> +	ssize_t i, len;
> +
> +	for (;;) {
> +		len = xread(0, buf, sizeof(buf));
> +		if (len < 0)
> +			die_errno("failure reading stdin");
> +		if (!len)
> +			break;
> +
> +		for (i = 0; i < len; i++)
> +			printf("%02x ", (unsigned char)buf[i]);
> +	}
> +
> +	return 0;
> +}

It is meant to be consumed by machine, so I do not think we would
mind too much about a single long line, but given that consumers
include "grep", it would probably be better to avoid emitting an
incomplete line, especially since addition of this tool is all about
portability across platforms.

An extra putchar('\n'); after the loop would fix it easily.

Thanks.

> diff --git a/t/helper/test-tool.c b/t/helper/test-tool.c
> index 0424f7adf5d..88c4b28cdfa 100644
> --- a/t/helper/test-tool.c
> +++ b/t/helper/test-tool.c
> @@ -38,6 +38,7 @@ static struct test_cmd cmds[] = {
>  	{ "getcwd", cmd__getcwd },
>  	{ "hashmap", cmd__hashmap },
>  	{ "hash-speed", cmd__hash_speed },
> +	{ "hexdump", cmd__hexdump },
>  	{ "index-version", cmd__index_version },
>  	{ "json-writer", cmd__json_writer },
>  	{ "lazy-init-name-hash", cmd__lazy_init_name_hash },
> diff --git a/t/helper/test-tool.h b/t/helper/test-tool.h
> index c876e8246fb..511f6251bf5 100644
> --- a/t/helper/test-tool.h
> +++ b/t/helper/test-tool.h
> @@ -29,6 +29,7 @@ int cmd__genzeros(int argc, const char **argv);
>  int cmd__getcwd(int argc, const char **argv);
>  int cmd__hashmap(int argc, const char **argv);
>  int cmd__hash_speed(int argc, const char **argv);
> +int cmd__hexdump(int argc, const char **argv);
>  int cmd__index_version(int argc, const char **argv);
>  int cmd__json_writer(int argc, const char **argv);
>  int cmd__lazy_init_name_hash(int argc, const char **argv);