MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / RunScriptFileHandle

Function RunScriptFileHandle

ShellPkg/Application/Shell/Shell.c:2842–3182  ·  view source on GitHub ↗

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 **/

Source from the content-addressed store, hash-verified

2840 @retval EFI_SUCCESS the script completed successfully
2841**/
2842EFI_STATUS
2843RunScriptFileHandle (
2844 IN SHELL_FILE_HANDLE Handle,
2845 IN CONST CHAR16 *Name
2846 )
2847{
2848 EFI_STATUS Status = EFI_SUCCESS;
2849 SCRIPT_FILE *NewScriptFile;
2850 UINTN LoopVar;
2851 UINTN PrintBuffSize;
2852 CHAR16 *CommandLine;
2853 CHAR16 *CommandLine2;
2854 CHAR16 *CommandLine3;
2855 SCRIPT_COMMAND_LIST *LastCommand;
2856 BOOLEAN Ascii;
2857 BOOLEAN PreScriptEchoState;
2858 BOOLEAN PreCommandEchoState;
2859 CONST CHAR16 *CurDir;
2860 UINTN LineCount;
2861 CHAR16 LeString[50];
2862 LIST_ENTRY OldBufferList;
2863
2864if (!ShellCommandGetScriptExit()) {
2865 return (EFI_OUT_OF_RESOURCES);
2866}
2867
2868 PreScriptEchoState = ShellCommandGetEchoState();
2869 PrintBuffSize = PcdGet16(PcdShellPrintBufferSize);
2870
2871 NewScriptFile = (SCRIPT_FILE*)AllocateZeroPool(sizeof(SCRIPT_FILE));
2872 if (NewScriptFile == NULL) {
2873 return (EFI_OUT_OF_RESOURCES);
2874 }
2875
2876 //
2877 // Set up the name
2878 //
2879// ASSERT(NewScriptFile->ScriptName == NULL);
2880 NewScriptFile->ScriptName = StrnCatGrow(&NewScriptFile->ScriptName, NULL, Name, 0);
2881 if (NewScriptFile->ScriptName == NULL) {
2882 DeleteScriptFileStruct(NewScriptFile);
2883 return (EFI_OUT_OF_RESOURCES);
2884 }
2885
2886 //
2887 // Save the parameters (used to replace %0 to %9 later on)
2888 //
2889 NewScriptFile->Argc = ShellInfoObject.NewShellParametersProtocol->Argc;
2890 if (NewScriptFile->Argc != 0) {
2891 NewScriptFile->Argv = (CHAR16**)AllocateZeroPool(NewScriptFile->Argc * sizeof(CHAR16*));
2892 if (NewScriptFile->Argv == NULL) {
2893 DeleteScriptFileStruct(NewScriptFile);
2894 return (EFI_OUT_OF_RESOURCES);
2895 }
2896 for (LoopVar = 0 ; LoopVar < 10 && LoopVar < NewScriptFile->Argc; LoopVar++) {
2897 // ASSERT(NewScriptFile->Argv[LoopVar] == NULL);
2898 if (NewScriptFile->Argv[LoopVar]) {
2899 break;

Callers 1

RunScriptFileFunction · 0.85

Calls 15

ShellCommandGetEchoStateFunction · 0.85
DeleteScriptFileStructFunction · 0.85
ShellFileHandleEofFunction · 0.85
IsNullFunction · 0.85
StrnCpySFunction · 0.85
SaveBufferListFunction · 0.85
ShellCommandSetEchoStateFunction · 0.85
ShellPrintHiiExFunction · 0.85
ShellPrintExFunction · 0.85
ShellCommandGetExitCodeFunction · 0.85

Tested by

no test coverage detected