summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Albright <eric_albright@sil.org>2008-03-01 13:32:28 +0000
committerEric Albright <eric_albright@sil.org>2008-03-01 13:32:28 +0000
commitfcde2906a43990a91977c25a6da6369bdc2d6c97 (patch)
treef811798a54e3df25b88271d3b09ab6ab1d1ee295
parentd8617fb6894ff332c1ad3be1084112add1e0b850 (diff)
downloadenchant-fcde2906a43990a91977c25a6da6369bdc2d6c97.tar.gz
clarify user provider probing
git-svn-id: svn+ssh://svn.abisource.com/svnroot/enchant/trunk@22979 bcba8976-2d24-0410-9c9c-aab3bd5fdfd6
-rw-r--r--src/enchant.c63
1 files changed, 42 insertions, 21 deletions
diff --git a/src/enchant.c b/src/enchant.c
index 9d2fc4e..3423033 100644
--- a/src/enchant.c
+++ b/src/enchant.c
@@ -120,6 +120,31 @@ _enchant_ensure_private_datadir (void)
g_free (config_dir);
}
+char *
+enchant_get_user_dir (void)
+{
+ char * base_dir;
+ char * user_dir;
+
+#ifdef _WIN32
+ base_dir = g_strdup (g_get_user_config_dir());
+#endif
+
+ if (!base_dir)
+ base_dir = enchant_get_user_home_dir ();
+
+ if(base_dir)
+ {
+ user_dir = g_build_filename (base_dir,
+ ENCHANT_USER_PATH_EXTENSION,
+ NULL);
+ g_free(base_dir);
+ return user_dir;
+ }
+ else
+ return NULL;
+}
+
/* place to look for system level providers */
static char *
enchant_get_module_dir (void)
@@ -132,7 +157,7 @@ enchant_get_module_dir (void)
#endif
/* Look for explicitly set registry values */
- module_dir = enchant_get_registry_value ("Config", "Module_Dir");
+ module_dir = enchant_get_registry_value_ex (0, "Config", "Module_Dir");
if (module_dir)
return module_dir;
@@ -153,6 +178,19 @@ enchant_get_module_dir (void)
}
static char *
+enchant_get_user_module_dir (void)
+{
+ char* user_module_dir;
+
+ char* base_dir = NULL;
+
+ user_module_dir = enchant_get_registry_value_ex (1, "Config", "Module_Dir");
+ if (user_module_dir)
+ return user_module_dir;
+ return enchant_get_user_dir();
+}
+
+static char *
enchant_get_conf_dir (void)
{
#ifdef XP_TARGET_COCOA
@@ -187,7 +225,7 @@ enchant_get_conf_dir (void)
* Returns: the user's enchant directory, or %null. Returned value
* must be free'd.
*
- * The enchant directory is the place where enchant finds user providers and
+ * The enchant directory is the place where enchant finds user
* dictionaries and settings related to enchant
*
* This API is private to the providers.
@@ -203,25 +241,8 @@ enchant_get_user_config_dir (void)
if (user_config)
return user_config;
-#ifdef _WIN32
- base_dir = g_strdup (g_get_user_config_dir());
-#endif
-
- if (!base_dir)
- base_dir = enchant_get_user_home_dir ();
-
- if(base_dir)
- {
- user_config = g_build_filename (base_dir,
- ENCHANT_USER_PATH_EXTENSION,
- NULL);
- g_free(base_dir);
- return user_config;
+ return enchant_get_user_dir();
}
- else
- return NULL;
-}
-
/*
* Returns: the value if it exists and is not an empty string ("") or %null otherwise. Must be free'd.
@@ -1363,7 +1384,7 @@ enchant_load_providers (EnchantBroker * broker)
/* load USER providers first. since the GSList is ordered,
this intentionally gives preference to USER providers */
- user_dir = enchant_get_user_config_dir ();
+ user_dir = enchant_get_user_module_dir ();
if (user_dir)
{