From: Michal Sojka Date: Wed, 30 Mar 2016 12:21:17 +0000 (+0200) Subject: cmdproc: Make backspace work even in sterm X-Git-Url: https://rtime.felk.cvut.cz/gitweb/sysless.git/commitdiff_plain cmdproc: Make backspace work even in sterm sterm sends chr(127) instead of backspace. --- diff --git a/libs4c/cmdproc/cmd_io_line.c b/libs4c/cmdproc/cmd_io_line.c index 7ad0ec8..3bcca49 100644 --- a/libs4c/cmdproc/cmd_io_line.c +++ b/libs4c/cmdproc/cmd_io_line.c @@ -41,7 +41,7 @@ int cmd_ed_line_buf(ed_line_buf_t *elb, int ch) if(!lastch){ elb->inbuf=0; /* Start new line */ } - if(ch == '\b') { /* backspace */ + if(ch == '\b' || ch == 127) { /* backspace, del (sometimes backspace = 127) */ if (elb->inbuf > 0) elb->inbuf--; return 0; @@ -200,8 +200,10 @@ int cmd_io_line_in(cmd_io_t *cmd_io) else if(el->flg&FL_ELB_ECHO) { while(cmd_io_putc(io_stack,ch)<0); - if (ch == '\b') - cmd_io_puts(io_stack, "\033[K"); /* Erase End of Line */ + if (ch == 127) + while(cmd_io_putc(io_stack,'\b')<0); + if (ch == '\b' || ch == 127) + cmd_io_puts(io_stack, "\033[K"); /* Erase End of Line */ } } return 0;