diff --git a/SignedCapsulePkg/Include/Library/IniParsingLib.h b/SignedCapsulePkg/Include/Library/IniParsingLib.h new file mode 100644 index 0000000000..e964dd28b6 --- /dev/null +++ b/SignedCapsulePkg/Include/Library/IniParsingLib.h @@ -0,0 +1,166 @@ +/** @file + INI configuration parsing library. + + The INI file format is: + ================ + [SectionName] + EntryName=EntryValue + ================ + + Where: + 1) SectionName is an ASCII string. The valid format is [A-Za-z0-9_]+ + 2) EntryName is an ASCII string. The valid format is [A-Za-z0-9_]+ + 3) EntryValue can be: + 3.1) an ASCII String. The valid format is [A-Za-z0-9_]+ + 3.2) a GUID. The valid format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, where x is [A-Fa-f0-9] + 3.3) a decimal value. The valid format is [0-9]+ + 3.4) a heximal value. The valid format is 0x[A-Fa-f0-9]+ + 4) '#' or ';' can be used as comment at anywhere. + 5) TAB(0x20) or SPACE(0x9) can be used as separator. + 6) LF(\n, 0xA) or CR(\r, 0xD) can be used as line break. + +Copyright (c) 2016, 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. + +**/ + + +#ifndef __INI_PARSING_LIB_H__ +#define __INI_PARSING_LIB_H__ + +/** + Open an INI config file and return a context. + + @param[in] DataBuffer Config raw file buffer. + @param[in] BufferSize Size of raw buffer. + + @return Config data buffer is opened and context is returned. + @retval NULL No enough memory is allocated. + @retval NULL Config data buffer is invalid. +**/ +VOID * +EFIAPI +OpenIniFile ( + IN UINT8 *DataBuffer, + IN UINTN BufferSize + ); + +/** + Get section entry string value. + + @param[in] Context INI Config file context. + @param[in] SectionName Section name. + @param[in] EntryName Section entry name. + @param[out] EntryValue Point to the got entry string value. + + @retval EFI_SUCCESS Section entry string value is got. + @retval EFI_NOT_FOUND Section is not found. +**/ +EFI_STATUS +EFIAPI +GetStringFromDataFile ( + IN VOID *Context, + IN CHAR8 *SectionName, + IN CHAR8 *EntryName, + OUT CHAR8 **EntryValue + ); + +/** + Get section entry GUID value. + + @param[in] Context INI Config file context. + @param[in] SectionName Section name. + @param[in] EntryName Section entry name. + @param[out] Guid Point to the got GUID value. + + @retval EFI_SUCCESS Section entry GUID value is got. + @retval EFI_NOT_FOUND Section is not found. +**/ +EFI_STATUS +EFIAPI +GetGuidFromDataFile ( + IN VOID *Context, + IN CHAR8 *SectionName, + IN CHAR8 *EntryName, + OUT EFI_GUID *Guid + ); + +/** + Get section entry decimal UINTN value. + + @param[in] Context INI Config file context. + @param[in] SectionName Section name. + @param[in] EntryName Section entry name. + @param[out] Data Point to the got decimal UINTN value. + + @retval EFI_SUCCESS Section entry decimal UINTN value is got. + @retval EFI_NOT_FOUND Section is not found. +**/ +EFI_STATUS +EFIAPI +GetDecimalUintnFromDataFile ( + IN VOID *Context, + IN CHAR8 *SectionName, + IN CHAR8 *EntryName, + OUT UINTN *Data + ); + +/** + Get section entry heximal UINTN value. + + @param[in] Context INI Config file context. + @param[in] SectionName Section name. + @param[in] EntryName Section entry name. + @param[out] Data Point to the got heximal UINTN value. + + @retval EFI_SUCCESS Section entry heximal UINTN value is got. + @retval EFI_NOT_FOUND Section is not found. +**/ +EFI_STATUS +EFIAPI +GetHexUintnFromDataFile ( + IN VOID *Context, + IN CHAR8 *SectionName, + IN CHAR8 *EntryName, + OUT UINTN *Data + ); + +/** + Get section entry heximal UINT64 value. + + @param[in] Context INI Config file context. + @param[in] SectionName Section name. + @param[in] EntryName Section entry name. + @param[out] Data Point to the got heximal UINT64 value. + + @retval EFI_SUCCESS Section entry heximal UINT64 value is got. + @retval EFI_NOT_FOUND Section is not found. +**/ +EFI_STATUS +EFIAPI +GetHexUint64FromDataFile ( + IN VOID *Context, + IN CHAR8 *SectionName, + IN CHAR8 *EntryName, + OUT UINT64 *Data + ); + +/** + Close an INI config file and free the context. + + @param[in] Context INI Config file context. +**/ +VOID +EFIAPI +CloseIniFile ( + IN VOID *Context + ); + +#endif +