]> rtime.felk.cvut.cz Git - sysless.git/commitdiff
cmdproc: Make backspace work even in sterm master
authorMichal Sojka <sojkam1@fel.cvut.cz>
Wed, 30 Mar 2016 12:21:17 +0000 (14:21 +0200)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Tue, 19 Apr 2016 10:41:24 +0000 (12:41 +0200)
sterm sends chr(127) instead of backspace.

libs4c/cmdproc/cmd_io_line.c

index 7ad0ec8e7aaf77e486bcb10eb6c6c6d96be2a897..3bcca497d9695b31a52a1f27279f30f087a85cc0 100644 (file)
@@ -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;