comparison 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
comparison
equal deleted inserted replaced
1294:a719e2c98b54 1295:96ad1b9bbb3a
138 } 138 }
139 139
140 void setup_saves(char *fname, rom_info *info, system_header *context) 140 void setup_saves(char *fname, rom_info *info, system_header *context)
141 { 141 {
142 static uint8_t persist_save_registered; 142 static uint8_t persist_save_registered;
143 char *savedir_template = tern_find_path(config, "ui\0save_path\0").ptrval;
144 if (!savedir_template) {
145 savedir_template = "$USERDATA/blastem/$ROMNAME";
146 }
143 char * barename = basename_no_extension(fname); 147 char * barename = basename_no_extension(fname);
144 char const * parts[3] = {get_save_dir(), PATH_SEP, barename}; 148 tern_node *vars = tern_insert_ptr(NULL, "ROMNAME", barename);
145 char *save_dir = alloc_concat_m(3, parts); 149 vars = tern_insert_ptr(vars, "HOME", get_home_dir());
150 vars = tern_insert_ptr(vars, "EXEDIR", get_exe_dir());
151 vars = tern_insert_ptr(vars, "USERDATA", (char *)get_userdata_dir());
152 char *save_dir = replace_vars(savedir_template, vars, 1);
153 tern_free(vars);
146 if (!ensure_dir_exists(save_dir)) { 154 if (!ensure_dir_exists(save_dir)) {
147 warning("Failed to create save directory %s\n", save_dir); 155 warning("Failed to create save directory %s\n", save_dir);
148 } 156 }
149 parts[0] = save_dir; 157 char const *parts[] = {save_dir, PATH_SEP, info->save_type == SAVE_I2C ? "save.eeprom" : "save.sram"};
150 parts[2] = info->save_type == SAVE_I2C ? "save.eeprom" : "save.sram";
151 free(save_filename); 158 free(save_filename);
152 save_filename = alloc_concat_m(3, parts); 159 save_filename = alloc_concat_m(3, parts);
153 //TODO: make quick save filename dependent on system type 160 //TODO: make quick save filename dependent on system type
154 parts[2] = "quicksave.gst"; 161 parts[2] = "quicksave.gst";
155 free(save_state_path); 162 free(save_state_path);