aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hw/avr/boot.c2
-rw-r--r--include/qemu-common.h17
-rw-r--r--include/qemu/osdep.h5
-rw-r--r--os-posix.c3
-rw-r--r--os-win32.c7
5 files changed, 31 insertions, 3 deletions
diff --git a/hw/avr/boot.c b/hw/avr/boot.c
index 6fbcde4..d16bb3d 100644
--- a/hw/avr/boot.c
+++ b/hw/avr/boot.c
@@ -60,7 +60,7 @@ static const char *avr_elf_e_flags_to_cpu_type(uint32_t flags)
bool avr_load_firmware(AVRCPU *cpu, MachineState *ms,
MemoryRegion *program_mr, const char *firmware)
{
- const char *filename;
+ g_autofree char *filename = NULL;
int bytes_loaded;
uint64_t entry;
uint32_t e_flags;
diff --git a/include/qemu-common.h b/include/qemu-common.h
index d0142f2..bb9496b 100644
--- a/include/qemu-common.h
+++ b/include/qemu-common.h
@@ -110,6 +110,23 @@ const char *qemu_get_vm_name(void);
#define QEMU_FILE_TYPE_BIOS 0
#define QEMU_FILE_TYPE_KEYMAP 1
+/**
+ * qemu_find_file:
+ * @type: QEMU_FILE_TYPE_BIOS (for BIOS, VGA BIOS)
+ * or QEMU_FILE_TYPE_KEYMAP (for keymaps).
+ * @name: Relative or absolute file name
+ *
+ * If @name exists on disk as an absolute path, or a path relative
+ * to the current directory, then returns @name unchanged.
+ * Otherwise searches for @name file in the data directories, either
+ * configured at build time (DATADIR) or registered with the -L command
+ * line option.
+ *
+ * The caller must use g_free() to free the returned data when it is
+ * no longer required.
+ *
+ * Returns: a path that can access @name, or NULL if no matching file exists.
+ */
char *qemu_find_file(int type, const char *name);
/* OS specific functions */
diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index 4841b5c..45c217a 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -588,7 +588,10 @@ char *qemu_get_local_state_pathname(const char *relative_pathname);
void qemu_init_exec_dir(const char *argv0);
/* Get the saved exec dir.
- * Caller needs to release the returned string by g_free() */
+ *
+ * The caller is responsible for releasing the value returned with g_free()
+ * after use.
+ */
char *qemu_get_exec_dir(void);
/**
diff --git a/os-posix.c b/os-posix.c
index b674b20..3572db3 100644
--- a/os-posix.c
+++ b/os-posix.c
@@ -84,6 +84,9 @@ void os_setup_signal_handling(void)
* Find a likely location for support files using the location of the binary.
* When running from the build tree this will be "$bindir/../pc-bios".
* Otherwise, this is CONFIG_QEMU_DATADIR.
+ *
+ * The caller must use g_free() to free the returned data when it is
+ * no longer required.
*/
char *os_find_datadir(void)
{
diff --git a/os-win32.c b/os-win32.c
index 6b86e02..c9c3afe 100644
--- a/os-win32.c
+++ b/os-win32.c
@@ -57,7 +57,12 @@ void os_setup_early_signal_handling(void)
atexit(os_undo_timer_resolution);
}
-/* Look for support files in the same directory as the executable. */
+/*
+ * Look for support files in the same directory as the executable.
+ *
+ * The caller must use g_free() to free the returned data when it is
+ * no longer required.
+ */
char *os_find_datadir(void)
{
return qemu_get_exec_dir();