aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vl.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/vl.c b/vl.c
index eda96aaa6c..e14f45eaee 100644
--- a/vl.c
+++ b/vl.c
@@ -273,6 +273,7 @@ static int default_vga = 1;
static int default_floppy = 1;
static int default_cdrom = 1;
static int default_sdcard = 1;
+static int default_qmp = 1;
static struct {
const char *driver;
@@ -4269,15 +4270,22 @@ int main(int argc, char **argv, char **envp)
break;
case QEMU_OPTION_qmp:
monitor_parse(optarg, "control");
- default_monitor = 0;
+ default_qmp = 0;
break;
case QEMU_OPTION_mon:
opts = qemu_opts_parse(&qemu_mon_opts, optarg, 1);
if (!opts) {
fprintf(stderr, "parse error: %s\n", optarg);
exit(1);
+ } else {
+ const char *mode;
+ mode = qemu_opt_get(opts, "mode");
+ if (mode == NULL || strcmp(mode, "readline") == 0) {
+ default_monitor = 0;
+ } else if (strcmp(mode, "control") == 0) {
+ default_qmp = 0;
+ }
}
- default_monitor = 0;
break;
case QEMU_OPTION_chardev:
opts = qemu_opts_parse(&qemu_chardev_opts, optarg, 1);
@@ -4515,6 +4523,7 @@ int main(int argc, char **argv, char **envp)
default_parallel = 0;
default_virtcon = 0;
default_monitor = 0;
+ default_qmp = 0;
default_vga = 0;
default_net = 0;
default_floppy = 0;