From b05bcaf29c9008799aedb535cb42d2e60cc4cbb9 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Tue, 3 Jan 2017 11:47:50 +0100 Subject: [PATCH] hush: correct exitcode for unterminated ')' - exitcode2.tests testcase function old new delta parse_stream 2595 2609 +14 Signed-off-by: Denys Vlasenko --- shell/hush.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/shell/hush.c b/shell/hush.c index fecc89294..a56d3b280 100644 --- a/shell/hush.c +++ b/shell/hush.c @@ -1137,6 +1137,9 @@ static void syntax_error_unexpected_ch(unsigned lineno UNUSED_PARAM, int ch) char msg[2]; msg[0] = ch; msg[1] = '\0'; +#if HUSH_DEBUG >= 2 + bb_error_msg("hush.c:%u", lineno); +#endif bb_error_msg("syntax error: unexpected %s", ch == EOF ? "EOF" : msg); } @@ -4997,7 +5000,8 @@ static struct pipe *parse_stream(char **pstring, * if we see {, we call parse_group(..., end_trigger='}') * and it will match } earlier (not here). */ syntax_error_unexpected_ch(ch); - goto parse_error; + G.last_exitcode = 2; + goto parse_error1; default: if (HUSH_DEBUG) bb_error_msg_and_die("BUG: unexpected %c\n", ch); @@ -5005,6 +5009,8 @@ static struct pipe *parse_stream(char **pstring, } /* while (1) */ parse_error: + G.last_exitcode = 1; + parse_error1: { struct parse_context *pctx; IF_HAS_KEYWORDS(struct parse_context *p2;) @@ -5038,7 +5044,6 @@ static struct pipe *parse_stream(char **pstring, } while (HAS_KEYWORDS && pctx); o_free(&dest); - G.last_exitcode = 1; #if !BB_MMU if (pstring) *pstring = NULL; -- 2.25.1