/** @file
  LZMA Decompress GUIDed Section Extraction Library.
  It wraps Lzma decompress interfaces to GUIDed Section Extraction interfaces
  and registers them into GUIDed handler table.

  Copyright (c) 2009, Intel Corporation. All rights reserved.<BR>
  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 <PiDxe.h>
#include <Library/HobLib.h>
#include <Library/ExtractGuidedSectionLib.h>

#include <Guid/ExtractSection.h>
#include <Guid/LzmaDecompress.h>


/**
  Register LzmaDecompress and LzmaDecompressGetInfo handlers with LzmaCustomerDecompressGuid.

  @retval  RETURN_SUCCESS            Register successfully.
  @retval  RETURN_OUT_OF_RESOURCES   No enough memory to store this handler.
**/
EFI_STATUS
EFIAPI
LzmaDecompressLibConstructor (
  )
{
  EXTRACT_SECTION_HOB   *Hob;

  Hob = GetFirstGuidHob (&gLzmaCustomDecompressGuid);
  if (Hob == NULL) {
    return EFI_NOT_FOUND;
  }

  // Locate Guided Hob

  return ExtractGuidedSectionRegisterHandlers (
          &gLzmaCustomDecompressGuid,
          Hob->Data.SectionGetInfo,
          Hob->Data.SectionExtraction
          );
}