diff options
| author | kx <kx@radix.pro> | 2024-06-04 06:43:08 +0300 |
|---|---|---|
| committer | kx <kx@radix.pro> | 2024-06-04 06:43:08 +0300 |
| commit | 7e2ccccace24636f29ddc210b94606abd4c7e42b (patch) | |
| tree | 545d43ea12671048956cafeb12303e84d601e571 /ShellPkg/Application/Shell/Shell.h | |
| parent | 27b044605cd5f6b33a3d231576003850b3fe305b (diff) | |
| download | edk2-trunk.tar.xz | |
Renormalized end-of-lines from master@27b044605cd5f6b33a3d231576003850b3fe305btrunk
Diffstat (limited to 'ShellPkg/Application/Shell/Shell.h')
| -rw-r--r-- | ShellPkg/Application/Shell/Shell.h | 772 |
1 files changed, 386 insertions, 386 deletions
diff --git a/ShellPkg/Application/Shell/Shell.h b/ShellPkg/Application/Shell/Shell.h index 89b4ac6b02..e3a4b8f4a3 100644 --- a/ShellPkg/Application/Shell/Shell.h +++ b/ShellPkg/Application/Shell/Shell.h @@ -1,386 +1,386 @@ -/** @file
- function definitions for internal to shell functions.
-
- (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>
- Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef _SHELL_INTERNAL_HEADER_
-#define _SHELL_INTERNAL_HEADER_
-
-#include <Uefi.h>
-
-#include <Guid/ShellVariableGuid.h>
-#include <Guid/ShellAliasGuid.h>
-
-#include <Protocol/LoadedImage.h>
-#include <Protocol/SimpleTextOut.h>
-#include <Protocol/Shell.h>
-#include <Protocol/EfiShellInterface.h>
-#include <Protocol/EfiShellEnvironment2.h>
-#include <Protocol/ShellParameters.h>
-#include <Protocol/BlockIo.h>
-#include <Protocol/HiiPackageList.h>
-
-#include <Library/BaseLib.h>
-#include <Library/UefiApplicationEntryPoint.h>
-#include <Library/UefiLib.h>
-#include <Library/DebugLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Library/ShellCommandLib.h>
-#include <Library/UefiRuntimeServicesTableLib.h>
-#include <Library/UefiBootServicesTableLib.h>
-#include <Library/DevicePathLib.h>
-#include <Library/BaseMemoryLib.h>
-#include <Library/PcdLib.h>
-#include <Library/ShellLib.h>
-#include <Library/SortLib.h>
-#include <Library/HiiLib.h>
-#include <Library/PrintLib.h>
-#include <Library/HandleParsingLib.h>
-#include <Library/FileHandleLib.h>
-#include <Library/UefiHiiServicesLib.h>
-
-#include "ShellParametersProtocol.h"
-#include "ShellProtocol.h"
-#include "ShellEnvVar.h"
-#include "ConsoleLogger.h"
-#include "ShellManParser.h"
-#include "ConsoleWrappers.h"
-#include "FileHandleWrappers.h"
-
-extern CONST CHAR16 mNoNestingEnvVarName[];
-extern CONST CHAR16 mNoNestingTrue[];
-extern CONST CHAR16 mNoNestingFalse[];
-
-typedef struct {
- LIST_ENTRY Link; ///< Standard linked list handler.
- SHELL_FILE_HANDLE SplitStdOut; ///< ConsoleOut for use in the split.
- SHELL_FILE_HANDLE SplitStdIn; ///< ConsoleIn for use in the split.
-} SPLIT_LIST;
-
-typedef struct {
- UINT32 Startup : 1; ///< Was "-startup" found on command line.
- UINT32 NoStartup : 1; ///< Was "-nostartup" found on command line.
- UINT32 NoConsoleOut : 1; ///< Was "-noconsoleout" found on command line.
- UINT32 NoConsoleIn : 1; ///< Was "-noconsolein" found on command line.
- UINT32 NoInterrupt : 1; ///< Was "-nointerrupt" found on command line.
- UINT32 NoMap : 1; ///< Was "-nomap" found on command line.
- UINT32 NoVersion : 1; ///< Was "-noversion" found on command line.
- UINT32 Delay : 1; ///< Was "-delay[:n] found on command line
- UINT32 Exit : 1; ///< Was "-_exit" found on command line
- UINT32 NoNest : 1; ///< Was "-nonest" found on command line
- UINT32 Reserved : 7; ///< Extra bits
-} SHELL_BITS;
-
-typedef union {
- SHELL_BITS Bits;
- UINT16 AllBits;
-} SHELL_BIT_UNION;
-
-typedef struct {
- SHELL_BIT_UNION BitUnion;
- UINTN Delay; ///< Seconds of delay default:5.
- CHAR16 *FileName; ///< Filename to run upon successful initialization.
- CHAR16 *FileOptions; ///< Options to pass to FileName.
-} SHELL_INIT_SETTINGS;
-
-typedef struct {
- BUFFER_LIST CommandHistory;
- UINTN VisibleRowNumber;
- UINTN OriginalVisibleRowNumber;
- BOOLEAN InsertMode; ///< Is the current typing mode insert (FALSE = overwrite).
-} SHELL_VIEWING_SETTINGS;
-
-typedef struct {
- EFI_SHELL_PARAMETERS_PROTOCOL *NewShellParametersProtocol;
- EFI_SHELL_PROTOCOL *NewEfiShellProtocol;
- BOOLEAN PageBreakEnabled;
- BOOLEAN RootShellInstance;
- SHELL_INIT_SETTINGS ShellInitSettings;
- BUFFER_LIST BufferToFreeList; ///< List of buffers that were returned to the user to free.
- SHELL_VIEWING_SETTINGS ViewingSettings;
- EFI_HII_HANDLE HiiHandle; ///< Handle from HiiLib.
- UINTN LogScreenCount; ///< How many screens of log information to save.
- EFI_EVENT UserBreakTimer; ///< Timer event for polling for CTRL-C.
- EFI_DEVICE_PATH_PROTOCOL *ImageDevPath; ///< DevicePath for ourselves.
- EFI_DEVICE_PATH_PROTOCOL *FileDevPath; ///< DevicePath for ourselves.
- CONSOLE_LOGGER_PRIVATE_DATA *ConsoleInfo; ///< Pointer for ConsoleInformation.
- EFI_SHELL_PARAMETERS_PROTOCOL *OldShellParameters; ///< old shell parameters to reinstall upon exiting.
- SHELL_PROTOCOL_HANDLE_LIST OldShellList; ///< List of other instances to reinstall when closing.
- SPLIT_LIST SplitList; ///< List of Splits in FILO stack.
- VOID *CtrlCNotifyHandle1; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
- VOID *CtrlCNotifyHandle2; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
- VOID *CtrlCNotifyHandle3; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
- VOID *CtrlCNotifyHandle4; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
- VOID *CtrlSNotifyHandle1; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
- VOID *CtrlSNotifyHandle2; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
- VOID *CtrlSNotifyHandle3; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
- VOID *CtrlSNotifyHandle4; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify.
- BOOLEAN HaltOutput; ///< TRUE to start a CTRL-S halt.
-} SHELL_INFO;
-
-#pragma pack(1)
-///
-/// HII specific Vendor Device Path definition.
-///
-typedef struct {
- VENDOR_DEVICE_PATH VendorDevicePath;
- EFI_DEVICE_PATH_PROTOCOL End;
-} SHELL_MAN_HII_VENDOR_DEVICE_PATH;
-#pragma pack()
-
-extern SHELL_INFO ShellInfoObject;
-
-/**
- Converts the command line to its post-processed form. this replaces variables and alias' per UEFI Shell spec.
-
- @param[in,out] CmdLine pointer to the command line to update
-
- @retval EFI_SUCCESS The operation was successful
- @retval EFI_OUT_OF_RESOURCES A memory allocation failed.
- @return some other error occurred
-**/
-EFI_STATUS
-ProcessCommandLineToFinal (
- IN OUT CHAR16 **CmdLine
- );
-
-/**
- Function to update the shell variable "lasterror".
-
- @param[in] ErrorCode the error code to put into lasterror
-**/
-EFI_STATUS
-SetLastError (
- IN CONST SHELL_STATUS ErrorCode
- );
-
-/**
- Sets all the alias' that were registered with the ShellCommandLib library.
-
- @retval EFI_SUCCESS all init commands were run successfully.
-**/
-EFI_STATUS
-SetBuiltInAlias (
- VOID
- );
-
-/**
- This function will populate the 2 device path protocol parameters based on the
- global gImageHandle. the DevPath will point to the device path for the handle that has
- loaded image protocol installed on it. the FilePath will point to the device path
- for the file that was loaded.
-
- @param[in, out] DevPath on a successful return the device path to the loaded image
- @param[in, out] FilePath on a successful return the device path to the file
-
- @retval EFI_SUCCESS the 2 device paths were successfully returned.
- @return other a error from gBS->HandleProtocol
-
- @sa HandleProtocol
-**/
-EFI_STATUS
-GetDevicePathsForImageAndFile (
- IN OUT EFI_DEVICE_PATH_PROTOCOL **DevPath,
- IN OUT EFI_DEVICE_PATH_PROTOCOL **FilePath
- );
-
-/**
- Process all Uefi Shell 2.0 command line options.
-
- see Uefi Shell 2.0 section 3.2 for full details.
-
- the command line should resemble the following:
-
- shell.efi [ShellOpt-options] [options] [file-name [file-name-options]]
-
- ShellOpt options Options which control the initialization behavior of the shell.
- These options are read from the EFI global variable "ShellOpt"
- and are processed before options or file-name.
-
- options Options which control the initialization behavior of the shell.
-
- file-name The name of a UEFI shell application or script to be executed
- after initialization is complete. By default, if file-name is
- specified, then -nostartup is implied. Scripts are not supported
- by level 0.
-
- file-nameoptions The command-line options that are passed to file-name when it
- is invoked.
-
- This will initialize the ShellInitSettings global variable.
-
- @retval EFI_SUCCESS the variable is initialized.
-**/
-EFI_STATUS
-ProcessCommandLine (
- VOID
- );
-
-/**
- Handles all interaction with the default startup script.
-
- this will check that the correct command line parameters were passed, handle the delay, and then start running the script.
-
- @param[in] ImagePath The path to the image for shell. The first place to look for the startup script.
- @param[in] FilePath The path to the file for shell. The second place to look for the startup script.
-
- @retval EFI_SUCCESS The variable is initialized.
-**/
-EFI_STATUS
-DoStartupScript (
- IN EFI_DEVICE_PATH_PROTOCOL *ImagePath,
- IN EFI_DEVICE_PATH_PROTOCOL *FilePath
- );
-
-/**
- Function to perform the shell prompt looping. It will do a single prompt,
- dispatch the result, and then return. It is expected that the caller will
- call this function in a loop many times.
-
- @retval EFI_SUCCESS
- @retval RETURN_ABORTED
-**/
-EFI_STATUS
-DoShellPrompt (
- VOID
- );
-
-/**
- Add a buffer to the Buffer To Free List for safely returning buffers to other
- places without risking letting them modify internal shell information.
-
- @param Buffer Something to pass to FreePool when the shell is exiting.
-**/
-VOID *
-AddBufferToFreeList (
- VOID *Buffer
- );
-
-/**
- Add a buffer to the Command History List.
-
- @param Buffer[in] The line buffer to add.
-**/
-VOID
-AddLineToCommandHistory (
- IN CONST CHAR16 *Buffer
- );
-
-/**
- Function will process and run a command line.
-
- This will determine if the command line represents an internal shell command or dispatch an external application.
-
- @param[in] CmdLine the command line to parse
-
- @retval EFI_SUCCESS the command was completed
- @retval EFI_ABORTED the command's operation was aborted
-**/
-EFI_STATUS
-RunCommand (
- IN CONST CHAR16 *CmdLine
- );
-
-/**
- Function will process and run a command line.
-
- This will determine if the command line represents an internal shell
- command or dispatch an external application.
-
- @param[in] CmdLine The command line to parse.
- @param[out] CommandStatus The status from the command line.
-
- @retval EFI_SUCCESS The command was completed.
- @retval EFI_ABORTED The command's operation was aborted.
-**/
-EFI_STATUS
-RunShellCommand (
- IN CONST CHAR16 *CmdLine,
- OUT EFI_STATUS *CommandStatus
- );
-
-/**
- Function to process a NSH script file via SHELL_FILE_HANDLE.
-
- @param[in] Handle The handle to the already opened file.
- @param[in] Name The name of the script file.
-
- @retval EFI_SUCCESS the script completed successfully
-**/
-EFI_STATUS
-RunScriptFileHandle (
- IN SHELL_FILE_HANDLE Handle,
- IN CONST CHAR16 *Name
- );
-
-/**
- Function to process a NSH script file.
-
- @param[in] ScriptPath Pointer to the script file name (including file system path).
- @param[in] Handle the handle of the script file already opened.
- @param[in] CmdLine the command line to run.
- @param[in] ParamProtocol the shell parameters protocol pointer
-
- @retval EFI_SUCCESS the script completed successfully
-**/
-EFI_STATUS
-RunScriptFile (
- IN CONST CHAR16 *ScriptPath,
- IN SHELL_FILE_HANDLE Handle OPTIONAL,
- IN CONST CHAR16 *CmdLine,
- IN EFI_SHELL_PARAMETERS_PROTOCOL *ParamProtocol
- );
-
-/**
- Return the pointer to the first occurrence of any character from a list of characters.
-
- @param[in] String the string to parse
- @param[in] CharacterList the list of character to look for
- @param[in] EscapeCharacter An escape character to skip
-
- @return the location of the first character in the string
- @retval CHAR_NULL no instance of any character in CharacterList was found in String
-**/
-CONST CHAR16 *
-FindFirstCharacter (
- IN CONST CHAR16 *String,
- IN CONST CHAR16 *CharacterList,
- IN CONST CHAR16 EscapeCharacter
- );
-
-/**
- Cleans off leading and trailing spaces and tabs.
-
- @param[in] String pointer to the string to trim them off.
-**/
-EFI_STATUS
-TrimSpaces (
- IN CHAR16 **String
- );
-
-/**
-
- Create a new buffer list and stores the old one to OldBufferList
-
- @param OldBufferList The temporary list head used to store the nodes in BufferToFreeList.
-**/
-VOID
-SaveBufferList (
- OUT LIST_ENTRY *OldBufferList
- );
-
-/**
- Restore previous nodes into BufferToFreeList .
-
- @param OldBufferList The temporary list head used to store the nodes in BufferToFreeList.
-**/
-VOID
-RestoreBufferList (
- IN OUT LIST_ENTRY *OldBufferList
- );
-
-#endif //_SHELL_INTERNAL_HEADER_
+/** @file + function definitions for internal to shell functions. + + (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR> + Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR> + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _SHELL_INTERNAL_HEADER_ +#define _SHELL_INTERNAL_HEADER_ + +#include <Uefi.h> + +#include <Guid/ShellVariableGuid.h> +#include <Guid/ShellAliasGuid.h> + +#include <Protocol/LoadedImage.h> +#include <Protocol/SimpleTextOut.h> +#include <Protocol/Shell.h> +#include <Protocol/EfiShellInterface.h> +#include <Protocol/EfiShellEnvironment2.h> +#include <Protocol/ShellParameters.h> +#include <Protocol/BlockIo.h> +#include <Protocol/HiiPackageList.h> + +#include <Library/BaseLib.h> +#include <Library/UefiApplicationEntryPoint.h> +#include <Library/UefiLib.h> +#include <Library/DebugLib.h> +#include <Library/MemoryAllocationLib.h> +#include <Library/ShellCommandLib.h> +#include <Library/UefiRuntimeServicesTableLib.h> +#include <Library/UefiBootServicesTableLib.h> +#include <Library/DevicePathLib.h> +#include <Library/BaseMemoryLib.h> +#include <Library/PcdLib.h> +#include <Library/ShellLib.h> +#include <Library/SortLib.h> +#include <Library/HiiLib.h> +#include <Library/PrintLib.h> +#include <Library/HandleParsingLib.h> +#include <Library/FileHandleLib.h> +#include <Library/UefiHiiServicesLib.h> + +#include "ShellParametersProtocol.h" +#include "ShellProtocol.h" +#include "ShellEnvVar.h" +#include "ConsoleLogger.h" +#include "ShellManParser.h" +#include "ConsoleWrappers.h" +#include "FileHandleWrappers.h" + +extern CONST CHAR16 mNoNestingEnvVarName[]; +extern CONST CHAR16 mNoNestingTrue[]; +extern CONST CHAR16 mNoNestingFalse[]; + +typedef struct { + LIST_ENTRY Link; ///< Standard linked list handler. + SHELL_FILE_HANDLE SplitStdOut; ///< ConsoleOut for use in the split. + SHELL_FILE_HANDLE SplitStdIn; ///< ConsoleIn for use in the split. +} SPLIT_LIST; + +typedef struct { + UINT32 Startup : 1; ///< Was "-startup" found on command line. + UINT32 NoStartup : 1; ///< Was "-nostartup" found on command line. + UINT32 NoConsoleOut : 1; ///< Was "-noconsoleout" found on command line. + UINT32 NoConsoleIn : 1; ///< Was "-noconsolein" found on command line. + UINT32 NoInterrupt : 1; ///< Was "-nointerrupt" found on command line. + UINT32 NoMap : 1; ///< Was "-nomap" found on command line. + UINT32 NoVersion : 1; ///< Was "-noversion" found on command line. + UINT32 Delay : 1; ///< Was "-delay[:n] found on command line + UINT32 Exit : 1; ///< Was "-_exit" found on command line + UINT32 NoNest : 1; ///< Was "-nonest" found on command line + UINT32 Reserved : 7; ///< Extra bits +} SHELL_BITS; + +typedef union { + SHELL_BITS Bits; + UINT16 AllBits; +} SHELL_BIT_UNION; + +typedef struct { + SHELL_BIT_UNION BitUnion; + UINTN Delay; ///< Seconds of delay default:5. + CHAR16 *FileName; ///< Filename to run upon successful initialization. + CHAR16 *FileOptions; ///< Options to pass to FileName. +} SHELL_INIT_SETTINGS; + +typedef struct { + BUFFER_LIST CommandHistory; + UINTN VisibleRowNumber; + UINTN OriginalVisibleRowNumber; + BOOLEAN InsertMode; ///< Is the current typing mode insert (FALSE = overwrite). +} SHELL_VIEWING_SETTINGS; + +typedef struct { + EFI_SHELL_PARAMETERS_PROTOCOL *NewShellParametersProtocol; + EFI_SHELL_PROTOCOL *NewEfiShellProtocol; + BOOLEAN PageBreakEnabled; + BOOLEAN RootShellInstance; + SHELL_INIT_SETTINGS ShellInitSettings; + BUFFER_LIST BufferToFreeList; ///< List of buffers that were returned to the user to free. + SHELL_VIEWING_SETTINGS ViewingSettings; + EFI_HII_HANDLE HiiHandle; ///< Handle from HiiLib. + UINTN LogScreenCount; ///< How many screens of log information to save. + EFI_EVENT UserBreakTimer; ///< Timer event for polling for CTRL-C. + EFI_DEVICE_PATH_PROTOCOL *ImageDevPath; ///< DevicePath for ourselves. + EFI_DEVICE_PATH_PROTOCOL *FileDevPath; ///< DevicePath for ourselves. + CONSOLE_LOGGER_PRIVATE_DATA *ConsoleInfo; ///< Pointer for ConsoleInformation. + EFI_SHELL_PARAMETERS_PROTOCOL *OldShellParameters; ///< old shell parameters to reinstall upon exiting. + SHELL_PROTOCOL_HANDLE_LIST OldShellList; ///< List of other instances to reinstall when closing. + SPLIT_LIST SplitList; ///< List of Splits in FILO stack. + VOID *CtrlCNotifyHandle1; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify. + VOID *CtrlCNotifyHandle2; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify. + VOID *CtrlCNotifyHandle3; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify. + VOID *CtrlCNotifyHandle4; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify. + VOID *CtrlSNotifyHandle1; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify. + VOID *CtrlSNotifyHandle2; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify. + VOID *CtrlSNotifyHandle3; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify. + VOID *CtrlSNotifyHandle4; ///< The NotifyHandle returned from SimpleTextInputEx.RegisterKeyNotify. + BOOLEAN HaltOutput; ///< TRUE to start a CTRL-S halt. +} SHELL_INFO; + +#pragma pack(1) +/// +/// HII specific Vendor Device Path definition. +/// +typedef struct { + VENDOR_DEVICE_PATH VendorDevicePath; + EFI_DEVICE_PATH_PROTOCOL End; +} SHELL_MAN_HII_VENDOR_DEVICE_PATH; +#pragma pack() + +extern SHELL_INFO ShellInfoObject; + +/** + Converts the command line to its post-processed form. this replaces variables and alias' per UEFI Shell spec. + + @param[in,out] CmdLine pointer to the command line to update + + @retval EFI_SUCCESS The operation was successful + @retval EFI_OUT_OF_RESOURCES A memory allocation failed. + @return some other error occurred +**/ +EFI_STATUS +ProcessCommandLineToFinal ( + IN OUT CHAR16 **CmdLine + ); + +/** + Function to update the shell variable "lasterror". + + @param[in] ErrorCode the error code to put into lasterror +**/ +EFI_STATUS +SetLastError ( + IN CONST SHELL_STATUS ErrorCode + ); + +/** + Sets all the alias' that were registered with the ShellCommandLib library. + + @retval EFI_SUCCESS all init commands were run successfully. +**/ +EFI_STATUS +SetBuiltInAlias ( + VOID + ); + +/** + This function will populate the 2 device path protocol parameters based on the + global gImageHandle. the DevPath will point to the device path for the handle that has + loaded image protocol installed on it. the FilePath will point to the device path + for the file that was loaded. + + @param[in, out] DevPath on a successful return the device path to the loaded image + @param[in, out] FilePath on a successful return the device path to the file + + @retval EFI_SUCCESS the 2 device paths were successfully returned. + @return other a error from gBS->HandleProtocol + + @sa HandleProtocol +**/ +EFI_STATUS +GetDevicePathsForImageAndFile ( + IN OUT EFI_DEVICE_PATH_PROTOCOL **DevPath, + IN OUT EFI_DEVICE_PATH_PROTOCOL **FilePath + ); + +/** + Process all Uefi Shell 2.0 command line options. + + see Uefi Shell 2.0 section 3.2 for full details. + + the command line should resemble the following: + + shell.efi [ShellOpt-options] [options] [file-name [file-name-options]] + + ShellOpt options Options which control the initialization behavior of the shell. + These options are read from the EFI global variable "ShellOpt" + and are processed before options or file-name. + + options Options which control the initialization behavior of the shell. + + file-name The name of a UEFI shell application or script to be executed + after initialization is complete. By default, if file-name is + specified, then -nostartup is implied. Scripts are not supported + by level 0. + + file-nameoptions The command-line options that are passed to file-name when it + is invoked. + + This will initialize the ShellInitSettings global variable. + + @retval EFI_SUCCESS the variable is initialized. +**/ +EFI_STATUS +ProcessCommandLine ( + VOID + ); + +/** + Handles all interaction with the default startup script. + + this will check that the correct command line parameters were passed, handle the delay, and then start running the script. + + @param[in] ImagePath The path to the image for shell. The first place to look for the startup script. + @param[in] FilePath The path to the file for shell. The second place to look for the startup script. + + @retval EFI_SUCCESS The variable is initialized. +**/ +EFI_STATUS +DoStartupScript ( + IN EFI_DEVICE_PATH_PROTOCOL *ImagePath, + IN EFI_DEVICE_PATH_PROTOCOL *FilePath + ); + +/** + Function to perform the shell prompt looping. It will do a single prompt, + dispatch the result, and then return. It is expected that the caller will + call this function in a loop many times. + + @retval EFI_SUCCESS + @retval RETURN_ABORTED +**/ +EFI_STATUS +DoShellPrompt ( + VOID + ); + +/** + Add a buffer to the Buffer To Free List for safely returning buffers to other + places without risking letting them modify internal shell information. + + @param Buffer Something to pass to FreePool when the shell is exiting. +**/ +VOID * +AddBufferToFreeList ( + VOID *Buffer + ); + +/** + Add a buffer to the Command History List. + + @param Buffer[in] The line buffer to add. +**/ +VOID +AddLineToCommandHistory ( + IN CONST CHAR16 *Buffer + ); + +/** + Function will process and run a command line. + + This will determine if the command line represents an internal shell command or dispatch an external application. + + @param[in] CmdLine the command line to parse + + @retval EFI_SUCCESS the command was completed + @retval EFI_ABORTED the command's operation was aborted +**/ +EFI_STATUS +RunCommand ( + IN CONST CHAR16 *CmdLine + ); + +/** + Function will process and run a command line. + + This will determine if the command line represents an internal shell + command or dispatch an external application. + + @param[in] CmdLine The command line to parse. + @param[out] CommandStatus The status from the command line. + + @retval EFI_SUCCESS The command was completed. + @retval EFI_ABORTED The command's operation was aborted. +**/ +EFI_STATUS +RunShellCommand ( + IN CONST CHAR16 *CmdLine, + OUT EFI_STATUS *CommandStatus + ); + +/** + Function to process a NSH script file via SHELL_FILE_HANDLE. + + @param[in] Handle The handle to the already opened file. + @param[in] Name The name of the script file. + + @retval EFI_SUCCESS the script completed successfully +**/ +EFI_STATUS +RunScriptFileHandle ( + IN SHELL_FILE_HANDLE Handle, + IN CONST CHAR16 *Name + ); + +/** + Function to process a NSH script file. + + @param[in] ScriptPath Pointer to the script file name (including file system path). + @param[in] Handle the handle of the script file already opened. + @param[in] CmdLine the command line to run. + @param[in] ParamProtocol the shell parameters protocol pointer + + @retval EFI_SUCCESS the script completed successfully +**/ +EFI_STATUS +RunScriptFile ( + IN CONST CHAR16 *ScriptPath, + IN SHELL_FILE_HANDLE Handle OPTIONAL, + IN CONST CHAR16 *CmdLine, + IN EFI_SHELL_PARAMETERS_PROTOCOL *ParamProtocol + ); + +/** + Return the pointer to the first occurrence of any character from a list of characters. + + @param[in] String the string to parse + @param[in] CharacterList the list of character to look for + @param[in] EscapeCharacter An escape character to skip + + @return the location of the first character in the string + @retval CHAR_NULL no instance of any character in CharacterList was found in String +**/ +CONST CHAR16 * +FindFirstCharacter ( + IN CONST CHAR16 *String, + IN CONST CHAR16 *CharacterList, + IN CONST CHAR16 EscapeCharacter + ); + +/** + Cleans off leading and trailing spaces and tabs. + + @param[in] String pointer to the string to trim them off. +**/ +EFI_STATUS +TrimSpaces ( + IN CHAR16 **String + ); + +/** + + Create a new buffer list and stores the old one to OldBufferList + + @param OldBufferList The temporary list head used to store the nodes in BufferToFreeList. +**/ +VOID +SaveBufferList ( + OUT LIST_ENTRY *OldBufferList + ); + +/** + Restore previous nodes into BufferToFreeList . + + @param OldBufferList The temporary list head used to store the nodes in BufferToFreeList. +**/ +VOID +RestoreBufferList ( + IN OUT LIST_ENTRY *OldBufferList + ); + +#endif //_SHELL_INTERNAL_HEADER_ |
