From: Wolfgang Denk <wd@denx.de>
To: Tom Rini <trini@konsulko.com>
Cc: "Sean Anderson" <seanga2@gmail.com>,
u-boot@lists.denx.de, "Marek Behún" <marek.behun@nic.cz>,
"Simon Glass" <sjg@chromium.org>,
"Roland Gaudig" <roland.gaudig-oss@weidmueller.com>,
"Heinrich Schuchardt" <xypron.glpk@gmx.de>,
"Kostas Michalopoulos" <badsector@runtimeterror.com>
Subject: Re: [RFC PATCH 00/28] cli: Add a new shell
Date: Fri, 02 Jul 2021 13:30:12 +0200 [thread overview]
Message-ID: <128634.1625225412@gemini.denx.de> (raw)
In-Reply-To: <20210701202155.GQ9516@bill-the-cat>
Dear Tom,
In message <20210701202155.GQ9516@bill-the-cat> you wrote:
>
> First, great! Thanks for doing this. A new shell really is the only
> viable path forward here, and I appreciate you taking the time to
> evaluate several and implement one.
I disagree that a new shell is the _only_ way forward.
AFAICT, all the raised concerns have long been fixed in upstream
versions of hush; see for example [1]:
...
//config: hush is a small shell. It handles the normal flow control
//config: constructs such as if/then/elif/else/fi, for/in/do/done, while loops,
//config: case/esac. Redirections, here documents, $((arithmetic))
//config: and functions are supported.
//config:
[1] https://git.busybox.net/busybox/tree/shell/hush.c#n98
My gut feeling is that updating to a recent version of hush is the
most efficent _backward_compatible_ way.
And if we drop that requirement, we might even take a bigger step
and move to lua - which would allow for a complete new level of
script based extensions.
> > - There is a serious error handling problem. Most original LIL code never
> > checked errors. In almost every case, errors were silently ignored, even
> > malloc failures! While I have designed new code to handle errors properly,
> > there still remains a significant amount of original code which just ignores
> > errors. In particular, I would like to ensure that the following categories of
> > error conditions are handled:
This is something that scares me like hell. This in a shell? For
me this is close to a killing point.
> > - Running out of memory.
> > - Access to a nonexistant variable.
> > - Passing the wrong number of arguments to a function.
> > - Interpreting a value as the wrong type (e.g. "foo" should not have a numeric
> > representation, instead of just being treated as 1).
Who says so?
Bash says:
-> printf "%d\n" foo
-bash: printf: foo: invalid number
0
So it is _not_ 1 ...
> > - There are many deviations from TCL with no purpose. For example, the list
> > indexing function is named "index" and not "lindex". It is perfectly fine to
> > drop features or change semantics to reduce code size, make parsing easier,
> > or make execution easier. But changing things for the sake of it should be
> > avoided.
It's not a standard POSIX shell, it's not TCL (ick!), ... it's
something new, incompatible...
> Thanks for the evaluations, of these, lil does make the most sense.
You mean, adding a complete new, incompatible and non-standard shell
is a better approach than updating to a recent version of hush?
What makes you think so?
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
Ernest asks Frank how long he has been working for the company.
"Ever since they threatened to fire me."
next prev parent reply other threads:[~2021-07-02 11:30 UTC|newest]
Thread overview: 107+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-01 6:15 [RFC PATCH 00/28] cli: Add a new shell Sean Anderson
2021-07-01 6:15 ` [RFC PATCH 01/28] Add Zlib License Sean Anderson
2021-07-05 15:29 ` Simon Glass
2021-07-01 6:15 ` [RFC PATCH 02/28] cli: Add LIL shell Sean Anderson
2021-07-02 11:03 ` Wolfgang Denk
2021-07-02 13:33 ` Sean Anderson
2021-07-03 2:12 ` Sean Anderson
2021-07-03 19:33 ` Wolfgang Denk
2021-07-05 15:29 ` Simon Glass
2021-07-05 19:10 ` Tom Rini
2021-07-05 19:47 ` Sean Anderson
2021-07-05 19:53 ` Tom Rini
2021-07-05 19:55 ` Sean Anderson
2021-07-06 7:46 ` Wolfgang Denk
2021-07-06 7:52 ` Michael Nazzareno Trimarchi
2021-07-06 14:57 ` Simon Glass
2021-07-06 15:48 ` Tom Rini
2021-07-07 8:22 ` Michael Nazzareno Trimarchi
2021-07-06 14:54 ` Tom Rini
2021-07-07 8:15 ` Wolfgang Denk
2021-07-07 13:58 ` Tom Rini
2021-07-07 14:10 ` Wolfgang Denk
2021-07-07 14:14 ` Tom Rini
2021-07-07 14:23 ` Wolfgang Denk
2021-07-06 7:44 ` Wolfgang Denk
2021-07-06 15:43 ` Tom Rini
2021-07-06 16:09 ` Kostas Michalopoulos
2021-07-07 13:32 ` Sean Anderson
2021-07-07 8:15 ` Wolfgang Denk
2021-07-07 13:46 ` Sean Anderson
2021-07-07 13:51 ` Tom Rini
2021-07-07 13:58 ` Tom Rini
2021-07-07 14:48 ` Marek Behun
2021-07-08 5:19 ` Michael Nazzareno Trimarchi
2021-07-08 15:33 ` Tom Rini
2021-07-08 4:56 ` Sean Anderson
2021-07-08 17:00 ` Wolfgang Denk
2021-07-03 19:23 ` Wolfgang Denk
2021-07-01 6:15 ` [RFC PATCH 03/28] cli: lil: Replace strclone with strdup Sean Anderson
2021-07-02 8:36 ` Rasmus Villemoes
2021-07-02 11:38 ` Wolfgang Denk
2021-07-02 13:38 ` Sean Anderson
2021-07-02 14:28 ` Tom Rini
2021-07-02 22:18 ` Kostas Michalopoulos
2021-07-03 2:28 ` Sean Anderson
2021-07-03 19:26 ` Wolfgang Denk
2021-07-05 5:07 ` Steve Bennett
2021-07-05 14:42 ` Sean Anderson
2021-07-05 15:29 ` Simon Glass
2021-07-05 15:42 ` Sean Anderson
2021-07-05 17:50 ` Wolfgang Denk
2021-07-08 4:37 ` Sean Anderson
2021-07-08 16:13 ` Wolfgang Denk
2021-07-01 6:15 ` [RFC PATCH 04/28] cli: lil: Remove most functions by default Sean Anderson
2021-07-05 15:29 ` Simon Glass
2021-07-01 6:15 ` [RFC PATCH 05/28] cli: lil: Rename some functions to be more like TCL Sean Anderson
2021-07-05 15:29 ` Simon Glass
2021-07-05 15:54 ` Sean Anderson
2021-07-05 17:58 ` Wolfgang Denk
2021-07-05 18:51 ` Tom Rini
2021-07-05 21:02 ` Simon Glass
2021-07-05 21:36 ` Tom Rini
2021-07-06 7:52 ` Wolfgang Denk
2021-07-06 15:21 ` Simon Glass
2021-07-06 15:33 ` Tom Rini
2021-07-06 16:00 ` Kostas Michalopoulos
2021-07-07 8:16 ` Wolfgang Denk
2021-07-07 13:58 ` Tom Rini
2021-07-05 19:46 ` Sean Anderson
2021-07-06 7:50 ` Wolfgang Denk
2021-07-08 4:47 ` Sean Anderson
2021-07-08 16:21 ` Wolfgang Denk
2021-07-01 6:15 ` [RFC PATCH 06/28] cli: lil: Convert some defines to enums Sean Anderson
2021-07-01 6:15 ` [RFC PATCH 07/28] cli: lil: Simplify callbacks Sean Anderson
2021-07-01 6:15 ` [RFC PATCH 08/28] cli: lil: Handle commands with dots Sean Anderson
2021-07-01 6:15 ` [RFC PATCH 09/28] cli: lil: Use error codes Sean Anderson
2021-07-01 6:15 ` [RFC PATCH 10/28] cli: lil: Add printf-style format helper for errors Sean Anderson
2021-07-01 6:15 ` [RFC PATCH 11/28] cli: lil: Add several helper functions " Sean Anderson
2021-07-01 6:15 ` [RFC PATCH 12/28] cli: lil: Check for ctrl-c Sean Anderson
2021-07-05 15:29 ` Simon Glass
2021-07-01 6:15 ` [RFC PATCH 13/28] cli: lil: Wire up LIL to the rest of U-Boot Sean Anderson
2021-07-02 8:18 ` Rasmus Villemoes
2021-07-02 13:40 ` Sean Anderson
2021-07-05 15:29 ` Simon Glass
2021-07-01 6:15 ` [RFC PATCH 14/28] cli: lil: Document structures Sean Anderson
2021-07-01 6:15 ` [RFC PATCH 15/28] cli: lil: Convert LIL_ENABLE_POOLS to Kconfig Sean Anderson
2021-07-01 6:15 ` [RFC PATCH 16/28] cli: lil: Convert LIL_ENABLE_RECLIMIT to KConfig Sean Anderson
2021-07-01 6:16 ` [RFC PATCH 17/28] test: Add tests for LIL Sean Anderson
2021-07-05 15:29 ` Simon Glass
2021-07-01 6:16 ` [RFC PATCH 18/28] cli: lil: Remove duplicate function bodies Sean Anderson
2021-07-01 6:16 ` [RFC PATCH 19/28] cli: lil: Add "symbol" structure Sean Anderson
2021-07-01 6:16 ` [RFC PATCH 20/28] cli: lil: Add config to enable debug output Sean Anderson
2021-07-01 6:16 ` [RFC PATCH 21/28] cli: lil: Add a distinct parsing step Sean Anderson
2021-07-01 6:16 ` [RFC PATCH 22/28] env: Add a priv pointer to hwalk_r Sean Anderson
2021-07-01 20:10 ` Tom Rini
2021-07-01 6:16 ` [RFC PATCH 23/28] cli: lil: Handle OOM for hm_put Sean Anderson
2021-07-01 6:16 ` [RFC PATCH 24/28] cli: lil: Make proc always take 3 arguments Sean Anderson
2021-07-01 6:16 ` [RFC PATCH 25/28] cli: lil: Always quote items in lil_list_to_value Sean Anderson
2021-07-01 6:16 ` [RFC PATCH 26/28] cli: lil: Allocate len even when str is NULL in alloc_value_len Sean Anderson
2021-07-01 6:16 ` [RFC PATCH 27/28] cli: lil: Add a function to quote values Sean Anderson
2021-07-01 6:16 ` [RFC PATCH 28/28] cli: lil: Load procs from the environment Sean Anderson
2021-07-01 20:21 ` [RFC PATCH 00/28] cli: Add a new shell Tom Rini
2021-07-02 11:30 ` Wolfgang Denk [this message]
2021-07-02 13:56 ` Sean Anderson
2021-07-02 14:07 ` Sean Anderson
2021-07-08 3:49 ` Heiko Schocher
2021-07-08 4:26 ` Sean Anderson
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=128634.1625225412@gemini.denx.de \
--to=wd@denx.de \
--cc=badsector@runtimeterror.com \
--cc=marek.behun@nic.cz \
--cc=roland.gaudig-oss@weidmueller.com \
--cc=seanga2@gmail.com \
--cc=sjg@chromium.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
--cc=xypron.glpk@gmx.de \
/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