<div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Sep 25, 2020, 10:06 AM Gedare Bloom <<a href="mailto:gedare@rtems.org">gedare@rtems.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Fri, Sep 25, 2020 at 3:11 AM Frank Kuehndel<br>
<<a href="mailto:frank.kuehndel@embedded-brains.de" target="_blank" rel="noreferrer">frank.kuehndel@embedded-brains.de</a>> wrote:<br>
><br>
> 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.<br>
><br>
><br>
> To reproduce the bug, start the shell and type 'abc123' (no <RETURN>):<br>
><br>
> > ~/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<br>
> ><br>
> ><br>
> > *** BEGIN OF TEST libdl (RTL) 10 ***<br>
> > *** TEST VERSION: 6.0.0.d9bdf166644f612dd628fe4951c12c6f8e94ba5f<br>
> > *** TEST STATE: USER_INPUT<br>
> > *** TEST BUILD: RTEMS_DEBUG RTEMS_NETWORKING RTEMS_POSIX_API RTEMS_SMP<br>
> > *** TEST TOOLS: 10.2.1 20200904 (RTEMS 6, RSB 31f936a7b74d60bda609a9960c6e1a705ba54974, Newlib a0d7982)<br>
> > RTL (libdl) commands: dl, rtl<br>
> ><br>
> ><br>
> > RTEMS Shell on /dev/foobar. Use 'help' to list commands.<br>
> > SHLL [/] # abc123<br>
><br>
> Then move the cursor onto the '1' by hitting three times the <ARROW-LEFT> key. Next type <CTRL>-U:<br>
><br>
> > SHLL [/] # 123<br>
><br>
> Note that the cursor is at the end of the line (after '3') instead of correctly at the beginning (on the '1'), now.<br>
><br>
> Continuing typing 'echo ' incorrectly results in the output:<br>
><br>
> > SHLL [/] # 123echo 123<br>
><br>
> 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:<br>
><br>
> > SHLL [/] # echo 123<br>
><br>
<br>
Please put the above bug details into a ticket<br>
<a href="https://devel.rtems.org/wiki/NewTicket" rel="noreferrer noreferrer" target="_blank">https://devel.rtems.org/wiki/NewTicket</a> with a milestone of 6<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Why wouldn't this also be appropriate for 5?</div><div dir="auto"><br></div><div dir="auto">And can anyone confirm this happens on real hardware? Sometimes control characters act funny on simulators.</div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
And then use the commit message to briefly describe the fix and with<br>
"Closes #nnnn." to close the ticket.<br>
<br>
<br>
<br>
> ---<br>
>  cpukit/libmisc/shell/shell.c | 3 +++<br>
>  1 file changed, 3 insertions(+)<br>
><br>
> diff --git a/cpukit/libmisc/shell/shell.c b/cpukit/libmisc/shell/shell.c<br>
> index 13ae411f9c..ee65c1be36 100644<br>
> --- a/cpukit/libmisc/shell/shell.c<br>
> +++ b/cpukit/libmisc/shell/shell.c<br>
> @@ -621,11 +621,14 @@ static int rtems_shell_line_editor(<br>
>            if (col > 0)<br>
>            {<br>
>              int clen = strlen (line);<br>
> +            int bs;<br>
><br>
>              strcpy (line, line + col);<br>
>              if (output) {<br>
>                fprintf(out,"\r%s%*c", prompt, clen, ' ');<br>
>                fprintf(out,"\r%s%s", prompt, line);<br>
> +              for (bs = 0; bs < strlen (line); bs++)<br>
Do not put a space between a function name and its parentheses.<br>
strlen(line) or strlen( line ) are both acceptable in this code.<br>
Although, it looks like the surrounding code violates this rule.<br>
<br>
Use explicitly {<br>
> +                fputc('\b', out);<br>
and }<br>
for one-line blocks.<br>
<br>
<br>
>              }<br>
>              col = 0;<br>
>            }<br>
> --<br>
> 2.26.2<br>
><br>
> _______________________________________________<br>
> devel mailing list<br>
> <a href="mailto:devel@rtems.org" target="_blank" rel="noreferrer">devel@rtems.org</a><br>
> <a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer noreferrer" target="_blank">http://lists.rtems.org/mailman/listinfo/devel</a><br>
_______________________________________________<br>
devel mailing list<br>
<a href="mailto:devel@rtems.org" target="_blank" rel="noreferrer">devel@rtems.org</a><br>
<a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer noreferrer" target="_blank">http://lists.rtems.org/mailman/listinfo/devel</a><br>
</blockquote></div></div></div>