4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Provides interface to shell MAN file parser.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync http://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef _SHELL_MAN_FILE_PARSER_HEADER_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define _SHELL_MAN_FILE_PARSER_HEADER_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function returns the help information for the specified command. The help text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync will be parsed from a UEFI Shell manual page. (see UEFI Shell 2.0 Appendix B)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync If Sections is specified, then each section name listed will be compared in a casesensitive
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync manner, to the section names described in Appendix B. If the section exists,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync it will be appended to the returned help text. If the section does not exist, no
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync information will be returned. If Sections is NULL, then all help text information
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync available will be returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if BriefDesc is NULL, then the breif description will not be savedd seperatly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync but placed first in the main HelpText.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] ManFileName Points to the NULL-terminated UEFI Shell MAN file name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Command Points to the NULL-terminated UEFI Shell command name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Sections Points to the NULL-terminated comma-delimited
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync section names to return. If NULL, then all
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sections will be returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] BriefDesc On return, points to a callee-allocated buffer
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync containing brief description text.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] HelpText On return, points to a callee-allocated buffer
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync containing all specified help text.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The help text was returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES The necessary buffer could not be allocated to hold the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync returned help text.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER HelpText is NULL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND There is no help text available for Command.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncProcessManFile(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST CHAR16 *ManFileName,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST CHAR16 *Command,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST CHAR16 *Sections OPTIONAL,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT CHAR16 **BriefDesc,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT CHAR16 **HelpText
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync parses through the MAN file specified by SHELL_FILE_HANDLE and returns the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync detailed help for any sub section specified in the comma seperated list of
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sections provided. If the end of the file or a .TH section is found then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Upon a sucessful return the caller is responsible to free the memory in *HelpText
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Handle FileHandle to read from
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Sections name of command's sub sections to find
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] HelpText pointer to pointer to string where text goes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] HelpSize pointer to size of allocated HelpText (may be updated)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Ascii TRUE if the file is ASCII, FALSE otherwise.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES a memory allocation failed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS the section was found and its description sotred in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync an alloceted buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncManFileFindSections(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN SHELL_FILE_HANDLE Handle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST CHAR16 *Sections,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT CHAR16 **HelpText,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT UINTN *HelpSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN Ascii
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif //_SHELL_MAN_FILE_PARSER_HEADER_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync