From: Michal Sojka Date: Wed, 31 Jul 2013 15:43:36 +0000 (+0200) Subject: cmdproc_test: Set terminal to non-canonical mode X-Git-Url: http://rtime.felk.cvut.cz/gitweb/sysless.git/commitdiff_plain/e32a7291f50617da99139b5fa954aaca4d3b76a3?ds=sidebyside cmdproc_test: Set terminal to non-canonical mode This is to allow testing of backspace handling. --- diff --git a/libs4c/cmdproc/cmdio_std_line.c b/libs4c/cmdproc/cmdio_std_line.c index 34fd5c8..63cb615 100644 --- a/libs4c/cmdproc/cmdio_std_line.c +++ b/libs4c/cmdproc/cmdio_std_line.c @@ -18,7 +18,7 @@ char ed_line_out_std[ED_LINE_CHARS+1]; ed_line_buf_t ed_line_buf_in_std={ -// flg:FL_ELB_ECHO, + flg:FL_ELB_ECHO, inbuf:0, alloc:sizeof(ed_line_in_std), maxlen:0, diff --git a/libs4c/cmdproc/cmdproc_test.c b/libs4c/cmdproc/cmdproc_test.c index 170cd54..ec584e2 100644 --- a/libs4c/cmdproc/cmdproc_test.c +++ b/libs4c/cmdproc/cmdproc_test.c @@ -1,5 +1,9 @@ #include #include +#include +#include +#include +#include int cmd_do_testopchar(cmd_io_t *cmd_io, const struct cmd_des *des, char *param[]) { @@ -197,8 +201,26 @@ cmd_des_t const **cmd_list = cmd_list_main; cmd_io_t cmd_io_std_line; +struct termios tcbackup; + +void sigint(int arg) +{ + tcsetattr(0, TCSAFLUSH, &tcbackup); + exit(0); +} + int main() { + struct termios tc; + tcgetattr(0, &tc); + tcbackup = tc; + tc.c_lflag &= ~(ICANON|ECHO); + tc.c_cc[VMIN] = 1; + tc.c_cc[VTIME] = 0; + tc.c_cc[VERASE] = '\b'; + tcsetattr(0, TCSAFLUSH, &tc); + signal(SIGINT, sigint); + while (1) { cmd_processor_run(&cmd_io_std_line, cmd_list_main); }