Changeset ffc928b in rtems


Ignore:
Timestamp:
Sep 24, 2020, 1:31:41 PM (5 weeks ago)
Author:
Frank Kühndel <frank.kuehndel@…>
Branches:
master
Children:
0805930
Parents:
f48d7834
git-author:
Frank Kühndel <frank.kuehndel@…> (09/24/20 13:31:41)
git-committer:
Sebastian Huber <sebastian.huber@…> (09/28/20 12:16:06)
Message:

Fixing bug in line editing of the shell with CTRL-U.

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

Close #4097.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpukit/libmisc/shell/shell.c

    rf48d7834 rffc928b  
    622622          {
    623623            int clen = strlen (line);
     624            int bs;
    624625
    625626            strcpy (line, line + col);
     
    627628              fprintf(out,"\r%s%*c", prompt, clen, ' ');
    628629              fprintf(out,"\r%s%s", prompt, line);
     630
     631              for (bs = 0; bs < strlen(line); bs++) {
     632                fputc('\b', out);
     633              }
    629634            }
    630635            col = 0;
Note: See TracChangeset for help on using the changeset viewer.