Add image format option in monitor for removable media

(Chris Wright)

CVE-2008-1945


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4747 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
aurel32 2008-06-18 22:10:01 +00:00
parent 94451178b6
commit 2ecea9b8de
1 changed files with 14 additions and 6 deletions

View File

@ -396,18 +396,26 @@ static void do_eject(int force, const char *filename)
eject_device(bs, force); eject_device(bs, force);
} }
static void do_change_block(const char *device, const char *filename) static void do_change_block(const char *device, const char *filename, const char *fmt)
{ {
BlockDriverState *bs; BlockDriverState *bs;
BlockDriver *drv = NULL;
bs = bdrv_find(device); bs = bdrv_find(device);
if (!bs) { if (!bs) {
term_printf("device not found\n"); term_printf("device not found\n");
return; return;
} }
if (fmt) {
drv = bdrv_find_format(fmt);
if (!drv) {
term_printf("invalid format %s\n", fmt);
return;
}
}
if (eject_device(bs, 0) < 0) if (eject_device(bs, 0) < 0)
return; return;
bdrv_open(bs, filename, 0); bdrv_open2(bs, filename, 0, drv);
qemu_key_check(bs, filename); qemu_key_check(bs, filename);
} }
@ -426,12 +434,12 @@ static void do_change_vnc(const char *target)
} }
} }
static void do_change(const char *device, const char *target) static void do_change(const char *device, const char *target, const char *fmt)
{ {
if (strcmp(device, "vnc") == 0) { if (strcmp(device, "vnc") == 0) {
do_change_vnc(target); do_change_vnc(target);
} else { } else {
do_change_block(device, target); do_change_block(device, target, fmt);
} }
} }
@ -1339,8 +1347,8 @@ static term_cmd_t term_cmds[] = {
"", "quit the emulator" }, "", "quit the emulator" },
{ "eject", "-fB", do_eject, { "eject", "-fB", do_eject,
"[-f] device", "eject a removable medium (use -f to force it)" }, "[-f] device", "eject a removable medium (use -f to force it)" },
{ "change", "BF", do_change, { "change", "BFs?", do_change,
"device filename", "change a removable medium" }, "device filename [format]", "change a removable medium, optional format" },
{ "screendump", "F", do_screen_dump, { "screendump", "F", do_screen_dump,
"filename", "save screen into PPM image 'filename'" }, "filename", "save screen into PPM image 'filename'" },
{ "logfile", "F", do_logfile, { "logfile", "F", do_logfile,