/** @file\r
This is THE shell (application)\r
\r
- Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>\r
(C) Copyright 2013-2014 Hewlett-Packard Development Company, L.P.<BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
0,\r
0,\r
0,\r
+ 0,\r
0\r
}},\r
0,\r
STATIC CONST CHAR16 mScriptExtension[] = L".NSH";\r
STATIC CONST CHAR16 mExecutableExtensions[] = L".NSH;.EFI";\r
STATIC CONST CHAR16 mStartupScript[] = L"startup.nsh";\r
+CONST CHAR16 mNoNestingEnvVarName[] = L"nonesting";\r
+CONST CHAR16 mNoNestingTrue[] = L"True";\r
+CONST CHAR16 mNoNestingFalse[] = L"False";\r
\r
/**\r
Cleans off leading and trailing spaces and tabs.\r
Status = ShellCommandCreateInitialMappingsAndPaths();\r
}\r
\r
+ //\r
+ // Set the environment variable for nesting support\r
+ //\r
+ Size = 0;\r
+ TempString = NULL;\r
+ if (!ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoNest) {\r
+ //\r
+ // No change. require nesting in Shell Protocol Execute()\r
+ //\r
+ StrnCatGrow(&TempString,\r
+ &Size,\r
+ L"False",\r
+ 0);\r
+ } else {\r
+ StrnCatGrow(&TempString,\r
+ &Size,\r
+ mNoNestingTrue,\r
+ 0);\r
+ }\r
+ Status = InternalEfiShellSetEnv(mNoNestingEnvVarName, TempString, TRUE);\r
+ SHELL_FREE_NON_NULL(TempString);\r
+ Size = 0;\r
+\r
//\r
// save the device path for the loaded image and the device path for the filepath (under loaded image)\r
// These are where to look for the startup.nsh file\r
ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoVersion = FALSE;\r
ShellInfoObject.ShellInitSettings.BitUnion.Bits.Delay = FALSE;\r
ShellInfoObject.ShellInitSettings.BitUnion.Bits.Exit = FALSE;\r
+ ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoNest = FALSE;\r
ShellInfoObject.ShellInitSettings.Delay = 5;\r
\r
//\r
) == 0) {\r
ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoVersion = TRUE;\r
}\r
+ else if (UnicodeCollation->StriColl (\r
+ UnicodeCollation,\r
+ L"-nonest",\r
+ CurrentArg\r
+ ) == 0) {\r
+ ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoNest = TRUE;\r
+ }\r
else if (UnicodeCollation->StriColl (\r
UnicodeCollation,\r
L"-delay",\r
BUFFER_LIST *Walker;\r
UINT16 MaxHistoryCmdCount;\r
UINT16 Count;\r
- \r
+\r
Count = 0;\r
MaxHistoryCmdCount = PcdGet16(PcdShellMaxHistoryCommandCount);\r
\r
IN CHAR16 *CmdLine,\r
IN CHAR16 *FirstParameter,\r
IN EFI_SHELL_PARAMETERS_PROTOCOL *ParamProtocol,\r
- OUT EFI_STATUS *CommandStatus\r
+ OUT EFI_STATUS *CommandStatus\r
)\r
{\r
EFI_STATUS Status;\r