Skip to content

Commit

Permalink
Fix restore config not working with alt profiles
Browse files Browse the repository at this point in the history
  • Loading branch information
IanSB committed Feb 6, 2021
1 parent f019082 commit e84813a
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 14 deletions.
23 changes: 14 additions & 9 deletions src/filesystem.c
Original file line number Diff line number Diff line change
Expand Up @@ -897,30 +897,35 @@ int file_save(char *dirpath, char *name, char *buffer, unsigned int buffer_size,
return status;
}

int file_restore(char *dirpath, char *name) {
int file_restore(char *dirpath, char *name, int saved_config_number) {
FRESULT result;
char path[256];
char *root = "/Saved_Profiles";

init_filesystem();

result = f_mkdir(root);
result = f_mkdir(SAVED_PROFILE_BASE);
if (result != FR_OK && result != FR_EXIST) {
log_warn("Failed to create dir %s (result = %d)",root, result);
log_warn("Failed to create dir %s (result = %d)",SAVED_PROFILE_BASE, result);
}

if (dirpath != NULL) {
sprintf(path, "%s/%s/%s", root, cpld->name, dirpath);
sprintf(path, "%s/%s/%s", SAVED_PROFILE_BASE, cpld->name, dirpath);
result = f_mkdir(path);
if (result != FR_OK && result != FR_EXIST) {
log_warn("Failed to create dir %s (result = %d)", dirpath, result);
}
sprintf(path, "%s/%s/%s/%s.txt", root, cpld->name, dirpath, name);
if (saved_config_number == 0) {
sprintf(path, "%s/%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, dirpath, name);
} else {
sprintf(path, "%s/%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, dirpath, name, saved_config_number);
}
} else {
sprintf(path, "%s/%s/%s.txt", root, cpld->name, name);
if (saved_config_number == 0) {
sprintf(path, "%s/%s/%s.txt", SAVED_PROFILE_BASE, cpld->name, name);
} else {
sprintf(path, "%s/%s/%s_%d.txt", SAVED_PROFILE_BASE, cpld->name, name, saved_config_number);
}
}


log_info("File restored by deleting %s", path);
result = f_unlink(path);
if (result != FR_OK && result != FR_NO_FILE) {
Expand Down
2 changes: 1 addition & 1 deletion src/filesystem.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ void scan_rnames(char names[MAX_NAMES][MAX_NAMES_WIDTH], char *path, char *type,
int file_save_config(char *resolution_name, int refresh, int scaling, int filtering, int current_frontend, int current_hdmi_mode);
int file_load(char *path, char *buffer, unsigned int buffer_size);
int file_save(char *dirpath, char *name, char *buffer, unsigned int buffer_size, int saved_config_number);
int file_restore(char *dirpath, char *name);
int file_restore(char *dirpath, char *name, int saved_config_number);
int create_and_scan_palettes(char names[MAX_NAMES][MAX_NAMES_WIDTH], uint32_t palette_array[MAX_NAMES][MAX_PALETTE_ENTRIES]);
int file_save_bin(char *path, char *buffer, unsigned int buffer_size);
int check_file(char* file_path, char* string);
Expand Down
8 changes: 4 additions & 4 deletions src/osd.c
Original file line number Diff line number Diff line change
Expand Up @@ -4815,12 +4815,12 @@ int osd_key(int key) {
} else {
first_time_press = 0;
if (has_sub_profiles[get_feature(F_PROFILE)]) {
file_restore(profile_names[get_feature(F_PROFILE)], "Default");
file_restore(profile_names[get_feature(F_PROFILE)], sub_profile_names[get_feature(F_SUBPROFILE)]);
file_restore(profile_names[get_feature(F_PROFILE)], "Default", get_saved_config_number());
file_restore(profile_names[get_feature(F_PROFILE)], sub_profile_names[get_feature(F_SUBPROFILE)], get_saved_config_number());
} else {
file_restore(NULL, profile_names[get_feature(F_PROFILE)]);
file_restore(NULL, profile_names[get_feature(F_PROFILE)], get_saved_config_number());
}
set_feature(F_PROFILE, get_feature(F_PROFILE));
set_feature(F_SAVED, get_saved_config_number());
force_reinit();
}
break;
Expand Down

0 comments on commit e84813a

Please sign in to comment.