Skip to content

Commit

Permalink
vl.c: Add '-L help' which lists data dirs.
Browse files Browse the repository at this point in the history
QEMU compiles a list of data directories from various sources.  When
consuming a QEMU binary it's useful to be able to get this list of
data directories: a primary reason is so you can list what BIOSes or
keymaps ship with this version of QEMU.  However without reproducing
the method that QEMU uses internally, it's not possible to get the
list of data directories.

This commit adds a simple '-L help' option that just lists out the
data directories as qemu calculates them:

$ ./x86_64-softmmu/qemu-system-x86_64 -L help
/home/rjones/d/qemu/pc-bios
/usr/local/share/qemu

$ ./x86_64-softmmu/qemu-system-x86_64 -L /tmp -L help
/tmp
/home/rjones/d/qemu/pc-bios
/usr/local/share/qemu

Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <1463416475-11728-2-git-send-email-rjones@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
  • Loading branch information
rwmjones authored and bonzini committed Jun 16, 2016
1 parent f31e326 commit 37146e7
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 1 deletion.
2 changes: 2 additions & 0 deletions qemu-options.hx
Expand Up @@ -3214,6 +3214,8 @@ STEXI
@item -L @var{path}
@findex -L
Set the directory for the BIOS, VGA BIOS and keymaps.
To list all the data directories, use @code{-L help}.
ETEXI
DEF("bios", HAS_ARG, QEMU_OPTION_bios, \
Expand Down
13 changes: 12 additions & 1 deletion vl.c
Expand Up @@ -2968,6 +2968,7 @@ int main(int argc, char **argv, char **envp)
FILE *vmstate_dump_file = NULL;
Error *main_loop_err = NULL;
Error *err = NULL;
bool list_data_dirs = false;

qemu_init_cpu_loop();
qemu_mutex_lock_iothread();
Expand Down Expand Up @@ -3354,7 +3355,9 @@ int main(int argc, char **argv, char **envp)
add_device_config(DEV_GDB, optarg);
break;
case QEMU_OPTION_L:
if (data_dir_idx < ARRAY_SIZE(data_dir)) {
if (is_help_option(optarg)) {
list_data_dirs = true;
} else if (data_dir_idx < ARRAY_SIZE(data_dir)) {
data_dir[data_dir_idx++] = optarg;
}
break;
Expand Down Expand Up @@ -4086,6 +4089,14 @@ int main(int argc, char **argv, char **envp)
data_dir[data_dir_idx++] = CONFIG_QEMU_DATADIR;
}

/* -L help lists the data directories and exits. */
if (list_data_dirs) {
for (i = 0; i < data_dir_idx; i++) {
printf("%s\n", data_dir[i]);
}
exit(0);
}

smp_parse(qemu_opts_find(qemu_find_opts("smp-opts"), NULL));

machine_class->max_cpus = machine_class->max_cpus ?: 1; /* Default to UP */
Expand Down

0 comments on commit 37146e7

Please sign in to comment.