X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EdkCompatibilityPkg%2FCompatibility%2FFrameworkHiiOnUefiHiiThunk%2FStrings.c;fp=EdkCompatibilityPkg%2FCompatibility%2FFrameworkHiiOnUefiHiiThunk%2FStrings.c;h=0000000000000000000000000000000000000000;hp=f246c08b5fb2d46727813505619107916770b070;hb=c455bc8c8d78ad51c24426a500914ea32504bf06;hpb=5bca07268acabe7f31407358e875ccf89cb5e386 diff --git a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/Strings.c b/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/Strings.c deleted file mode 100644 index f246c08b5f..0000000000 --- a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/Strings.c +++ /dev/null @@ -1,438 +0,0 @@ -/** @file - This file implements the protocol functions related to string package. - -Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - - -#include "HiiDatabase.h" - -/** - Test if all of the characters in a string have corresponding font characters. - - This is a deprecated API. No Framework HII module is calling it. This function will ASSERT and - return EFI_UNSUPPORTED. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param StringToTest A pointer to a Unicode string. - @param FirstMissing A pointer to an index into the string. On input, the index of - the first character in the StringToTest to examine. On exit, the index - of the first character encountered for which a glyph is unavailable. - If all glyphs in the string are available, the index is the index of the terminator - of the string. - @param GlyphBufferSize A pointer to a value. On output, if the function returns EFI_SUCCESS, - it contains the amount of memory that is required to store the string? glyph equivalent. - - @retval EFI_UNSUPPORTED The function performs nothing and return EFI_UNSUPPORTED. -**/ -EFI_STATUS -EFIAPI -HiiTestString ( - IN EFI_HII_PROTOCOL *This, - IN CHAR16 *StringToTest, - IN OUT UINT32 *FirstMissing, - OUT UINT32 *GlyphBufferSize - ) -{ - ASSERT (FALSE); - - return EFI_UNSUPPORTED; -} - - -/** - Find the corressponding TAG GUID from a Framework HII Handle given. - - @param Private The HII Thunk Module Private context. - @param FwHiiHandle The Framemwork HII Handle. - @param TagGuid The output of TAG GUID found. - - @return NULL If Framework HII Handle is invalid. - @return The corresponding HII Thunk Context. -**/ -EFI_STATUS -GetTagGuidByFwHiiHandle ( - IN CONST HII_THUNK_PRIVATE_DATA *Private, - IN FRAMEWORK_EFI_HII_HANDLE FwHiiHandle, - OUT EFI_GUID *TagGuid - ) -{ - LIST_ENTRY *Link; - HII_THUNK_CONTEXT *ThunkContext; - - ASSERT (TagGuid != NULL); - - Link = GetFirstNode (&Private->ThunkContextListHead); - while (!IsNull (&Private->ThunkContextListHead, Link)) { - - ThunkContext = HII_THUNK_CONTEXT_FROM_LINK (Link); - - if (FwHiiHandle == ThunkContext->FwHiiHandle) { - CopyGuid (TagGuid, &ThunkContext->TagGuid); - return EFI_SUCCESS; - } - - Link = GetNextNode (&Private->ThunkContextListHead, Link); - } - - return EFI_NOT_FOUND; -} - -/** - Create or update the String given a new string and String ID. - - @param ThunkContext The Thunk Context. - @param Rfc4646AsciiLanguage The RFC 4646 Language code in ASCII string format. - @param NewString The new string. - @param StringId The String ID. If StringId is 0, a new String Token - is created. Otherwise, the String Token StringId is - updated. - - - @retval EFI_SUCCESS The new string is created or updated successfully. - The new String Token ID is returned in StringId if - *StringId is 0 on input. - @return Others The update of string failed. - -**/ -EFI_STATUS -UpdateString ( - IN CONST HII_THUNK_CONTEXT *ThunkContext, - IN CONST CHAR8 *Rfc4646AsciiLanguage, - IN CHAR16 *NewString, - IN OUT STRING_REF *StringId - ) -{ - EFI_STRING_ID NewStringId; - - NewStringId = HiiSetString (ThunkContext->UefiHiiHandle, *StringId, NewString, Rfc4646AsciiLanguage); - *StringId = NewStringId; - if (NewStringId == 0) { - // - // Only EFI_INVALID_PARAMETER is defined in HII 0.92 specification. - // - return EFI_INVALID_PARAMETER; - } else { - return EFI_SUCCESS; - } -} - -/** - Create or update a String Token in a String Package. - - If *Reference == 0, a new String Token is created. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param Language Pointer to a NULL-terminated string containing a single ISO 639-2 language - identifier, indicating the language to print. A string consisting of - all spaces indicates that the string is applicable to all languages. - @param Handle The handle of the language pack to which the string is to be added. - @param Reference The string token assigned to the string. - @param NewString The string to be added. - - - @retval EFI_SUCCESS The string was effectively registered. - @retval EFI_INVALID_PARAMETER The Handle was unknown. The string is not created or updated in the - the string package. -**/ -EFI_STATUS -EFIAPI -HiiNewString ( - IN EFI_HII_PROTOCOL *This, - IN CHAR16 *Language, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN OUT STRING_REF *Reference, - IN CHAR16 *NewString - ) -{ - EFI_STATUS Status; - HII_THUNK_PRIVATE_DATA *Private; - EFI_GUID TagGuid; - LIST_ENTRY *Link; - HII_THUNK_CONTEXT *ThunkContext; - HII_THUNK_CONTEXT *StringPackThunkContext; - EFI_STRING_ID StringId; - EFI_STRING_ID LastStringId; - CHAR8 AsciiLanguage[ISO_639_2_ENTRY_SIZE + 1]; - CHAR16 LanguageCopy[ISO_639_2_ENTRY_SIZE + 1]; - CHAR8 *Rfc4646AsciiLanguage; - - LastStringId = (EFI_STRING_ID) 0; - StringId = (EFI_STRING_ID) 0; - Rfc4646AsciiLanguage = NULL; - - if (Language != NULL) { - ZeroMem (AsciiLanguage, sizeof (AsciiLanguage));; - ZeroMem (LanguageCopy, sizeof (LanguageCopy)); - CopyMem (LanguageCopy, Language, ISO_639_2_ENTRY_SIZE * sizeof (CHAR16)); - UnicodeStrToAsciiStr (LanguageCopy, AsciiLanguage); - Rfc4646AsciiLanguage = ConvertLanguagesIso639ToRfc4646 (AsciiLanguage); - ASSERT (Rfc4646AsciiLanguage != NULL); - } - - Private = HII_THUNK_PRIVATE_DATA_FROM_THIS(This); - - StringPackThunkContext = FwHiiHandleToThunkContext (Private, Handle); - if (StringPackThunkContext == NULL) { - return EFI_INVALID_PARAMETER; - } - - if (StringPackThunkContext->SharingStringPack) { - Status = GetTagGuidByFwHiiHandle (Private, Handle, &TagGuid); - ASSERT_EFI_ERROR (Status); - - Link = GetFirstNode (&Private->ThunkContextListHead); - while (!IsNull (&Private->ThunkContextListHead, Link)) { - ThunkContext = HII_THUNK_CONTEXT_FROM_LINK (Link); - - if (CompareGuid (&TagGuid, &ThunkContext->TagGuid)) { - if (ThunkContext->SharingStringPack) { - StringId = *Reference; - Status = UpdateString (ThunkContext, Rfc4646AsciiLanguage, NewString, &StringId); - if (EFI_ERROR (Status)) { - break; - } - - DEBUG_CODE_BEGIN (); - if (*Reference == 0) { - // - // When creating new string token, make sure all created token is the same - // for all string packages registered using FW HII interface. - // - if (LastStringId == (EFI_STRING_ID) 0) { - LastStringId = StringId; - } else { - if (LastStringId != StringId) { - ASSERT(FALSE); - } - } - } - DEBUG_CODE_END (); - - } - } - - Link = GetNextNode (&Private->ThunkContextListHead, Link); - } - } else { - StringId = *Reference; - Status = UpdateString (StringPackThunkContext, Rfc4646AsciiLanguage, NewString, &StringId); - } - - if (!EFI_ERROR (Status)) { - if (*Reference == 0) { - *Reference = StringId; - } - } else { - // - // Only EFI_INVALID_PARAMETER is defined in HII 0.92 specification. - // - Status = EFI_INVALID_PARAMETER; - } - - return Status; -} - -/** - This function removes any new strings that were added after the initial string export for this handle. - UEFI HII String Protocol does not have Reset String function. This function perform nothing. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param Handle The HII handle on which the string resides. - - @retval EFI_SUCCESS This function is a NOP and always return EFI_SUCCESS. - -**/ -EFI_STATUS -EFIAPI -HiiResetStrings ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle - ) -{ - return EFI_SUCCESS; -} - -/** - This function extracts a string from a package already registered with the EFI HII database. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param Handle The HII handle on which the string resides. - @param Token The string token assigned to the string. - @param Raw If TRUE, the string is returned unedited in the internal storage format described - above. If false, the string returned is edited by replacing with - and by removing special characters such as the prefix. - @param LanguageString Pointer to a NULL-terminated string containing a single ISO 639-2 language - identifier, indicating the language to print. If the LanguageString is empty (starts - with a NULL), the default system language will be used to determine the language. - @param BufferLength Length of the StringBuffer. If the status reports that the buffer width is too - small, this parameter is filled with the length of the buffer needed. - @param StringBuffer The buffer designed to receive the characters in the string. Type EFI_STRING is - defined in String. - - @retval EFI_INVALID_PARAMETER If input parameter is invalid. - @retval EFI_BUFFER_TOO_SMALL If the *BufferLength is too small. - @retval EFI_SUCCESS Operation is successful. - -**/ -EFI_STATUS -EFIAPI -HiiThunkGetString ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN STRING_REF Token, - IN BOOLEAN Raw, - IN CHAR16 *LanguageString, - IN OUT UINTN *BufferLength, - OUT EFI_STRING StringBuffer - ) -{ - HII_THUNK_PRIVATE_DATA *Private; - CHAR8 *Iso639AsciiLanguage; - CHAR8 *Rfc4646AsciiLanguage; - CHAR8 *SupportedLanguages; - CHAR8 *PlatformLanguage; - CHAR8 *BestLanguage; - EFI_HII_HANDLE UefiHiiHandle; - EFI_STATUS Status; - - Private = HII_THUNK_PRIVATE_DATA_FROM_THIS(This); - - Rfc4646AsciiLanguage = NULL; - SupportedLanguages = NULL; - PlatformLanguage = NULL; - Status = EFI_SUCCESS; - - if (LanguageString != NULL) { - Iso639AsciiLanguage = AllocateZeroPool (StrLen (LanguageString) + 1); - if (Iso639AsciiLanguage == NULL) { - return EFI_OUT_OF_RESOURCES; - } - UnicodeStrToAsciiStr (LanguageString, Iso639AsciiLanguage); - - // - // Caller of Framework HII Interface uses the Language Identification String defined - // in Iso639. So map it to the Language Identifier defined in RFC4646. - // - Rfc4646AsciiLanguage = ConvertLanguagesIso639ToRfc4646 (Iso639AsciiLanguage); - FreePool (Iso639AsciiLanguage); - - // - // If Rfc4646AsciiLanguage is NULL, more language mapping must be added to - // Iso639ToRfc4646Map. - // - ASSERT (Rfc4646AsciiLanguage != NULL); - } - - UefiHiiHandle = FwHiiHandleToUefiHiiHandle (Private, Handle); - if (UefiHiiHandle == NULL) { - Status = EFI_NOT_FOUND; - goto Done; - } - - // - // Get the languages that the package specified by HiiHandle supports - // - SupportedLanguages = HiiGetSupportedLanguages (UefiHiiHandle); - if (SupportedLanguages == NULL) { - goto Done; - } - - // - // Get the current platform language setting - // - GetEfiGlobalVariable2 (L"PlatformLang", (VOID**)&PlatformLanguage, NULL); - - // - // Get the best matching language from SupportedLanguages - // - BestLanguage = GetBestLanguage ( - SupportedLanguages, - FALSE, // RFC 4646 mode - (Rfc4646AsciiLanguage != NULL) ? Rfc4646AsciiLanguage : "", // Highest priority - (PlatformLanguage != NULL) ? PlatformLanguage : "", // Next highest priority - SupportedLanguages, // Lowest priority - NULL - ); - if (BestLanguage != NULL) { - Status = mHiiStringProtocol->GetString ( - mHiiStringProtocol, - BestLanguage, - UefiHiiHandle, - Token, - StringBuffer, - BufferLength, - NULL - ); - FreePool (BestLanguage); - } else { - Status = EFI_INVALID_PARAMETER; - } - -Done: - if (Rfc4646AsciiLanguage != NULL) { - FreePool (Rfc4646AsciiLanguage); - } - - if (SupportedLanguages != NULL) { - FreePool (SupportedLanguages); - } - - if (PlatformLanguage != NULL) { - FreePool (PlatformLanguage); - } - return Status; -} - -/** - - This function allows a program to extract a part of a string of not more than a given width. - With repeated calls, this allows a calling program to extract "lines" of text that fit inside - columns. The effort of measuring the fit of strings inside columns is localized to this call. - - This is a deprecated API. No Framework HII module is calling it. This function will ASSERT and - return EFI_UNSUPPORTED. - - @param This A pointer to the EFI_HII_PROTOCOL instance. - @param Handle The HII handle on which the string resides. - @param Token The string token assigned to the string. - @param Index On input, the offset into the string where the line is to start. - On output, the index is updated to point to beyond the last character returned - in the call. - @param LineWidth The maximum width of the line in units of narrow glyphs. - @param LanguageString Pointer to a NULL-terminated string containing a single ISO 639-2 language - identifier, indicating the language to print. If the LanguageString is empty (starts - with a NULL), the default system language will be used to determine the language. - @param BufferLength Length of the StringBuffer. If the status reports that the buffer width is too - small, this parameter is filled with the length of the buffer needed. - @param StringBuffer The buffer designed to receive the characters in the string. Type EFI_STRING is - defined in String. - - @retval EFI_UNSUPPORTED. -**/ -EFI_STATUS -EFIAPI -HiiGetLine ( - IN EFI_HII_PROTOCOL *This, - IN FRAMEWORK_EFI_HII_HANDLE Handle, - IN STRING_REF Token, - IN OUT UINT16 *Index, - IN UINT16 LineWidth, - IN CHAR16 *LanguageString, - IN OUT UINT16 *BufferLength, - OUT EFI_STRING StringBuffer - ) -{ - ASSERT (FALSE); - return EFI_UNSUPPORTED; -} - -