--- b/lib/libedit/read.c +++ b/lib/libedit/read.c @@ -49,7 +49,7 @@ __FBSDID("$FreeBSD$"); #include #include "el.h" -#define OKCMD -1 +#define OKCMD 1 private int read__fixio(int, int); private int read_preread(EditLine *); @@ -169,9 +169,6 @@ read__fixio(int fd __unused, int e) #endif /* TRY_AGAIN */ return (e ? 0 : -1); - case EINTR: - return (0); - default: return (-1); } @@ -295,9 +292,11 @@ read_char(EditLine *el, char *cp) again: el->el_signal->sig_no = 0; while ((num_read = read(el->el_infd, cp, 1)) == -1) { - if (el->el_signal->sig_no == SIGCONT) { - sig_set(el); - el_set(el, EL_REFRESH); + if (errno == EINTR) { + if (el->el_signal->sig_no == SIGCONT) { + sig_set(el); + el_set(el, EL_REFRESH); + } goto again; } if (!tried && read__fixio(el->el_infd, errno) == 0)