Signed-off-by: john cooper<address@hidden>
---
diff --git a/qemu-config.c b/qemu-config.c
index 5a4e61b..a490603 100644
--- a/qemu-config.c
+++ b/qemu-config.c
@@ -518,21 +518,29 @@ out:
return res;
}
-int qemu_read_config_file(const char *filename)
+/* attempt to open and parse config file, report problems if vflag
+ */
+int qemu_read_config_file(const char *filename, int vflag)
{
FILE *f = fopen(filename, "r");
- int ret;
+ int rv = 0;
if (f == NULL) {
- return -errno;
+ rv = -errno;
}
-
- ret = qemu_config_parse(f, vm_config_groups, filename);
- fclose(f);
-
- if (ret == 0) {
- return 0;
- } else {
- return -EINVAL;
+ else if (qemu_config_parse(f, vm_config_groups, filename) != 0) {
+ rv = -EINVAL;
+ }
+ else if (vflag) {
+ fprintf(stderr, "read config file %s\n", filename);
}
+ if (f) {
+ fclose(f);
+ }
+ if (rv&& vflag) {
+ fprintf(stderr, "can't read config file %s: %s\n",
+ filename, strerror(-rv));
+ }
+ return rv;
}
+
diff --git a/qemu-config.h b/qemu-config.h
index dca69d4..2e15556 100644
--- a/qemu-config.h
+++ b/qemu-config.h
@@ -23,6 +23,6 @@ void qemu_add_globals(void);
void qemu_config_write(FILE *fp);
int qemu_config_parse(FILE *fp, QemuOptsList **lists, const char
*fname);
-int qemu_read_config_file(const char *filename);
+int qemu_read_config_file(const char *filename, int vflag);
#endif /* QEMU_CONFIG_H */
diff --git a/vl.c b/vl.c
index 7121cd0..23c7276 100644
--- a/vl.c
+++ b/vl.c
@@ -2582,6 +2582,7 @@ int main(int argc, char **argv, char **envp)
#endif
int show_vnc_port = 0;
int defconfig = 1;
+ int defconfig_verbose = 0;
error_set_progname(argv[0]);
@@ -2657,6 +2658,10 @@ int main(int argc, char **argv, char **envp)
case QEMU_OPTION_nodefconfig:
defconfig=0;
break;
+ case QEMU_OPTION_readconfig:
+ if (!strcmp(optarg, "?"))
+ defconfig_verbose = 1;
+ break;
}
}
}
@@ -2664,12 +2669,14 @@ int main(int argc, char **argv, char **envp)
if (defconfig) {
int ret;
- ret = qemu_read_config_file(CONFIG_QEMU_CONFDIR "/qemu.conf");
+ ret = qemu_read_config_file(CONFIG_QEMU_CONFDIR "/qemu.conf",
+ defconfig_verbose);
if (ret< 0&& ret != -ENOENT) {
exit(1);
}
- ret = qemu_read_config_file(arch_config_name);
+ ret = qemu_read_config_file(arch_config_name,
+ defconfig_verbose);
if (ret< 0&& ret != -ENOENT) {
exit(1);
}
@@ -3386,15 +3393,9 @@ int main(int argc, char **argv, char **envp)
xen_mode = XEN_ATTACH;
break;
case QEMU_OPTION_readconfig:
- {
- int ret = qemu_read_config_file(optarg);
- if (ret< 0) {
- fprintf(stderr, "read config %s: %s\n", optarg,
- strerror(-ret));
- exit(1);
- }
- break;
- }
+ if (!defconfig_verbose&&
qemu_read_config_file(optarg, 1)< 0)
+ exit(1);
+ break;
case QEMU_OPTION_writeconfig:
{
FILE *fp;