Hi Roland, On Fri, 23 Jul 2021 at 06:30, Roland Gaudig <[email protected]> wrote: > > From: Roland Gaudig <[email protected]> > > Add format string handling operator to the setexpr command. > It allows to use C or Bash like format string expressions to be > evaluated with the result being stored inside the environment variable > name. > > setexpr <name> fmt <format> [value]... > > The following example > > setexpr foo fmt "%d, 0x%x" 0x100 ff > > will result in $foo being set to "256, 0xff". > > Signed-off-by: Roland Gaudig <[email protected]> > --- > > (no changes since v1) > > MAINTAINERS | 5 + > cmd/Kconfig | 8 + > cmd/Makefile | 1 + > cmd/printf.c | 419 +++++++++++++++++++++++++++++--------------------- > cmd/printf.h | 8 + > cmd/setexpr.c | 37 ++++- > 6 files changed, 300 insertions(+), 178 deletions(-) > create mode 100644 cmd/printf.h
Reviewed-by: Simon Glass <[email protected]> nit below > > diff --git a/MAINTAINERS b/MAINTAINERS > index a6b49b54b9..fe53698878 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -1049,6 +1049,11 @@ F: arch/sandbox/ > F: doc/arch/sandbox.rst > F: include/dt-bindings/*/sandbox*.h > > +SETEXPR > +M: Roland Gaudig <[email protected]> > +S: Maintained > +F: cmd/printf.c > + > SH > M: Marek Vasut <[email protected]> > M: Nobuhiro Iwamatsu <[email protected]> > diff --git a/cmd/Kconfig b/cmd/Kconfig > index e40d390f88..f1bcf9ebde 100644 > --- a/cmd/Kconfig > +++ b/cmd/Kconfig > @@ -1414,6 +1414,14 @@ config CMD_SETEXPR > Also supports loading the value at a memory location into a > variable. > If CONFIG_REGEX is enabled, setexpr also supports a gsub function. > > +config CMD_SETEXPR_FMT > + bool "setexpr_fmt" > + default n > + depends on CMD_SETEXPR > + help > + Evaluate format string expression and store result in an environment > + variable. > + > endmenu > > menu "Android support commands" > diff --git a/cmd/Makefile b/cmd/Makefile > index 9d10e07f0e..ed3669411e 100644 > --- a/cmd/Makefile > +++ b/cmd/Makefile > @@ -141,6 +141,7 @@ obj-$(CONFIG_CMD_SF) += sf.o > obj-$(CONFIG_CMD_SCSI) += scsi.o disk.o > obj-$(CONFIG_CMD_SHA1SUM) += sha1sum.o > obj-$(CONFIG_CMD_SETEXPR) += setexpr.o > +obj-$(CONFIG_CMD_SETEXPR_FMT) += printf.o > obj-$(CONFIG_CMD_SPI) += spi.o > obj-$(CONFIG_CMD_STRINGS) += strings.o > obj-$(CONFIG_CMD_SMC) += smccc.o > diff --git a/cmd/printf.c b/cmd/printf.c > index 337ab8ce5d..e024676743 100644 > --- a/cmd/printf.c > +++ b/cmd/printf.c > @@ -1,12 +1,21 @@ > -/* vi: set sw=4 ts=4: */ > +// SPDX-License-Identifier: GPL-2.0+ > /* > - * printf - format and print data > + * Copyright (C) 2021 Weidmüller Interface GmbH & Co. KG > + * Roland Gaudig <[email protected]> > * > * Copyright 1999 Dave Cinege > * Portions copyright (C) 1990-1996 Free Software Foundation, Inc. > * > * Licensed under GPLv2 or later, see file LICENSE in this source tree. > */ > +/* > + * This file provides a shell printf like format string expansion as required This is a bit confusing with all the words run together. Does it mean a printf-like, format-string expansion feature ?

