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();
> +}
prev 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