diff options
author | Eric Albright <eric_albright@sil.org> | 2008-03-01 13:32:28 +0000 |
---|---|---|
committer | Eric Albright <eric_albright@sil.org> | 2008-03-01 13:32:28 +0000 |
commit | fcde2906a43990a91977c25a6da6369bdc2d6c97 (patch) | |
tree | f811798a54e3df25b88271d3b09ab6ab1d1ee295 | |
parent | d8617fb6894ff332c1ad3be1084112add1e0b850 (diff) | |
download | enchant-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.c | 63 |
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) { |