fix(linenoise): Skip 0x00 to 0x1F character in dump mode

Skipping through the non printable character assures that
in dumb mode, any special keys will not lead to the cursor
movement.
This commit is contained in:
Guillaume Souchere
2024-04-17 12:50:02 +02:00
parent ac2491acc5
commit 302881e6b7

View File

@ -171,6 +171,7 @@ enum KEY_ACTION{
CTRL_U = 21, /* Ctrl+u */
CTRL_W = 23, /* Ctrl+w */
ESC = 27, /* Escape */
UNIT_SEP = 31, /* ctrl-_ */
BACKSPACE = 127 /* Backspace */
};
@ -1116,9 +1117,7 @@ static int linenoiseDumb(char* buf, size_t buflen, const char* prompt) {
int c = fgetc(stdin);
if (c == '\n') {
break;
} else if (c >= 0x1c && c <= 0x1f){
continue; /* consume arrow keys */
} else if (c == BACKSPACE || c == 0x8) {
} else if (c == BACKSPACE || c == CTRL_H) {
if (count > 0) {
buf[count - 1] = 0;
count--;
@ -1131,6 +1130,10 @@ static int linenoiseDumb(char* buf, size_t buflen, const char* prompt) {
continue;
}
} else if (c <= UNIT_SEP) {
/* Consume all character that are non printable (the backspace
* case is handled above) */
continue;
} else {
buf[count] = c;
++count;