Add paths to config file

This commit is contained in:
2024-06-19 01:14:34 -04:00
parent 3ef2092dc2
commit 79afaca01d
6 changed files with 82 additions and 20 deletions

View File

@@ -215,7 +215,7 @@ int install_badge_dir(FS_DirectoryEntry set_dir, int *badge_count, int set_id)
u16 path[512] = {0};
u16 set_icon[17] = {0};
utf8_to_utf16(set_icon, (u8 *) "_seticon.png", 16);
struacat(path, "/Badges/");
struacat(path, main_paths[REMOTE_MODE_BADGES]);
strucat(path, set_dir.name);
res = FSUSER_OpenDirectory(&folder, ArchiveSD, fsMakePath(PATH_UTF16, path));
if (R_FAILED(res))
@@ -231,7 +231,7 @@ int install_badge_dir(FS_DirectoryEntry set_dir, int *badge_count, int set_id)
if (!strcmp(badge_files[i].shortExt, "PNG"))
{
memset(path, 0, 512 * sizeof(u16));
struacat(path, "/Badges/");
struacat(path, main_paths[REMOTE_MODE_BADGES]);
strucat(path, set_dir.name);
struacat(path, "/");
strucat(path, badge_files[i].name);
@@ -245,7 +245,7 @@ int install_badge_dir(FS_DirectoryEntry set_dir, int *badge_count, int set_id)
} else if (!strcmp(badge_files[i].shortExt, "ZIP"))
{
memset(path, 0, 512 * sizeof(u16));
struacat(path, "/Badges/");
struacat(path, main_paths[REMOTE_MODE_BADGES]);
strucat(path, set_dir.name);
struacat(path, "/");
strucat(path, badge_files[i].name);
@@ -599,7 +599,7 @@ Result install_badges(void)
DEBUG("Opening badge directory\n");
FS_DirectoryEntry *badge_files = calloc(1024, sizeof(FS_DirectoryEntry));
res = FSUSER_OpenDirectory(&folder, ArchiveSD, fsMakePath(PATH_ASCII, "/Badges/"));
res = FSUSER_OpenDirectory(&folder, ArchiveSD, fsMakePath(PATH_ASCII, main_paths[REMOTE_MODE_BADGES]));
if (R_FAILED(res))
{
DEBUG("Failed to open folder: %lx\n", res);
@@ -678,7 +678,7 @@ Result install_badges(void)
default_idx = badge_count;
}
u16 path[0x512] = {0};
struacat(path, "/Badges/");
struacat(path, main_paths[REMOTE_MODE_BADGES]);
strucat(path, badge_files[i].name);
default_set_count += install_badge_png(fsMakePath(PATH_UTF16, path), badge_files[i], &badge_count, default_set);
} else if (!strcmp(badge_files[i].shortExt, "ZIP"))
@@ -689,7 +689,7 @@ Result install_badges(void)
default_set = set_count;
}
u16 path[0x512] = {0};
struacat(path, "/Badges/");
struacat(path, main_paths[REMOTE_MODE_BADGES]);
strucat(path, badge_files[i].name);
default_set_count += install_badge_zip(path, &badge_count, default_set);

View File

@@ -30,6 +30,8 @@ Config_s config;
void load_config(void)
{
Handle test_handle;
Result res;
memset(&config, 0, sizeof(Config_s));
char *json_buf = NULL;
u32 json_len = file_to_buf(fsMakePath(PATH_ASCII, "/3ds/" APP_TITLE "/config.json"), ArchiveSD, &json_buf);
@@ -95,6 +97,54 @@ void load_config(void)
config.yellow_color = C2D_Color32(r, g, b, a);
}
}
else if (json_is_string(value) && !strcmp(key, "Themes Path"))
{
bool need_slash = json_string_value(value)[strlen(json_string_value(value)) - 1] != '/';
char *theme_path = calloc(1, strlen(json_string_value(value)) + 1 + (need_slash ? 1 : 0));
memcpy(theme_path, json_string_value(value), strlen(json_string_value(value)));
if (need_slash) theme_path[strlen(json_string_value(value))] = '/';
if (R_SUCCEEDED(res = FSUSER_OpenDirectory(&test_handle, ArchiveSD, fsMakePath(PATH_ASCII, theme_path))))
{
main_paths[REMOTE_MODE_THEMES] = theme_path;
FSDIR_Close(test_handle);
} else
{
DEBUG("Failed test - reverting to default. Err 0x%08lx\n", res);
free(theme_path);
}
}
else if (json_is_string(value) && !strcmp(key, "Splashes Path"))
{
bool need_slash = json_string_value(value)[strlen(json_string_value(value)) - 1] != '/';
char *splash_path = calloc(1, strlen(json_string_value(value)) + 1 + (need_slash ? 1 : 0));
memcpy(splash_path, json_string_value(value), strlen(json_string_value(value)));
if (need_slash) splash_path[strlen(json_string_value(value))] = '/';
if (R_SUCCEEDED(res = FSUSER_OpenDirectory(&test_handle, ArchiveSD, fsMakePath(PATH_ASCII, splash_path))))
{
main_paths[REMOTE_MODE_SPLASHES] = splash_path;
FSDIR_Close(test_handle);
} else
{
DEBUG("Failed test - reverting to default. Err 0x%08lx\n", res);
free(splash_path);
}
}
else if (json_is_string(value) && !strcmp(key, "Badges Path"))
{
bool need_slash = json_string_value(value)[strlen(json_string_value(value)) - 1] != '/';
char *badge_path = calloc(1, strlen(json_string_value(value)) + 1 + (need_slash ? 1 : 0));
memcpy(badge_path, json_string_value(value), strlen(json_string_value(value)));
if (need_slash) badge_path[strlen(json_string_value(value))] = '/';
if (R_SUCCEEDED(res = FSUSER_OpenDirectory(&test_handle, ArchiveSD, fsMakePath(PATH_ASCII, badge_path))))
{
main_paths[REMOTE_MODE_BADGES] = badge_path;
FSDIR_Close(test_handle);
} else
{
DEBUG("Failed test - reverting to default. Err 0x%08lx\n", res);
free(badge_path);
}
}
}
} else
{

View File

@@ -117,10 +117,9 @@ Result open_archives(void)
archive2 = 0x00;
}
FSUSER_CreateDirectory(ArchiveSD, fsMakePath(PATH_ASCII, "/Themes"), FS_ATTRIBUTE_DIRECTORY);
FSUSER_CreateDirectory(ArchiveSD, fsMakePath(PATH_ASCII, "/Splashes"), FS_ATTRIBUTE_DIRECTORY);
FSUSER_CreateDirectory(ArchiveSD, fsMakePath(PATH_ASCII, "/Badges"), FS_ATTRIBUTE_DIRECTORY);
FSUSER_CreateDirectory(ArchiveSD, fsMakePath(PATH_ASCII, "/Badges/ThemePlaza Badges"), FS_ATTRIBUTE_DIRECTORY);
FSUSER_CreateDirectory(ArchiveSD, fsMakePath(PATH_ASCII, main_paths[REMOTE_MODE_THEMES]), FS_ATTRIBUTE_DIRECTORY);
FSUSER_CreateDirectory(ArchiveSD, fsMakePath(PATH_ASCII, main_paths[REMOTE_MODE_SPLASHES]), FS_ATTRIBUTE_DIRECTORY);
FSUSER_CreateDirectory(ArchiveSD, fsMakePath(PATH_ASCII, main_paths[REMOTE_MODE_BADGES]), FS_ATTRIBUTE_DIRECTORY);
u32 homeMenuPath[3] = {MEDIATYPE_SD, archive2, 0};
home.type = PATH_BINARY;
@@ -189,7 +188,12 @@ Result open_badge_extdata()
}
FSFILE_Close(test_handle);
if(R_FAILED(res = FSUSER_OpenFile(&test_handle, ArchiveSD, fsMakePath(PATH_ASCII, "/Badges/ThemePlaza Badges/_seticon.png"), FS_OPEN_READ, 0)))
char tp_path[0x106] = {0};
sprintf(tp_path, "%sThemePlaza Badges", main_paths[REMOTE_MODE_BADGES]);
FSUSER_CreateDirectory(ArchiveSD, fsMakePath(PATH_ASCII, tp_path), FS_ATTRIBUTE_DIRECTORY);
strcat(tp_path, "/_seticon.png");
if(R_FAILED(res = FSUSER_OpenFile(&test_handle, ArchiveSD, fsMakePath(PATH_ASCII, tp_path), FS_OPEN_READ, 0)))
{
FILE *fp = fopen("romfs:/tp_set.png", "rb");
fseek(fp, 0L, SEEK_END);
@@ -198,8 +202,8 @@ Result open_badge_extdata()
fseek(fp, 0L, SEEK_SET);
fread(icon_buf, 1, size, fp);
fclose(fp);
remake_file(fsMakePath(PATH_ASCII, "/Badges/ThemePlaza Badges/_seticon.png"), ArchiveSD, size);
buf_to_file(size, fsMakePath(PATH_ASCII, "/Badges/ThemePlaza Badges/_seticon.png"), ArchiveSD, icon_buf);
remake_file(fsMakePath(PATH_ASCII, tp_path), ArchiveSD, size);
buf_to_file(size, fsMakePath(PATH_ASCII, tp_path), ArchiveSD, icon_buf);
DEBUG("res: 0x%08lx\n", res);
free(icon_buf);
}
@@ -271,6 +275,9 @@ s16 for_each_file_zip(u16 *zip_path, u32 (*zip_iter_callback)(char *filebuf, u64
if(r != ARCHIVE_OK)
{
DEBUG("Invalid zip being opened\n");
char path[0x128] = {0};
utf16_to_utf8((u8 *) path, zip_path, 0x128);
DEBUG("%s\n", path);
return -1;
}
@@ -346,6 +353,9 @@ u32 zip_file_to_buf(const char * file_name, const u16 * zip_path, char ** buf)
if(r != ARCHIVE_OK)
{
DEBUG("Invalid zip being opened\n");
char path[0x128] = {0};
utf16_to_utf8((u8 *) path, zip_path, 0x128);
DEBUG("%s\n", path);
return 0;
}
@@ -566,9 +576,9 @@ renamed:
char * curr_filename;
if (mode == REMOTE_MODE_BADGES)
{
DEBUG("Remote mode badges! Saving to /Badges/ThemePlaza Badges/\n");
sprintf(path_to_file, "%s%s", "/Badges/ThemePlaza Badges/", filename);
curr_filename = path_to_file + strlen("/Badges/ThemePlaza Badges/");
sprintf(path_to_file, "%sThemePlaza Badges/%s", main_paths[REMOTE_MODE_BADGES], filename);
DEBUG("Remote mode badges! Saving to %s/\n", path_to_file);
curr_filename = path_to_file + strlen(main_paths[REMOTE_MODE_BADGES]) + strlen("ThemePlaza Badges/");
} else
{
sprintf(path_to_file, "%s%s", main_paths[mode], filename);

View File

@@ -61,10 +61,12 @@ Result archive_result;
Result badge_archive_result;
u32 old_time_limit;
const char * main_paths[MODE_AMOUNT] = {
const char * main_paths[REMOTE_MODE_AMOUNT] = {
"/Themes/",
"/Splashes/",
"/Badges/"
};
const int entries_per_screen_v[MODE_AMOUNT] = {
4,
4,

View File

@@ -378,7 +378,7 @@ Result dump_current_theme(void)
}
u16 path[0x107] = { 0 };
struacat(path, "/themes/");
struacat(path, main_paths[REMOTE_MODE_THEMES]);
struacat(path, output_dir);
FSUSER_CreateDirectory(ArchiveSD, fsMakePath(PATH_UTF16, path), FS_ATTRIBUTE_DIRECTORY);
@@ -614,7 +614,7 @@ Result dump_all_themes(void)
}
char path[0x107] = { 0 };
sprintf(path, "/Themes/Dump-%02lx-%ld-%s", dlc_index, extra_index, themename);
sprintf(path, "%sDump-%02lx-%ld-%s", main_paths[REMOTE_MODE_THEMES], dlc_index, extra_index, themename);
DEBUG("theme folder to create: %s\n", path);
FSUSER_CreateDirectory(ArchiveSD, fsMakePath(PATH_ASCII, path), FS_ATTRIBUTE_DIRECTORY);