Tilde seen as backspace in shell
Gene Smith
gds at chartertn.net
Thu Jan 22 22:18:41 UTC 2009
I don't know if this is a bug or a feature I don't understand about
terminal protocols or shells. When I enter a tilde (~) the effect is the
same as hitting backspace. This makes it impossible to enter a filename
that contains a ~ which is how LFNs are now displayed when they exist in
the filesystem.
I have seen this with RTEMS shell running in linux xterms, cygwin rxvt,
XP cmd window and Ed Sutter's uCon. Changing terminal setting make no
difference.
Looking with wireshark and telnet filter I see tilde go out. But then an
echo of \b (0x07, backspace) is send by RTEMS and in the next packet I
see 0x20,0x07 (space backspace). So the net result of typing tilde is a
backspace: (backspace, space, backspace).
Looking in cpukit/libmisc/shell/shell.c I found where ~ (Ascii value
0x7e) is converted to a backspace. Backspace and DEL are also treated
this way but I guess that is OK.
Also, near the bottom of the same function (rtems_shell_line_editor())
at the default of the case only chars between space and 'z' are printed.
For some reason {|}~ are excluded from printing.
So to allow ~ to act as a regular char, I had to exclude it from being
converted to backspace and open up the allowed ascii range to include tilde.
-gene
More information about the users
mailing list