Load global config files by default

A new option, -nodefconfig is introduced to prevent loading from the default
config location.  Otherwise, two configuration files will be searched for,
qemu.conf and target-<TARGET_NAME>.conf.

To ensure that the default configuration is overridden by a user specified
config, we introduce a two stage option parsing mechanism.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
Anthony Liguori 2010-01-21 10:57:58 -06:00
parent 6530a97bdd
commit 292444cb87
2 changed files with 48 additions and 0 deletions

View File

@ -1965,6 +1965,15 @@ STEXI
@item -writeconfig @var{file}
Write device configuration to @var{file}.
ETEXI
DEF("nodefconfig", 0, QEMU_OPTION_nodefconfig,
"-nodefconfig\n"
" do not load default config files at startup\n")
STEXI
@item -nodefconfig
Normally QEMU loads a configuration file from @var{sysconfdir}/qemu.conf and
@var{sysconfdir}/target-@var{ARCH}.conf on startup. The @code{-nodefconfig}
option will prevent QEMU from loading these configuration files at startup.
ETEXI
HXCOMM This is the last statement. Insert new options before this line!
STEXI

39
vl.c
View File

@ -4730,6 +4730,7 @@ int main(int argc, char **argv, char **envp)
#endif
CPUState *env;
int show_vnc_port = 0;
int defconfig = 1;
init_clocks();
@ -4789,6 +4790,44 @@ int main(int argc, char **argv, char **envp)
tb_size = 0;
autostart= 1;
/* first pass of option parsing */
optind = 1;
while (optind < argc) {
if (argv[optind][0] != '-') {
/* disk image */
continue;
} else {
const QEMUOption *popt;
popt = lookup_opt(argc, argv, &optarg, &optind);
switch (popt->index) {
case QEMU_OPTION_nodefconfig:
defconfig=0;
break;
}
}
}
if (defconfig) {
FILE *fp;
fp = fopen(CONFIG_QEMU_CONFDIR "/qemu.conf", "r");
if (fp) {
if (qemu_config_parse(fp) != 0) {
exit(1);
}
fclose(fp);
}
fp = fopen(CONFIG_QEMU_CONFDIR "/target-" TARGET_ARCH ".conf", "r");
if (fp) {
if (qemu_config_parse(fp) != 0) {
exit(1);
}
fclose(fp);
}
}
/* second pass of option parsing */
optind = 1;
for(;;) {
if (optind >= argc)