Hi, Am 16.10.19 um 07:34 schrieb sendpatch@xxxxxx: > From: DU HUANPENG <u74147@xxxxxxxxx> > > currtly, the ctrl-u discards the whole line, in most linux > boxes, ctrl-u just erase characters before cursor to the > begginning of the line. this patch make ctrl-u to do this. Cool, didnÄt know i can use ctrl-u like this :) > > Signed-off-by: DU HUANPENG <u74147@xxxxxxxxx> > --- > lib/readline.c | 34 +++++++++++++++++++++++++++++++--- > 1 file changed, 31 insertions(+), 3 deletions(-) > > diff --git a/lib/readline.c b/lib/readline.c > index d026af1..c0b194c 100644 > --- a/lib/readline.c > +++ b/lib/readline.c > @@ -188,9 +188,10 @@ int readline(const char *prompt, char *buf, int len) > unsigned wlen; > int ichar; > int insert = 1; > + int i; > #ifdef CONFIG_AUTO_COMPLETE > char tmp; > - int reprint, i; > + int reprint; > char *completestr; > > complete_reset(); > @@ -291,8 +292,35 @@ int readline(const char *prompt, char *buf, int len) > break; > case BB_KEY_ERASE_LINE: > case CTL_CH('u'): > - BEGINNING_OF_LINE(); > - ERASE_TO_EOL(); > + if(num >= eol_num) { > + BEGINNING_OF_LINE(); > + ERASE_TO_EOL(); Please use kernel/barebox coding style. ./scripts/checkpatch.pl in barebox repository can help you. > + } else { > + for(i=num; i<eol_num; i++) { > + buf[i-num] = buf[i]; > + } > + buf[i] = '\0'; > + > + for(i=0; i<num; i++) { > + getcmd_putch(CTL_BACKSPACE); > + } > + for(i=0; i<eol_num; i++) { > + getcmd_putch(' '); > + } > + for(i=0; i<eol_num; i++) { > + getcmd_putch(CTL_BACKSPACE); > + } > + > + eol_num -= num; > + num = 0; > + > + for(i=0; i<eol_num; i++) { > + getcmd_putch(buf[i]); > + } > + for(i=0; i<eol_num; i++) { > + getcmd_putch(CTL_BACKSPACE); > + } > + } > break; > case DEL: > case BB_KEY_DEL7: >
Attachment:
signature.asc
Description: OpenPGP digital signature
_______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox