diff options
author | Sergey Udaltsov <svu@gnome.org> | 2008-02-28 14:51:47 +0000 |
---|---|---|
committer | Sergey Udaltsov <svu@gnome.org> | 2008-02-28 14:51:47 +0000 |
commit | f5ea4b6fcf9f9fdd20185ba14754f6b72523fad4 (patch) | |
tree | 195cb3877bc097e46928eb5c24a8fb005aaccb5c /libxklavier | |
parent | 0c611511b3b2c5d98eedf6dcec103aa99244a165 (diff) | |
download | libxklavier-f5ea4b6fcf9f9fdd20185ba14754f6b72523fad4.tar.gz |
Getting rid of fallback xml file, generalizing registry loading code
Diffstat (limited to 'libxklavier')
-rw-r--r-- | libxklavier/xklavier_config.c | 25 | ||||
-rw-r--r-- | libxklavier/xklavier_config_xkb.c | 33 | ||||
-rw-r--r-- | libxklavier/xklavier_config_xmm.c | 21 | ||||
-rw-r--r-- | libxklavier/xklavier_private.h | 4 |
4 files changed, 39 insertions, 44 deletions
diff --git a/libxklavier/xklavier_config.c b/libxklavier/xklavier_config.c index 47ba4b1..d8b28e0 100644 --- a/libxklavier/xklavier_config.c +++ b/libxklavier/xklavier_config.c @@ -22,6 +22,7 @@ #include <libintl.h> #include <stdio.h> #include <string.h> +#include <sys/param.h> #include <sys/stat.h> #include "config.h" @@ -461,6 +462,30 @@ xkl_config_registry_load_from_file(XklConfigRegistry * config, return TRUE; } +gboolean +xkl_config_registry_load_helper(XklConfigRegistry * config, + const char default_ruleset[], + const char base_dir[]) +{ + struct stat stat_buf; + gchar file_name[MAXPATHLEN] = ""; + XklEngine *engine = xkl_config_registry_get_engine(config); + gchar *rf = xkl_engine_get_ruleset_name(engine, default_ruleset); + + if (rf == NULL || rf[0] == '\0') + return FALSE; + + g_snprintf(file_name, sizeof file_name, "%s/%s.xml", base_dir, rf); + + if (stat(file_name, &stat_buf) != 0) { + xkl_debug(0, "Missing registry file %s\n", file_name); + xkl_last_error_message = "Missing registry file"; + return FALSE; + } + + return xkl_config_registry_load_from_file(config, file_name); +} + void xkl_config_registry_free(XklConfigRegistry * config) { diff --git a/libxklavier/xklavier_config_xkb.c b/libxklavier/xklavier_config_xkb.c index 338efc8..b97984e 100644 --- a/libxklavier/xklavier_config_xkb.c +++ b/libxklavier/xklavier_config_xkb.c @@ -21,8 +21,8 @@ #include <locale.h> #include <string.h> #include <unistd.h> -#include <sys/stat.h> #include <sys/param.h> +#include <sys/stat.h> #include <sys/wait.h> #include <sys/types.h> @@ -40,9 +40,6 @@ #include <X11/extensions/XKM.h> #endif -/* For "bad" X servers we hold our own copy */ -#define XML_CFG_FALLBACK_PATH ( DATA_DIR "/xfree86.xml" ) - #define XKBCOMP ( XKB_BIN_BASE "/xkbcomp" ) #define XK_XKB_KEYS @@ -100,25 +97,9 @@ xkl_xkb_init_config_registry(XklConfigRegistry * config) gboolean xkl_xkb_load_config_registry(XklConfigRegistry * config) { - struct stat stat_buf; - char file_name[MAXPATHLEN] = ""; - char *rf = - xkl_engine_get_ruleset_name(xkl_config_registry_get_engine - (config), - XKB_DEFAULT_RULESET); - - if (rf == NULL) - return FALSE; - - snprintf(file_name, sizeof file_name, XKB_BASE "/rules/%s.xml", - rf); - - if (stat(file_name, &stat_buf) != 0) { - g_strlcpy(file_name, XML_CFG_FALLBACK_PATH, - sizeof file_name); - } - - return xkl_config_registry_load_from_file(config, file_name); + return xkl_config_registry_load_helper(config, + XKB_DEFAULT_RULESET, + XKB_BASE "/rules"); } #ifdef LIBXKBFILE_PRESENT @@ -405,15 +386,15 @@ xkl_config_get_keyboard(XklEngine * engine, #else /* no XKB headers */ gboolean xkl_xkb_config_native_prepare(XklEngine * engine, - const XklConfigRec * data, + const XklConfigRec * data, gpointer componentNamesPtr) { return FALSE; } void -xkl_xkb_config_native_cleanup (XklEngine * engine, - gpointer component_names_ptr) +xkl_xkb_config_native_cleanup(XklEngine * engine, + gpointer component_names_ptr) { } #endif diff --git a/libxklavier/xklavier_config_xmm.c b/libxklavier/xklavier_config_xmm.c index f1dc846..a629082 100644 --- a/libxklavier/xklavier_config_xmm.c +++ b/libxklavier/xklavier_config_xmm.c @@ -46,24 +46,9 @@ xkl_xmm_init_config_registry(XklConfigRegistry * config) gboolean xkl_xmm_load_config_registry(XklConfigRegistry * config) { - struct stat stat_buf; - gchar file_name[MAXPATHLEN] = ""; - XklEngine *engine = xkl_config_registry_get_engine(config); - gchar *rf = - xkl_engine_get_ruleset_name(engine, XMODMAP_DEFAULT_RULESET); - - if (rf == NULL || rf[0] == '\0') - return FALSE; - - g_snprintf(file_name, sizeof file_name, XMODMAP_BASE "/%s.xml", - rf); - - if (stat(file_name, &stat_buf) != 0) { - xkl_last_error_message = "No rules file found"; - return FALSE; - } - - return xkl_config_registry_load_from_file(config, file_name); + return xkl_config_registry_load_helper(config, + XMODMAP_DEFAULT_RULESET, + XMODMAP_BASE); } gboolean diff --git a/libxklavier/xklavier_private.h b/libxklavier/xklavier_private.h index cfa49fa..f3e5208 100644 --- a/libxklavier/xklavier_private.h +++ b/libxklavier/xklavier_private.h @@ -396,6 +396,10 @@ extern void xkl_config_registry_free(XklConfigRegistry * config); extern gchar *xkl_locale_from_utf8(XklConfigRegistry * config, const gchar * utf8string); +extern gboolean xkl_config_registry_load_helper(XklConfigRegistry * config, + const char default_ruleset[], + const char base_dir[]); + #define XKLAVIER_STATE_PROP_LENGTH 2 /* taken from XFree86 maprules.c */ |