mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
qapi: Convert change
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
parent
903a881481
commit
333a96ec9f
9 changed files with 181 additions and 98 deletions
57
hmp.c
57
hmp.c
|
@ -712,3 +712,60 @@ void hmp_eject(Monitor *mon, const QDict *qdict)
|
|||
qmp_eject(device, true, force, &err);
|
||||
hmp_handle_error(mon, &err);
|
||||
}
|
||||
|
||||
static void hmp_change_read_arg(Monitor *mon, const char *password,
|
||||
void *opaque)
|
||||
{
|
||||
qmp_change_vnc_password(password, NULL);
|
||||
monitor_read_command(mon, 1);
|
||||
}
|
||||
|
||||
static void cb_hmp_change_bdrv_pwd(Monitor *mon, const char *password,
|
||||
void *opaque)
|
||||
{
|
||||
Error *encryption_err = opaque;
|
||||
Error *err = NULL;
|
||||
const char *device;
|
||||
|
||||
device = error_get_field(encryption_err, "device");
|
||||
|
||||
qmp_block_passwd(device, password, &err);
|
||||
hmp_handle_error(mon, &err);
|
||||
error_free(encryption_err);
|
||||
|
||||
monitor_read_command(mon, 1);
|
||||
}
|
||||
|
||||
void hmp_change(Monitor *mon, const QDict *qdict)
|
||||
{
|
||||
const char *device = qdict_get_str(qdict, "device");
|
||||
const char *target = qdict_get_str(qdict, "target");
|
||||
const char *arg = qdict_get_try_str(qdict, "arg");
|
||||
Error *err = NULL;
|
||||
|
||||
if (strcmp(device, "vnc") == 0 &&
|
||||
(strcmp(target, "passwd") == 0 ||
|
||||
strcmp(target, "password") == 0)) {
|
||||
if (!arg) {
|
||||
monitor_read_password(mon, hmp_change_read_arg, NULL);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
qmp_change(device, target, !!arg, arg, &err);
|
||||
if (error_is_type(err, QERR_DEVICE_ENCRYPTED)) {
|
||||
monitor_printf(mon, "%s (%s) is encrypted.\n",
|
||||
error_get_field(err, "device"),
|
||||
error_get_field(err, "filename"));
|
||||
if (!monitor_get_rs(mon)) {
|
||||
monitor_printf(mon,
|
||||
"terminal does not support password prompting\n");
|
||||
error_free(err);
|
||||
return;
|
||||
}
|
||||
readline_start(monitor_get_rs(mon), "Password: ", 1,
|
||||
cb_hmp_change_bdrv_pwd, err);
|
||||
return;
|
||||
}
|
||||
hmp_handle_error(mon, &err);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue