Mercurial > repos > blastem
diff blastem.c @ 1295:96ad1b9bbb3a
Make save directory configurable. Satisfies ticket:4
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 21 Mar 2017 21:40:47 -0700 |
parents | a477cc22a960 |
children | 071e761bcdcf |
line wrap: on
line diff
--- a/blastem.c Tue Mar 21 19:56:50 2017 -0700 +++ b/blastem.c Tue Mar 21 21:40:47 2017 -0700 @@ -140,14 +140,21 @@ void setup_saves(char *fname, rom_info *info, system_header *context) { static uint8_t persist_save_registered; + char *savedir_template = tern_find_path(config, "ui\0save_path\0").ptrval; + if (!savedir_template) { + savedir_template = "$USERDATA/blastem/$ROMNAME"; + } char * barename = basename_no_extension(fname); - char const * parts[3] = {get_save_dir(), PATH_SEP, barename}; - char *save_dir = alloc_concat_m(3, parts); + tern_node *vars = tern_insert_ptr(NULL, "ROMNAME", barename); + vars = tern_insert_ptr(vars, "HOME", get_home_dir()); + vars = tern_insert_ptr(vars, "EXEDIR", get_exe_dir()); + vars = tern_insert_ptr(vars, "USERDATA", (char *)get_userdata_dir()); + char *save_dir = replace_vars(savedir_template, vars, 1); + tern_free(vars); if (!ensure_dir_exists(save_dir)) { warning("Failed to create save directory %s\n", save_dir); } - parts[0] = save_dir; - parts[2] = info->save_type == SAVE_I2C ? "save.eeprom" : "save.sram"; + char const *parts[] = {save_dir, PATH_SEP, info->save_type == SAVE_I2C ? "save.eeprom" : "save.sram"}; free(save_filename); save_filename = alloc_concat_m(3, parts); //TODO: make quick save filename dependent on system type