diff options
author | Sergey Udaltsov <svu@gnome.org> | 2008-04-25 23:13:25 +0000 |
---|---|---|
committer | Sergey Udaltsov <svu@gnome.org> | 2008-04-25 23:13:25 +0000 |
commit | 73f7faa8cb025157e667a706d69338f8dba7dede (patch) | |
tree | 71d32bb32bbff178a7e19d0fb38af46612a51019 | |
parent | 5c32f79d03157582b50845607a4c153d73a51c79 (diff) | |
download | libxklavier-73f7faa8cb025157e667a706d69338f8dba7dede.tar.gz |
another xpath, small polish
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | libxklavier/xklavier_config_iso.c | 38 |
2 files changed, 31 insertions, 12 deletions
@@ -1,3 +1,8 @@ +2008-04-26 svu + + * libxklavier/xklavier_config_iso.c: another lost xpath, better + handling of lowercase + 2008-04-25 svu * libxklavier/xklavier_config_iso.c: lost xpath diff --git a/libxklavier/xklavier_config_iso.c b/libxklavier/xklavier_config_iso.c index b637342..07cb94e 100644 --- a/libxklavier/xklavier_config_iso.c +++ b/libxklavier/xklavier_config_iso.c @@ -307,25 +307,27 @@ xkl_config_registry_foreach_iso_variant(XklConfigRegistry * TwoConfigItemsProcessFunc func, gpointer data, const gchar * layout_xpath_exprs[], + const gboolean + should_code_be_lowered1[], const gchar * variant_xpath_exprs[], const gboolean - should_layout_id_be_lowered[]) + should_code_be_lowered2[]) { xmlXPathObjectPtr xpath_obj; const gchar **xpath_expr; - const gboolean *is_low_id = should_layout_id_be_lowered; + const gboolean *is_low_id = should_code_be_lowered1; + gchar *low_iso_code; if (!xkl_config_registry_is_initialized(config)) return; + low_iso_code = g_ascii_strdown(iso_code, -1); + for (xpath_expr = layout_xpath_exprs; *xpath_expr; xpath_expr++, is_low_id++) { - gchar *aic = *is_low_id ? g_ascii_strdown(iso_code, - -1) : - g_strdup(iso_code); + const gchar *aic = *is_low_id ? low_iso_code : iso_code; gchar *xpe = g_strdup_printf(*xpath_expr, aic); - g_free(aic); xpath_obj = xmlXPathEval((unsigned char *) xpe, xkl_config_registry_priv(config, @@ -350,8 +352,11 @@ xkl_config_registry_foreach_iso_variant(XklConfigRegistry * g_free(xpe); } - for (xpath_expr = variant_xpath_exprs; *xpath_expr; xpath_expr++) { - gchar *xpe = g_strdup_printf(*xpath_expr, iso_code); + is_low_id = should_code_be_lowered2; + for (xpath_expr = variant_xpath_exprs; *xpath_expr; + xpath_expr++, is_low_id++) { + const gchar *aic = *is_low_id ? low_iso_code : iso_code; + gchar *xpe = g_strdup_printf(*xpath_expr, aic); xpath_obj = xmlXPathEval((unsigned char *) xpe, xkl_config_registry_priv(config, @@ -380,6 +385,8 @@ xkl_config_registry_foreach_iso_variant(XklConfigRegistry * } g_free(xpe); } + + g_free(low_iso_code); } void @@ -396,22 +403,27 @@ xkl_config_registry_foreach_country_variant(XklConfigRegistry * "[configItem/countryList/iso3166Id = '%s']", NULL }; - const gboolean should_layout_id_be_lowered[] = { TRUE, FALSE }; + const gboolean should_code_be_lowered1[] = { TRUE, FALSE }; const gchar *variant_xpath_exprs[] = { XKBCR_VARIANT_PATH "[configItem/countryList/iso3166Id = '%s']", XKBCR_VARIANT_PATH + "[../../configItem/name = '%s' and not(configItem/countryList/iso3166Id)]", + XKBCR_VARIANT_PATH "[../../configItem/countryList/iso3166Id = '%s' and not(configItem/countryList/iso3166Id)]", NULL }; + const gboolean should_code_be_lowered2[] = { FALSE, TRUE, FALSE }; + xkl_config_registry_foreach_iso_variant(config, country_code, func, data, layout_xpath_exprs, + should_code_be_lowered1, variant_xpath_exprs, - should_layout_id_be_lowered); + should_code_be_lowered2); } void @@ -427,7 +439,7 @@ xkl_config_registry_foreach_language_variant(XklConfigRegistry * "[configItem/languageList/iso639Id = '%s']", NULL }; - const gboolean should_layout_id_be_lowered[] = { FALSE }; + const gboolean should_code_be_lowered1[] = { FALSE }; const gchar *variant_xpath_exprs[] = { XKBCR_VARIANT_PATH @@ -436,11 +448,13 @@ xkl_config_registry_foreach_language_variant(XklConfigRegistry * "[../../configItem/languageList/iso639Id = '%s' and not(configItem/languageList/iso639Id)]", NULL }; + const gboolean should_code_be_lowered2[] = { FALSE, FALSE }; xkl_config_registry_foreach_iso_variant(config, language_code, func, data, layout_xpath_exprs, + should_code_be_lowered1, variant_xpath_exprs, - should_layout_id_be_lowered); + should_code_be_lowered2); } |