]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Update code to make get string case insensitive about language
authorydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Sun, 9 Oct 2011 10:44:05 +0000 (10:44 +0000)
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Sun, 9 Oct 2011 10:44:05 +0000 (10:44 +0000)
Signed-off-by: ydong10
Reviewed-by: rsun3
Reviewed-by: lgao4
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12517 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/HiiDatabaseDxe/String.c

index f7a7d7fd55b841e3715c8bebd1c3210b9f0add7a..617ba54509218216828eb0c268d52bc4c9817db8 100644 (file)
@@ -1959,6 +1959,35 @@ HiiGetSecondaryLanguages (
   return EFI_INVALID_LANGUAGE;\r
 }\r
 \r
+/**\r
+  Converts the ascii character of the string from uppercase to lowercase.\r
+  This is a internal function.\r
+\r
+  @param ConfigString  String to be converted\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+AsciiHiiToLower (\r
+  IN CHAR8  *ConfigString\r
+  )\r
+{\r
+  CHAR8      *String;\r
+\r
+  ASSERT (ConfigString != NULL);\r
+\r
+  //\r
+  // Convert all hex digits in range [A-F] in the configuration header to [a-f]\r
+  //\r
+  for (String = ConfigString; *String != '\0'; String++) {\r
+    if ( *String >= 'A' && *String <= 'Z') {\r
+      *String = (CHAR8) (*String - 'A' + 'a');\r
+    }\r
+  }\r
+\r
+  return;\r
+}\r
+\r
 /**\r
   Compare whether two names of languages are identical.\r
 \r
@@ -1976,12 +2005,28 @@ HiiCompareLanguage (
   )\r
 {\r
   UINTN  Index;\r
+  UINTN  StrLen;\r
+  CHAR8  *Lan1;\r
+  CHAR8  *Lan2;\r
+\r
+  //\r
+  // Convert to lower to compare.\r
+  //\r
+  StrLen = AsciiStrSize (Language1);\r
+  Lan1   = AllocateZeroPool (StrLen);\r
+  AsciiStrCpy(Lan1, Language1);\r
+  AsciiHiiToLower (Lan1);\r
+\r
+  StrLen = AsciiStrSize (Language2);\r
+  Lan2   = AllocateZeroPool (StrLen);\r
+  AsciiStrCpy(Lan2, Language2);\r
+  AsciiHiiToLower (Lan2);\r
 \r
   //\r
   // Compare the Primary Language in Language1 to Language2\r
   //\r
-  for (Index = 0; Language1[Index] != 0 && Language1[Index] != ';'; Index++) {\r
-    if (Language1[Index] != Language2[Index]) {\r
+  for (Index = 0; Lan1[Index] != 0 && Lan1[Index] != ';'; Index++) {\r
+    if (Lan1[Index] != Lan2[Index]) {\r
       //\r
       // Return FALSE if any characters are different.\r
       //\r
@@ -1989,6 +2034,9 @@ HiiCompareLanguage (
     }\r
   }\r
 \r
+  FreePool (Lan1);\r
+  FreePool (Lan2);\r
+\r
   //\r
   // Only return TRUE if Language2[Index] is a Null-terminator which means\r
   // the Primary Language in Language1 is the same length as Language2.  If\r