On Fri, Sep 25, 2020 at 3:11 AM Frank Kuehndel <frank.kuehn...@embedded-brains.de> wrote: > > This patch fixes a tiny bug in the command line editing of the RTEMS shell. > Typing CTRL-U in the shell should remove all characters left of the cursor. > After pressing CTRL-U, the current implementation does wrongly place the > cursor at the end of the line instead at its beginning. > > > To reproduce the bug, start the shell and type 'abc123' (no <RETURN>): > > > ~/src/rtems $ qemu-system-arm -net none -nographic -M realview-pbx-a9 -m > > 256M -kernel build/arm/realview_pbx_a9_qemu/testsuites/libtests/dl10.exe > > > > > > *** BEGIN OF TEST libdl (RTL) 10 *** > > *** TEST VERSION: 6.0.0.d9bdf166644f612dd628fe4951c12c6f8e94ba5f > > *** TEST STATE: USER_INPUT > > *** TEST BUILD: RTEMS_DEBUG RTEMS_NETWORKING RTEMS_POSIX_API RTEMS_SMP > > *** TEST TOOLS: 10.2.1 20200904 (RTEMS 6, RSB > > 31f936a7b74d60bda609a9960c6e1a705ba54974, Newlib a0d7982) > > RTL (libdl) commands: dl, rtl > > > > > > RTEMS Shell on /dev/foobar. Use 'help' to list commands. > > SHLL [/] # abc123 > > Then move the cursor onto the '1' by hitting three times the <ARROW-LEFT> > key. Next type <CTRL>-U: > > > SHLL [/] # 123 > > Note that the cursor is at the end of the line (after '3') instead of > correctly at the beginning (on the '1'), now. > > Continuing typing 'echo ' incorrectly results in the output: > > > SHLL [/] # 123echo 123 > > The patch changes this behavior so that the cursor in the second last step > will be on the '1' and typing 'echo ' will then correctly reflected as: > > > SHLL [/] # echo 123 >
Please put the above bug details into a ticket https://devel.rtems.org/wiki/NewTicket with a milestone of 6 And then use the commit message to briefly describe the fix and with "Closes #nnnn." to close the ticket. > --- > cpukit/libmisc/shell/shell.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/cpukit/libmisc/shell/shell.c b/cpukit/libmisc/shell/shell.c > index 13ae411f9c..ee65c1be36 100644 > --- a/cpukit/libmisc/shell/shell.c > +++ b/cpukit/libmisc/shell/shell.c > @@ -621,11 +621,14 @@ static int rtems_shell_line_editor( > if (col > 0) > { > int clen = strlen (line); > + int bs; > > strcpy (line, line + col); > if (output) { > fprintf(out,"\r%s%*c", prompt, clen, ' '); > fprintf(out,"\r%s%s", prompt, line); > + for (bs = 0; bs < strlen (line); bs++) Do not put a space between a function name and its parentheses. strlen(line) or strlen( line ) are both acceptable in this code. Although, it looks like the surrounding code violates this rule. Use explicitly { > + fputc('\b', out); and } for one-line blocks. > } > col = 0; > } > -- > 2.26.2 > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel