Add smdh parsing (errors out for some reason)
This commit is contained in:
@@ -37,17 +37,19 @@ int main(void)
|
||||
consoleInit(GFX_TOP, NULL);
|
||||
|
||||
int theme_count = get_number_entries("/Themes");
|
||||
theme *theme = calloc(1, sizeof(theme));
|
||||
u16 path[262] = {0};
|
||||
utf8_to_utf16(path, (u8*)"/Themes/Saber Lily", 262 * sizeof(u16));
|
||||
memcpy(theme->path, path, 262 * sizeof(u16));
|
||||
theme->is_zip = false;
|
||||
|
||||
while(aptMainLoop())
|
||||
{
|
||||
hidScanInput();
|
||||
u32 kDown = hidKeysDown();
|
||||
if (kDown & KEY_A) single_install(*theme);
|
||||
if (kDown & KEY_A)
|
||||
{
|
||||
theme *theme = malloc(sizeof(theme));
|
||||
u16 path[262] = {0};
|
||||
struacat(path, "/Themes/Saber Lily");
|
||||
parse_smdh(theme, path);
|
||||
printu(theme->name);
|
||||
}
|
||||
if (kDown & KEY_START)
|
||||
{
|
||||
close_archives();
|
||||
|
||||
@@ -113,4 +113,22 @@ Result single_install(theme theme_to_install)
|
||||
printf("Done!\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void parse_smdh(theme *entry, u16 *path)
|
||||
{
|
||||
u16 path_to_smdh[0x106] = {0};
|
||||
printu(path);
|
||||
strucat(path_to_smdh, path);
|
||||
struacat(path_to_smdh, "/info.smdh");
|
||||
printu(path_to_smdh);
|
||||
char *info_buffer;
|
||||
|
||||
u64 size = file_to_buf(fsMakePath(PATH_UTF16, path_to_smdh), ArchiveSD, &info_buffer);
|
||||
printf("Size: %llu\n", size);
|
||||
memcpy(entry->name, info_buffer + 0x08, 0x80);
|
||||
memcpy(entry->desc, info_buffer + 0x88, 0x100);
|
||||
memcpy(entry->author, info_buffer + 0x188, 0x80);
|
||||
memcpy(entry->icon_data, info_buffer + 0x2040, 0x1200);
|
||||
free(info_buffer);
|
||||
}
|
||||
@@ -29,4 +29,14 @@ void printu(u16 *input)
|
||||
for (u16 i = 0; i < buf_len; i++) buf[i] = input[i];
|
||||
printf("%ls\n", buf);
|
||||
free(buf);
|
||||
}
|
||||
|
||||
u16 *strucat(u16 *destination, const u16 *source)
|
||||
{
|
||||
ssize_t dest_len = strulen(destination, 0x106);
|
||||
|
||||
ssize_t source_len = strulen(source, 0x106);
|
||||
|
||||
memcpy(&destination[dest_len], source, source_len * sizeof(u16));
|
||||
return destination;
|
||||
}
|
||||
Reference in New Issue
Block a user