diff --git a/linenoise.c b/linenoise.c index f65d3834..aee34470 100644 --- a/linenoise.c +++ b/linenoise.c @@ -129,6 +129,7 @@ #include #include #include +#include #include #include @@ -1230,6 +1231,16 @@ static int linenoiseEdit(struct current *current) { case ctrl('C'): /* ctrl-c */ errno = EAGAIN; return -1; + case ctrl('Z'): /* ctrl-z */ +#ifdef SIGTSTP + /* send ourselves SIGSUSP */ + disableRawMode(current); + raise(SIGTSTP); + /* and resume */ + enableRawMode(current); + refreshLine(current->prompt, current); +#endif + continue; case 127: /* backspace */ case ctrl('H'): if (remove_char(current, current->pos - 1) == 1) {