mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-07-08 20:17:27 +00:00
os-posix: simplify os_find_datadir
Use g_build_filename instead of sprintf, and g_autofree instead of manual freeing. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
3819af6e6a
commit
6dd2dacedd
39
os-posix.c
39
os-posix.c
|
@ -80,41 +80,26 @@ void os_setup_signal_handling(void)
|
|||
sigaction(SIGTERM, &act, NULL);
|
||||
}
|
||||
|
||||
/* Find a likely location for support files using the location of the binary.
|
||||
For installed binaries this will be "$bindir/../share/qemu". When
|
||||
running from the build tree this will be "$bindir/../pc-bios". */
|
||||
#define SHARE_SUFFIX "/share/qemu"
|
||||
#define BUILD_SUFFIX "/pc-bios"
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
char *os_find_datadir(void)
|
||||
{
|
||||
char *dir, *exec_dir;
|
||||
char *res;
|
||||
size_t max_len;
|
||||
g_autofree char *exec_dir = NULL;
|
||||
g_autofree char *dir = NULL;
|
||||
|
||||
exec_dir = qemu_get_exec_dir();
|
||||
if (exec_dir == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
dir = g_path_get_dirname(exec_dir);
|
||||
g_return_val_if_fail(exec_dir != NULL, NULL);
|
||||
|
||||
max_len = strlen(dir) +
|
||||
MAX(strlen(SHARE_SUFFIX), strlen(BUILD_SUFFIX)) + 1;
|
||||
res = g_malloc0(max_len);
|
||||
snprintf(res, max_len, "%s%s", dir, SHARE_SUFFIX);
|
||||
if (access(res, R_OK)) {
|
||||
snprintf(res, max_len, "%s%s", dir, BUILD_SUFFIX);
|
||||
if (access(res, R_OK)) {
|
||||
g_free(res);
|
||||
res = NULL;
|
||||
}
|
||||
dir = g_build_filename(exec_dir, "..", "pc-bios", NULL);
|
||||
if (g_file_test(dir, G_FILE_TEST_IS_DIR)) {
|
||||
return g_steal_pointer(&dir);
|
||||
}
|
||||
|
||||
g_free(dir);
|
||||
g_free(exec_dir);
|
||||
return res;
|
||||
return g_strdup(CONFIG_QEMU_DATADIR);
|
||||
}
|
||||
#undef SHARE_SUFFIX
|
||||
#undef BUILD_SUFFIX
|
||||
|
||||
void os_set_proc_name(const char *s)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue
Block a user