]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Network Identity Manager - Fix module loading when en_US locale cannot be loaded
authorJeffrey Altman <jaltman@secure-endpoints.com>
Thu, 8 Dec 2005 06:58:15 +0000 (06:58 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Thu, 8 Dec 2005 06:58:15 +0000 (06:58 +0000)
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

src/windows/identity/kmm/kmm_module.c

index 25da22345b72396760bb082355c3b07cad5f160b..d5a61c74016e2516e8d9bfd5ba8c21a37e02b99e 100644 (file)
@@ -208,12 +208,15 @@ kmmint_read_module_info(kmm_module_i * m) {
     }\r
 \r
     n_languages = (int) (cb / sizeof(*languages));\r
+\r
+    /* Try searching for the user's default language first */\r
     lang = GetUserDefaultLangID();\r
     for (i = 0; i < n_languages; i++) {\r
         if(languages[i].language == lang)\r
             break;\r
     }\r
 \r
+    /* If not, try the system default */\r
     if (i >= n_languages) {\r
         lang = GetSystemDefaultLangID();\r
         for (i=0; i<n_languages; i++)\r
@@ -221,6 +224,27 @@ kmmint_read_module_info(kmm_module_i * m) {
                 break;\r
     }\r
 \r
+    /* Then try EN_US */\r
+    if (i >= n_languages) {\r
+        lang = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US);\r
+        for (i=0; i<n_languages; i++)\r
+            if (languages[i].language == lang)\r
+                break;\r
+    }\r
+\r
+    /* Language neutral? */\r
+    if (i >= n_languages) {\r
+        lang = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL);\r
+        for (i=0; i<n_languages; i++)\r
+            if (languages[i].language == lang)\r
+                break;\r
+    }\r
+\r
+    /* Just use the first one? */\r
+    if (i >= n_languages) {\r
+        i = 0;\r
+    }\r
+\r
     if (i >= n_languages) {\r
         rv = KHM_ERROR_INVALID_PARAM;\r
         _report_mr0(KHERR_WARNING, MSG_RMI_NO_LOCAL);\r
@@ -247,7 +271,6 @@ kmmint_read_module_info(kmm_module_i * m) {
         _report_mr1(KHERR_WARNING, MSG_RMI_RES_TOO_LONG,\r
                     _cstr(TEXT(NIMV_MODULE)));\r
         goto _cleanup;\r
-                    \r
     }\r
 \r
     if (wcscmp(r, m->name)) {\r
@@ -580,8 +603,8 @@ kmm_release_module_info_i(kmm_module_info * info) {
 \r
 \r
 KHMEXP khm_int32   KHMAPI \r
-kmm_unload_module(kmm_module module)\r
-{\r
+kmm_unload_module(kmm_module module) {\r
+\r
     if(!kmm_is_module(module))\r
         return KHM_ERROR_INVALID_PARAM;\r
 \r