diff options
author | neonloop | 2023-01-22 20:50:00 +0000 |
---|---|---|
committer | neonloop | 2023-01-22 20:50:00 +0000 |
commit | 48f9bc6f61f8b93bad00c931b21b9b53e1154ed7 (patch) | |
tree | 69ca3ed41f1abae8debf7bbab1b8e6a01a763ceb /core.c | |
parent | 8aa3a79bbed36430f48466a3f7f1e5de7f5cd8af (diff) | |
download | picoarch-48f9bc6f61f8b93bad00c931b21b9b53e1154ed7.tar.gz picoarch-48f9bc6f61f8b93bad00c931b21b9b53e1154ed7.tar.bz2 picoarch-48f9bc6f61f8b93bad00c931b21b9b53e1154ed7.zip |
Moves save / config dir under .picoarch
Still uses old dir if exists to not need migration
Diffstat (limited to 'core.c')
-rw-r--r-- | core.c | 51 |
1 files changed, 41 insertions, 10 deletions
@@ -1,4 +1,5 @@ #include <dlfcn.h> +#include <dirent.h> #include <errno.h> #include <stdio.h> #include <stdlib.h> @@ -274,32 +275,62 @@ static void set_directories(const char *core_name) { #ifndef MINUI char cwd[MAX_PATH]; #endif + + char picoarch_root[MAX_PATH] = ""; + DIR* dir; + + /* Example: + * Old save / config dir: ~/.picoarch-gambatte + * New save / config dir: ~/.picoarch/data/gambatte + * System dir: ./system + * + * FunKey S: + * System dir: ~/.picoarch/system + * + * MinUI: + * Save / config dir: ~/.picoarch-gambatte + * System dir: ~/.picoarch-gambatte + */ if (home != NULL) { snprintf(dst, len, "%s/.picoarch-%s/", home, core_name); +#ifdef MINUI mkdir(dst, 0755); + strncpy(config_dir, save_dir, MAX_PATH-1); + strncpy(system_dir, save_dir, MAX_PATH-1); +#else + snprintf(picoarch_root, MAX_PATH, "%s/.picoarch", home); + mkdir(picoarch_root, 0755); + + dir = opendir(dst); + if (dir) { + /* Use old save dir if exists */ + closedir(dir); + } else { + snprintf(dst, len, "%s/data", picoarch_root); + mkdir(dst, 0755); + snprintf(dst, len, "%s/data/%s/", picoarch_root, core_name); + mkdir(dst, 0755); + } } strncpy(config_dir, save_dir, MAX_PATH-1); -#ifdef MINUI - strncpy(system_dir, save_dir, MAX_PATH-1); -#else - #ifdef FUNKEY_S - if (home != NULL) { - snprintf(system_dir, MAX_PATH, "%s/.picoarch", home); - mkdir(system_dir, 0755); - snprintf(system_dir, MAX_PATH, "%s/.picoarch/system", home); + if (strlen(picoarch_root)) { + snprintf(system_dir, MAX_PATH, "%s/system", picoarch_root); mkdir(system_dir, 0755); } else -#endif +#endif /* FUNKEY_S */ if (getcwd(cwd, MAX_PATH)) { snprintf(system_dir, MAX_PATH, "%s/system", cwd); mkdir(system_dir, 0755); } else { PA_FATAL("Can't find system directory"); } -#endif +#endif /* MINUI */ + PA_INFO("Config dir: %s\n", config_dir); + PA_INFO("Save dir: %s\n", save_dir); + PA_INFO("System dir: %s\n", system_dir); } static bool pa_environment(unsigned cmd, void *data) { |