From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: liming.gao@intel.com) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by groups.io with SMTP; Wed, 04 Sep 2019 06:02:34 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Sep 2019 06:02:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,467,1559545200"; d="scan'208";a="185106971" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga003.jf.intel.com with ESMTP; 04 Sep 2019 06:02:33 -0700 Received: from fmsmsx113.amr.corp.intel.com (10.18.116.7) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 4 Sep 2019 06:02:33 -0700 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by FMSMSX113.amr.corp.intel.com (10.18.116.7) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 4 Sep 2019 06:02:32 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.32]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.132]) with mapi id 14.03.0439.000; Wed, 4 Sep 2019 21:02:31 +0800 From: "Liming Gao" To: "devel@edk2.groups.io" , "tzhao@solarflare.com" CC: "Kinney, Michael D" Subject: Re: [edk2-devel] [PATCH v3 1/1] MdePkg: UefiLib: Add a function to check if a language is supported Thread-Topic: [edk2-devel] [PATCH v3 1/1] MdePkg: UefiLib: Add a function to check if a language is supported Thread-Index: AQHVYW2vvsa8uI3QSkWqKjIRU9/M/acbfe/w Date: Wed, 4 Sep 2019 13:02:30 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E4F287D@SHSMSX104.ccr.corp.intel.com> References: <3f5c7899-9b79-0787-f456-41546c05bbe2@solarflare.com> In-Reply-To: <3f5c7899-9b79-0787-f456-41546c05bbe2@solarflare.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZGNjNmQ3OGUtMThiYy00ODhjLWE1YzEtOTFlOGU4NjY4ZGUxIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoidEM5aEkycElSem90eFR6eGZxN3VFdVppcFVyT3N4UjVNVlpudGZzMklQZmdkRUlDbmZJb1hFS1lndytQaERUWCJ9 dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: liming.gao@intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Tom: Thanks for your update function header with RFC 4646 Languages. Please rem= ove function name=20 CompareIso639LanguageCode() in function header. Because this API is UefiLi= b internal function,=20 It is not defined in UefiLib.h. With this update, Reviewed-by: Liming Gao = Thanks Liming > -----Original Message----- > From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of To= m Zhao > Sent: Monday, September 2, 2019 5:06 PM > To: devel@edk2.groups.io > Cc: Kinney, Michael D ; Gao, Liming > Subject: [edk2-devel] [PATCH v3 1/1] MdePkg: UefiLib: Add a function to = check if a language is supported >=20 > Add a function that checks if a target language is in the supported > languages list. Add some calls to this function where appropriate in > UefiLib.c >=20 > Cc: Michael D Kinney > Cc: Liming Gao > Signed-off-by: Tom Zhao > --- >=20 > Notes: > v3: > - Add comment about usage for RFC4646 and ISO-639 >=20 > MdePkg/Include/Library/UefiLib.h | 18 ++++++ > MdePkg/Library/UefiLib/UefiLib.c | 61 +++++++++++++------- > 2 files changed, 58 insertions(+), 21 deletions(-) >=20 > diff --git a/MdePkg/Include/Library/UefiLib.h > b/MdePkg/Include/Library/UefiLib.h > index 1650f30ddbc6..f72b7b31f2f1 100644 > --- a/MdePkg/Include/Library/UefiLib.h > +++ b/MdePkg/Include/Library/UefiLib.h > @@ -461,6 +461,24 @@ EfiTestChildHandle ( > IN CONST EFI_GUID *ProtocolGuid > ); > +/** > + * This function checks the supported languages list for a target langu= age, > + * This only supports RFC 4646 Languages. To compare ISO 639 languages, > refer > + * to function CompareIso639LanguageCode() > + * > + * @param SupportedLanguages The supported languages > + * @param TargetLanguage The target language > + * > + * @return Returns EFI_SUCCESS if the language is supported, > + * EFI_UNSUPPORTED otherwise > + */ > +EFI_STATUS > +EFIAPI > +IsLanguageSupported ( > + IN CONST CHAR8 *SupportedLanguages, > + IN CONST CHAR8 *TargetLanguage > + ); > + > /** > This function looks up a Unicode string in UnicodeStringTable. > diff --git a/MdePkg/Library/UefiLib/UefiLib.c > b/MdePkg/Library/UefiLib/UefiLib.c > index daa4af762e62..a89e327fc6f6 100644 > --- a/MdePkg/Library/UefiLib/UefiLib.c > +++ b/MdePkg/Library/UefiLib/UefiLib.c > @@ -640,6 +640,37 @@ EfiTestChildHandle ( > return Status; > } > +/** > + * This function checks the supported languages list for a target langu= age, > + * This only supports RFC 4646 Languages. To compare ISO 639 languages, > refer > + * to function CompareIso639LanguageCode() > + * > + * @param SupportedLanguages The supported languages > + * @param TargetLanguage The target language > + * > + * @return Returns EFI_SUCCESS if the language is supported, > + * EFI_UNSUPPORTED otherwise > + */ > +EFI_STATUS > +EFIAPI > +IsLanguageSupported ( > + IN CONST CHAR8 *SupportedLanguages, > + IN CONST CHAR8 *TargetLanguage > + ) > +{ > + UINTN Index; > + while (*SupportedLanguages !=3D 0) { > + for (Index =3D 0; SupportedLanguages[Index] !=3D 0 && > SupportedLanguages[Index] !=3D ';'; Index++); > + if ((AsciiStrnCmp(SupportedLanguages, TargetLanguage, Index) =3D=3D= 0) > && (TargetLanguage[Index] =3D=3D 0)) { > + return EFI_SUCCESS; > + } > + SupportedLanguages +=3D Index; > + for (; *SupportedLanguages !=3D 0 && *SupportedLanguages =3D=3D ';'= ; > SupportedLanguages++); > + } > + > + return EFI_UNSUPPORTED; > +} > + > /** > This function looks up a Unicode string in UnicodeStringTable. > @@ -800,24 +831,19 @@ LookupUnicodeString2 ( > // Make sure Language is in the set of Supported Languages > // > Found =3D FALSE; > - while (*SupportedLanguages !=3D 0) { > - if (Iso639Language) { > + if (Iso639Language) { > + while (*SupportedLanguages !=3D 0) { > if (CompareIso639LanguageCode (Language, SupportedLanguages)) { > Found =3D TRUE; > break; > } > SupportedLanguages +=3D 3; > - } else { > - for (Index =3D 0; SupportedLanguages[Index] !=3D 0 && > SupportedLanguages[Index] !=3D ';'; Index++); > - if ((AsciiStrnCmp(SupportedLanguages, Language, Index) =3D=3D 0) = && > (Language[Index] =3D=3D 0)) { > - Found =3D TRUE; > - break; > - } > - SupportedLanguages +=3D Index; > - for (; *SupportedLanguages !=3D 0 && *SupportedLanguages =3D=3D '= ;'; > SupportedLanguages++); > } > + } else { > + Found =3D !IsLanguageSupported(Language, SupportedLanguages); > } > + > // > // If Language is not a member of SupportedLanguages, then return > EFI_UNSUPPORTED > // > @@ -1099,24 +1125,17 @@ AddUnicodeString2 ( > // Make sure Language is a member of SupportedLanguages > // > Found =3D FALSE; > - while (*SupportedLanguages !=3D 0) { > - if (Iso639Language) { > + if (Iso639Language) { > + while (*SupportedLanguages !=3D 0) { > if (CompareIso639LanguageCode (Language, SupportedLanguages)) { > Found =3D TRUE; > break; > } > SupportedLanguages +=3D 3; > - } else { > - for (Index =3D 0; SupportedLanguages[Index] !=3D 0 && > SupportedLanguages[Index] !=3D ';'; Index++); > - if (AsciiStrnCmp(SupportedLanguages, Language, Index) =3D=3D 0) { > - Found =3D TRUE; > - break; > - } > - SupportedLanguages +=3D Index; > - for (; *SupportedLanguages !=3D 0 && *SupportedLanguages =3D=3D '= ;'; > SupportedLanguages++); > } > + } else { > + Found =3D !IsLanguageSupported(Language, SupportedLanguages); > } > - > // > // If Language is not a member of SupportedLanguages, then return > EFI_UNSUPPORTED > // > -- > 2.21.0 >=20 >=20 >=20