summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDom Lachowicz <domlachowicz@gmail.com>2009-05-23 11:36:56 +0000
committerDom Lachowicz <domlachowicz@gmail.com>2009-05-23 11:36:56 +0000
commitc303d0ec14078af92d3b1bbbf81977e95ae70021 (patch)
treecf8d91ccf29b8877ec5b50ab185b8df6b23499a0
parentb181c942614ce7c8e1fe1c6544019c41a1e7e39e (diff)
downloadenchant-c303d0ec14078af92d3b1bbbf81977e95ae70021.tar.gz
on windows, compare paths ignoring case sensitivity. may fix a bug that fridrich noticed
git-svn-id: svn+ssh://svn.abisource.com/svnroot/enchant/trunk@26494 bcba8976-2d24-0410-9c9c-aab3bd5fdfd6
-rw-r--r--configure.in2
-rw-r--r--src/enchant.c45
2 files changed, 26 insertions, 21 deletions
diff --git a/configure.in b/configure.in
index 6c93eb3..77350c0 100644
--- a/configure.in
+++ b/configure.in
@@ -12,7 +12,7 @@ ENCHANT_MINOR_VERSION=5
dnl 3) Increment when interfaces not changed at all,
dnl only bug fixes or internal changes made.
dnl 4b) Set to zero when adding, removing or changing interfaces.
-ENCHANT_MICRO_VERSION=0
+ENCHANT_MICRO_VERSION=1
dnl
dnl Set this too
MAJOR_VERSION_PLUS_MINOR_VERSION=`expr $ENCHANT_MAJOR_VERSION + $ENCHANT_MINOR_VERSION`
diff --git a/src/enchant.c b/src/enchant.c
index 3410be7..847f475 100644
--- a/src/enchant.c
+++ b/src/enchant.c
@@ -106,10 +106,15 @@ typedef void (*EnchantPreConfigureFunc) (EnchantProvider * provider,
/********************************************************************************/
/********************************************************************************/
+#ifdef _WIN32
+#define path_cmp g_utf8_collate
+#else
+#define path_cmp strcmp
+#endif
-static GSList* enchant_slist_prepend_unique_string (GSList *slist, gchar* data)
+static GSList* enchant_slist_prepend_unique_path (GSList *slist, gchar* data)
{
- if (NULL == g_slist_find_custom (slist, data, (GCompareFunc)strcmp))
+ if (NULL == g_slist_find_custom (slist, data, (GCompareFunc)path_cmp))
{
return g_slist_prepend (slist, data);
}
@@ -120,9 +125,9 @@ static GSList* enchant_slist_prepend_unique_string (GSList *slist, gchar* data)
}
}
-static GSList* enchant_slist_append_unique_string (GSList *slist, gchar* data)
+static GSList* enchant_slist_append_unique_path (GSList *slist, gchar* data)
{
- if (NULL == g_slist_find_custom (slist, data, (GCompareFunc)strcmp))
+ if (NULL == g_slist_find_custom (slist, data, (GCompareFunc)path_cmp))
{
return g_slist_append (slist, data);
}
@@ -141,11 +146,11 @@ _enchant_get_user_home_dirs (void)
home_dir = enchant_get_registry_value_ex (1, "Config", "Home_Dir");
if (home_dir)
- dirs = enchant_slist_append_unique_string (dirs, g_strdup (home_dir));
+ dirs = enchant_slist_append_unique_path (dirs, g_strdup (home_dir));
home_dir = g_get_home_dir ();
if (home_dir)
- dirs = enchant_slist_append_unique_string (dirs, g_strdup (home_dir));
+ dirs = enchant_slist_append_unique_path (dirs, g_strdup (home_dir));
return dirs;
}
@@ -171,7 +176,7 @@ enchant_get_user_dirs (void)
user_config_dir = g_get_user_config_dir();
if (user_config_dir)
- user_dirs = enchant_slist_append_unique_string (user_dirs, g_build_filename (user_config_dir,
+ user_dirs = enchant_slist_append_unique_path (user_dirs, g_build_filename (user_config_dir,
"enchant",
NULL));
}
@@ -182,7 +187,7 @@ enchant_get_user_dirs (void)
for (dir = home_dirs; dir; dir = dir->next)
{
- user_dirs = enchant_slist_append_unique_string (user_dirs,
+ user_dirs = enchant_slist_append_unique_path (user_dirs,
g_build_filename (dir->data,
ENCHANT_USER_PATH_EXTENSION,
NULL));
@@ -209,11 +214,11 @@ enchant_get_module_dirs (void)
user_module_dir = enchant_get_registry_value_ex (1, "Config", "Module_Dir");
if (user_module_dir)
- module_dirs = enchant_slist_append_unique_string (module_dirs, user_module_dir);
+ module_dirs = enchant_slist_append_unique_path (module_dirs, user_module_dir);
}
#ifdef XP_TARGET_COCOA
- module_dirs = enchant_slist_append_unique_string (module_dirs, g_strdup ([[EnchantResourceProvider instance] moduleFolder]));
+ module_dirs = enchant_slist_append_unique_path (module_dirs, g_strdup ([[EnchantResourceProvider instance] moduleFolder]));
#endif
{
@@ -222,7 +227,7 @@ enchant_get_module_dirs (void)
user_dirs = enchant_get_user_dirs();
for (iter = user_dirs; iter; iter = iter->next)
- module_dirs = enchant_slist_append_unique_string (module_dirs, iter->data);
+ module_dirs = enchant_slist_append_unique_path (module_dirs, iter->data);
g_slist_free (user_dirs);
}
@@ -230,7 +235,7 @@ enchant_get_module_dirs (void)
/* Look for explicitly set registry values */
module_dir = enchant_get_registry_value_ex (0, "Config", "Module_Dir");
if (module_dir)
- module_dirs = enchant_slist_append_unique_string (module_dirs, module_dir);
+ module_dirs = enchant_slist_append_unique_path (module_dirs, module_dir);
/* Dynamically locate library and search for modules relative to it. */
prefix = enchant_get_prefix_dir();
@@ -238,11 +243,11 @@ enchant_get_module_dirs (void)
{
module_dir = g_build_filename(prefix,"lib","enchant",NULL);
g_free(prefix);
- module_dirs = enchant_slist_append_unique_string (module_dirs, module_dir);
+ module_dirs = enchant_slist_append_unique_path (module_dirs, module_dir);
}
#if defined(ENCHANT_GLOBAL_MODULE_DIR)
- module_dirs = enchant_slist_append_unique_string (module_dirs, g_strdup (ENCHANT_GLOBAL_MODULE_DIR));
+ module_dirs = enchant_slist_append_unique_path (module_dirs, g_strdup (ENCHANT_GLOBAL_MODULE_DIR));
#endif
return module_dirs;
@@ -258,19 +263,19 @@ enchant_get_conf_dirs (void)
for (iter = user_conf_dirs; iter != NULL; iter = iter->next)
{
- conf_dirs = enchant_slist_append_unique_string (conf_dirs, iter->data);
+ conf_dirs = enchant_slist_append_unique_path (conf_dirs, iter->data);
}
g_slist_free (user_conf_dirs);
#ifdef XP_TARGET_COCOA
- conf_dirs = enchant_slist_append_unique_string (conf_dirs, g_strdup ([[EnchantResourceProvider instance] configFolder]));
+ conf_dirs = enchant_slist_append_unique_path (conf_dirs, g_strdup ([[EnchantResourceProvider instance] configFolder]));
#endif
/* Look for explicitly set registry values */
ordering_dir = enchant_get_registry_value_ex (0, "Config", "Data_Dir");
if (ordering_dir)
- conf_dirs = enchant_slist_append_unique_string (conf_dirs, ordering_dir);
+ conf_dirs = enchant_slist_append_unique_path (conf_dirs, ordering_dir);
/* Dynamically locate library and search for files relative to it. */
prefix = enchant_get_prefix_dir();
@@ -278,11 +283,11 @@ enchant_get_conf_dirs (void)
{
ordering_dir = g_build_filename(prefix,"share","enchant",NULL);
g_free(prefix);
- conf_dirs = enchant_slist_append_unique_string (conf_dirs, ordering_dir);
+ conf_dirs = enchant_slist_append_unique_path (conf_dirs, ordering_dir);
}
#if defined(ENCHANT_GLOBAL_ORDERING)
- conf_dirs = enchant_slist_append_unique_string (conf_dirs, g_strdup (ENCHANT_GLOBAL_ORDERING));
+ conf_dirs = enchant_slist_append_unique_path (conf_dirs, g_strdup (ENCHANT_GLOBAL_ORDERING));
#endif
return conf_dirs;
@@ -346,7 +351,7 @@ enchant_get_user_config_dirs (void)
user_config = enchant_get_registry_value_ex (1, "Config", "Data_Dir");
if (user_config)
- dirs = enchant_slist_prepend_unique_string (dirs, user_config);
+ dirs = enchant_slist_prepend_unique_path (dirs, user_config);
return dirs;
}