char *fs_uae_expand_path(const char* path) { char* lower = g_ascii_strdown(path, -1); int replace = 0; const char *replace_with = NULL; if (check_path_prefix(lower, "~", &replace)) { replace_with = fs_uae_home_dir(); } else if (check_path_prefix(lower, "$home", &replace)) { replace_with = fs_uae_home_dir(); } else if (check_path_prefix(lower, "$app", &replace)) { replace_with = fs_uae_app_dir(); } else if (check_path_prefix(lower, "$exe", &replace)) { replace_with = fs_uae_exe_dir(); } else if (check_path_prefix(lower, "$fsuae", &replace)) { replace_with = fs_uae_base_dir(); } else if (check_path_prefix(lower, "$base", &replace)) { replace_with = fs_uae_base_dir(); } else if (check_path_prefix(lower, "$documents", &replace)) { replace_with = fs_uae_documents_dir(); } else if (check_path_prefix(lower, "$config", &replace)) { replace_with = g_fs_uae_config_dir_path; } else if (check_path_prefix(lower, "$temp", &replace)) { replace_with = fs_uae_temp_dir(); } free(lower); if (replace_with) { const char *src = path + replace; return g_build_filename(replace_with, src, NULL); } else { return g_strdup(path); } }
char *fs_uae_expand_path(const char* path) { char* lower = g_ascii_strdown(path, -1); int replace = 0; const char *replace_with = NULL; if (g_str_has_prefix(lower, "~/") || g_str_has_prefix(lower, "~\\")) { replace = 2; replace_with = fs_uae_home_dir(); } if (g_str_has_prefix(lower, "$home/") || g_str_has_prefix(lower, "$home\\")) { replace = 6; replace_with = fs_uae_home_dir(); } if (g_str_has_prefix(lower, "$app/") || g_str_has_prefix(lower, "$app\\")) { replace = 5; replace_with = fs_uae_app_dir(); } if (g_str_has_prefix(lower, "$exe/") || g_str_has_prefix(lower, "$exe\\")) { replace = 5; replace_with = fs_uae_exe_dir(); } if (g_str_has_prefix(lower, "$fsuae/") || g_str_has_prefix(lower, "$fsuae\\")) { replace = 7; replace_with = fs_uae_base_dir(); } if (g_str_has_prefix(lower, "$base/") || g_str_has_prefix(lower, "$base\\")) { replace = 6; replace_with = fs_uae_base_dir(); } if (g_str_has_prefix(lower, "$documents/") || g_str_has_prefix(lower, "$documents\\")) { replace = 11; replace_with = fs_uae_documents_dir(); } if (g_str_has_prefix(lower, "$config/") || g_str_has_prefix(lower, "$config\\")) { replace = 8; replace_with = g_fs_uae_config_dir_path; } free(lower); if (replace && replace_with) { const char *src = path + replace; return g_build_filename(replace_with, src, NULL); } else { return g_strdup(path); } }
static int load_config_file() { fs_log("load config file\n"); const char *msg = "checking config file %s\n"; char *data; int size; if (fs_data_file_content("META-INF/Config.fs-uae", &data, &size) == 0) { fs_ini_file *ini_file = fs_ini_file_open_data(data, size); if (ini_file == NULL) { fs_log("error loading config file\n"); return 1; } fs_config_parse_ini_file(ini_file); fs_ini_file_destroy(ini_file); return 0; } //g_fs_uae_config = g_key_file_new(); if (g_fs_uae_config_file_path == NULL) { char *path = g_build_filename(fs_uae_exe_dir(), "Config.fs-uae", NULL); fs_log(msg, path); if (fs_path_exists(path)) { g_fs_uae_config_file_path = path; } else { free(path); } } #ifdef MACOSX if (g_fs_uae_config_file_path == NULL) { char *path = g_build_filename(fs_uae_exe_dir(), "..", "..", "Config.fs-uae", NULL); fs_log(msg, path); if (fs_path_exists(path)) { g_fs_uae_config_file_path = path; } else { free(path); } } #endif if (g_fs_uae_config_file_path == NULL) { fs_log(msg, "Config.fs-uae"); if (fs_path_exists("Config.fs-uae")) { g_fs_uae_config_file_path = "Config.fs-uae"; } } if (g_fs_uae_config_file_path == NULL) { fs_log(msg, "fs-uae.conf"); if (fs_path_exists("fs-uae.conf")) { g_fs_uae_config_file_path = "fs-uae.conf"; } } if (g_fs_uae_config_file_path == NULL) { char *path = g_build_filename(fs_get_user_config_dir(), "fs-uae", "fs-uae.conf", NULL); fs_log(msg, path); if (fs_path_exists(path)) { g_fs_uae_config_file_path = path; } else { free(path); } } if (g_fs_uae_config_file_path == NULL) { char *path = g_build_filename(fs_uae_configurations_dir(), "Default.fs-uae", NULL); fs_log(msg, path); if (fs_path_exists(path)) { g_fs_uae_config_file_path = path; } else { free(path); } } if (g_fs_uae_config_file_path) { fs_log("loading config from %s\n", g_fs_uae_config_file_path); fs_config_read_file(g_fs_uae_config_file_path, 0); g_fs_uae_config_dir_path = g_path_get_dirname( g_fs_uae_config_file_path); } #if 0 else { if (fs_config_get_boolean("end_config") == 1) { // do not warn in case end_config was specified via argv } else { fs_log("No configuration file was found"); g_warn_about_missing_config_file = 1; } } #endif char *path = g_build_filename(fs_uae_configurations_dir(), "Host.fs-uae", NULL); fs_log(msg, path); if (fs_path_exists(path)) { fs_config_read_file(path, 0); free(path); } return 0; }