9
0
Fork 0

hush: fix exit on syntax error behaviour

input.__promptme is no valid indicator that run_shell should be left.
It should be left on executing the 'exit' builtin which is indicated
by a return code < 0 from parse_stream_outer(). Track this with an extra
variable and use it as a condition to return from an interactive shell.

This fixes the weird behaviour that hush exits (and the user finds itself
in the menu) when a syntax error occured.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Sascha Hauer 2013-11-12 10:17:53 +01:00
parent 8dabeb6a13
commit 091ef4fcfc
1 changed files with 5 additions and 2 deletions

View File

@ -1853,14 +1853,17 @@ int run_shell(void)
int rcode;
struct in_str input;
struct p_context ctx;
int exit = 0;
do {
setup_file_in_str(&input);
rcode = parse_stream_outer(&ctx, &input, FLAG_PARSE_SEMICOLON);
if (rcode < -1)
if (rcode < -1) {
exit = 1;
rcode = -rcode - 2;
}
release_context(&ctx);
} while (!input.__promptme);
} while (!exit);
return rcode;
}