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/xklavier_config.c | |
parent | 0c611511b3b2c5d98eedf6dcec103aa99244a165 (diff) | |
download | libxklavier-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.c | 25 |
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) { |