]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/HiiDatabase.c
Refine language conversion in ECP. Create a new library LanguageLib providing functio...
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / FrameworkHiiOnUefiHiiThunk / HiiDatabase.c
index a25650d8d7bf962490e9108d1bdcdb9299f7e8a1..ec7159b60b82476f076d2b9c988f5f7e4eb7e443 100644 (file)
@@ -305,65 +305,6 @@ HiiFindHandles (
   return EFI_SUCCESS;\r
 }\r
 \r
-EFI_STATUS\r
-LangCodes4646To639 (\r
-  IN CHAR8 *LangCodes4646,\r
-  IN CHAR8 **LangCodes639\r
-  )\r
-{\r
-  CHAR8                      *AsciiLangCodes;\r
-  CHAR8                      *Lang;\r
-  UINTN                      Index;\r
-  UINTN                      Count;\r
-  EFI_STATUS                 Status;\r
-\r
-  ASSERT (LangCodes4646 != NULL);\r
-  ASSERT (LangCodes639 != NULL);\r
-  \r
-  //\r
-  // Allocate working buffer to contain substring of LangCodes4646.\r
-  //\r
-  Lang = AllocatePool (AsciiStrSize (LangCodes4646));\r
-  if (Lang == NULL) {\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-\r
-  //\r
-  // Count the number of RFC 4646 language codes.\r
-  //\r
-  Index = 0;\r
-  AsciiLangCodes = LangCodes4646;\r
-  while (AsciiStrLen (AsciiLangCodes) != 0) {\r
-    GetNextLanguage (&AsciiLangCodes, Lang);\r
-    Index++;\r
-  }\r
-\r
-  Count = Index;\r
-\r
-  //\r
-  // \r
-  //\r
-  *LangCodes639 = AllocateZeroPool (ISO_639_2_ENTRY_SIZE * Count + 1);\r
-  if (*LangCodes639 == NULL) {\r
-    Status = EFI_OUT_OF_RESOURCES;\r
-    goto Done;\r
-  }\r
-\r
-  AsciiLangCodes = LangCodes4646;\r
-\r
-  for (Index = 0; Index < Count; Index++) {\r
-    GetNextLanguage (&AsciiLangCodes, Lang);\r
-    Status = ConvertRfc4646LanguageToIso639Language (Lang, *LangCodes639 + Index * ISO_639_2_ENTRY_SIZE);\r
-    ASSERT_EFI_ERROR (Status);\r
-  }\r
-\r
-  Status = EFI_SUCCESS;\r
-\r
-Done:\r
-  FreePool (Lang);\r
-  return Status;\r
-}\r
-\r
 /**\r
   Allows a program to determine the primary languages that are supported on a given handle.\r
 \r
@@ -409,10 +350,9 @@ HiiGetPrimaryLanguages (
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
-\r
-  LangCodes639 = NULL;\r
-  Status = LangCodes4646To639 (LangCodes4646, &LangCodes639);\r
-  if (EFI_ERROR (Status)) {\r
+  LangCodes639 = ConvertLanguagesRfc4646ToIso639 (LangCodes4646);\r
+  if (LangCodes639 == NULL) {\r
+    Status = EFI_INVALID_PARAMETER;\r
     goto Done;\r
   }\r
   \r
@@ -427,6 +367,7 @@ HiiGetPrimaryLanguages (
   //\r
   AsciiStrToUnicodeStr (LangCodes639, UnicodeLangCodes639);\r
   *LanguageString = UnicodeLangCodes639;\r
+  Status = EFI_SUCCESS;\r
 \r
 Done:\r
   FreePool (LangCodes4646);\r
@@ -551,7 +492,7 @@ HiiGetSecondaryLanguages (
 \r
   UnicodeStrToAsciiStr (PrimaryLanguage, PrimaryLang639);\r
 \r
-  PrimaryLang4646 = ConvertIso639LanguageToRfc4646Language (PrimaryLang639);\r
+  PrimaryLang4646 = ConvertLanguagesIso639ToRfc4646 (PrimaryLang639);\r
   ASSERT_EFI_ERROR (PrimaryLang4646 != NULL);\r
 \r
   SecLangCodes4646 = HiiGetSupportedSecondaryLanguages (UefiHiiHandle, PrimaryLang4646);\r
@@ -561,8 +502,9 @@ HiiGetSecondaryLanguages (
     goto Done;\r
   }\r
 \r
-  Status = LangCodes4646To639 (SecLangCodes4646, &SecLangCodes639);\r
-  if (EFI_ERROR (Status)) {\r
+  SecLangCodes639 = ConvertLanguagesIso639ToRfc4646 (SecLangCodes4646);\r
+  if (SecLangCodes639 == NULL) {\r
+    Status =  EFI_INVALID_PARAMETER;\r
     goto Done;\r
   }\r
 \r
@@ -576,6 +518,7 @@ HiiGetSecondaryLanguages (
   // The language returned is in RFC 4646 format.\r
   //\r
   *LanguageString = AsciiStrToUnicodeStr (SecLangCodes639, UnicodeSecLangCodes639);\r
+  Status = EFI_SUCCESS;\r
 \r
 Done:\r
   if (PrimaryLang639 != NULL) {\r