ash: mkinit: Split reset into exitreset and reset
No binary (build failed)
—
(log yok)
| @@ -14284,11 +14284,11 @@ read_profile(const char *name) | |
| /* | |
| * This routine is called when an error or an interrupt occurs in an | |
| - | * interactive shell and control is returned to the main command loop. |
| - | * (In dash, this function is auto-generated by build machinery). |
| + | * interactive shell and control is returned to the main command loop |
| + | * but prior to exitshell. |
| */ | |
| static void | |
| - | reset(void) |
| + | exitreset(void) |
| { | |
| /* from eval.c: */ | |
| evalskip = 0; | |
| @@ -14301,14 +14301,23 @@ reset(void) | |
| /* from expand.c: */ | |
| ifsfree(); | |
| + | /* from redir.c: */ |
| + | unwindredir(NULL); |
| + | } |
| + | |
| + | /* |
| + | * This routine is called when an error or an interrupt occurs in an |
| + | * interactive shell and control is returned to the main command loop. |
| + | * (In dash, this function is auto-generated by build machinery). |
| + | */ |
| + | static void |
| + | reset(void) |
| + | { |
| /* from input.c: */ | |
| g_parsefile->left_in_buffer = 0; | |
| g_parsefile->left_in_line = 0; /* clear input buffer */ | |
| popallfiles(); | |
| - | /* from redir.c: */ |
| - | unwindredir(NULL); |
| - | |
| /* from var.c: */ | |
| unwindlocalvars(NULL); | |
| } | |
| @@ -14356,13 +14365,16 @@ int ash_main(int argc UNUSED_PARAM, char **argv) | |
| smallint e; | |
| smallint s; | |
| - | reset(); |
| + | exitreset(); |
| e = exception_type; | |
| s = state; | |
| if (e == EXEXIT || s == 0 || iflag == 0 || shlvl) { | |
| exitshell(); | |
| } | |
| + | |
| + | reset(); |
| + | |
| if (e == EXINT) { | |
| newline_and_flush(stderr); | |
| } | |