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:
parent
8dabeb6a13
commit
091ef4fcfc
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue