]> Chaos Git - corbenik/corbenik.git/commitdiff
Internally FIRM paths can now be changed.
authorchaoskagami <chaos.kagami@gmail.com>
Sun, 28 Aug 2016 20:24:58 +0000 (16:24 -0400)
committerchaoskagami <chaos.kagami@gmail.com>
Sun, 28 Aug 2016 20:24:58 +0000 (16:24 -0400)
source/config-backend-file.c
source/firm/firm.c

index 862b2f9bb621fcd5e75bf0c0ca789f77cfb60308..d5edd43fc205c8310460513fe87c1fe7c0188e6c 100644 (file)
@@ -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';
index 4e7c70f608876cc22995e2f71aa98dbe890107a7..4e97f7babf3ea77a4b9eedf9bad90b398b5fbe9e 100644 (file)
@@ -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 {