----- "CAI Qian" <caiqian(a)redhat.com> wrote:
Hallo!
There are a few things that bother me the most regards the crash utility
usages.
1) Pointer remains at the beginning after the UP array key. When
entering the UP array key, it repeats the last command like,
crash> struct struct_tss
However, then the current position remains at the beginning. It is
usually unlike in bash that the current position remains at the end,
so it is easier to update the command like,
crash> struct struct_tss ffffffff819f1764
I believe that's a function of the readline library, and there may be
a setting/binding that could be used to make that happen. Since the
beginning, readline has been set up by crash like this:
if (STREQ(pc->editing_mode, "vi")) {
rl_editing_mode = vi_mode;
rl_bind_key(CTRL('N'), rl_get_next_history);
rl_bind_key(CTRL('P'), rl_get_previous_history);
rl_bind_key_in_map(CTRL('P'), rl_get_previous_history,
vi_insertion_keymap);
rl_bind_key_in_map(CTRL('N'), rl_get_next_history,
vi_insertion_keymap);
rl_generic_bind(ISFUNC, "[A", (char *)rl_get_previous_history,
vi_movement_keymap);
rl_generic_bind(ISFUNC, "[B", (char *)rl_get_next_history,
vi_movement_keymap);
}
if (STREQ(pc->editing_mode, "emacs")) {
rl_editing_mode = emacs_mode;
}
I don't recall where those bindings came from -- I copied them from some
other program. I'm guessing that there's a binding that would put the cursor
at the end of the recalled string, but I don't know what it is off-hand.
If anybody knows what the binding sequence is, please post it here...
On the other hand, when updating a command string, I guess it depends
whether the location you want to change is at the beginning or the end
of the string would be a cause to be bothered by it?
2) Pressing PgUp/PgDn when input leads nothing can be input. This
happens like,
crash> log
In order to see the full log output, I may press PgDn several
times. However, if continue pressing the key after the output has
already finished like,
In the case of the "log" command, the PageUp and PageDown keys are being
captured by the scrolling routine, which is /usr/bin/less by default.
crash>
there seems no way to input anything unless pressing Enter several
times until reach the next prompt.
Right -- PageUp and PageDown don't make sense once you are back to
the "crash> " command prompt.
3) Ctrl-C is not working to cancel the current input. GDB has the
same
problem. It needs to press Ctrl-C several times to get it to a new
prompt.
That's also done on purpose -- in certain circumstances it requires
that Ctrl-C be hit 3 times (MAX_SIGINTS_ACCEPTED). There was a good
reason that was put in place, but I'm afraid I don't recall why...
Dave