Commit 37146e7e authored by Richard W.M. Jones's avatar Richard W.M. Jones Committed by Paolo Bonzini
Browse files

vl.c: Add '-L help' which lists data dirs.



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: default avatarRichard W.M. Jones <rjones@redhat.com>
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
Message-Id: <1463416475-11728-2-git-send-email-rjones@redhat.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent f31e3266
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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, \
+12 −1
Original line number Diff line number Diff line
@@ -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();
@@ -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;
@@ -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 */