Skip to content

Commit

Permalink
Only attempt to call dir_check_defaults once per runtime session
Browse files Browse the repository at this point in the history
when calling the frontend environment get callback - we want to
look at the 'default' directories, and then if they don't yet exist,
auto-create them so we can store files in them.
  • Loading branch information
inactive123 committed Nov 19, 2020
1 parent 02607e6 commit 9ee1e33
Show file tree
Hide file tree
Showing 19 changed files with 532 additions and 94 deletions.
35 changes: 33 additions & 2 deletions frontend/drivers/platform_ctr.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,13 +89,41 @@ static void get_first_valid_core(char* path_return, size_t len)
closedir(dir);
}
}
#else
static void ctr_dir_check_defaults(void)
{
unsigned i;
char path[PATH_MAX_LENGTH];

/* early return for people with a custom folder setup
so it doesn't create unnecessary directories
*/
strcpy_literal(path, "custom.ini");
if (path_is_valid(path))
return;

for (i = 0; i < DEFAULT_DIR_LAST; i++)
{
char new_path[PATH_MAX_LENGTH];
const char *dir_path = g_defaults.dirs[i];

if (string_is_empty(dir_path))
continue;

new_path[0] = '\0';
fill_pathname_expand_special(new_path,
dir_path, sizeof(new_path));

if (!path_is_directory(new_path))
path_mkdir(new_path);
}
}
#endif


static void frontend_ctr_get_environment_settings(int* argc, char* argv[],
void* args, void* params_data)
{
(void)args;

fill_pathname_basedir(g_defaults.dirs[DEFAULT_DIR_PORT], elf_path_cst, sizeof(g_defaults.dirs[DEFAULT_DIR_PORT]));
RARCH_LOG("port dir: [%s]\n", g_defaults.dirs[DEFAULT_DIR_PORT]);

Expand Down Expand Up @@ -129,6 +157,9 @@ static void frontend_ctr_get_environment_settings(int* argc, char* argv[],
"logs", sizeof(g_defaults.dirs[DEFAULT_DIR_LOGS]));
fill_pathname_join(g_defaults.path_config, g_defaults.dirs[DEFAULT_DIR_PORT],
FILE_PATH_MAIN_CONFIG, sizeof(g_defaults.path_config));
#ifndef IS_SALAMANDER
ctr_dir_check_defaults();
#endif
}

static void frontend_ctr_deinit(void* data)
Expand Down
34 changes: 34 additions & 0 deletions frontend/drivers/platform_darwin.m
Original file line number Diff line number Diff line change
Expand Up @@ -332,6 +332,37 @@ static void frontend_darwin_get_os(char *s, size_t len, int *major, int *minor)
#endif
}

#ifndef IS_SALAMANDER
static void darwin_dir_check_defaults(void)
{
unsigned i;
char path[PATH_MAX_LENGTH];

/* early return for people with a custom folder setup
so it doesn't create unnecessary directories
*/
strcpy_literal(path, "custom.ini");
if (path_is_valid(path))
return;

for (i = 0; i < DEFAULT_DIR_LAST; i++)
{
char new_path[PATH_MAX_LENGTH];
const char *dir_path = g_defaults.dirs[i];

if (string_is_empty(dir_path))
continue;

new_path[0] = '\0';
fill_pathname_expand_special(new_path,
dir_path, sizeof(new_path));

if (!path_is_directory(new_path))
path_mkdir(new_path);
}
}
#endif

static void frontend_darwin_get_environment_settings(int *argc, char *argv[],
void *args, void *params_data)
{
Expand Down Expand Up @@ -500,6 +531,9 @@ static void frontend_darwin_get_environment_settings(int *argc, char *argv[],

CFRelease(bundle_path);
CFRelease(bundle_url);
#ifndef IS_SALAMANDER
darwin_dir_check_defaults();
#endif
}

static void frontend_darwin_load_content(void)
Expand Down
40 changes: 34 additions & 6 deletions frontend/drivers/platform_dos.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,37 @@ enum frontend_architecture frontend_dos_get_architecture(void)
return FRONTEND_ARCH_X86;
}

#ifndef IS_SALAMANDER
static void dos_dir_check_defaults(void)
{
unsigned i;
char path[PATH_MAX_LENGTH];

/* early return for people with a custom folder setup
so it doesn't create unnecessary directories
*/
strcpy_literal(path, "custom.ini");
if (path_is_valid(path))
return;

for (i = 0; i < DEFAULT_DIR_LAST; i++)
{
char new_path[PATH_MAX_LENGTH];
const char *dir_path = g_defaults.dirs[i];

if (string_is_empty(dir_path))
continue;

new_path[0] = '\0';
fill_pathname_expand_special(new_path,
dir_path, sizeof(new_path));

if (!path_is_directory(new_path))
path_mkdir(new_path);
}
}
#endif

static void frontend_dos_get_env_settings(int *argc, char *argv[],
void *data, void *params_data)
{
Expand Down Expand Up @@ -105,12 +136,9 @@ static void frontend_dos_get_env_settings(int *argc, char *argv[],
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_LOGS], base_path,
"logs", sizeof(g_defaults.dirs[DEFAULT_DIR_LOGS]));

for (i = 0; i < DEFAULT_DIR_LAST; i++)
{
const char *dir_path = g_defaults.dirs[i];
if (!string_is_empty(dir_path))
path_mkdir(dir_path);
}
#ifndef IS_SALAMANDER
dos_dir_check_defaults();
#endif
}

static void frontend_dos_exec(const char *path, bool should_load_game)
Expand Down
39 changes: 32 additions & 7 deletions frontend/drivers/platform_emscripten.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,35 @@ void cmd_take_screenshot(void)
command_event(CMD_EVENT_TAKE_SCREENSHOT, NULL);
}

static void emscripten_dir_check_defaults(void)
{
unsigned i;
char path[PATH_MAX_LENGTH];

/* early return for people with a custom folder setup
so it doesn't create unnecessary directories
*/
strcpy_literal(path, "custom.ini");
if (path_is_valid(path))
return;

for (i = 0; i < DEFAULT_DIR_LAST; i++)
{
char new_path[PATH_MAX_LENGTH];
const char *dir_path = g_defaults.dirs[i];

if (string_is_empty(dir_path))
continue;

new_path[0] = '\0';
fill_pathname_expand_special(new_path,
dir_path, sizeof(new_path));

if (!path_is_directory(new_path))
path_mkdir(new_path);
}
}

static void frontend_emscripten_get_env(int *argc, char *argv[],
void *args, void *params_data)
{
Expand Down Expand Up @@ -150,13 +179,9 @@ static void frontend_emscripten_get_env(int *argc, char *argv[],
user_path, sizeof(g_defaults.dirs[DEFAULT_DIR_CONTENT_HISTORY]));
fill_pathname_join(g_defaults.path_config, user_path,
FILE_PATH_MAIN_CONFIG, sizeof(g_defaults.path_config));

for (i = 0; i < DEFAULT_DIR_LAST; i++)
{
const char *dir_path = g_defaults.dirs[i];
if (!string_is_empty(dir_path))
path_mkdir(dir_path);
}
#ifndef IS_SALAMANDER
emscripten_dir_check_defaults();
#endif
}

int main(int argc, char *argv[])
Expand Down
30 changes: 30 additions & 0 deletions frontend/drivers/platform_gx.c
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,35 @@ static void gx_devthread(void *a)

#ifdef IS_SALAMANDER
extern char gx_rom_path[PATH_MAX_LENGTH];
#else
static void gx_dir_check_defaults(void)
{
unsigned i;
char path[PATH_MAX_LENGTH];

/* early return for people with a custom folder setup
so it doesn't create unnecessary directories
*/
strcpy_literal(path, "custom.ini");
if (path_is_valid(path))
return;

for (i = 0; i < DEFAULT_DIR_LAST; i++)
{
char new_path[PATH_MAX_LENGTH];
const char *dir_path = g_defaults.dirs[i];

if (string_is_empty(dir_path))
continue;

new_path[0] = '\0';
fill_pathname_expand_special(new_path,
dir_path, sizeof(new_path));

if (!path_is_directory(new_path))
path_mkdir(new_path);
}
}
#endif

static void frontend_gx_get_environment_settings(
Expand Down Expand Up @@ -283,6 +312,7 @@ static void frontend_gx_get_environment_settings(
}
}
#endif
gx_dir_check_defaults();
#endif
}

Expand Down
37 changes: 30 additions & 7 deletions frontend/drivers/platform_orbis.c
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,35 @@ int main(int argc, char *argv[])
return rarch_main(argc, argv, NULL);
}

static void orbis_dir_check_defaults(void)
{
unsigned i;
char path[PATH_MAX_LENGTH];

/* early return for people with a custom folder setup
so it doesn't create unnecessary directories
*/
strcpy_literal(path, "host0:app/custom.ini");
if (path_is_valid(path))
return;

for (i = 0; i < DEFAULT_DIR_LAST; i++)
{
char new_path[PATH_MAX_LENGTH];
const char *dir_path = g_defaults.dirs[i];

if (string_is_empty(dir_path))
continue;

new_path[0] = '\0';
fill_pathname_expand_special(new_path,
dir_path, sizeof(new_path));

if (!path_is_directory(new_path))
path_mkdir(new_path);
}
}

static void frontend_orbis_get_environment_settings(int *argc, char *argv[],
void *args, void *params_data)
{
Expand Down Expand Up @@ -210,14 +239,8 @@ static void frontend_orbis_get_environment_settings(int *argc, char *argv[],
RARCH_LOG("Auto-start game %s.\n", argv[2]);
}
}
orbis_dir_check_defaults();
#endif

for (i = 0; i < DEFAULT_DIR_LAST; i++)
{
const char *dir_path = g_defaults.dirs[i];
if (!string_is_empty(dir_path))
path_mkdir(dir_path);
}
}

static void frontend_orbis_deinit(void *data)
Expand Down
40 changes: 34 additions & 6 deletions frontend/drivers/platform_ps2.c
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,37 @@ static void reset_IOP()
sbv_patch_disable_prefix_check();
}

#ifndef IS_SALAMANDER
static void ps2_dir_check_defaults(void)
{
unsigned i;
char path[PATH_MAX_LENGTH];

/* early return for people with a custom folder setup
so it doesn't create unnecessary directories
*/
strcpy_literal(path, "custom.ini");
if (path_is_valid(path))
return;

for (i = 0; i < DEFAULT_DIR_LAST; i++)
{
char new_path[PATH_MAX_LENGTH];
const char *dir_path = g_defaults.dirs[i];

if (string_is_empty(dir_path))
continue;

new_path[0] = '\0';
fill_pathname_expand_special(new_path,
dir_path, sizeof(new_path));

if (!path_is_directory(new_path))
path_mkdir(new_path);
}
}
#endif

static void frontend_ps2_get_environment_settings(int *argc, char *argv[],
void *args, void *params_data)
{
Expand Down Expand Up @@ -140,12 +171,9 @@ static void frontend_ps2_get_environment_settings(int *argc, char *argv[],
}
}
#endif
for (i = 0; i < DEFAULT_DIR_LAST; i++)
{
const char *dir_path = g_defaults.dirs[i];
if (!string_is_empty(dir_path))
path_mkdir(dir_path);
}
#ifndef IS_SALAMANDER
ps2_dir_check_defaults();
#endif
}

static void frontend_ps2_init(void *data)
Expand Down
Loading

0 comments on commit 9ee1e33

Please sign in to comment.