mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-04 20:15:19 +00:00
virsh: Clarify escape sequence
Currently, we put no strains on escape sequence possibly leaving users
with console that cannot be terminated. However, not all ASCII
characters can be used as escape sequence. Only those falling in
@ - _ can be; implement and document this constraint.
(cherry picked from commit 7960ce842b
)
This commit is contained in:
parent
782afa98e4
commit
b2ff41d81f
@ -34,6 +34,7 @@
|
||||
# include <errno.h>
|
||||
# include <unistd.h>
|
||||
# include <signal.h>
|
||||
# include <c-ctype.h>
|
||||
|
||||
# include "internal.h"
|
||||
# include "console.h"
|
||||
@ -292,7 +293,7 @@ static char
|
||||
vshGetEscapeChar(const char *s)
|
||||
{
|
||||
if (*s == '^')
|
||||
return CONTROL(s[1]);
|
||||
return CONTROL(c_toupper(s[1]));
|
||||
|
||||
return *s;
|
||||
}
|
||||
|
@ -19879,6 +19879,16 @@ vshShowVersion(vshControl *ctl ATTRIBUTE_UNUSED)
|
||||
vshPrint(ctl, "\n");
|
||||
}
|
||||
|
||||
static bool
|
||||
vshAllowedEscapeChar(char c)
|
||||
{
|
||||
/* Allowed escape characters:
|
||||
* a-z A-Z @ [ \ ] ^ _
|
||||
*/
|
||||
return ('a' <= c && c <= 'z') ||
|
||||
('@' <= c && c <= '_');
|
||||
}
|
||||
|
||||
/*
|
||||
* argv[]: virsh [options] [command]
|
||||
*
|
||||
@ -19942,7 +19952,8 @@ vshParseArgv(vshControl *ctl, int argc, char **argv)
|
||||
case 'e':
|
||||
len = strlen(optarg);
|
||||
|
||||
if ((len == 2 && *optarg == '^') ||
|
||||
if ((len == 2 && *optarg == '^' &&
|
||||
vshAllowedEscapeChar(optarg[1])) ||
|
||||
(len == 1 && *optarg != '^')) {
|
||||
ctl->escapeChar = optarg;
|
||||
} else {
|
||||
|
@ -95,7 +95,8 @@ Output elapsed time information for each command.
|
||||
=item B<-e>, B<--escape> I<string>
|
||||
|
||||
Set alternative escape sequence for I<console> command. By default,
|
||||
telnet's B<^]> is used.
|
||||
telnet's B<^]> is used. Allowed characters when using hat notation are:
|
||||
alphabetic character, @, [, ], \, ^, _.
|
||||
|
||||
=back
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user