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; }
static void load_theme() { fs_log("loading theme \"%s\"\n", g_fs_emu_theme.path); char *p = fs_path_join(g_fs_emu_theme.path, "theme.conf", NULL); if (fs_path_exists(p)) { fs_config_read_file(p, 1); } free(p); char *cv; int iv; iv = fs_config_get_int("theme_width"); if (iv != FS_CONFIG_NONE && iv > 0) { g_fs_emu_theme.width = iv; } iv = fs_config_get_int("theme_height"); if (iv != FS_CONFIG_NONE && iv > 0) { g_fs_emu_theme.height = iv; } set_color_from_string(g_fs_emu_theme.floor_color_1, fs_config_get_const_string("theme_floor_color_1")); set_color_from_string(g_fs_emu_theme.floor_color_2, fs_config_get_const_string("theme_floor_color_2")); set_color_from_string(g_fs_emu_theme.wall_color_1, fs_config_get_const_string("theme_wall_color_1")); set_color_from_string(g_fs_emu_theme.wall_color_2, fs_config_get_const_string("theme_wall_color_2")); iv = fs_config_get_int("theme_floor_height"); if (iv != FS_CONFIG_NONE) { g_fs_emu_theme.floor_height = iv; } cv = fs_config_get_string("theme_overlay_image"); if (cv) { free(g_fs_emu_theme.overlay_image); g_fs_emu_theme.overlay_image = cv; } set_color_from_string(g_fs_emu_theme.fade_color, fs_config_get_const_string("theme_fade_color")); set_color_from_string(g_fs_emu_theme.heading_color, fs_config_get_const_string("theme_heading_color")); set_color_from_string(g_fs_emu_theme.item_color, fs_config_get_const_string("theme_item_color")); for (int i = 0; i < FS_EMU_MAX_OVERLAYS; i++) { char *name; int val; // the first options read here are old compatibility options name = fs_strdup_printf("theme_custom_%d_x", i - FS_EMU_FIRST_CUSTOM_OVERLAY); val = fs_config_get_int(name); free(name); if (val != FS_CONFIG_NONE) { //printf("x is %d\n", val); g_fs_emu_theme.overlays[i].x = (double) val / g_fs_emu_theme.width; } name = fs_strdup_printf("theme_custom_%d_y", i - FS_EMU_FIRST_CUSTOM_OVERLAY); val = fs_config_get_int(name); free(name); if (val != FS_CONFIG_NONE) { g_fs_emu_theme.overlays[i].y = (double) val / g_fs_emu_theme.height; } if (!g_fs_emu_theme.overlays[i].name) { continue; } // these are new theme / overlay options name = fs_strdup_printf("theme_%s_pos", g_fs_emu_theme.overlays[i].name); const char *csval = fs_config_get_const_string(name); free(name); if (csval) { int x, y; if (sscanf(csval, "%d,%d", &x, &y) == 2) { g_fs_emu_theme.overlays[i].x = (double) x / g_fs_emu_theme.width; g_fs_emu_theme.overlays[i].y = (double) y / g_fs_emu_theme.height; } } } #ifdef WITH_LUA fs_emu_theme_init_lua(); #endif }