summaryrefslogtreecommitdiff
path: root/libxklavier
diff options
context:
space:
mode:
authorSergey Udaltsov <svu@gnome.org>2008-02-28 14:51:47 +0000
committerSergey Udaltsov <svu@gnome.org>2008-02-28 14:51:47 +0000
commitf5ea4b6fcf9f9fdd20185ba14754f6b72523fad4 (patch)
tree195cb3877bc097e46928eb5c24a8fb005aaccb5c /libxklavier
parent0c611511b3b2c5d98eedf6dcec103aa99244a165 (diff)
downloadlibxklavier-f5ea4b6fcf9f9fdd20185ba14754f6b72523fad4.tar.gz
Getting rid of fallback xml file, generalizing registry loading code
Diffstat (limited to 'libxklavier')
-rw-r--r--libxklavier/xklavier_config.c25
-rw-r--r--libxklavier/xklavier_config_xkb.c33
-rw-r--r--libxklavier/xklavier_config_xmm.c21
-rw-r--r--libxklavier/xklavier_private.h4
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 */