]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkCompatibilityPkg/Foundation/Library/Dxe/UefiEfiIfrSupportLib/UefiIfrString.c
EdkCompatibilityPkg: Remove EdkCompatibilityPkg
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / Dxe / UefiEfiIfrSupportLib / UefiIfrString.c
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/UefiEfiIfrSupportLib/UefiIfrString.c b/EdkCompatibilityPkg/Foundation/Library/Dxe/UefiEfiIfrSupportLib/UefiIfrString.c
deleted file mode 100644 (file)
index ece78bf..0000000
+++ /dev/null
@@ -1,726 +0,0 @@
-/*++\r
-\r
-Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-Module Name:\r
-\r
-  UefiIfrString.c\r
-\r
-Abstract:\r
-\r
-  Common Library Routines to assist to handle String and Language.\r
-\r
---*/\r
-\r
-#include "UefiIfrLibrary.h"\r
-\r
-//\r
-// Lookup table of ISO639-2 3 character language codes to ISO 639-1 2 character language codes\r
-// Each entry is 5 CHAR8 values long.  The first 3 CHAR8 values are the ISO 639-2 code.\r
-// The last 2 CHAR8 values are the ISO 639-1 code.\r
-//\r
-CHAR8 Iso639ToRfc3066ConversionTable[] =\r
-"\\r
-aaraa\\r
-abkab\\r
-afraf\\r
-amham\\r
-araar\\r
-asmas\\r
-aymay\\r
-azeaz\\r
-bakba\\r
-belbe\\r
-benbn\\r
-bihbh\\r
-bisbi\\r
-bodbo\\r
-brebr\\r
-bulbg\\r
-catca\\r
-cescs\\r
-corkw\\r
-cosco\\r
-cymcy\\r
-danda\\r
-deude\\r
-dzodz\\r
-ellel\\r
-engen\\r
-epoeo\\r
-estet\\r
-euseu\\r
-faofo\\r
-fasfa\\r
-fijfj\\r
-finfi\\r
-frafr\\r
-fryfy\\r
-gaiga\\r
-gdhgd\\r
-glggl\\r
-grngn\\r
-gujgu\\r
-hauha\\r
-hebhe\\r
-hinhi\\r
-hrvhr\\r
-hunhu\\r
-hyehy\\r
-ikuiu\\r
-ileie\\r
-inaia\\r
-indid\\r
-ipkik\\r
-islis\\r
-itait\\r
-jawjw\\r
-jpnja\\r
-kalkl\\r
-kankn\\r
-kasks\\r
-katka\\r
-kazkk\\r
-khmkm\\r
-kinrw\\r
-kirky\\r
-korko\\r
-kurku\\r
-laolo\\r
-latla\\r
-lavlv\\r
-linln\\r
-litlt\\r
-ltzlb\\r
-malml\\r
-marmr\\r
-mkdmk\\r
-mlgmg\\r
-mltmt\\r
-molmo\\r
-monmn\\r
-mrimi\\r
-msams\\r
-myamy\\r
-nauna\\r
-nepne\\r
-nldnl\\r
-norno\\r
-ocioc\\r
-ormom\\r
-panpa\\r
-polpl\\r
-porpt\\r
-pusps\\r
-quequ\\r
-rohrm\\r
-ronro\\r
-runrn\\r
-rusru\\r
-sagsg\\r
-sansa\\r
-sinsi\\r
-slksk\\r
-slvsl\\r
-smise\\r
-smosm\\r
-snasn\\r
-sndsd\\r
-somso\\r
-sotst\\r
-spaes\\r
-sqisq\\r
-srpsr\\r
-sswss\\r
-sunsu\\r
-swasw\\r
-swesv\\r
-tamta\\r
-tattt\\r
-telte\\r
-tgktg\\r
-tgltl\\r
-thath\\r
-tsnts\\r
-tuktk\\r
-twitw\\r
-uigug\\r
-ukruk\\r
-urdur\\r
-uzbuz\\r
-vievi\\r
-volvo\\r
-wolwo\\r
-xhoxh\\r
-yidyi\\r
-zhaza\\r
-zhozh\\r
-zulzu\\r
-";\r
-\r
-EFI_STATUS\r
-ConvertRfc3066LanguageToIso639Language (\r
-  CHAR8   *LanguageRfc3066,\r
-  CHAR8   *LanguageIso639\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-  Convert language code from RFC3066 to ISO639-2.\r
-\r
-Arguments:\r
-  LanguageRfc3066 - RFC3066 language code.\r
-  LanguageIso639  - ISO639-2 language code.\r
-\r
-Returns:\r
-  EFI_SUCCESS   - Language code converted.\r
-  EFI_NOT_FOUND - Language code not found.\r
-\r
---*/\r
-{\r
-  UINTN  Index;\r
-\r
-  if ((LanguageRfc3066[2] != '-') && (LanguageRfc3066[2] != 0)) {\r
-    EfiCopyMem (LanguageIso639, LanguageRfc3066, 3);\r
-    return EFI_SUCCESS;\r
-  }\r
-\r
-  for (Index = 0; Iso639ToRfc3066ConversionTable[Index] != 0; Index += 5) {\r
-    if (EfiCompareMem (LanguageRfc3066, &Iso639ToRfc3066ConversionTable[Index + 3], 2) == 0) {\r
-      EfiCopyMem (LanguageIso639, &Iso639ToRfc3066ConversionTable[Index], 3);\r
-      return EFI_SUCCESS;\r
-    }\r
-  }\r
-\r
-  return EFI_NOT_FOUND;\r
-}\r
-\r
-CHAR8 *\r
-Rfc3066ToIso639 (\r
-  CHAR8  *SupportedLanguages\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-  Convert language code list from RFC3066 to ISO639-2, e.g. "en-US;fr-FR" will\r
-  be converted to "engfra".\r
-\r
-Arguments:\r
-  SupportedLanguages - The RFC3066 language list.\r
-\r
-Returns:\r
-  The ISO639-2 language list.\r
-\r
---*/\r
-{\r
-  CHAR8       *Languages;\r
-  CHAR8       *ReturnValue;\r
-  CHAR8       *LangCodes;\r
-  CHAR8       LangRfc3066[RFC_3066_ENTRY_SIZE];\r
-  CHAR8       LangIso639[ISO_639_2_ENTRY_SIZE];\r
-  EFI_STATUS  Status;\r
-\r
-  ReturnValue = EfiLibAllocateZeroPool (EfiAsciiStrSize (SupportedLanguages));\r
-  if (ReturnValue == NULL) {\r
-    return ReturnValue;\r
-  }\r
-\r
-  Languages = ReturnValue;\r
-  LangCodes = SupportedLanguages;\r
-  while (*LangCodes != 0) {\r
-    GetNextLanguage (&LangCodes, LangRfc3066);\r
-\r
-    Status = ConvertRfc3066LanguageToIso639Language (LangRfc3066, LangIso639);\r
-    if (!EFI_ERROR (Status)) {\r
-      EfiCopyMem (Languages, LangIso639, 3);\r
-      Languages = Languages + 3;\r
-    }\r
-  }\r
-\r
-  return ReturnValue;\r
-}\r
-\r
-EFI_STATUS\r
-GetCurrentLanguage (\r
-  OUT     CHAR8               *Lang\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-  Determine what is the current language setting\r
-\r
-Arguments:\r
-  Lang      - Pointer of system language\r
-\r
-Returns:\r
-  Status code\r
-\r
---*/\r
-{\r
-  EFI_STATUS  Status;\r
-  UINTN       Size;\r
-\r
-  //\r
-  // Get current language setting\r
-  //\r
-  Size = RFC_3066_ENTRY_SIZE;\r
-  Status = gRT->GetVariable (\r
-                  L"PlatformLang",\r
-                  &gEfiGlobalVariableGuid,\r
-                  NULL,\r
-                  &Size,\r
-                  Lang\r
-                  );\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    EfiAsciiStrCpy (Lang, (CHAR8 *) "en-US");\r
-  }\r
-\r
-  return Status;\r
-}\r
-\r
-VOID\r
-GetNextLanguage (\r
-  IN OUT CHAR8      **LangCode,\r
-  OUT CHAR8         *Lang\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-  Get next language from language code list (with separator ';').\r
-\r
-Arguments:\r
-  LangCode - On input: point to first language in the list. On output: point to\r
-             next language in the list, or NULL if no more language in the list.\r
-  Lang     - The first language in the list.\r
-\r
-Returns:\r
-  None.\r
-\r
---*/\r
-{\r
-  UINTN  Index;\r
-  CHAR8  *StringPtr;\r
-\r
-  if (LangCode == NULL || *LangCode == NULL) {\r
-    *Lang = 0;\r
-    return;\r
-  }\r
-\r
-  Index = 0;\r
-  StringPtr = *LangCode;\r
-  while (StringPtr[Index] != 0 && StringPtr[Index] != ';') {\r
-    Index++;\r
-  }\r
-\r
-  EfiCopyMem (Lang, StringPtr, Index);\r
-  Lang[Index] = 0;\r
-\r
-  if (StringPtr[Index] == ';') {\r
-    Index++;\r
-  }\r
-  *LangCode = StringPtr + Index;\r
-}\r
-\r
-CHAR8 *\r
-GetSupportedLanguages (\r
-  IN EFI_HII_HANDLE           HiiHandle\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-  This function returns the list of supported languages, in the format specified\r
-  in UEFI specification Appendix M.\r
-\r
-Arguments:\r
-  HiiHandle  - The HII package list handle.\r
-\r
-Returns:\r
-  The supported languages.\r
-\r
---*/\r
-{\r
-  EFI_STATUS  Status;\r
-  UINTN       BufferSize;\r
-  CHAR8       *LanguageString;\r
-\r
-  LocateHiiProtocols ();\r
-\r
-  //\r
-  // Collect current supported Languages for given HII handle\r
-  //\r
-  BufferSize = 0x1000;\r
-  LanguageString = EfiLibAllocatePool (BufferSize);\r
-  Status = gIfrLibHiiString->GetLanguages (gIfrLibHiiString, HiiHandle, LanguageString, &BufferSize);\r
-  if (Status == EFI_BUFFER_TOO_SMALL) {\r
-    gBS->FreePool (LanguageString);\r
-    LanguageString = EfiLibAllocatePool (BufferSize);\r
-    Status = gIfrLibHiiString->GetLanguages (gIfrLibHiiString, HiiHandle, LanguageString, &BufferSize);\r
-  }\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    LanguageString = NULL;\r
-  }\r
-\r
-  return LanguageString;\r
-}\r
-\r
-UINT16\r
-GetSupportedLanguageNumber (\r
-  IN EFI_HII_HANDLE           HiiHandle\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-  This function returns the number of supported languages\r
-\r
-Arguments:\r
-  HiiHandle  - The HII package list handle.\r
-\r
-Returns:\r
-  The  number of supported languages.\r
-\r
---*/\r
-{\r
-  CHAR8   *Languages;\r
-  CHAR8   *LanguageString;\r
-  UINT16  LangNumber;\r
-  CHAR8   Lang[RFC_3066_ENTRY_SIZE];\r
-\r
-  Languages = GetSupportedLanguages (HiiHandle);\r
-  if (Languages == NULL) {\r
-    return 0;\r
-  }\r
-\r
-  LangNumber = 0;\r
-  LanguageString = Languages;\r
-  while (*LanguageString != 0) {\r
-    GetNextLanguage (&LanguageString, Lang);\r
-    LangNumber++;\r
-  }\r
-  gBS->FreePool (Languages);\r
-\r
-  return LangNumber;\r
-}\r
-\r
-EFI_STATUS\r
-GetStringFromHandle (\r
-  IN  EFI_HII_HANDLE                  HiiHandle,\r
-  IN  EFI_STRING_ID                   StringId,\r
-  OUT EFI_STRING                      *String\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-  Get string specified by StringId form the HiiHandle.\r
-\r
-Arguments:\r
-  HiiHandle     - The HII handle of package list.\r
-  StringId      - The String ID.\r
-  String        - The output string.\r
-\r
-Returns:\r
-  EFI_NOT_FOUND         - String is not found.\r
-  EFI_SUCCESS           - Operation is successful.\r
-  EFI_OUT_OF_RESOURCES  - There is not enought memory in the system.\r
-  EFI_INVALID_PARAMETER - The String is NULL.\r
-\r
---*/\r
-{\r
-  EFI_STATUS                          Status;\r
-  UINTN                               StringSize;\r
-\r
-  if (String == NULL) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  StringSize = IFR_LIB_DEFAULT_STRING_SIZE;\r
-  *String    = EfiLibAllocateZeroPool (StringSize);\r
-  if (*String == NULL) {\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-\r
-  Status = IfrLibGetString (HiiHandle, StringId, *String, &StringSize);\r
-  if (Status == EFI_BUFFER_TOO_SMALL) {\r
-    gBS->FreePool (*String);\r
-    *String = EfiLibAllocateZeroPool (StringSize);\r
-    if (*String == NULL) {\r
-      return EFI_OUT_OF_RESOURCES;\r
-    }\r
-    Status = IfrLibGetString (HiiHandle, StringId, *String, &StringSize);\r
-  }\r
-\r
-  return Status;\r
-}\r
-\r
-EFI_STATUS\r
-GetStringFromToken (\r
-  IN  EFI_GUID                        *ProducerGuid,\r
-  IN  EFI_STRING_ID                   StringId,\r
-  OUT EFI_STRING                      *String\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-  Get the string given the StringId and String package Producer's Guid.\r
-\r
-Arguments:\r
-  ProducerGuid  - The Guid of String package list.\r
-  StringId      - The String ID.\r
-  String        - The output string.\r
-\r
-Returns:\r
-  EFI_NOT_FOUND         - String is not found.\r
-  EFI_SUCCESS           - Operation is successful.\r
-  EFI_OUT_OF_RESOURCES  - There is not enought memory in the system.\r
-\r
---*/\r
-{\r
-  EFI_STATUS      Status;\r
-  UINTN           Index;\r
-  UINTN           HandleBufferLen;\r
-  EFI_HII_HANDLE  *HiiHandleBuffer;\r
-  EFI_GUID        Guid;\r
-\r
-  HiiHandleBuffer = NULL;\r
-  Status = GetHiiHandles (&HandleBufferLen, &HiiHandleBuffer);\r
-  if (EFI_ERROR(Status)) {\r
-    return Status;\r
-  }\r
-  for (Index = 0; Index < (HandleBufferLen / sizeof (EFI_HII_HANDLE)); Index++) {\r
-    Status = ExtractGuidFromHiiHandle (HiiHandleBuffer[Index], &Guid);\r
-    if (EFI_ERROR(Status)) {\r
-      return Status;\r
-    }\r
-    if (EfiCompareGuid (&Guid, ProducerGuid) == TRUE) {\r
-      break;\r
-    }\r
-  }\r
-\r
-  if (Index >= (HandleBufferLen / sizeof (EFI_HII_HANDLE))) {\r
-    Status = EFI_NOT_FOUND;\r
-    goto Out;\r
-  }\r
-\r
-  Status = GetStringFromHandle (HiiHandleBuffer[Index], StringId, String);\r
-\r
-Out:\r
-  if (HiiHandleBuffer != NULL) {\r
-    gBS->FreePool (HiiHandleBuffer);\r
-  }\r
-  return Status;\r
-}\r
-\r
-EFI_STATUS\r
-IfrLibNewString (\r
-  IN  EFI_HII_HANDLE                  PackageList,\r
-  OUT EFI_STRING_ID                   *StringId,\r
-  IN  CONST EFI_STRING                String\r
-  )\r
-/*++\r
-\r
-  Routine Description:\r
-    This function adds the string into String Package of each language.\r
-\r
-  Arguments:\r
-    PackageList       - Handle of the package list where this string will be added.\r
-    StringId          - On return, contains the new strings id, which is unique within PackageList.\r
-    String            - Points to the new null-terminated string.\r
-\r
-  Returns:\r
-    EFI_SUCCESS            - The new string was added successfully.\r
-    EFI_NOT_FOUND          - The specified PackageList could not be found in database.\r
-    EFI_OUT_OF_RESOURCES   - Could not add the string due to lack of resources.\r
-    EFI_INVALID_PARAMETER  - String is NULL or StringId is NULL is NULL.\r
-\r
---*/\r
-{\r
-  EFI_STATUS  Status;\r
-  CHAR8       *Languages;\r
-  CHAR8       *LangStrings;\r
-  CHAR8       Lang[RFC_3066_ENTRY_SIZE];\r
-\r
-  Status = EFI_SUCCESS;\r
-\r
-  LocateHiiProtocols ();\r
-\r
-  Languages = GetSupportedLanguages (PackageList);\r
-  if (Languages == NULL) {\r
-    return EFI_NOT_FOUND;\r
-  }\r
-  \r
-  if (StringId == NULL) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-  *StringId = 0;\r
-\r
-  LangStrings = Languages;\r
-  while (*LangStrings != 0) {\r
-    GetNextLanguage (&LangStrings, Lang);\r
-\r
-    if (*StringId == 0) {\r
-      Status = gIfrLibHiiString->NewString (\r
-                                   gIfrLibHiiString,\r
-                                   PackageList,\r
-                                   StringId,\r
-                                   Lang,\r
-                                   NULL,\r
-                                   String,\r
-                                   NULL\r
-                                   );\r
-    } else {\r
-      Status = gIfrLibHiiString->SetString (\r
-                                   gIfrLibHiiString,\r
-                                   PackageList,\r
-                                   *StringId,\r
-                                   Lang,\r
-                                   String,\r
-                                   NULL\r
-                                   );\r
-    }\r
-\r
-    if (EFI_ERROR (Status)) {\r
-      break;\r
-    }\r
-  }\r
-\r
-  gBS->FreePool (Languages);\r
-\r
-  return Status;\r
-}\r
-\r
-EFI_STATUS\r
-IfrLibGetString (\r
-  IN  EFI_HII_HANDLE                  PackageList,\r
-  IN  EFI_STRING_ID                   StringId,\r
-  OUT EFI_STRING                      String,\r
-  IN  OUT UINTN                       *StringSize\r
-  )\r
-/*++\r
-\r
-  Routine Description:\r
-    This function try to retrieve string from String package of current language.\r
-    If fail, it try to retrieve string from String package of first language it support.\r
-\r
-  Arguments:\r
-    PackageList       - The package list in the HII database to search for the specified string.\r
-    StringId          - The string's id, which is unique within PackageList.\r
-    String            - Points to the new null-terminated string.\r
-    StringSize        - On entry, points to the size of the buffer pointed to by String, in bytes. On return,\r
-                        points to the length of the string, in bytes.\r
-\r
-  Returns:\r
-    EFI_SUCCESS            - The string was returned successfully.\r
-    EFI_NOT_FOUND          - The string specified by StringId is not available.\r
-    EFI_BUFFER_TOO_SMALL   - The buffer specified by StringLength is too small to hold the string.\r
-    EFI_INVALID_PARAMETER  - The String or StringSize was NULL.\r
-\r
---*/\r
-{\r
-  EFI_STATUS  Status;\r
-  CHAR8       *Languages;\r
-  CHAR8       *LangStrings;\r
-  CHAR8       Lang[RFC_3066_ENTRY_SIZE];\r
-  CHAR8       CurrentLang[RFC_3066_ENTRY_SIZE];\r
-\r
-  LocateHiiProtocols ();\r
-\r
-  GetCurrentLanguage (CurrentLang);\r
-\r
-  Status = gIfrLibHiiString->GetString (\r
-                               gIfrLibHiiString,\r
-                               CurrentLang,\r
-                               PackageList,\r
-                               StringId,\r
-                               String,\r
-                               StringSize,\r
-                               NULL\r
-                               );\r
-\r
-  if (EFI_ERROR (Status) && (Status != EFI_BUFFER_TOO_SMALL)) {\r
-    Languages = GetSupportedLanguages (PackageList);\r
-    LangStrings = Languages;\r
-    GetNextLanguage (&LangStrings, Lang);\r
-    gBS->FreePool (Languages);\r
-\r
-    Status = gIfrLibHiiString->GetString (\r
-                                 gIfrLibHiiString,\r
-                                 Lang,\r
-                                 PackageList,\r
-                                 StringId,\r
-                                 String,\r
-                                 StringSize,\r
-                                 NULL\r
-                                 );\r
-  }\r
-\r
-  return Status;\r
-}\r
-\r
-EFI_STATUS\r
-IfrLibSetString (\r
-  IN EFI_HII_HANDLE                   PackageList,\r
-  IN EFI_STRING_ID                    StringId,\r
-  IN CONST EFI_STRING                 String\r
-  )\r
-/*++\r
-\r
-  Routine Description:\r
-    This function updates the string in String package of each language.\r
-\r
-  Arguments:\r
-    PackageList       - The package list containing the strings.\r
-    StringId          - The string's id, which is unique within PackageList.\r
-    String            - Points to the new null-terminated string.\r
-\r
-  Returns:\r
-    EFI_SUCCESS            - The string was updated successfully.\r
-    EFI_NOT_FOUND          - The string specified by StringId is not in the database.\r
-    EFI_INVALID_PARAMETER  - The String was NULL.\r
-    EFI_OUT_OF_RESOURCES   - The system is out of resources to accomplish the task.\r
-\r
---*/\r
-{\r
-  EFI_STATUS  Status;\r
-  CHAR8       *Languages;\r
-  CHAR8       *LangStrings;\r
-  CHAR8       Lang[RFC_3066_ENTRY_SIZE];\r
-\r
-  Status = EFI_SUCCESS;\r
-\r
-  LocateHiiProtocols ();\r
-\r
-  Languages = GetSupportedLanguages (PackageList);\r
-  if (Languages == NULL) {\r
-    return EFI_NOT_FOUND;\r
-  }\r
-\r
-  LangStrings = Languages;\r
-  while (*LangStrings != 0) {\r
-    GetNextLanguage (&LangStrings, Lang);\r
-\r
-    Status = gIfrLibHiiString->SetString (\r
-                                 gIfrLibHiiString,\r
-                                 PackageList,\r
-                                 StringId,\r
-                                 Lang,\r
-                                 String,\r
-                                 NULL\r
-                                 );\r
-    if (EFI_ERROR (Status)) {\r
-      break;\r
-    }\r
-  }\r
-\r
-  gBS->FreePool (Languages);\r
-\r
-  return Status;\r
-}\r
-\r