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
)\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
}\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