aboutsummaryrefslogtreecommitdiff
path: root/core.c
diff options
context:
space:
mode:
authorneonloop2023-01-22 20:50:00 +0000
committerneonloop2023-01-22 20:50:00 +0000
commit48f9bc6f61f8b93bad00c931b21b9b53e1154ed7 (patch)
tree69ca3ed41f1abae8debf7bbab1b8e6a01a763ceb /core.c
parent8aa3a79bbed36430f48466a3f7f1e5de7f5cd8af (diff)
downloadpicoarch-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.c51
1 files changed, 41 insertions, 10 deletions
diff --git a/core.c b/core.c
index 058236d..355262f 100644
--- a/core.c
+++ b/core.c
@@ -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) {