mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-21 04:14:34 +00:00
cli: support bracketed paste
Some consoles use CSI 200~ and CSI 201~ to bracket inserts. This leads U-Boot to misinterpret the inserted string. Ignore these escape sequences. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
This commit is contained in:
parent
085cbdafca
commit
00fa8256b5
1 changed files with 20 additions and 2 deletions
|
@ -321,6 +321,7 @@ static int cread_line(const char *const prompt, char *buf, unsigned int *len,
|
||||||
act = ESC_CONVERTED;
|
act = ESC_CONVERTED;
|
||||||
break; /* pass off to ^N handler */
|
break; /* pass off to ^N handler */
|
||||||
case '1':
|
case '1':
|
||||||
|
case '2':
|
||||||
case '3':
|
case '3':
|
||||||
case '4':
|
case '4':
|
||||||
case '7':
|
case '7':
|
||||||
|
@ -332,7 +333,8 @@ static int cread_line(const char *const prompt, char *buf, unsigned int *len,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else if (esc_len == 3) {
|
} else if (esc_len == 3) {
|
||||||
if (ichar == '~') {
|
switch (ichar) {
|
||||||
|
case '~':
|
||||||
switch (esc_save[2]) {
|
switch (esc_save[2]) {
|
||||||
case '3': /* Delete key */
|
case '3': /* Delete key */
|
||||||
ichar = CTL_CH('d');
|
ichar = CTL_CH('d');
|
||||||
|
@ -349,9 +351,25 @@ static int cread_line(const char *const prompt, char *buf, unsigned int *len,
|
||||||
act = ESC_CONVERTED;
|
act = ESC_CONVERTED;
|
||||||
break; /* pass to ^E handler */
|
break; /* pass to ^E handler */
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case '0':
|
||||||
|
if (esc_save[2] == '2')
|
||||||
|
act = ESC_SAVE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else if (esc_len == 4) {
|
||||||
|
switch (ichar) {
|
||||||
|
case '0':
|
||||||
|
case '1':
|
||||||
|
act = ESC_SAVE;
|
||||||
|
break; /* bracketed paste */
|
||||||
|
}
|
||||||
|
} else if (esc_len == 5) {
|
||||||
|
if (ichar == '~') { /* bracketed paste */
|
||||||
|
ichar = 0;
|
||||||
|
act = ESC_CONVERTED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (act) {
|
switch (act) {
|
||||||
case ESC_SAVE:
|
case ESC_SAVE:
|
||||||
esc_save[esc_len++] = ichar;
|
esc_save[esc_len++] = ichar;
|
||||||
|
|
Loading…
Add table
Reference in a new issue