Add paths to config file
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
30
source/fs.c
30
source/fs.c
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user