static mc_config_t * load_setup_get_keymap_profile_config (void) { /* TODO: IMHO, in future this function must be placed into mc_config module. */ mc_config_t *keymap_config = NULL; char *fname, *fname2; /* 1) /usr/share/mc (mc_share_data_dir) */ fname = g_build_filename (mc_share_data_dir, GLOBAL_KEYMAP_FILE, NULL); load_setup_init_config_from_file (&keymap_config, fname); g_free (fname); /* 2) /etc/mc (mc_sysconfig_dir) */ fname = g_build_filename (mc_sysconfig_dir, GLOBAL_KEYMAP_FILE, NULL); load_setup_init_config_from_file (&keymap_config, fname); g_free (fname); /* 3) ${XDG_CONFIG_HOME}/mc */ fname = g_build_filename (mc_config_get_path (), GLOBAL_KEYMAP_FILE, NULL); load_setup_init_config_from_file (&keymap_config, fname); g_free (fname); /* 4) main config; [Midnight Commander] -> keymap */ fname2 = mc_config_get_string (mc_main_config, CONFIG_APP_SECTION, "keymap", GLOBAL_KEYMAP_FILE); fname = load_setup_get_full_config_name (NULL, fname2); if (fname != NULL) { load_setup_init_config_from_file (&keymap_config, fname); g_free (fname); } g_free (fname2); /* 5) getenv("MC_KEYMAP") */ fname = load_setup_get_full_config_name (NULL, g_getenv ("MC_KEYMAP")); if (fname != NULL) { load_setup_init_config_from_file (&keymap_config, fname); g_free (fname); } /* 6) --keymap=<keymap> */ fname = load_setup_get_full_config_name (NULL, mc_args__keymap_file); if (fname != NULL) { load_setup_init_config_from_file (&keymap_config, fname); g_free (fname); } return keymap_config; }
static mc_config_t * load_setup_get_keymap_profile_config (gboolean load_from_file) { /* TODO: IMHO, in future, this function shall be placed in mcconfig module. */ mc_config_t *keymap_config; char *share_keymap, *sysconfig_keymap; char *fname, *fname2; /* 0) Create default keymap */ keymap_config = create_default_keymap (); if (!load_from_file) return keymap_config; /* load and merge global keymaps */ /* 1) /usr/share/mc (mc_global.share_data_dir) */ share_keymap = g_build_filename (mc_global.share_data_dir, GLOBAL_KEYMAP_FILE, NULL); load_setup_init_config_from_file (&keymap_config, share_keymap, TRUE); /* 2) /etc/mc (mc_global.sysconfig_dir) */ sysconfig_keymap = g_build_filename (mc_global.sysconfig_dir, GLOBAL_KEYMAP_FILE, NULL); load_setup_init_config_from_file (&keymap_config, sysconfig_keymap, TRUE); /* then load and merge one of user-defined keymap */ /* 3) --keymap=<keymap> */ fname = load_setup_get_full_config_name (NULL, mc_args__keymap_file); if (fname != NULL && strcmp (fname, sysconfig_keymap) != 0 && strcmp (fname, share_keymap) != 0) { load_setup_init_config_from_file (&keymap_config, fname, TRUE); goto done; } g_free (fname); /* 4) getenv("MC_KEYMAP") */ fname = load_setup_get_full_config_name (NULL, g_getenv ("MC_KEYMAP")); if (fname != NULL && strcmp (fname, sysconfig_keymap) != 0 && strcmp (fname, share_keymap) != 0) { load_setup_init_config_from_file (&keymap_config, fname, TRUE); goto done; } g_free (fname); /* 5) main config; [Midnight Commander] -> keymap */ fname2 = mc_config_get_string (mc_main_config, CONFIG_APP_SECTION, "keymap", NULL); if (fname2 != NULL && *fname2 != '\0') fname = load_setup_get_full_config_name (NULL, fname2); g_free (fname2); if (fname != NULL && strcmp (fname, sysconfig_keymap) != 0 && strcmp (fname, share_keymap) != 0) { load_setup_init_config_from_file (&keymap_config, fname, TRUE); goto done; } g_free (fname); /* 6) ${XDG_CONFIG_HOME}/mc/mc.keymap */ fname = mc_config_get_full_path (GLOBAL_KEYMAP_FILE); load_setup_init_config_from_file (&keymap_config, fname, TRUE); done: g_free (fname); g_free (sysconfig_keymap); g_free (share_keymap); return keymap_config; }