IN CONST EFI_GUID *ProtocolGuid\r
);\r
\r
+/**\r
+ * This function checks the supported languages list for a target language,\r
+ * This only supports RFC 4646 Languages.\r
+ *\r
+ * @param SupportedLanguages The supported languages\r
+ * @param TargetLanguage The target language\r
+ *\r
+ * @return Returns EFI_SUCCESS if the language is supported,\r
+ * EFI_UNSUPPORTED otherwise\r
+ */\r
+EFI_STATUS\r
+EFIAPI\r
+IsLanguageSupported (\r
+ IN CONST CHAR8 *SupportedLanguages,\r
+ IN CONST CHAR8 *TargetLanguage\r
+ );\r
+\r
/**\r
This function looks up a Unicode string in UnicodeStringTable.\r
\r
return Status;\r
}\r
\r
+/**\r
+ * This function checks the supported languages list for a target language,\r
+ * This only supports RFC 4646 Languages.\r
+ *\r
+ * @param SupportedLanguages The supported languages\r
+ * @param TargetLanguage The target language\r
+ *\r
+ * @return Returns EFI_SUCCESS if the language is supported,\r
+ * EFI_UNSUPPORTED otherwise\r
+ */\r
+EFI_STATUS\r
+EFIAPI\r
+IsLanguageSupported (\r
+ IN CONST CHAR8 *SupportedLanguages,\r
+ IN CONST CHAR8 *TargetLanguage\r
+ )\r
+{\r
+ UINTN Index;\r
+ while (*SupportedLanguages != 0) {\r
+ for (Index = 0; SupportedLanguages[Index] != 0 && SupportedLanguages[Index] != ';'; Index++);\r
+ if ((AsciiStrnCmp(SupportedLanguages, TargetLanguage, Index) == 0) && (TargetLanguage[Index] == 0)) {\r
+ return EFI_SUCCESS;\r
+ }\r
+ SupportedLanguages += Index;\r
+ for (; *SupportedLanguages != 0 && *SupportedLanguages == ';'; SupportedLanguages++);\r
+ }\r
+\r
+ return EFI_UNSUPPORTED;\r
+}\r
+\r
/**\r
This function looks up a Unicode string in UnicodeStringTable.\r
\r
// Make sure Language is in the set of Supported Languages\r
//\r
Found = FALSE;\r
- while (*SupportedLanguages != 0) {\r
- if (Iso639Language) {\r
+ if (Iso639Language) {\r
+ while (*SupportedLanguages != 0) {\r
if (CompareIso639LanguageCode (Language, SupportedLanguages)) {\r
Found = TRUE;\r
break;\r
}\r
SupportedLanguages += 3;\r
- } else {\r
- for (Index = 0; SupportedLanguages[Index] != 0 && SupportedLanguages[Index] != ';'; Index++);\r
- if ((AsciiStrnCmp(SupportedLanguages, Language, Index) == 0) && (Language[Index] == 0)) {\r
- Found = TRUE;\r
- break;\r
- }\r
- SupportedLanguages += Index;\r
- for (; *SupportedLanguages != 0 && *SupportedLanguages == ';'; SupportedLanguages++);\r
}\r
+ } else {\r
+ Found = !IsLanguageSupported(Language, SupportedLanguages);\r
}\r
\r
+\r
//\r
// If Language is not a member of SupportedLanguages, then return EFI_UNSUPPORTED\r
//\r
// Make sure Language is a member of SupportedLanguages\r
//\r
Found = FALSE;\r
- while (*SupportedLanguages != 0) {\r
- if (Iso639Language) {\r
+ if (Iso639Language) {\r
+ while (*SupportedLanguages != 0) {\r
if (CompareIso639LanguageCode (Language, SupportedLanguages)) {\r
Found = TRUE;\r
break;\r
}\r
SupportedLanguages += 3;\r
- } else {\r
- for (Index = 0; SupportedLanguages[Index] != 0 && SupportedLanguages[Index] != ';'; Index++);\r
- if (AsciiStrnCmp(SupportedLanguages, Language, Index) == 0) {\r
- Found = TRUE;\r
- break;\r
- }\r
- SupportedLanguages += Index;\r
- for (; *SupportedLanguages != 0 && *SupportedLanguages == ';'; SupportedLanguages++);\r
}\r
+ } else {\r
+ Found = !IsLanguageSupported(Language, SupportedLanguages);\r
}\r
-\r
//\r
// If Language is not a member of SupportedLanguages, then return EFI_UNSUPPORTED\r
//\r