diff options
author | Michael Pavone <pavone@retrodev.com> | 2019-04-23 23:33:16 -0700 |
---|---|---|
committer | Michael Pavone <pavone@retrodev.com> | 2019-04-23 23:33:16 -0700 |
commit | f860d1303a1393ce2bd010ae023011c8ce87a537 (patch) | |
tree | 4bc93d89837b925f2544a07d77bf11bdd3637c96 | |
parent | 3f57803b9a159b23ace70149ce56dfccb296e695 (diff) |
Allow rom directory and rom name in screenshot path. Allow rom name in screenshot name. Remove ability for path variables to contain underscores
-rw-r--r-- | bindings.c | 13 | ||||
-rw-r--r-- | blastem.c | 6 | ||||
-rw-r--r-- | blastem.h | 1 | ||||
-rw-r--r-- | util.c | 2 |
4 files changed, 19 insertions, 3 deletions
@@ -358,21 +358,30 @@ void handle_binding_up(keybinding * binding) if (!screenshot_base) { screenshot_base = "$HOME"; } + const system_media *media = current_media(); tern_node *vars = tern_insert_ptr(NULL, "HOME", get_home_dir()); vars = tern_insert_ptr(vars, "EXEDIR", get_exe_dir()); + vars = tern_insert_ptr(vars, "USERDATA", (char *)get_userdata_dir()); + vars = tern_insert_ptr(vars, "ROMNAME", media->name); + vars = tern_insert_ptr(vars, "ROMDIR", media->dir); screenshot_base = replace_vars(screenshot_base, vars, 1); tern_free(vars); + ensure_dir_exists(screenshot_base); time_t now = time(NULL); struct tm local_store; char fname_part[256]; char *template = tern_find_path(config, "ui\0screenshot_template\0", TVAL_PTR).ptrval; - if (!template) { - template = "blastem_%c.ppm"; + if (template) { + vars = tern_insert_ptr(NULL, "ROMNAME", media->name); + template = replace_vars(template, vars, 0); + } else { + template = strdup("blastem_%c.ppm"); } strftime(fname_part, sizeof(fname_part), template, localtime_r(&now, &local_store)); char const *parts[] = {screenshot_base, PATH_SEP, fname_part}; char *path = alloc_concat_m(3, parts); free(screenshot_base); + free(template); render_save_screenshot(path); } break; @@ -267,6 +267,7 @@ static char *get_save_dir(system_media *media) savedir_template = "$USERDATA/blastem/$ROMNAME"; } tern_node *vars = tern_insert_ptr(NULL, "ROMNAME", media->name); + vars = tern_insert_ptr(vars, "ROMDIR", media->dir); 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()); @@ -343,6 +344,11 @@ static void on_drag_drop(const char *filename) } static system_media cart, lock_on; +const system_media *current_media(void) +{ + return &cart; +} + void reload_media(void) { if (!current_system) { @@ -19,5 +19,6 @@ void reload_media(void); void lockon_media(char *lock_on_path); void init_system_with_media(const char *path, system_type force_stype); void apply_updated_config(void); +const system_media *current_media(void); #endif //BLASTEM_H_ @@ -80,7 +80,7 @@ char *replace_vars(char *base, tern_node *vars, uint8_t allow_env) for (char *cur = base; *cur; ++cur) { if (in_var) { - if (!(*cur == '_' || isalnum(*cur))) { + if (!isalnum(*cur)) { positions[num_vars].end = cur-base; if (positions[num_vars].end - positions[num_vars].start > max_var_len) { max_var_len = positions[num_vars].end - positions[num_vars].start; |