diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2017-01-03 13:47:50 +0300 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-01-10 18:55:51 +0300 |
commit | 9c806db4b744999213ddba755fff847d4525df9f (patch) | |
tree | 05e3a820dc21d637d82d3235eadc21ec8f34f3a9 | |
parent | 568cabf98a11e2e594243a309a9ffd7729a2b213 (diff) |
hush: correct exitcode for unterminated ')' - exitcode2.tests testcase
function old new delta
parse_stream 2595 2609 +14
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | shell/hush.c | 9 |
1 files 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; |