Changes v1 -> v2:
- Change 'userconfig' field/variables to bool instead of int
- Coding style change
Signed-off-by: Eduardo Habkost <ehabkost(a)redhat.com>
---
arch_init.c | 11 ++++++++---
qemu-config.h | 2 +-
qemu-options.hx | 16 +++++++++++++---
vl.c | 6 +++++-
4 files changed, 27 insertions(+), 8 deletions(-)
diff --git a/arch_init.c b/arch_init.c
index 62332e9..996baba 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -114,19 +114,24 @@ const uint32_t arch_type = QEMU_ARCH;
static struct defconfig_file {
const char *filename;
+ /* Indicates it is an user config file (disabled by -no-user-config) */
+ bool userconfig;
} default_config_files[] = {
- { CONFIG_QEMU_CONFDIR "/qemu.conf" },
- { CONFIG_QEMU_CONFDIR "/target-" TARGET_ARCH ".conf" },
+ { CONFIG_QEMU_CONFDIR "/qemu.conf", true },
+ { CONFIG_QEMU_CONFDIR "/target-" TARGET_ARCH ".conf", true },
{ NULL }, /* end of list */
};
-int qemu_read_default_config_files(void)
+int qemu_read_default_config_files(bool userconfig)
{
int ret;
struct defconfig_file *f;
for (f = default_config_files; f->filename; f++) {
+ if (!userconfig && f->userconfig) {
+ continue;
+ }
ret = qemu_read_config_file(f->filename);
if (ret < 0 && ret != -ENOENT) {
return ret;
diff --git a/qemu-config.h b/qemu-config.h
index ff934a1..6d7365d 100644
--- a/qemu-config.h
+++ b/qemu-config.h
@@ -18,6 +18,6 @@ int qemu_read_config_file(const char *filename);
/* Read default Qemu config files
*/
-int qemu_read_default_config_files(void);
+int qemu_read_default_config_files(bool userconfig);
#endif /* QEMU_CONFIG_H */
diff --git a/qemu-options.hx b/qemu-options.hx
index a169792..7d0b054 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -2685,9 +2685,19 @@ DEF("nodefconfig", 0, QEMU_OPTION_nodefconfig,
STEXI
@item -nodefconfig
@findex -nodefconfig
-Normally QEMU loads a configuration file from @var{sysconfdir}/qemu.conf and
-@var{sysconfdir}/target-(a)var{ARCH}.conf on startup. The @code{-nodefconfig}
-option will prevent QEMU from loading these configuration files at startup.
+Normally QEMU loads configuration files from @var{sysconfdir} and @var{datadir} at
startup.
+The @code{-nodefconfig} option will prevent QEMU from loading any of those config files.
+ETEXI
+DEF("no-user-config", 0, QEMU_OPTION_nouserconfig,
+ "-no-user-config\n"
+ " do not load user-provided config files at startup\n",
+ QEMU_ARCH_ALL)
+STEXI
+@item -no-user-config
+@findex -no-user-config
+The @code{-no-user-config} option makes QEMU not load any of the user-provided
+config files on @var{sysconfdir}, but won't make it skip the QEMU-provided config
+files from @var{datadir}.
ETEXI
DEF("trace", HAS_ARG, QEMU_OPTION_trace,
"-trace [events=<file>][,file=<file>]\n"
diff --git a/vl.c b/vl.c
index a4f4676..967b7e8 100644
--- a/vl.c
+++ b/vl.c
@@ -2280,6 +2280,7 @@ int main(int argc, char **argv, char **envp)
int show_vnc_port = 0;
#endif
int defconfig = true;
+ bool userconfig = true;
const char *log_mask = NULL;
const char *log_file = NULL;
GMemVTable mem_trace = {
@@ -2348,13 +2349,16 @@ int main(int argc, char **argv, char **envp)
case QEMU_OPTION_nodefconfig:
defconfig = false;
break;
+ case QEMU_OPTION_nouserconfig:
+ userconfig = false;
+ break;
}
}
}
if (defconfig) {
int ret;
- ret = qemu_read_default_config_files();
+ ret = qemu_read_default_config_files(userconfig);
if (ret < 0) {
exit(1);
}
--
1.7.3.2