[U-Boot] [PATCH 1/2] hush: Only run list if it's not empty

Running empty lists causes wrong return status
Adapted from Barebox commit 4596d2b Author: Sascha Hauer s.hauer@pengutronix.de Date: Thu Sep 17 11:11:51 2009 +0200
Signed-off-by: Wolfgang Denk wd@denx.de --- common/hush.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/common/hush.c b/common/hush.c index 8021a68..c6f8392 100644 --- a/common/hush.c +++ b/common/hush.c @@ -3178,7 +3178,12 @@ int parse_stream_outer(struct in_str *inp, int flag) #ifndef __U_BOOT__ run_list(ctx.list_head); #else - code = run_list(ctx.list_head); + if (ctx.list_head->num_progs) { + code = run_list(ctx.list_head); + } else { + free_pipe_list(ctx.list_head, 0); + continue; + } if (code == -2) { /* exit */ b_free(&temp); code = 0;

This fixes cases like this one, there hush used to return 0 :
=> if foo ; then do something ; exit 1 ; fi ; echo RC=$? Unknown command 'foo' - try 'help' RC=1
Adapted from Barebox commit 2477fb1 From: Sascha Hauer s.hauer@pengutronix.de Date: Tue, 23 Mar 2010 15:33:43 +0100
Signed-off-by: Wolfgang Denk wd@denx.de --- common/hush.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/common/hush.c b/common/hush.c index c6f8392..32561a7 100644 --- a/common/hush.c +++ b/common/hush.c @@ -1938,7 +1938,7 @@ static int run_list_real(struct pipe *pi) #else if (rcode < -1) { last_return_code = -rcode - 2; - return -2; /* exit */ + return rcode; /* exit */ } last_return_code=(rcode == 0) ? 0 : 1; #endif @@ -3184,7 +3184,7 @@ int parse_stream_outer(struct in_str *inp, int flag) free_pipe_list(ctx.list_head, 0); continue; } - if (code == -2) { /* exit */ + if (code < -1) { /* exit */ b_free(&temp); code = 0; /* XXX hackish way to not allow exit from main loop */

In message 1297710697-13872-2-git-send-email-wd@denx.de you wrote:
This fixes cases like this one, there hush used to return 0 :
=> if foo ; then do something ; exit 1 ; fi ; echo RC=$? Unknown command 'foo' - try 'help' RC=1
Adapted from Barebox commit 2477fb1 From: Sascha Hauer s.hauer@pengutronix.de Date: Tue, 23 Mar 2010 15:33:43 +0100
Signed-off-by: Wolfgang Denk wd@denx.de
common/hush.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
I will drop these hush patches.
Further testing shows that they don't really fix the problems.
Looking closer at the current hush code I think it's a waste of time to try fixing these things; we should rather throw it away and re-import a recent version from BusyBox, which would also bring a few nice features like shell functions and the like.
Best regards,
Wolfgang Denk
participants (1)
-
Wolfgang Denk