From: chaoskagami Date: Sun, 28 Aug 2016 20:24:58 +0000 (-0400) Subject: Internally FIRM paths can now be changed. X-Git-Tag: v0.3.0~29 X-Git-Url: https://chaos.moe/g/?a=commitdiff_plain;h=97d7fd2dc01141e05b5d48550f256b295150563e;p=corbenik%2Fcorbenik.git Internally FIRM paths can now be changed. --- diff --git a/source/config-backend-file.c b/source/config-backend-file.c index 862b2f9..d5edd43 100644 --- a/source/config-backend-file.c +++ b/source/config-backend-file.c @@ -65,6 +65,13 @@ update_config() updated = 1; } + if (config->firm[0][0] == 0) + strncpy(config->firm[0], PATH_NATIVE_F, 255); + if (config->firm[1][0] == 0) + strncpy(config->firm[1], PATH_TWL_F, 255); + if (config->firm[2][0] == 0) + strncpy(config->firm[2], PATH_AGB_F, 255); + if (updated) { save_config(); // Save the configuration. } @@ -188,6 +195,11 @@ void change_opt(void* val) { char* get_opt(void* val) { uint32_t opt = (uint32_t)val; + if (opt >= OPTION_NFIRM_PATH && opt <= OPTION_AFIRM_PATH) { + opt -= OPTION_NFIRM_PATH; + return config->firm[opt]; + } + char raw = config->options[opt]; static char str[2] = "0"; str[0] = '0'; diff --git a/source/firm/firm.c b/source/firm/firm.c index 4e7c70f..4e97f7b 100644 --- a/source/firm/firm.c +++ b/source/firm/firm.c @@ -519,7 +519,7 @@ load_firms() firm_loc = malloc(firm_size); fprintf(stderr, "Loading NATIVE_FIRM\n"); - if (load_firm(firm_loc, PATH_NATIVE_F, PATH_NATIVE_FIRMKEY, PATH_NATIVE_CETK, &firm_size, NATIVE_FIRM_TITLEID) != 0) { + if (load_firm(firm_loc, get_opt((void*)OPTION_NFIRM_PATH), PATH_NATIVE_FIRMKEY, PATH_NATIVE_CETK, &firm_size, NATIVE_FIRM_TITLEID) != 0) { abort("\n Failed to load NATIVE_FIRM.\n"); } find_proc9(firm_loc, &firm_proc9, &firm_p9_exefs); @@ -528,7 +528,7 @@ load_firms() twl_firm_loc = malloc(twl_firm_size); fprintf(stderr, "TWL_FIRM\n"); - if (load_firm(twl_firm_loc, PATH_TWL_F, PATH_TWL_FIRMKEY, PATH_TWL_CETK, &twl_firm_size, TWL_FIRM_TITLEID) != 0) { + if (load_firm(twl_firm_loc, get_opt((void*)OPTION_TFIRM_PATH), PATH_TWL_FIRMKEY, PATH_TWL_CETK, &twl_firm_size, TWL_FIRM_TITLEID) != 0) { fprintf(stderr, "\n TWL_FIRM failed to load.\n"); state = 1; } else { @@ -539,7 +539,7 @@ load_firms() agb_firm_loc = malloc(agb_firm_size); fprintf(stderr, "AGB_FIRM\n"); - if (load_firm(agb_firm_loc, PATH_AGB_F, PATH_AGB_FIRMKEY, PATH_AGB_CETK, &agb_firm_size, AGB_FIRM_TITLEID) != 0) { + if (load_firm(agb_firm_loc, get_opt((void*)OPTION_AFIRM_PATH), PATH_AGB_FIRMKEY, PATH_AGB_CETK, &agb_firm_size, AGB_FIRM_TITLEID) != 0) { fprintf(stderr, "\n AGB_FIRM failed to load.\n"); state = 1; } else {