summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJeffrey Altman <jaltman@secure-endpoints.com>2005-12-08 06:58:15 +0000
committerJeffrey Altman <jaltman@secure-endpoints.com>2005-12-08 06:58:15 +0000
commit44d0e52f6dbb8b095956babf1c8b7734219de01f (patch)
tree0d200a02954f2036439e4d385ea97560883a525c /src
parent0bd769c62da316a04b0a0a63b844405ae6dc5e80 (diff)
downloadkrb5-44d0e52f6dbb8b095956babf1c8b7734219de01f.tar.gz
krb5-44d0e52f6dbb8b095956babf1c8b7734219de01f.tar.xz
krb5-44d0e52f6dbb8b095956babf1c8b7734219de01f.zip
Network Identity Manager - Fix module loading when en_US locale cannot be loaded
The identity manager is designed for internationalization. However, it only ships with modules for the en_US locale. Designing modules for other locales was beyond our the reach of available resources. This patch will force the use of en_US when modules matching the installed user and system locales cannot be found. ticket: new status: resolved target_version: 1.4.4 tags: pullup git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17555 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/windows/identity/kmm/kmm_module.c29
1 files changed, 26 insertions, 3 deletions
diff --git a/src/windows/identity/kmm/kmm_module.c b/src/windows/identity/kmm/kmm_module.c
index 25da22345b..d5a61c7401 100644
--- a/src/windows/identity/kmm/kmm_module.c
+++ b/src/windows/identity/kmm/kmm_module.c
@@ -208,12 +208,15 @@ kmmint_read_module_info(kmm_module_i * m) {
}
n_languages = (int) (cb / sizeof(*languages));
+
+ /* Try searching for the user's default language first */
lang = GetUserDefaultLangID();
for (i = 0; i < n_languages; i++) {
if(languages[i].language == lang)
break;
}
+ /* If not, try the system default */
if (i >= n_languages) {
lang = GetSystemDefaultLangID();
for (i=0; i<n_languages; i++)
@@ -221,6 +224,27 @@ kmmint_read_module_info(kmm_module_i * m) {
break;
}
+ /* Then try EN_US */
+ if (i >= n_languages) {
+ lang = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US);
+ for (i=0; i<n_languages; i++)
+ if (languages[i].language == lang)
+ break;
+ }
+
+ /* Language neutral? */
+ if (i >= n_languages) {
+ lang = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL);
+ for (i=0; i<n_languages; i++)
+ if (languages[i].language == lang)
+ break;
+ }
+
+ /* Just use the first one? */
+ if (i >= n_languages) {
+ i = 0;
+ }
+
if (i >= n_languages) {
rv = KHM_ERROR_INVALID_PARAM;
_report_mr0(KHERR_WARNING, MSG_RMI_NO_LOCAL);
@@ -247,7 +271,6 @@ kmmint_read_module_info(kmm_module_i * m) {
_report_mr1(KHERR_WARNING, MSG_RMI_RES_TOO_LONG,
_cstr(TEXT(NIMV_MODULE)));
goto _cleanup;
-
}
if (wcscmp(r, m->name)) {
@@ -580,8 +603,8 @@ kmm_release_module_info_i(kmm_module_info * info) {
KHMEXP khm_int32 KHMAPI
-kmm_unload_module(kmm_module module)
-{
+kmm_unload_module(kmm_module module) {
+
if(!kmm_is_module(module))
return KHM_ERROR_INVALID_PARAM;