Scripting: 'isdir' & 'exist' commands

This commit is contained in:
d0k3 2018-01-12 02:52:39 +01:00
parent 387ff483fb
commit 239faede0f

View File

@ -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);