
Hi Wolfgang,
On Fri, Jan 13, 2012 at 11:27 AM, Wolfgang Denk wd@denx.de wrote:
Dear Simon Glass,
In message 1323542641-14541-5-git-send-email-sjg@chromium.org you wrote:
This function is only one of the parser options, so use run_command() instead. It knows how to use hush if selected.
...
debug("Starting %s process...\n", __FUNCTION__); -#if !defined(CONFIG_SYS_HUSH_PARSER)
- ret = builtin_run_command(s, 0);
-#else
- ret = parse_string_outer(s, FLAG_PARSE_SEMICOLON
- | FLAG_EXIT_FROM_LOOP);
-#endif
- ret = run_command(s, 0);
if (ret < 0) debug("Error.. %s failed\n", __FUNCTION__);
...
-#ifndef CONFIG_SYS_HUSH_PARSER
- if (builtin_run_command(getenv("bootcmd"), flag) < 0)
- if (run_command(getenv("bootcmd"), flag) < 0)
rcode = 1; -#else
- if (parse_string_outer(getenv("bootcmd"),
- FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP) != 0)
- rcode = 1;
-#endif
I think this breaks error handling in a large scale.
run_command2() in "common/main.c" (now renamed into run_command() will return 0 or 1 when used with the hush shell; it will never return < 0.
Thanks for looking at this. I will see what I can figure out.
Regards, Simon
Please fix globally.
Best regards,
Wolfgang Denk
-- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de Parkinson's Law: Work expands to fill the time alloted it.