diff --git a/arm9/source/utils/scripting.c b/arm9/source/utils/scripting.c index 5fb0904..1950495 100644 --- a/arm9/source/utils/scripting.c +++ b/arm9/source/utils/scripting.c @@ -99,6 +99,8 @@ typedef enum { CMD_ID_ENCRYPT, CMD_ID_BUILDCIA, CMD_ID_EXTRCODE, + CMD_ID_ISDIR, + CMD_ID_EXIST, CMD_ID_BOOT, CMD_ID_SWITCHSD, CMD_ID_REBOOT, @@ -159,6 +161,8 @@ Gm9ScriptCmd cmd_list[] = { { CMD_ID_ENCRYPT , "encrypt" , 1, 0 }, { CMD_ID_BUILDCIA, "buildcia", 1, _FLG('l') }, { CMD_ID_EXTRCODE, "extrcode", 2, 0 }, + { CMD_ID_ISDIR, "isdir" , 1, 0 }, + { CMD_ID_EXIST, "exist" , 1, 0 }, { CMD_ID_BOOT , "boot" , 1, 0 }, { CMD_ID_SWITCHSD, "switchsd", 1, 0 }, { CMD_ID_REBOOT , "reboot" , 0, 0 }, @@ -1063,6 +1067,24 @@ bool run_cmd(cmd_id id, u32 flags, char** argv, char* err_str) { if (err_str) snprintf(err_str, _ERR_STR_LEN, "extract .code failed"); } } + else if (id == CMD_ID_ISDIR) { + DIR fdir; + if (fvx_opendir(&fdir, argv[0]) == FR_OK) { + fvx_closedir(&fdir); + ret = true; + } else { + if (err_str) snprintf(err_str, _ERR_STR_LEN, "not a dir"); + ret = false; + } + } + else if (id == CMD_ID_EXIST) { + if (fvx_stat(argv[0], NULL) == FR_OK) { + ret = true; + } else { + if (err_str) snprintf(err_str, _ERR_STR_LEN, "file not found"); + ret = false; + } + } else if (id == CMD_ID_BOOT) { size_t firm_size = FileGetData(argv[0], TEMP_BUFFER, TEMP_BUFFER_SIZE, 0); ret = firm_size && IsBootableFirm(TEMP_BUFFER, firm_size);