diff --git a/arm9/source/fs.c b/arm9/source/fs.c index 5061554a..58afd750 100644 --- a/arm9/source/fs.c +++ b/arm9/source/fs.c @@ -230,6 +230,12 @@ bool fileCopy(const char *pathSrc, const char *pathDst, bool replace, void *tmpB return true; } +bool createDir(const char *path) +{ + FRESULT res = f_mkdir(path); + return res == FR_OK || res == FR_EXIST; +} + bool findPayload(char *path, u32 pressed) { const char *pattern; @@ -494,5 +500,8 @@ bool doLumaUpgradeProcess(void) fileDelete("sdmc:/luma/config.bin"); fileDelete("nand:/rw/luma/config.bin"); + createDir("sdmc:/luma/payloads"); + createDir("nand:/rw/luma/payloads"); + return ok && ok2; } diff --git a/arm9/source/fs.h b/arm9/source/fs.h index 0261a848..7800943a 100644 --- a/arm9/source/fs.h +++ b/arm9/source/fs.h @@ -39,6 +39,7 @@ u32 getFileSize(const char *path); bool fileWrite(const void *buffer, const char *path, u32 size); bool fileDelete(const char *path); bool fileCopy(const char *pathSrc, const char *pathDst, bool replace, void *tmpBuffer, size_t bufferSize); +bool createDir(const char *path); bool findPayload(char *path, u32 pressed); bool payloadMenu(char *path, bool *hasDisplayedMenu); u32 firmRead(void *dest, u32 firmType);