[PATCH] shell: Fixing bug in line editing of the shell with CTRL-U.

Joel Sherrill joel at rtems.org
Fri Sep 25 16:06:54 UTC 2020


On Fri, Sep 25, 2020, 10:06 AM Gedare Bloom <gedare at rtems.org> wrote:

> On Fri, Sep 25, 2020 at 3:11 AM Frank Kuehndel
> <frank.kuehndel at 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
>

Why wouldn't this also be appropriate for 5?

And can anyone confirm this happens on real hardware? Sometimes control
characters act funny on simulators.



> 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 at rtems.org
> > http://lists.rtems.org/mailman/listinfo/devel
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20200925/c3e9baa8/attachment-0001.html>


More information about the devel mailing list