#2622 Issue closed: UserInput: Backspace does not erase characters¶
Labels: fixed / solved / done, minor bug
OliverO2 opened issue at 2021-06-02 14:17:¶
When using rear recover via ssh in an xterm window with disk
remapping, this is what is looks like when Backspace is pressed, trying
to erase the 1:
Choose an appropriate replacement for /dev/sda
1) /dev/vda
2) /dev/vdb
3) /dev/vdc
4) Do not map /dev/sda
5) Use Relax-and-Recover shell and return back to here
(default '1' timeout 300 seconds)
1^?
After the digit 1, an escape sequence for the delete character ^?
appears, making the input invalid.
The cause is the -n 1000 option used for the read invocation by
UserInput by default. To reproduce, use the following invocation, then
type 1 followed by the Backspace key:
$ read -t 300 -n 1000 x; echo "Input: <$x>" | cat -v
1^?
Input: <1^?>
Removing -n makes everything work.
The bash manual page on read says:
-n nchars
read returns after reading nchars characters rather than waiting for a
complete line of input, but honors a delimiter if fewer than nchars
characters are read before the delimiter.
So nchars is not really useful to limit the input line length, but to allow for single-character input without requiring a Return key press.
USER_INPUT_MAX_CHARS is implemented as described, but not used
anywhere in ReaR.
jsmeix commented at 2021-07-15 07:20:¶
The intent of USER_INPUT_MAX_CHARS is not to limit the input line
length by default
so the default USER_INPUT_MAX_CHARS=1000 is intentionally so big
to allow in practice unlimited input line length.
But read -n 1000 has the bad (and undocumented as far as I can see)
side effect
to make correcting/editing the input (before the Return key is pressed)
impossible.
So I have to change things to avoid that unintended and bad side effect.
jsmeix commented at 2021-07-15 07:28:¶
Oh!
It seems (at least for me with GNU bash version 4.4.23 on openSUSE Leap
15.2)
read behaves with -n 0 same as if no -n ... option was specified so
sinply
USER_INPUT_MAX_CHARS=0 in default.conf should do it.
But I have to test if read -n 0 behaves well also with older bash.
jsmeix commented at 2021-07-15 08:17:¶
Things work well for me with https://github.com/rear/rear/pull/2658
@OliverO2
thank you for the issue report and in particular
many thanks for your analysis what the root cause was that
made correcting the input (before [Enter] is pressed) impossible.
jsmeix commented at 2021-07-16 10:29:¶
With
https://github.com/rear/rear/pull/2658
merged
this issue should be fixed.
[Export of Github issue for rear/rear.]