Update HiiDataBase driver to use GetBestLanguage() for matching RFC 4646 languages.
authorrsun3 <rsun3@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 8 May 2009 05:39:24 +0000 (05:39 +0000)
committerrsun3 <rsun3@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 8 May 2009 05:39:24 +0000 (05:39 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8262 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/HiiDatabaseDxe/Database.c
MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h
MdeModulePkg/Universal/HiiDatabaseDxe/String.c

index d3aba3d..a5ac43e 100644 (file)
@@ -784,6 +784,7 @@ InsertStringPackage (
   EFI_STATUS                  Status;\r
   EFI_HII_PACKAGE_HEADER      PackageHeader;\r
   CHAR8                       *Language;\r
+  CHAR8                       *MatchedLanguage;\r
   UINT32                      LanguageSize;\r
   LIST_ENTRY                  *Link;\r
 \r
@@ -809,8 +810,10 @@ InsertStringPackage (
   AsciiStrCpy (Language, (CHAR8 *) PackageHdr + HeaderSize - LanguageSize);\r
   for (Link = PackageList->StringPkgHdr.ForwardLink; Link != &PackageList->StringPkgHdr; Link = Link->ForwardLink) {\r
     StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);\r
-    if (HiiCompareLanguage (Language, StringPackage->StringPkgHdr->Language)) {\r
+    MatchedLanguage = GetBestLanguage (StringPackage->StringPkgHdr->Language, FALSE, (CHAR8 *) Language, NULL);\r
+    if (MatchedLanguage != NULL) {\r
       FreePool (Language);\r
+      FreePool (MatchedLanguage);\r
       return EFI_UNSUPPORTED;\r
     }\r
   }\r
index 51f41c1..fa82605 100644 (file)
@@ -1687,24 +1687,6 @@ HiiGetAltCfg (
   OUT EFI_STRING                               *AltCfgResp\r
   );\r
 \r
-\r
-/**\r
-  Compare whether two names of languages are identical.\r
-\r
-  @param  Language1              Name of language 1\r
-  @param  Language2              Name of language 2\r
-\r
-  @retval TRUE                   same\r
-  @retval FALSE                  not same\r
-\r
-**/\r
-BOOLEAN\r
-HiiCompareLanguage (\r
-  IN  CHAR8  *Language1,\r
-  IN  CHAR8  *Language2\r
-  )\r
-;\r
-\r
 //\r
 // Global variables\r
 //\r
index 00ff6ce..052abca 100644 (file)
@@ -968,6 +968,7 @@ HiiNewString (
   EFI_HII_SIBT_EXT2_BLOCK             Ext2;\r
   HII_FONT_INFO                       *LocalFont;\r
   HII_GLOBAL_FONT_INFO                *GlobalFont;\r
+  CHAR8                               *MatchedLanguage;\r
 \r
   if (This == NULL || String == NULL || StringId == NULL || Language == NULL || PackageList == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
@@ -1014,7 +1015,9 @@ HiiNewString (
        Link = Link->ForwardLink\r
       ) {\r
     StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);\r
-    if (HiiCompareLanguage (StringPackage->StringPkgHdr->Language, (CHAR8 *) Language)) {\r
+    MatchedLanguage = GetBestLanguage (StringPackage->StringPkgHdr->Language, FALSE, (CHAR8 *) Language, NULL);\r
+    if (MatchedLanguage != NULL) {\r
+      FreePool (MatchedLanguage);\r
       Matched = TRUE;\r
       break;\r
     }\r
@@ -1320,6 +1323,7 @@ HiiGetString (
   HII_DATABASE_RECORD                 *DatabaseRecord;\r
   HII_DATABASE_PACKAGE_LIST_INSTANCE  *PackageListNode;\r
   HII_STRING_PACKAGE_INSTANCE         *StringPackage;\r
+  CHAR8                               *MatchedLanguage;\r
 \r
   if (This == NULL || Language == NULL || StringId < 1 || StringSize == NULL || PackageList == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
@@ -1353,7 +1357,9 @@ HiiGetString (
          Link =  Link->ForwardLink\r
         ) {\r
         StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);\r
-        if (HiiCompareLanguage (StringPackage->StringPkgHdr->Language, (CHAR8 *) Language)) {\r
+        MatchedLanguage = GetBestLanguage (StringPackage->StringPkgHdr->Language, FALSE, (CHAR8 *) Language, NULL);\r
+        if (MatchedLanguage != NULL) {\r
+          FreePool (MatchedLanguage);\r
           Status = GetStringWorker (Private, StringPackage, StringId, String, StringSize, StringFontInfo);\r
           if (Status != EFI_NOT_FOUND) {\r
             return Status;\r
@@ -1421,6 +1427,7 @@ HiiSetString (
   HII_DATABASE_PACKAGE_LIST_INSTANCE  *PackageListNode;\r
   HII_STRING_PACKAGE_INSTANCE         *StringPackage;\r
   UINT32                              OldPackageLen;\r
+  CHAR8                               *MatchedLanguage;\r
 \r
   if (This == NULL || Language == NULL || StringId < 1 || String == NULL || PackageList == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
@@ -1446,7 +1453,9 @@ HiiSetString (
          Link =  Link->ForwardLink\r
         ) {\r
       StringPackage = CR (Link, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);\r
-      if (HiiCompareLanguage (StringPackage->StringPkgHdr->Language, (CHAR8 *) Language)) {\r
+      MatchedLanguage = GetBestLanguage (StringPackage->StringPkgHdr->Language, FALSE, (CHAR8 *) Language, NULL);\r
+      if (MatchedLanguage != NULL) {\r
+        FreePool (MatchedLanguage);\r
         OldPackageLen = StringPackage->StringPkgHdr->Header.Length;\r
         Status = SetStringWorker (\r
                    Private,\r
@@ -1603,6 +1612,7 @@ HiiGetSecondaryLanguages (
   HII_STRING_PACKAGE_INSTANCE         *StringPackage;\r
   CHAR8                               *Languages;\r
   UINTN                               ResultSize;\r
+  CHAR8                               *MatchedLanguage;\r
 \r
   if (This == NULL || PackageList == NULL || FirstLanguage == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
@@ -1635,7 +1645,9 @@ HiiGetSecondaryLanguages (
          Link1 = Link1->ForwardLink\r
         ) {\r
     StringPackage = CR (Link1, HII_STRING_PACKAGE_INSTANCE, StringEntry, HII_STRING_PACKAGE_SIGNATURE);\r
-    if (HiiCompareLanguage (StringPackage->StringPkgHdr->Language, (CHAR8 *) FirstLanguage)) {\r
+    MatchedLanguage = GetBestLanguage (StringPackage->StringPkgHdr->Language, FALSE, (CHAR8 *) FirstLanguage, NULL);\r
+    if (MatchedLanguage != NULL) {\r
+      FreePool (MatchedLanguage);\r
       Languages = StringPackage->StringPkgHdr->Language;\r
       //\r
       // Language is a series of ';' terminated strings, first one is primary\r
@@ -1663,41 +1675,3 @@ HiiGetSecondaryLanguages (
   return EFI_INVALID_LANGUAGE;\r
 }\r
 \r
-/**\r
-  Compare whether two names of languages are identical.\r
-\r
-  @param  Language1              Name of language 1\r
-  @param  Language2              Name of language 2\r
-\r
-  @retval TRUE                   same\r
-  @retval FALSE                  not same\r
-\r
-**/\r
-BOOLEAN\r
-HiiCompareLanguage (\r
-  IN  CHAR8  *Language1,\r
-  IN  CHAR8  *Language2\r
-  )\r
-{\r
-  //\r
-  // Porting Guide:\r
-  // This library interface is simply obsolete.\r
-  // Include the source code to user code.\r
-  //\r
-  UINTN Index;\r
-\r
-  for (Index = 0; (Language1[Index] != 0) && (Language2[Index] != 0); Index++) {\r
-    if (Language1[Index] != Language2[Index]) {\r
-      return FALSE;\r
-    }\r
-  }\r
-\r
-  if (((Language1[Index] == 0) && (Language2[Index] == 0))   || \r
-         ((Language1[Index] == 0) && (Language2[Index] != ';')) ||\r
-         ((Language1[Index] == ';') && (Language2[Index] != 0)) ||\r
-         ((Language1[Index] == ';') && (Language2[Index] != ';'))) {\r
-    return TRUE;\r
-  }\r
-\r
-  return FALSE;\r
-}\r