static TUI_MENU_CALLBACK(change_workdir_callback) { char s[256]; if (!been_activated) { return NULL; } *s = '\0'; if (tui_input_string("Change working directory", "New directory:", s, 255) == -1) { return NULL; } util_remove_spaces(s); if (*s == '\0') { return NULL; } if (ioutil_chdir(s) == -1) { tui_error("Invalid directory."); } return NULL; }
static TUI_MENU_CALLBACK(dump_romset_callback) { if (been_activated) { char name[PATH_MAX]; memset(name, 0, PATH_MAX); tui_input_string("Dump ROM set definition", "Enter file name:", name, PATH_MAX); util_remove_spaces(name); machine_romset_file_save(name); } return NULL; }
static TUI_MENU_CALLBACK(create_disk_image_name_callback) { if (been_activated) { char new_file_name[PATH_MAX]; if (file_name == NULL) { memset(new_file_name, 0, PATH_MAX); } else { strcpy(new_file_name, file_name); } while (tui_input_string("Create disk image", "Enter file name:", new_file_name, PATH_MAX) != -1) { util_remove_spaces(new_file_name); if (*new_file_name == 0) { char *tmp; tmp = tui_file_selector("Create disk image", NULL, "*.d64", NULL, NULL, NULL, NULL); if (tmp != NULL) { strcpy(new_file_name, tmp); lib_free(tmp); } } else { char *extension; char *last_dot; last_dot = strrchr(new_file_name, '.'); if (last_dot == NULL) { extension = image_type_name[file_type]; } else { char *last_slash, *last_backslash, *last_path_separator; last_slash = strrchr(new_file_name, '/'); last_backslash = strrchr(new_file_name, '\\'); if (last_slash == NULL) { last_path_separator = last_backslash; } else if (last_backslash == NULL) { last_path_separator = last_slash; } else if (last_backslash < last_slash) { last_path_separator = last_slash; } else { last_path_separator = last_backslash; } if (last_path_separator == NULL || last_path_separator < last_dot) { extension = ""; } else { extension = image_type_name[file_type]; } } if (file_name == NULL) { file_name = util_concat(new_file_name, extension, NULL); } else { int len = strlen(new_file_name); file_name = lib_realloc(file_name, len + strlen(extension) + 1); memcpy(file_name, new_file_name, len); strcpy(file_name + len, extension); } break; } } } return file_name; }
static char *screenshot_filename(char *screenshot_save_msg, char *screenshot_save_file_msg, char *screenshot_filter, char *screenshot_extension) { char new_file_name[PATH_MAX]; if (file_name == NULL) { memset(new_file_name, 0, PATH_MAX); } else { strcpy(new_file_name, file_name); } while (tui_input_string(screenshot_save_msg, "Enter file name:", new_file_name, PATH_MAX) != -1) { util_remove_spaces(new_file_name); if (*new_file_name == 0) { char *tmp; tmp = screenshot_selector(screenshot_save_file_msg, screenshot_filter); if (tmp != NULL) { strcpy(new_file_name, tmp); lib_free(tmp); } } else { char *extension; char *last_dot; last_dot = strrchr(new_file_name, '.'); if (last_dot == NULL) { extension = screenshot_extension; } else { char *last_slash, *last_backslash, *last_path_separator; last_slash = strrchr(new_file_name, '/'); last_backslash = strrchr(new_file_name, '\\'); if (last_slash == NULL) { last_path_separator = last_backslash; } else if (last_backslash == NULL) { last_path_separator = last_slash; } else if (last_backslash < last_slash) { last_path_separator = last_slash; } else { last_path_separator = last_backslash; } if (last_path_separator == NULL || last_path_separator < last_dot) { extension = ""; } else { extension = screenshot_extension; } } if (file_name == NULL) { file_name = util_concat(new_file_name, ".", extension, NULL); } else { lib_free(file_name); file_name = lib_stralloc(new_file_name); util_add_extension(&file_name, extension); } break; } } return file_name; }