public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
From: Petr Vorel <pvorel@suse.cz>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH 1/2] Add tst_hexdump utility
Date: Fri, 30 Jul 2021 15:52:47 +0200	[thread overview]
Message-ID: <YQQEL/Tlun7pAI5X@pevik> (raw)
In-Reply-To: <20210726151736.14299-1-mdoucha@suse.cz>

Hi Martin,

Reviewed-by: Petr Vorel <pvorel@suse.cz>

Thanks! I suppose I'll merge it as is, but few notes below:

As you use only -d in this patchset I suppose you want to have
it as a general utility. It might be worth to mention that xxd by default wraps by
16 cols (-c 16), which we don't do:

$ echo "06a441375b431e06280e2d4e199ba650c14c47d9" | ./testcases/lib/tst_hexdump; echo
303661343431333735623433316530363238306532643465313939626136353063313463343764390a

$ echo "06a441375b431e06280e2d4e199ba650c14c47d9" | xxd -p
303661343431333735623433316530363238306532643465313939626136
353063313463343764390a

Other option would be just make -d as default and remove encode_hex() until is
really needed.

Kind regards,
Petr


> tst_hexdump implements conversion between binary and hexadecimal values in both
> directions for shell tests.

> Signed-off-by: Martin Doucha <mdoucha@suse.cz>
> ---
>  testcases/lib/Makefile      |  2 +-
>  testcases/lib/tst_hexdump.c | 55 +++++++++++++++++++++++++++++++++++++
>  2 files changed, 56 insertions(+), 1 deletion(-)
>  create mode 100644 testcases/lib/tst_hexdump.c

> diff --git a/testcases/lib/Makefile b/testcases/lib/Makefile
> index 98d9e4613..38813e640 100644
> --- a/testcases/lib/Makefile
> +++ b/testcases/lib/Makefile
> @@ -11,6 +11,6 @@ INSTALL_TARGETS		:= *.sh
>  MAKE_TARGETS		:= tst_sleep tst_random tst_checkpoint tst_rod tst_kvcmp\
>  			   tst_device tst_net_iface_prefix tst_net_ip_prefix tst_net_vars\
>  			   tst_getconf tst_supported_fs tst_check_drivers tst_get_unused_port\
> -			   tst_get_median
> +			   tst_get_median tst_hexdump

>  include $(top_srcdir)/include/mk/generic_leaf_target.mk
> diff --git a/testcases/lib/tst_hexdump.c b/testcases/lib/tst_hexdump.c
> new file mode 100644
> index 000000000..f83b8bfbf
> --- /dev/null
> +++ b/testcases/lib/tst_hexdump.c
> @@ -0,0 +1,55 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (c) 2021 SUSE LLC <mdoucha@suse.cz>
> + *
> + * Convert bytes from standard input to hexadecimal representation.
> + *
> + * Parameters:
> + * -d   Convert hexadecimal values from standard input to binary representation
> + *      instead.
This could be printed in -h parameter if really meant to be a general tool.
But understand you didn't bother.

Kind regards,
Petr

> + */
> +
> +#include <stdio.h>
> +#include <unistd.h>
> +
> +int decode_hex(void)
> +{
> +	int ret;
> +	unsigned int val;
> +
> +	while ((ret = scanf("%2x", &val)) == 1)
> +		putchar(val);
> +
> +	return ret != EOF || ferror(stdin);
> +}
> +
> +int encode_hex(void)
> +{
> +	int val;
> +
> +	for (val = getchar(); val >= 0 && val <= 0xff; val = getchar())
> +		printf("%02x", val);
> +
> +	return val != EOF || ferror(stdin);
> +}
> +
> +int main(int argc, char **argv)
> +{
> +	int ret, decode = 0;
> +
> +	while ((ret = getopt(argc, argv, "d"))) {
> +		if (ret < 0)
> +			break;
> +
> +		switch (ret) {
> +		case 'd':
> +			decode = 1;
> +			break;
> +		}
> +	}
> +
> +	if (decode)
> +		return decode_hex();
> +	else
> +		return encode_hex();
> +}

      parent reply	other threads:[~2021-07-30 13:52 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-26 15:17 [LTP] [PATCH 1/2] Add tst_hexdump utility Martin Doucha
2021-07-26 15:17 ` [LTP] [PATCH 2/2] Replace the xxd utility with tst_hexdump Martin Doucha
2021-07-30 13:52 ` Petr Vorel [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YQQEL/Tlun7pAI5X@pevik \
    --to=pvorel@suse.cz \
    --cc=ltp@lists.linux.it \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox