summaryrefslogtreecommitdiff
path: root/libxklavier/xklavier_config.c
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/xklavier_config.c
parent0c611511b3b2c5d98eedf6dcec103aa99244a165 (diff)
downloadlibxklavier-f5ea4b6fcf9f9fdd20185ba14754f6b72523fad4.tar.gz
Getting rid of fallback xml file, generalizing registry loading code
Diffstat (limited to 'libxklavier/xklavier_config.c')
-rw-r--r--libxklavier/xklavier_config.c25
1 files changed, 25 insertions, 0 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)
{