lineedit: do not hang on error, but return error indicator.
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
This commit is contained in:
parent
8b2f13d84d
commit
d55f599440
@ -2169,7 +2169,7 @@ int FAST_FUNC read_line_input(const char *prompt, char *command, int maxsize, li
|
|||||||
|
|
||||||
ic = lineedit_read_key(read_key_buffer);
|
ic = lineedit_read_key(read_key_buffer);
|
||||||
if (errno) /* error */
|
if (errno) /* error */
|
||||||
goto prepare_to_die;
|
goto return_error_indicator;
|
||||||
if (ic == ic_raw) { /* "cc", "dd" */
|
if (ic == ic_raw) { /* "cc", "dd" */
|
||||||
input_backward(cursor);
|
input_backward(cursor);
|
||||||
goto clear_to_eol;
|
goto clear_to_eol;
|
||||||
@ -2233,7 +2233,7 @@ int FAST_FUNC read_line_input(const char *prompt, char *command, int maxsize, li
|
|||||||
//FIXME: unicode case?
|
//FIXME: unicode case?
|
||||||
ic = lineedit_read_key(read_key_buffer);
|
ic = lineedit_read_key(read_key_buffer);
|
||||||
if (errno) /* error */
|
if (errno) /* error */
|
||||||
goto prepare_to_die;
|
goto return_error_indicator;
|
||||||
if (ic < ' ' || ic > 255) {
|
if (ic < ' ' || ic > 255) {
|
||||||
beep();
|
beep();
|
||||||
} else {
|
} else {
|
||||||
@ -2305,9 +2305,9 @@ int FAST_FUNC read_line_input(const char *prompt, char *command, int maxsize, li
|
|||||||
* or exit if len=0 and no chars to delete */
|
* or exit if len=0 and no chars to delete */
|
||||||
if (command_len == 0) {
|
if (command_len == 0) {
|
||||||
errno = 0;
|
errno = 0;
|
||||||
#if ENABLE_FEATURE_EDITING_VI
|
|
||||||
prepare_to_die:
|
case -1: /* error (e.g. EIO when tty is destroyed) */
|
||||||
#endif
|
IF_FEATURE_EDITING_VI(return_error_indicator:)
|
||||||
break_out = command_len = -1;
|
break_out = command_len = -1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2317,7 +2317,7 @@ int FAST_FUNC read_line_input(const char *prompt, char *command, int maxsize, li
|
|||||||
// /* Control-V -- force insert of next char */
|
// /* Control-V -- force insert of next char */
|
||||||
// if (c == CTRL('V')) {
|
// if (c == CTRL('V')) {
|
||||||
// if (safe_read(STDIN_FILENO, &c, 1) < 1)
|
// if (safe_read(STDIN_FILENO, &c, 1) < 1)
|
||||||
// goto prepare_to_die;
|
// goto return_error_indicator;
|
||||||
// if (c == 0) {
|
// if (c == 0) {
|
||||||
// beep();
|
// beep();
|
||||||
// break;
|
// break;
|
||||||
|
Loading…
Reference in New Issue
Block a user