From d687ca146b4b5c3365716439d6e2559a291f3fd3 Mon Sep 17 00:00:00 2001 From: Matt Borgerson <contact@mborgerson.com> Date: Mon, 24 May 2021 01:55:17 -0700 Subject: [PATCH] ui: Simplify settings/eeprom path resolve --- ui/xemu-settings.c | 65 +++++++--------------------------------------- 1 file changed, 10 insertions(+), 55 deletions(-) diff --git a/ui/xemu-settings.c b/ui/xemu-settings.c index d5466df1cd..d5e5c417a4 100644 --- a/ui/xemu-settings.c +++ b/ui/xemu-settings.c @@ -221,36 +221,13 @@ const char *xemu_settings_get_path(void) return settings_path; } - char *base = SDL_GetPrefPath("xemu", "xemu"); + char *base = xemu_settings_detect_portable_mode() + ? SDL_GetBasePath() + : SDL_GetPrefPath("xemu", "xemu"); assert(base != NULL); - - // Check for xemu.ini in xemu binary directory, "portable mode" - if (xemu_settings_detect_portable_mode()) { - base = SDL_GetBasePath(); - assert(base != NULL); - } - - size_t base_len = strlen(base); - - size_t filename_len = strlen(filename); - size_t final_len = base_len + filename_len; - final_len += 1; // Terminating null byte - - char *path = malloc(final_len); - assert(path != NULL); - - // Copy base part - memcpy(path, base, base_len); - free(base); - - // Copy filename part - memcpy(path+base_len, filename, strlen(filename)); - path[final_len-1] = '\0'; - - settings_path = path; - + settings_path = g_strdup_printf("%s%s", base, filename); + SDL_free(base); fprintf(stderr, "%s: config path: %s\n", __func__, settings_path); - return settings_path; } @@ -261,34 +238,12 @@ const char *xemu_settings_get_default_eeprom_path(void) return eeprom_path; } - char *base = SDL_GetPrefPath("xemu", "xemu"); + char *base = xemu_settings_detect_portable_mode() + ? SDL_GetBasePath() + : SDL_GetPrefPath("xemu", "xemu"); assert(base != NULL); - - // Check for xemu.ini in xemu binary directory, "portable mode" - if (xemu_settings_detect_portable_mode()) { - base = SDL_GetBasePath(); - assert(base != NULL); - } - - size_t base_len = strlen(base); - - const char *name = "eeprom.bin"; - size_t name_len = strlen(name); - size_t final_len = base_len + name_len; - final_len += 1; // Terminating null byte - - char *path = malloc(final_len); - assert(path != NULL); - - // Copy base part - memcpy(path, base, base_len); - free(base); - - // Copy name part - memcpy(path+base_len, name, name_len); - path[final_len-1] = '\0'; - - eeprom_path = path; + eeprom_path = g_strdup_printf("%s%s", base, "eeprom.bin"); + SDL_free(base); return eeprom_path; }