From b0bdc7ba21b3d70a0dda3aae6fbf0f54858a88a9 Mon Sep 17 00:00:00 2001 From: lgao4 Date: Tue, 8 Mar 2011 08:50:26 +0000 Subject: Update HiiCompareLanguage to support case that language in String package is "en" and the input language is "en-US". git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11356 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Universal/HiiDatabaseDxe/HiiDatabase.h | 4 ++-- MdeModulePkg/Universal/HiiDatabaseDxe/String.c | 22 +++++++++++++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) (limited to 'MdeModulePkg/Universal/HiiDatabaseDxe') diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h index 2b4d6bef79..d01a672189 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h @@ -1757,8 +1757,8 @@ HiiGetAltCfg ( /** Compare whether two names of languages are identical. - @param Language1 Name of language 1 - @param Language2 Name of language 2 + @param Language1 Name of language 1 from StringPackage + @param Language2 Name of language 2 to be compared with language 1. @retval TRUE same @retval FALSE not same diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/String.c b/MdeModulePkg/Universal/HiiDatabaseDxe/String.c index 931e7b397b..d0d13f1de7 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/String.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/String.c @@ -1954,8 +1954,8 @@ HiiGetSecondaryLanguages ( /** Compare whether two names of languages are identical. - @param Language1 Name of language 1 - @param Language2 Name of language 2 + @param Language1 Name of language 1 from StringPackage + @param Language2 Name of language 2 to be compared with language 1. @retval TRUE same @retval FALSE not same @@ -1969,6 +1969,22 @@ HiiCompareLanguage ( { UINTN Language2Len; + // + // When languages are exactly same, they will be identical. + // Language2Len = AsciiStrLen (Language2); - return (BOOLEAN) (AsciiStrnCmp (Language1, Language2, Language2Len) == 0); + if (AsciiStrnCmp (Language2, Language1, Language2Len) == 0) { + return TRUE; + } + + // + // When Language1 is the sub tag of Language2, they will also be regarded as identical. + // This is added to support current Shell. Shell string package uses "en" as language name. + // But, it may use platform language "en-US" to get string value. + // + if (AsciiStrStr (Language2, Language1) == Language2) { + return TRUE; + } + + return FALSE; } -- cgit v1.2.3