Any further objections to this one? It's a pretty useful patch for us. On Mon, May 16, 2016 at 05:34:35PM +0100, Richard W.M. Jones wrote: > 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 <rjo...@redhat.com> > Reviewed-by: Eric Blake <ebl...@redhat.com> > --- > qemu-options.hx | 2 ++ > vl.c | 13 ++++++++++++- > 2 files changed, 14 insertions(+), 1 deletion(-) > > diff --git a/qemu-options.hx b/qemu-options.hx > index 6106520..bec0210 100644 > --- a/qemu-options.hx > +++ b/qemu-options.hx > @@ -3199,6 +3199,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, \ > diff --git a/vl.c b/vl.c > index 5fd22cb..d25f2f7 100644 > --- a/vl.c > +++ b/vl.c > @@ -2990,6 +2990,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(); > @@ -3371,7 +3372,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; > @@ -4128,6 +4131,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 > */ > -- > 2.7.4 >
Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into KVM guests. http://libguestfs.org/virt-v2v