From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: liming.gao@intel.com) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by groups.io with SMTP; Wed, 11 Sep 2019 07:55:49 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Sep 2019 07:55:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,492,1559545200"; d="scan'208";a="196913602" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by orsmga002.jf.intel.com with ESMTP; 11 Sep 2019 07:55:49 -0700 Received: from fmsmsx162.amr.corp.intel.com (10.18.125.71) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 11 Sep 2019 07:55:48 -0700 Received: from shsmsx106.ccr.corp.intel.com (10.239.4.159) by fmsmsx162.amr.corp.intel.com (10.18.125.71) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 11 Sep 2019 07:55:48 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.32]) by SHSMSX106.ccr.corp.intel.com ([169.254.10.86]) with mapi id 14.03.0439.000; Wed, 11 Sep 2019 22:55:46 +0800 From: "Liming Gao" To: "devel@edk2.groups.io" , "tzhao@solarflare.com" CC: "Kinney, Michael D" Subject: Re: [edk2-devel] [PATCH v5 1/1] MdePkg: UefiLib: Add a function to check if a language is supported Thread-Topic: [edk2-devel] [PATCH v5 1/1] MdePkg: UefiLib: Add a function to check if a language is supported Thread-Index: AQHVaK7b9aoUDSZKfku7yGxiEmhoQKcmkJOw Date: Wed, 11 Sep 2019 14:55:45 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E4F7136@SHSMSX104.ccr.corp.intel.com> References: <943c40b7-5863-eb26-2577-121ec1ca16fb@solarflare.com> In-Reply-To: <943c40b7-5863-eb26-2577-121ec1ca16fb@solarflare.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNDkxN2EzNWEtNTA1ZC00ZmEyLWE0YmUtYzc0NTFlN2E2ZDNiIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiaUZSa3JPejdGT3djRmlaYWREQlMxQzVjOGN0ZmZPaHRBT3FWYnNOQjZpR0FsK25sTGtoUUszVkZYWGNzc1dZVCJ9 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 Reviewed-by: Liming Gao > -----Original Message----- > From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of To= m Zhao > Sent: Wednesday, September 11, 2019 10:40 PM > To: devel@edk2.groups.io > Cc: Kinney, Michael D ; Gao, Liming > Subject: [edk2-devel] [PATCH v5 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 > v4: > - Remove reference to CompareISO639Lang > v5: > - Change doxygen format to use @retval >=20 > MdePkg/Include/Library/UefiLib.h | 17 ++++++ > MdePkg/Library/UefiLib/UefiLib.c | 60 +++++++++++++------- > 2 files changed, 56 insertions(+), 21 deletions(-) >=20 > diff --git a/MdePkg/Include/Library/UefiLib.h > b/MdePkg/Include/Library/UefiLib.h > index 1650f30ddbc6..65e7c90eb94b 100644 > --- a/MdePkg/Include/Library/UefiLib.h > +++ b/MdePkg/Include/Library/UefiLib.h > @@ -461,6 +461,23 @@ EfiTestChildHandle ( > IN CONST EFI_GUID *ProtocolGuid > ); > +/** > + * This function checks the supported languages list for a target langu= age, > + * This only supports RFC 4646 Languages. > + * > + * @param SupportedLanguages The supported languages > + * @param TargetLanguage The target language > + * > + * @retval EFI_SUCCESS The target language is supported > + * @retval EFI_UNSUPPORTED The target language is unsupported > + */ > +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..71eba51257f6 100644 > --- a/MdePkg/Library/UefiLib/UefiLib.c > +++ b/MdePkg/Library/UefiLib/UefiLib.c > @@ -640,6 +640,36 @@ EfiTestChildHandle ( > return Status; > } > +/** > + * This function checks the supported languages list for a target langu= age, > + * This only supports RFC 4646 Languages. > + * > + * @param SupportedLanguages The supported languages > + * @param TargetLanguage The target language > + * > + * @retval EFI_SUCCESS The target language is supported > + * @retval EFI_UNSUPPORTED The target language is unsupported > + */ > +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 +830,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 +1124,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