msh: fix Ctrl-C handling with line editing
No binary (build failed)
—
(log yok)
| @@ -963,10 +963,9 @@ enum { | |
| }; | |
| line_input_t *new_line_input_t(int flags); | |
| /* Returns: | |
| - | * -1 on read errors or EOF, or on bare Ctrl-D. |
| - | * 0 on ctrl-C, |
| + | * -1 on read errors or EOF, or on bare Ctrl-D, |
| + | * 0 on ctrl-C (the line entered is still returned in 'command'), |
| * >0 length of input string, including terminating '\n' | |
| - | * [is this true? stores "" in 'command' if return value is 0 or -1] |
| */ | |
| int read_line_input(const char* prompt, char* command, int maxsize, line_input_t *state); | |
| #else | |
| @@ -1315,8 +1315,8 @@ static void win_changed(int nsig) | |
| #define CTRL(a) ((a) & ~0x40) | |
| /* Returns: | |
| - | * -1 on read errors or EOF, or on bare Ctrl-D. |
| - | * 0 on ctrl-C, |
| + | * -1 on read errors or EOF, or on bare Ctrl-D, |
| + | * 0 on ctrl-C (the line entered is still returned in 'command'), |
| * >0 length of input string, including terminating '\n' | |
| */ | |
| int read_line_input(const char *prompt, char *command, int maxsize, line_input_t *st) | |
| @@ -4836,7 +4836,9 @@ static int filechar(struct ioarg *ap) | |
| static int position = 0, size = 0; | |
| while (size == 0 || position >= size) { | |
| - | read_line_input(current_prompt, filechar_cmdbuf, BUFSIZ, line_input_state); |
| + | /* Repeat if Ctrl-C is pressed. TODO: exit on -1 (error/EOF)? */ |
| + | while (read_line_input(current_prompt, filechar_cmdbuf, BUFSIZ, line_input_state) == 0) |
| + | continue; |
| size = strlen(filechar_cmdbuf); | |
| position = 0; | |
| } | |