Preserve CyberFoil across clean install backup/restore.
All checks were successful
Build / Build (push) Successful in 13s
All checks were successful
Build / Build (push) Successful in 13s
Back up cyberfoil.nro, config.json, and remotes/ when sd:/switch/CyberFoil exists, then restore them after the wipe.
This commit is contained in:
@@ -40,6 +40,35 @@ int backup_user_data(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Backup CyberFoil (nro, config, remotes) if installed
|
||||||
|
if (path_exists(CYBERFOIL_DIR)) {
|
||||||
|
res = f_mkdir(TEMP_BACKUP_CYBERFOIL);
|
||||||
|
if (res != FR_OK && res != FR_EXIST) {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (path_exists(CYBERFOIL_NRO)) {
|
||||||
|
res = file_copy(CYBERFOIL_NRO, TEMP_BACKUP_CYBERFOIL_NRO);
|
||||||
|
if (res != FR_OK) {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (path_exists(CYBERFOIL_CONFIG)) {
|
||||||
|
res = file_copy(CYBERFOIL_CONFIG, TEMP_BACKUP_CYBERFOIL_CONFIG);
|
||||||
|
if (res != FR_OK) {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (path_exists(CYBERFOIL_REMOTES)) {
|
||||||
|
res = folder_copy(CYBERFOIL_REMOTES, TEMP_BACKUP_CYBERFOIL);
|
||||||
|
if (res != FR_OK) {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return FR_OK;
|
return FR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -73,6 +102,35 @@ int restore_user_data(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Restore CyberFoil if backed up
|
||||||
|
if (path_exists(TEMP_BACKUP_CYBERFOIL)) {
|
||||||
|
res = f_mkdir(CYBERFOIL_DIR);
|
||||||
|
if (res != FR_OK && res != FR_EXIST) {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (path_exists(TEMP_BACKUP_CYBERFOIL_NRO)) {
|
||||||
|
res = file_copy(TEMP_BACKUP_CYBERFOIL_NRO, CYBERFOIL_NRO);
|
||||||
|
if (res != FR_OK) {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (path_exists(TEMP_BACKUP_CYBERFOIL_CONFIG)) {
|
||||||
|
res = file_copy(TEMP_BACKUP_CYBERFOIL_CONFIG, CYBERFOIL_CONFIG);
|
||||||
|
if (res != FR_OK) {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (path_exists(TEMP_BACKUP_CYBERFOIL_REMOTES)) {
|
||||||
|
res = folder_copy(TEMP_BACKUP_CYBERFOIL_REMOTES, CYBERFOIL_DIR);
|
||||||
|
if (res != FR_OK) {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return FR_OK;
|
return FR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,13 +11,23 @@
|
|||||||
#define DBI_CONFIG_PATH "sd:/switch/DBI/dbi.config"
|
#define DBI_CONFIG_PATH "sd:/switch/DBI/dbi.config"
|
||||||
#define TEMP_BACKUP_DBI_CONFIG TEMP_BACKUP_PATH "/dbi.config"
|
#define TEMP_BACKUP_DBI_CONFIG TEMP_BACKUP_PATH "/dbi.config"
|
||||||
|
|
||||||
|
/** CyberFoil homebrew; preserved across clean install (nro, config, remotes only). */
|
||||||
|
#define CYBERFOIL_DIR "sd:/switch/CyberFoil"
|
||||||
|
#define CYBERFOIL_NRO CYBERFOIL_DIR "/cyberfoil.nro"
|
||||||
|
#define CYBERFOIL_CONFIG CYBERFOIL_DIR "/config.json"
|
||||||
|
#define CYBERFOIL_REMOTES CYBERFOIL_DIR "/remotes"
|
||||||
|
#define TEMP_BACKUP_CYBERFOIL TEMP_BACKUP_PATH "/CyberFoil"
|
||||||
|
#define TEMP_BACKUP_CYBERFOIL_NRO TEMP_BACKUP_CYBERFOIL "/cyberfoil.nro"
|
||||||
|
#define TEMP_BACKUP_CYBERFOIL_CONFIG TEMP_BACKUP_CYBERFOIL "/config.json"
|
||||||
|
#define TEMP_BACKUP_CYBERFOIL_REMOTES TEMP_BACKUP_CYBERFOIL "/remotes"
|
||||||
|
|
||||||
/** Live HorizonOC settings (Overclock tool). */
|
/** Live HorizonOC settings (Overclock tool). */
|
||||||
#define HORIZON_OC_CONFIG_PATH "sd:/config/horizon-oc/config.ini"
|
#define HORIZON_OC_CONFIG_PATH "sd:/config/horizon-oc/config.ini"
|
||||||
/** Scratch dir during OC-variant update only; removed after successful restore. */
|
/** Scratch dir during OC-variant update only; removed after successful restore. */
|
||||||
#define HORIZON_OC_UPDATE_BACKUP_DIR "sd:/.omninx_oc_update"
|
#define HORIZON_OC_UPDATE_BACKUP_DIR "sd:/.omninx_oc_update"
|
||||||
#define HORIZON_OC_UPDATE_BACKUP_INI HORIZON_OC_UPDATE_BACKUP_DIR "/config.ini"
|
#define HORIZON_OC_UPDATE_BACKUP_INI HORIZON_OC_UPDATE_BACKUP_DIR "/config.ini"
|
||||||
|
|
||||||
// Backup user data (DBI dbi.config, prod.keys) before clean install
|
// Backup user data (CyberFoil, DBI dbi.config, prod.keys) before clean install
|
||||||
int backup_user_data(void);
|
int backup_user_data(void);
|
||||||
|
|
||||||
// Restore user data after clean install
|
// Restore user data after clean install
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
* OmniNX Installer - Deletion Lists for Clean Install Mode
|
* OmniNX Installer - Deletion Lists for Clean Install Mode
|
||||||
* Deletion policy aligned with NiklasCFW pack clean install (TegraExplorer script):
|
* Deletion policy aligned with NiklasCFW pack clean install (TegraExplorer script):
|
||||||
* full sd:/atmosphere, bootloader/config subsets, sd:/switch, root + misc, then
|
* full sd:/atmosphere, bootloader/config subsets, sd:/switch, root + misc, then
|
||||||
* post-restore paths (e.g. tinfoil db). DBI/prod.keys backup is in backup.c.
|
* post-restore paths (e.g. tinfoil db). CyberFoil/DBI/prod.keys backup is in backup.c.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
// Clean mode: Backup user data
|
// Clean mode: Backup user data
|
||||||
int clean_mode_backup(void) {
|
int clean_mode_backup(void) {
|
||||||
set_color(COLOR_CYAN);
|
set_color(COLOR_CYAN);
|
||||||
gfx_printf(" Sichere: DBI (dbi.config), prod.keys\n");
|
gfx_printf(" Sichere: CyberFoil, DBI (dbi.config), prod.keys\n");
|
||||||
set_color(COLOR_WHITE);
|
set_color(COLOR_WHITE);
|
||||||
int res = backup_user_data();
|
int res = backup_user_data();
|
||||||
if (res == FR_OK) {
|
if (res == FR_OK) {
|
||||||
@@ -95,7 +95,7 @@ int clean_mode_wipe(void) {
|
|||||||
// Clean mode: Restore user data
|
// Clean mode: Restore user data
|
||||||
int clean_mode_restore(void) {
|
int clean_mode_restore(void) {
|
||||||
set_color(COLOR_CYAN);
|
set_color(COLOR_CYAN);
|
||||||
gfx_printf(" Stelle wieder her: DBI (dbi.config), prod.keys\n");
|
gfx_printf(" Stelle wieder her: CyberFoil, DBI (dbi.config), prod.keys\n");
|
||||||
set_color(COLOR_WHITE);
|
set_color(COLOR_WHITE);
|
||||||
int res = restore_user_data();
|
int res = restore_user_data();
|
||||||
if (res == FR_OK) {
|
if (res == FR_OK) {
|
||||||
|
|||||||
Reference in New Issue
Block a user