summaryrefslogtreecommitdiffstats
path: root/ShellPkg/Application/Shell/Shell.c
diff options
context:
space:
mode:
Diffstat (limited to 'ShellPkg/Application/Shell/Shell.c')
-rw-r--r--ShellPkg/Application/Shell/Shell.c2211
1 files changed, 1188 insertions, 1023 deletions
diff --git a/ShellPkg/Application/Shell/Shell.c b/ShellPkg/Application/Shell/Shell.c
index a556307097..df00adfdfa 100644
--- a/ShellPkg/Application/Shell/Shell.c
+++ b/ShellPkg/Application/Shell/Shell.c
@@ -13,31 +13,37 @@
//
// Initialize the global structure
//
-SHELL_INFO ShellInfoObject = {
+SHELL_INFO ShellInfoObject = {
NULL,
NULL,
FALSE,
FALSE,
{
- {{
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- }},
+ {
+ {
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ }
+ },
0,
NULL,
NULL
},
- {{NULL, NULL}, NULL},
{
- {{NULL, NULL}, NULL},
+ { NULL,NULL }, NULL
+ },
+ {
+ {
+ { NULL,NULL }, NULL
+ },
0,
0,
TRUE
@@ -49,8 +55,12 @@ SHELL_INFO ShellInfoObject = {
NULL,
NULL,
NULL,
- {{NULL, NULL}, NULL, NULL},
- {{NULL, NULL}, NULL, NULL},
+ {
+ { NULL,NULL }, NULL, NULL
+ },
+ {
+ { NULL,NULL }, NULL, NULL
+ },
NULL,
NULL,
NULL,
@@ -62,12 +72,12 @@ SHELL_INFO ShellInfoObject = {
FALSE
};
-STATIC CONST CHAR16 mScriptExtension[] = L".NSH";
-STATIC CONST CHAR16 mExecutableExtensions[] = L".NSH;.EFI";
-STATIC CONST CHAR16 mStartupScript[] = L"startup.nsh";
-CONST CHAR16 mNoNestingEnvVarName[] = L"nonesting";
-CONST CHAR16 mNoNestingTrue[] = L"True";
-CONST CHAR16 mNoNestingFalse[] = L"False";
+STATIC CONST CHAR16 mScriptExtension[] = L".NSH";
+STATIC CONST CHAR16 mExecutableExtensions[] = L".NSH;.EFI";
+STATIC CONST CHAR16 mStartupScript[] = L"startup.nsh";
+CONST CHAR16 mNoNestingEnvVarName[] = L"nonesting";
+CONST CHAR16 mNoNestingTrue[] = L"True";
+CONST CHAR16 mNoNestingFalse[] = L"False";
/**
Cleans off leading and trailing spaces and tabs.
@@ -75,24 +85,24 @@ CONST CHAR16 mNoNestingFalse[] = L"False";
@param[in] String pointer to the string to trim them off.
**/
EFI_STATUS
-TrimSpaces(
- IN CHAR16 **String
+TrimSpaces (
+ IN CHAR16 **String
)
{
- ASSERT(String != NULL);
- ASSERT(*String!= NULL);
+ ASSERT (String != NULL);
+ ASSERT (*String != NULL);
//
// Remove any spaces and tabs at the beginning of the (*String).
//
while (((*String)[0] == L' ') || ((*String)[0] == L'\t')) {
- CopyMem((*String), (*String)+1, StrSize((*String)) - sizeof((*String)[0]));
+ CopyMem ((*String), (*String)+1, StrSize ((*String)) - sizeof ((*String)[0]));
}
//
// Remove any spaces and tabs at the end of the (*String).
//
- while ((StrLen (*String) > 0) && (((*String)[StrLen((*String))-1] == L' ') || ((*String)[StrLen((*String))-1] == L'\t'))) {
- (*String)[StrLen((*String))-1] = CHAR_NULL;
+ while ((StrLen (*String) > 0) && (((*String)[StrLen ((*String))-1] == L' ') || ((*String)[StrLen ((*String))-1] == L'\t'))) {
+ (*String)[StrLen ((*String))-1] = CHAR_NULL;
}
return (EFI_SUCCESS);
@@ -106,31 +116,33 @@ TrimSpaces(
@param[in] FindString The string to look for
@param[in] CheckForEscapeCharacter TRUE to skip escaped instances of FinfString, otherwise will return even escaped instances
**/
-CHAR16*
-FindNextInstance(
+CHAR16 *
+FindNextInstance (
IN CONST CHAR16 *SourceString,
IN CONST CHAR16 *FindString,
IN CONST BOOLEAN CheckForEscapeCharacter
)
{
- CHAR16 *Temp;
+ CHAR16 *Temp;
+
if (SourceString == NULL) {
return (NULL);
}
- Temp = StrStr(SourceString, FindString);
+
+ Temp = StrStr (SourceString, FindString);
//
// If nothing found, or we don't care about escape characters
//
- if (Temp == NULL || !CheckForEscapeCharacter) {
+ if ((Temp == NULL) || !CheckForEscapeCharacter) {
return (Temp);
}
//
// If we found an escaped character, try again on the remainder of the string
//
- if ((Temp > (SourceString)) && *(Temp-1) == L'^') {
- return FindNextInstance(Temp+1, FindString, CheckForEscapeCharacter);
+ if ((Temp > (SourceString)) && (*(Temp-1) == L'^')) {
+ return FindNextInstance (Temp+1, FindString, CheckForEscapeCharacter);
}
//
@@ -149,12 +161,12 @@ FindNextInstance(
@retval FALSE is NOT a valid environment variable name.
**/
BOOLEAN
-IsValidEnvironmentVariableName(
- IN CONST CHAR16 *BeginPercent,
- IN CONST CHAR16 *EndPercent
+IsValidEnvironmentVariableName (
+ IN CONST CHAR16 *BeginPercent,
+ IN CONST CHAR16 *EndPercent
)
{
- CONST CHAR16 *Walker;
+ CONST CHAR16 *Walker;
Walker = NULL;
@@ -168,12 +180,13 @@ IsValidEnvironmentVariableName(
for (Walker = BeginPercent + 1; Walker < EndPercent; Walker++) {
if (
- (*Walker >= L'0' && *Walker <= L'9') ||
- (*Walker >= L'A' && *Walker <= L'Z') ||
- (*Walker >= L'a' && *Walker <= L'z') ||
+ ((*Walker >= L'0') && (*Walker <= L'9')) ||
+ ((*Walker >= L'A') && (*Walker <= L'Z')) ||
+ ((*Walker >= L'a') && (*Walker <= L'z')) ||
(*Walker == L'_')
- ) {
- if (Walker == BeginPercent + 1 && (*Walker >= L'0' && *Walker <= L'9')) {
+ )
+ {
+ if ((Walker == BeginPercent + 1) && ((*Walker >= L'0') && (*Walker <= L'9'))) {
return FALSE;
} else {
continue;
@@ -195,45 +208,48 @@ IsValidEnvironmentVariableName(
@retval FALSE CmdLine does not have a valid split.
**/
BOOLEAN
-ContainsSplit(
- IN CONST CHAR16 *CmdLine
+ContainsSplit (
+ IN CONST CHAR16 *CmdLine
)
{
- CONST CHAR16 *TempSpot;
- CONST CHAR16 *FirstQuote;
- CONST CHAR16 *SecondQuote;
-
- FirstQuote = FindNextInstance (CmdLine, L"\"", TRUE);
- SecondQuote = NULL;
- TempSpot = FindFirstCharacter(CmdLine, L"|", L'^');
-
- if (FirstQuote == NULL ||
- TempSpot == NULL ||
- TempSpot == CHAR_NULL ||
- FirstQuote > TempSpot
- ) {
- return (BOOLEAN) ((TempSpot != NULL) && (*TempSpot != CHAR_NULL));
+ CONST CHAR16 *TempSpot;
+ CONST CHAR16 *FirstQuote;
+ CONST CHAR16 *SecondQuote;
+
+ FirstQuote = FindNextInstance (CmdLine, L"\"", TRUE);
+ SecondQuote = NULL;
+ TempSpot = FindFirstCharacter (CmdLine, L"|", L'^');
+
+ if ((FirstQuote == NULL) ||
+ (TempSpot == NULL) ||
+ (TempSpot == CHAR_NULL) ||
+ (FirstQuote > TempSpot)
+ )
+ {
+ return (BOOLEAN)((TempSpot != NULL) && (*TempSpot != CHAR_NULL));
}
while ((TempSpot != NULL) && (*TempSpot != CHAR_NULL)) {
- if (FirstQuote == NULL || FirstQuote > TempSpot) {
+ if ((FirstQuote == NULL) || (FirstQuote > TempSpot)) {
break;
}
+
SecondQuote = FindNextInstance (FirstQuote + 1, L"\"", TRUE);
if (SecondQuote == NULL) {
break;
}
+
if (SecondQuote < TempSpot) {
FirstQuote = FindNextInstance (SecondQuote + 1, L"\"", TRUE);
continue;
} else {
FirstQuote = FindNextInstance (SecondQuote + 1, L"\"", TRUE);
- TempSpot = FindFirstCharacter(TempSpot + 1, L"|", L'^');
+ TempSpot = FindFirstCharacter (TempSpot + 1, L"|", L'^');
continue;
}
}
- return (BOOLEAN) ((TempSpot != NULL) && (*TempSpot != CHAR_NULL));
+ return (BOOLEAN)((TempSpot != NULL) && (*TempSpot != CHAR_NULL));
}
/**
@@ -244,28 +260,30 @@ ContainsSplit(
@retval EFI_OUT_OF_RESOURCES There is not enough memory available.
**/
EFI_STATUS
-InternalEfiShellStartCtrlSMonitor(
+InternalEfiShellStartCtrlSMonitor (
VOID
)
{
- EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *SimpleEx;
- EFI_KEY_DATA KeyData;
- EFI_STATUS Status;
-
- Status = gBS->OpenProtocol(
- gST->ConsoleInHandle,
- &gEfiSimpleTextInputExProtocolGuid,
- (VOID**)&SimpleEx,
- gImageHandle,
- NULL,
- EFI_OPEN_PROTOCOL_GET_PROTOCOL);
- if (EFI_ERROR(Status)) {
- ShellPrintHiiEx(
+ EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *SimpleEx;
+ EFI_KEY_DATA KeyData;
+ EFI_STATUS Status;
+
+ Status = gBS->OpenProtocol (
+ gST->ConsoleInHandle,
+ &gEfiSimpleTextInputExProtocolGuid,
+ (VOID **)&SimpleEx,
+ gImageHandle,
+ NULL,
+ EFI_OPEN_PROTOCOL_GET_PROTOCOL
+ );
+ if (EFI_ERROR (Status)) {
+ ShellPrintHiiEx (
-1,
-1,
NULL,
STRING_TOKEN (STR_SHELL_NO_IN_EX),
- ShellInfoObject.HiiHandle);
+ ShellInfoObject.HiiHandle
+ );
return (EFI_SUCCESS);
}
@@ -274,42 +292,47 @@ InternalEfiShellStartCtrlSMonitor(
KeyData.KeyState.KeyShiftState = EFI_SHIFT_STATE_VALID|EFI_LEFT_CONTROL_PRESSED;
KeyData.Key.UnicodeChar = L's';
- Status = SimpleEx->RegisterKeyNotify(
- SimpleEx,
- &KeyData,
- NotificationFunction,
- &ShellInfoObject.CtrlSNotifyHandle1);
+ Status = SimpleEx->RegisterKeyNotify (
+ SimpleEx,
+ &KeyData,
+ NotificationFunction,
+ &ShellInfoObject.CtrlSNotifyHandle1
+ );
- KeyData.KeyState.KeyShiftState = EFI_SHIFT_STATE_VALID|EFI_RIGHT_CONTROL_PRESSED;
- if (!EFI_ERROR(Status)) {
- Status = SimpleEx->RegisterKeyNotify(
- SimpleEx,
- &KeyData,
- NotificationFunction,
- &ShellInfoObject.CtrlSNotifyHandle2);
+ KeyData.KeyState.KeyShiftState = EFI_SHIFT_STATE_VALID|EFI_RIGHT_CONTROL_PRESSED;
+ if (!EFI_ERROR (Status)) {
+ Status = SimpleEx->RegisterKeyNotify (
+ SimpleEx,
+ &KeyData,
+ NotificationFunction,
+ &ShellInfoObject.CtrlSNotifyHandle2
+ );
}
- KeyData.KeyState.KeyShiftState = EFI_SHIFT_STATE_VALID|EFI_LEFT_CONTROL_PRESSED;
- KeyData.Key.UnicodeChar = 19;
-
- if (!EFI_ERROR(Status)) {
- Status = SimpleEx->RegisterKeyNotify(
- SimpleEx,
- &KeyData,
- NotificationFunction,
- &ShellInfoObject.CtrlSNotifyHandle3);
- }
- KeyData.KeyState.KeyShiftState = EFI_SHIFT_STATE_VALID|EFI_RIGHT_CONTROL_PRESSED;
- if (!EFI_ERROR(Status)) {
- Status = SimpleEx->RegisterKeyNotify(
- SimpleEx,
- &KeyData,
- NotificationFunction,
- &ShellInfoObject.CtrlSNotifyHandle4);
+
+ KeyData.KeyState.KeyShiftState = EFI_SHIFT_STATE_VALID|EFI_LEFT_CONTROL_PRESSED;
+ KeyData.Key.UnicodeChar = 19;
+
+ if (!EFI_ERROR (Status)) {
+ Status = SimpleEx->RegisterKeyNotify (
+ SimpleEx,
+ &KeyData,
+ NotificationFunction,
+ &ShellInfoObject.CtrlSNotifyHandle3
+ );
}
- return (Status);
-}
+ KeyData.KeyState.KeyShiftState = EFI_SHIFT_STATE_VALID|EFI_RIGHT_CONTROL_PRESSED;
+ if (!EFI_ERROR (Status)) {
+ Status = SimpleEx->RegisterKeyNotify (
+ SimpleEx,
+ &KeyData,
+ NotificationFunction,
+ &ShellInfoObject.CtrlSNotifyHandle4
+ );
+ }
+ return (Status);
+}
/**
The entry point for the application.
@@ -335,46 +358,47 @@ UefiMain (
EFI_SIMPLE_TEXT_INPUT_PROTOCOL *OldConIn;
SPLIT_LIST *Split;
- if (PcdGet8(PcdShellSupportLevel) > 3) {
+ if (PcdGet8 (PcdShellSupportLevel) > 3) {
return (EFI_UNSUPPORTED);
}
//
// Clear the screen
//
- Status = gST->ConOut->ClearScreen(gST->ConOut);
- if (EFI_ERROR(Status)) {
+ Status = gST->ConOut->ClearScreen (gST->ConOut);
+ if (EFI_ERROR (Status)) {
return (Status);
}
//
// Populate the global structure from PCDs
//
- ShellInfoObject.ImageDevPath = NULL;
- ShellInfoObject.FileDevPath = NULL;
- ShellInfoObject.PageBreakEnabled = PcdGetBool(PcdShellPageBreakDefault);
- ShellInfoObject.ViewingSettings.InsertMode = PcdGetBool(PcdShellInsertModeDefault);
- ShellInfoObject.LogScreenCount = PcdGet8 (PcdShellScreenLogCount );
+ ShellInfoObject.ImageDevPath = NULL;
+ ShellInfoObject.FileDevPath = NULL;
+ ShellInfoObject.PageBreakEnabled = PcdGetBool (PcdShellPageBreakDefault);
+ ShellInfoObject.ViewingSettings.InsertMode = PcdGetBool (PcdShellInsertModeDefault);
+ ShellInfoObject.LogScreenCount = PcdGet8 (PcdShellScreenLogCount);
//
// verify we dont allow for spec violation
//
- ASSERT(ShellInfoObject.LogScreenCount >= 3);
+ ASSERT (ShellInfoObject.LogScreenCount >= 3);
//
// Initialize the LIST ENTRY objects...
//
- InitializeListHead(&ShellInfoObject.BufferToFreeList.Link);
- InitializeListHead(&ShellInfoObject.ViewingSettings.CommandHistory.Link);
- InitializeListHead(&ShellInfoObject.SplitList.Link);
+ InitializeListHead (&ShellInfoObject.BufferToFreeList.Link);
+ InitializeListHead (&ShellInfoObject.ViewingSettings.CommandHistory.Link);
+ InitializeListHead (&ShellInfoObject.SplitList.Link);
//
// Check PCDs for optional features that are not implemented yet.
//
- if ( PcdGetBool(PcdShellSupportOldProtocols)
- || !FeaturePcdGet(PcdShellRequireHiiPlatform)
- || FeaturePcdGet(PcdShellSupportFrameworkHii)
- ) {
+ if ( PcdGetBool (PcdShellSupportOldProtocols)
+ || !FeaturePcdGet (PcdShellRequireHiiPlatform)
+ || FeaturePcdGet (PcdShellSupportFrameworkHii)
+ )
+ {
return (EFI_UNSUPPORTED);
}
@@ -386,8 +410,8 @@ UefiMain (
//
// install our console logger. This will keep a log of the output for back-browsing
//
- Status = ConsoleLoggerInstall(ShellInfoObject.LogScreenCount, &ShellInfoObject.ConsoleInfo);
- if (!EFI_ERROR(Status)) {
+ Status = ConsoleLoggerInstall (ShellInfoObject.LogScreenCount, &ShellInfoObject.ConsoleInfo);
+ if (!EFI_ERROR (Status)) {
//
// Enable the cursor to be visible
//
@@ -398,16 +422,17 @@ UefiMain (
// only do this if PcdShellRequireHiiPlatform == FALSE
//
// remove EFI_UNSUPPORTED check above when complete.
- ///@todo add support for Framework HII
+ /// @todo add support for Framework HII
//
// install our (solitary) HII package
//
ShellInfoObject.HiiHandle = HiiAddPackages (&gEfiCallerIdGuid, gImageHandle, ShellStrings, NULL);
if (ShellInfoObject.HiiHandle == NULL) {
- if (PcdGetBool(PcdShellSupportFrameworkHii)) {
- ///@todo Add our package into Framework HII
+ if (PcdGetBool (PcdShellSupportFrameworkHii)) {
+ /// @todo Add our package into Framework HII
}
+
if (ShellInfoObject.HiiHandle == NULL) {
Status = EFI_NOT_STARTED;
goto FreeResources;
@@ -417,25 +442,25 @@ UefiMain (
//
// create and install the EfiShellParametersProtocol
//
- Status = CreatePopulateInstallShellParametersProtocol(&ShellInfoObject.NewShellParametersProtocol, &ShellInfoObject.RootShellInstance);
- ASSERT_EFI_ERROR(Status);
- ASSERT(ShellInfoObject.NewShellParametersProtocol != NULL);
+ Status = CreatePopulateInstallShellParametersProtocol (&ShellInfoObject.NewShellParametersProtocol, &ShellInfoObject.RootShellInstance);
+ ASSERT_EFI_ERROR (Status);
+ ASSERT (ShellInfoObject.NewShellParametersProtocol != NULL);
//
// create and install the EfiShellProtocol
//
- Status = CreatePopulateInstallShellProtocol(&ShellInfoObject.NewEfiShellProtocol);
- ASSERT_EFI_ERROR(Status);
- ASSERT(ShellInfoObject.NewEfiShellProtocol != NULL);
+ Status = CreatePopulateInstallShellProtocol (&ShellInfoObject.NewEfiShellProtocol);
+ ASSERT_EFI_ERROR (Status);
+ ASSERT (ShellInfoObject.NewEfiShellProtocol != NULL);
//
// Now initialize the shell library (it requires Shell Parameters protocol)
//
- Status = ShellInitialize();
- ASSERT_EFI_ERROR(Status);
+ Status = ShellInitialize ();
+ ASSERT_EFI_ERROR (Status);
- Status = CommandInit();
- ASSERT_EFI_ERROR(Status);
+ Status = CommandInit ();
+ ASSERT_EFI_ERROR (Status);
Status = ShellInitEnvVarList ();
@@ -450,39 +475,44 @@ UefiMain (
//
// If shell support level is >= 1 create the mappings and paths
//
- if (PcdGet8(PcdShellSupportLevel) >= 1) {
- Status = ShellCommandCreateInitialMappingsAndPaths();
+ if (PcdGet8 (PcdShellSupportLevel) >= 1) {
+ Status = ShellCommandCreateInitialMappingsAndPaths ();
}
//
// Set the environment variable for nesting support
//
- Size = 0;
+ Size = 0;
TempString = NULL;
if (!ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoNest) {
//
// No change. require nesting in Shell Protocol Execute()
//
- StrnCatGrow(&TempString,
- &Size,
- L"False",
- 0);
+ StrnCatGrow (
+ &TempString,
+ &Size,
+ L"False",
+ 0
+ );
} else {
- StrnCatGrow(&TempString,
- &Size,
- mNoNestingTrue,
- 0);
+ StrnCatGrow (
+ &TempString,
+ &Size,
+ mNoNestingTrue,
+ 0
+ );
}
- Status = InternalEfiShellSetEnv(mNoNestingEnvVarName, TempString, TRUE);
- SHELL_FREE_NON_NULL(TempString);
+
+ Status = InternalEfiShellSetEnv (mNoNestingEnvVarName, TempString, TRUE);
+ SHELL_FREE_NON_NULL (TempString);
Size = 0;
//
// save the device path for the loaded image and the device path for the filepath (under loaded image)
// These are where to look for the startup.nsh file
//
- Status = GetDevicePathsForImageAndFile(&ShellInfoObject.ImageDevPath, &ShellInfoObject.FileDevPath);
- ASSERT_EFI_ERROR(Status);
+ Status = GetDevicePathsForImageAndFile (&ShellInfoObject.ImageDevPath, &ShellInfoObject.FileDevPath);
+ ASSERT_EFI_ERROR (Status);
//
// Display the version
@@ -494,10 +524,10 @@ UefiMain (
NULL,
STRING_TOKEN (STR_VER_OUTPUT_MAIN_SHELL),
ShellInfoObject.HiiHandle,
- SupportLevel[PcdGet8(PcdShellSupportLevel)],
+ SupportLevel[PcdGet8 (PcdShellSupportLevel)],
gEfiShellProtocol->MajorVersion,
gEfiShellProtocol->MinorVersion
- );
+ );
ShellPrintHiiEx (
-1,
@@ -505,8 +535,8 @@ UefiMain (
NULL,
STRING_TOKEN (STR_VER_OUTPUT_MAIN_SUPPLIER),
ShellInfoObject.HiiHandle,
- (CHAR16 *) PcdGetPtr (PcdShellSupplier)
- );
+ (CHAR16 *)PcdGetPtr (PcdShellSupplier)
+ );
ShellPrintHiiEx (
-1,
@@ -518,83 +548,83 @@ UefiMain (
(gST->Hdr.Revision&0x0000ffff),
gST->FirmwareVendor,
gST->FirmwareRevision
- );
+ );
}
//
// Display the mapping
//
- if (PcdGet8(PcdShellSupportLevel) >= 2 && !ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoMap) {
- Status = RunCommand(L"map");
- ASSERT_EFI_ERROR(Status);
+ if ((PcdGet8 (PcdShellSupportLevel) >= 2) && !ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoMap) {
+ Status = RunCommand (L"map");
+ ASSERT_EFI_ERROR (Status);
}
//
// init all the built in alias'
//
- Status = SetBuiltInAlias();
- ASSERT_EFI_ERROR(Status);
+ Status = SetBuiltInAlias ();
+ ASSERT_EFI_ERROR (Status);
//
// Initialize environment variables
//
- if (ShellCommandGetProfileList() != NULL) {
- Status = InternalEfiShellSetEnv(L"profiles", ShellCommandGetProfileList(), TRUE);
- ASSERT_EFI_ERROR(Status);
+ if (ShellCommandGetProfileList () != NULL) {
+ Status = InternalEfiShellSetEnv (L"profiles", ShellCommandGetProfileList (), TRUE);
+ ASSERT_EFI_ERROR (Status);
}
- Size = 100;
- TempString = AllocateZeroPool(Size);
+ Size = 100;
+ TempString = AllocateZeroPool (Size);
- UnicodeSPrint(TempString, Size, L"%d", PcdGet8(PcdShellSupportLevel));
- Status = InternalEfiShellSetEnv(L"uefishellsupport", TempString, TRUE);
- ASSERT_EFI_ERROR(Status);
+ UnicodeSPrint (TempString, Size, L"%d", PcdGet8 (PcdShellSupportLevel));
+ Status = InternalEfiShellSetEnv (L"uefishellsupport", TempString, TRUE);
+ ASSERT_EFI_ERROR (Status);
- UnicodeSPrint(TempString, Size, L"%d.%d", ShellInfoObject.NewEfiShellProtocol->MajorVersion, ShellInfoObject.NewEfiShellProtocol->MinorVersion);
- Status = InternalEfiShellSetEnv(L"uefishellversion", TempString, TRUE);
- ASSERT_EFI_ERROR(Status);
+ UnicodeSPrint (TempString, Size, L"%d.%d", ShellInfoObject.NewEfiShellProtocol->MajorVersion, ShellInfoObject.NewEfiShellProtocol->MinorVersion);
+ Status = InternalEfiShellSetEnv (L"uefishellversion", TempString, TRUE);
+ ASSERT_EFI_ERROR (Status);
- UnicodeSPrint(TempString, Size, L"%d.%d", (gST->Hdr.Revision & 0xFFFF0000) >> 16, gST->Hdr.Revision & 0x0000FFFF);
- Status = InternalEfiShellSetEnv(L"uefiversion", TempString, TRUE);
- ASSERT_EFI_ERROR(Status);
+ UnicodeSPrint (TempString, Size, L"%d.%d", (gST->Hdr.Revision & 0xFFFF0000) >> 16, gST->Hdr.Revision & 0x0000FFFF);
+ Status = InternalEfiShellSetEnv (L"uefiversion", TempString, TRUE);
+ ASSERT_EFI_ERROR (Status);
- FreePool(TempString);
+ FreePool (TempString);
- if (!EFI_ERROR(Status)) {
+ if (!EFI_ERROR (Status)) {
if (!ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoInterrupt) {
//
// Set up the event for CTRL-C monitoring...
//
- Status = InernalEfiShellStartMonitor();
+ Status = InernalEfiShellStartMonitor ();
}
- if (!EFI_ERROR(Status) && !ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoConsoleIn) {
+ if (!EFI_ERROR (Status) && !ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoConsoleIn) {
//
// Set up the event for CTRL-S monitoring...
//
- Status = InternalEfiShellStartCtrlSMonitor();
+ Status = InternalEfiShellStartCtrlSMonitor ();
}
- if (!EFI_ERROR(Status) && ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoConsoleIn) {
+ if (!EFI_ERROR (Status) && ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoConsoleIn) {
//
// close off the gST->ConIn
//
- OldConIn = gST->ConIn;
- ConInHandle = gST->ConsoleInHandle;
- gST->ConIn = CreateSimpleTextInOnFile((SHELL_FILE_HANDLE)&FileInterfaceNulFile, &gST->ConsoleInHandle);
+ OldConIn = gST->ConIn;
+ ConInHandle = gST->ConsoleInHandle;
+ gST->ConIn = CreateSimpleTextInOnFile ((SHELL_FILE_HANDLE)&FileInterfaceNulFile, &gST->ConsoleInHandle);
} else {
- OldConIn = NULL;
- ConInHandle = NULL;
+ OldConIn = NULL;
+ ConInHandle = NULL;
}
- if (!EFI_ERROR(Status) && PcdGet8(PcdShellSupportLevel) >= 1) {
+ if (!EFI_ERROR (Status) && (PcdGet8 (PcdShellSupportLevel) >= 1)) {
//
// process the startup script or launch the called app.
//
- Status = DoStartupScript(ShellInfoObject.ImageDevPath, ShellInfoObject.FileDevPath);
+ Status = DoStartupScript (ShellInfoObject.ImageDevPath, ShellInfoObject.FileDevPath);
}
- if (!ShellInfoObject.ShellInitSettings.BitUnion.Bits.Exit && !ShellCommandGetExit() && (PcdGet8(PcdShellSupportLevel) >= 3 || PcdGetBool(PcdShellForceConsole)) && !EFI_ERROR(Status) && !ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoConsoleIn) {
+ if (!ShellInfoObject.ShellInitSettings.BitUnion.Bits.Exit && !ShellCommandGetExit () && ((PcdGet8 (PcdShellSupportLevel) >= 3) || PcdGetBool (PcdShellForceConsole)) && !EFI_ERROR (Status) && !ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoConsoleIn) {
//
// begin the UI waiting loop
//
@@ -603,14 +633,14 @@ UefiMain (
// clean out all the memory allocated for CONST <something> * return values
// between each shell prompt presentation
//
- if (!IsListEmpty(&ShellInfoObject.BufferToFreeList.Link)){
- FreeBufferList(&ShellInfoObject.BufferToFreeList);
+ if (!IsListEmpty (&ShellInfoObject.BufferToFreeList.Link)) {
+ FreeBufferList (&ShellInfoObject.BufferToFreeList);
}
//
// Reset page break back to default.
//
- ShellInfoObject.PageBreakEnabled = PcdGetBool(PcdShellPageBreakDefault);
+ ShellInfoObject.PageBreakEnabled = PcdGetBool (PcdShellPageBreakDefault);
ASSERT (ShellInfoObject.ConsoleInfo != NULL);
ShellInfoObject.ConsoleInfo->Enabled = TRUE;
ShellInfoObject.ConsoleInfo->RowCounter = 0;
@@ -618,13 +648,14 @@ UefiMain (
//
// Display Prompt
//
- Status = DoShellPrompt();
- } while (!ShellCommandGetExit());
+ Status = DoShellPrompt ();
+ } while (!ShellCommandGetExit ());
}
- if (OldConIn != NULL && ConInHandle != NULL) {
+
+ if ((OldConIn != NULL) && (ConInHandle != NULL)) {
CloseSimpleTextInOnFile (gST->ConIn);
- gST->ConIn = OldConIn;
- gST->ConsoleInHandle = ConInHandle;
+ gST->ConIn = OldConIn;
+ gST->ConsoleInHandle = ConInHandle;
}
}
}
@@ -634,78 +665,105 @@ FreeResources:
// uninstall protocols / free memory / etc...
//
if (ShellInfoObject.UserBreakTimer != NULL) {
- gBS->CloseEvent(ShellInfoObject.UserBreakTimer);
- DEBUG_CODE(ShellInfoObject.UserBreakTimer = NULL;);
+ gBS->CloseEvent (ShellInfoObject.UserBreakTimer);
+ DEBUG_CODE (
+ ShellInfoObject.UserBreakTimer = NULL;
+ );
}
+
if (ShellInfoObject.ImageDevPath != NULL) {
- FreePool(ShellInfoObject.ImageDevPath);
- DEBUG_CODE(ShellInfoObject.ImageDevPath = NULL;);
+ FreePool (ShellInfoObject.ImageDevPath);
+ DEBUG_CODE (
+ ShellInfoObject.ImageDevPath = NULL;
+ );
}
+
if (ShellInfoObject.FileDevPath != NULL) {
- FreePool(ShellInfoObject.FileDevPath);
- DEBUG_CODE(ShellInfoObject.FileDevPath = NULL;);
+ FreePool (ShellInfoObject.FileDevPath);
+ DEBUG_CODE (
+ ShellInfoObject.FileDevPath = NULL;
+ );
}
+
if (ShellInfoObject.NewShellParametersProtocol != NULL) {
- CleanUpShellParametersProtocol(ShellInfoObject.NewShellParametersProtocol);
- DEBUG_CODE(ShellInfoObject.NewShellParametersProtocol = NULL;);
+ CleanUpShellParametersProtocol (ShellInfoObject.NewShellParametersProtocol);
+ DEBUG_CODE (
+ ShellInfoObject.NewShellParametersProtocol = NULL;
+ );
}
- if (ShellInfoObject.NewEfiShellProtocol != NULL){
- if (ShellInfoObject.NewEfiShellProtocol->IsRootShell()){
- InternalEfiShellSetEnv(L"cwd", NULL, TRUE);
+
+ if (ShellInfoObject.NewEfiShellProtocol != NULL) {
+ if (ShellInfoObject.NewEfiShellProtocol->IsRootShell ()) {
+ InternalEfiShellSetEnv (L"cwd", NULL, TRUE);
}
+
CleanUpShellEnvironment (ShellInfoObject.NewEfiShellProtocol);
- DEBUG_CODE(ShellInfoObject.NewEfiShellProtocol = NULL;);
+ DEBUG_CODE (
+ ShellInfoObject.NewEfiShellProtocol = NULL;
+ );
}
- if (!IsListEmpty(&ShellInfoObject.BufferToFreeList.Link)){
- FreeBufferList(&ShellInfoObject.BufferToFreeList);
+ if (!IsListEmpty (&ShellInfoObject.BufferToFreeList.Link)) {
+ FreeBufferList (&ShellInfoObject.BufferToFreeList);
}
- if (!IsListEmpty(&ShellInfoObject.SplitList.Link)){
- ASSERT(FALSE); ///@todo finish this de-allocation (free SplitStdIn/Out when needed).
+ if (!IsListEmpty (&ShellInfoObject.SplitList.Link)) {
+ ASSERT (FALSE); /// @todo finish this de-allocation (free SplitStdIn/Out when needed).
- for ( Split = (SPLIT_LIST*)GetFirstNode (&ShellInfoObject.SplitList.Link)
- ; !IsNull (&ShellInfoObject.SplitList.Link, &Split->Link)
- ; Split = (SPLIT_LIST *)GetNextNode (&ShellInfoObject.SplitList.Link, &Split->Link)
- ) {
+ for ( Split = (SPLIT_LIST *)GetFirstNode (&ShellInfoObject.SplitList.Link)
+ ; !IsNull (&ShellInfoObject.SplitList.Link, &Split->Link)
+ ; Split = (SPLIT_LIST *)GetNextNode (&ShellInfoObject.SplitList.Link, &Split->Link)
+ )
+ {
RemoveEntryList (&Split->Link);
FreePool (Split);
}
- DEBUG_CODE (InitializeListHead (&ShellInfoObject.SplitList.Link););
+ DEBUG_CODE (
+ InitializeListHead (&ShellInfoObject.SplitList.Link);
+ );
}
if (ShellInfoObject.ShellInitSettings.FileName != NULL) {
- FreePool(ShellInfoObject.ShellInitSettings.FileName);
- DEBUG_CODE(ShellInfoObject.ShellInitSettings.FileName = NULL;);
+ FreePool (ShellInfoObject.ShellInitSettings.FileName);
+ DEBUG_CODE (
+ ShellInfoObject.ShellInitSettings.FileName = NULL;
+ );
}
if (ShellInfoObject.ShellInitSettings.FileOptions != NULL) {
- FreePool(ShellInfoObject.ShellInitSettings.FileOptions);
- DEBUG_CODE(ShellInfoObject.ShellInitSettings.FileOptions = NULL;);
+ FreePool (ShellInfoObject.ShellInitSettings.FileOptions);
+ DEBUG_CODE (
+ ShellInfoObject.ShellInitSettings.FileOptions = NULL;
+ );
}
if (ShellInfoObject.HiiHandle != NULL) {
- HiiRemovePackages(ShellInfoObject.HiiHandle);
- DEBUG_CODE(ShellInfoObject.HiiHandle = NULL;);
+ HiiRemovePackages (ShellInfoObject.HiiHandle);
+ DEBUG_CODE (
+ ShellInfoObject.HiiHandle = NULL;
+ );
}
- if (!IsListEmpty(&ShellInfoObject.ViewingSettings.CommandHistory.Link)){
- FreeBufferList(&ShellInfoObject.ViewingSettings.CommandHistory);
+ if (!IsListEmpty (&ShellInfoObject.ViewingSettings.CommandHistory.Link)) {
+ FreeBufferList (&ShellInfoObject.ViewingSettings.CommandHistory);
}
- ASSERT(ShellInfoObject.ConsoleInfo != NULL);
+ ASSERT (ShellInfoObject.ConsoleInfo != NULL);
if (ShellInfoObject.ConsoleInfo != NULL) {
- ConsoleLoggerUninstall(ShellInfoObject.ConsoleInfo);
- FreePool(ShellInfoObject.ConsoleInfo);
- DEBUG_CODE(ShellInfoObject.ConsoleInfo = NULL;);
+ ConsoleLoggerUninstall (ShellInfoObject.ConsoleInfo);
+ FreePool (ShellInfoObject.ConsoleInfo);
+ DEBUG_CODE (
+ ShellInfoObject.ConsoleInfo = NULL;
+ );
}
ShellFreeEnvVarList ();
- if (ShellCommandGetExit()) {
- return ((EFI_STATUS)ShellCommandGetExitCode());
+ if (ShellCommandGetExit ()) {
+ return ((EFI_STATUS)ShellCommandGetExitCode ());
}
+
return (Status);
}
@@ -715,32 +773,34 @@ FreeResources:
@retval EFI_SUCCESS all init commands were run successfully.
**/
EFI_STATUS
-SetBuiltInAlias(
+SetBuiltInAlias (
VOID
)
{
- EFI_STATUS Status;
- CONST ALIAS_LIST *List;
- ALIAS_LIST *Node;
+ EFI_STATUS Status;
+ CONST ALIAS_LIST *List;
+ ALIAS_LIST *Node;
//
// Get all the commands we want to run
//
- List = ShellCommandGetInitAliasList();
+ List = ShellCommandGetInitAliasList ();
//
// for each command in the List
//
- for ( Node = (ALIAS_LIST*)GetFirstNode(&List->Link)
- ; !IsNull (&List->Link, &Node->Link)
- ; Node = (ALIAS_LIST *)GetNextNode(&List->Link, &Node->Link)
- ){
+ for ( Node = (ALIAS_LIST *)GetFirstNode (&List->Link)
+ ; !IsNull (&List->Link, &Node->Link)
+ ; Node = (ALIAS_LIST *)GetNextNode (&List->Link, &Node->Link)
+ )
+ {
//
// install the alias'
//
- Status = InternalSetAlias(Node->CommandString, Node->Alias, TRUE);
- ASSERT_EFI_ERROR(Status);
+ Status = InternalSetAlias (Node->CommandString, Node->Alias, TRUE);
+ ASSERT_EFI_ERROR (Status);
}
+
return (EFI_SUCCESS);
}
@@ -754,14 +814,15 @@ SetBuiltInAlias(
@retval FALSE The 2 command names are not the same.
**/
BOOLEAN
-IsCommand(
- IN CONST CHAR16 *Command1,
- IN CONST CHAR16 *Command2
+IsCommand (
+ IN CONST CHAR16 *Command1,
+ IN CONST CHAR16 *Command2
)
{
- if (StringNoCaseCompare(&Command1, &Command2) == 0) {
+ if (StringNoCaseCompare (&Command1, &Command2) == 0) {
return (TRUE);
}
+
return (FALSE);
}
@@ -774,18 +835,20 @@ IsCommand(
@retval FALSE The command is not a script only command.
**/
BOOLEAN
-IsScriptOnlyCommand(
- IN CONST CHAR16 *CommandName
+IsScriptOnlyCommand (
+ IN CONST CHAR16 *CommandName
)
{
- if (IsCommand(CommandName, L"for")
- ||IsCommand(CommandName, L"endfor")
- ||IsCommand(CommandName, L"if")
- ||IsCommand(CommandName, L"else")
- ||IsCommand(CommandName, L"endif")
- ||IsCommand(CommandName, L"goto")) {
+ if ( IsCommand (CommandName, L"for")
+ || IsCommand (CommandName, L"endfor")
+ || IsCommand (CommandName, L"if")
+ || IsCommand (CommandName, L"else")
+ || IsCommand (CommandName, L"endif")
+ || IsCommand (CommandName, L"goto"))
+ {
return (TRUE);
}
+
return (FALSE);
}
@@ -805,49 +868,53 @@ IsScriptOnlyCommand(
**/
EFI_STATUS
GetDevicePathsForImageAndFile (
- IN OUT EFI_DEVICE_PATH_PROTOCOL **DevPath,
- IN OUT EFI_DEVICE_PATH_PROTOCOL **FilePath
+ IN OUT EFI_DEVICE_PATH_PROTOCOL **DevPath,
+ IN OUT EFI_DEVICE_PATH_PROTOCOL **FilePath
)
{
- EFI_STATUS Status;
- EFI_LOADED_IMAGE_PROTOCOL *LoadedImage;
- EFI_DEVICE_PATH_PROTOCOL *ImageDevicePath;
+ EFI_STATUS Status;
+ EFI_LOADED_IMAGE_PROTOCOL *LoadedImage;
+ EFI_DEVICE_PATH_PROTOCOL *ImageDevicePath;
- ASSERT(DevPath != NULL);
- ASSERT(FilePath != NULL);
+ ASSERT (DevPath != NULL);
+ ASSERT (FilePath != NULL);
Status = gBS->OpenProtocol (
- gImageHandle,
- &gEfiLoadedImageProtocolGuid,
- (VOID**)&LoadedImage,
- gImageHandle,
- NULL,
- EFI_OPEN_PROTOCOL_GET_PROTOCOL
- );
- if (!EFI_ERROR (Status)) {
- Status = gBS->OpenProtocol (
- LoadedImage->DeviceHandle,
- &gEfiDevicePathProtocolGuid,
- (VOID**)&ImageDevicePath,
+ gImageHandle,
+ &gEfiLoadedImageProtocolGuid,
+ (VOID **)&LoadedImage,
gImageHandle,
NULL,
EFI_OPEN_PROTOCOL_GET_PROTOCOL
- );
+ );
+ if (!EFI_ERROR (Status)) {
+ Status = gBS->OpenProtocol (
+ LoadedImage->DeviceHandle,
+ &gEfiDevicePathProtocolGuid,
+ (VOID **)&ImageDevicePath,
+ gImageHandle,
+ NULL,
+ EFI_OPEN_PROTOCOL_GET_PROTOCOL
+ );
if (!EFI_ERROR (Status)) {
*DevPath = DuplicateDevicePath (ImageDevicePath);
*FilePath = DuplicateDevicePath (LoadedImage->FilePath);
- gBS->CloseProtocol(
- LoadedImage->DeviceHandle,
- &gEfiDevicePathProtocolGuid,
- gImageHandle,
- NULL);
- }
- gBS->CloseProtocol(
- gImageHandle,
- &gEfiLoadedImageProtocolGuid,
- gImageHandle,
- NULL);
+ gBS->CloseProtocol (
+ LoadedImage->DeviceHandle,
+ &gEfiDevicePathProtocolGuid,
+ gImageHandle,
+ NULL
+ );
+ }
+
+ gBS->CloseProtocol (
+ gImageHandle,
+ &gEfiLoadedImageProtocolGuid,
+ gImageHandle,
+ NULL
+ );
}
+
return (Status);
}
@@ -879,7 +946,7 @@ GetDevicePathsForImageAndFile (
@retval EFI_SUCCESS The variable is initialized.
**/
EFI_STATUS
-ProcessCommandLine(
+ProcessCommandLine (
VOID
)
{
@@ -899,13 +966,13 @@ ProcessCommandLine(
Status = gBS->LocateProtocol (
&gEfiUnicodeCollation2ProtocolGuid,
NULL,
- (VOID **) &UnicodeCollation
+ (VOID **)&UnicodeCollation
);
if (EFI_ERROR (Status)) {
Status = gBS->LocateProtocol (
&gEfiUnicodeCollationProtocolGuid,
NULL,
- (VOID **) &UnicodeCollation
+ (VOID **)&UnicodeCollation
);
if (EFI_ERROR (Status)) {
return Status;
@@ -923,7 +990,7 @@ ProcessCommandLine(
ShellInfoObject.ShellInitSettings.BitUnion.Bits.Delay = FALSE;
ShellInfoObject.ShellInitSettings.BitUnion.Bits.Exit = FALSE;
ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoNest = FALSE;
- ShellInfoObject.ShellInitSettings.Delay = 5;
+ ShellInfoObject.ShellInitSettings.Delay = 5;
//
// Start LoopVar at 0 to parse only optional arguments at Argv[0]
@@ -931,86 +998,92 @@ ProcessCommandLine(
// UEFI Shell boot option is created, and OptionalData is provided
// that starts with shell command-line options.
//
- for (LoopVar = 0 ; LoopVar < gEfiShellParametersProtocol->Argc ; LoopVar++) {
+ for (LoopVar = 0; LoopVar < gEfiShellParametersProtocol->Argc; LoopVar++) {
CurrentArg = gEfiShellParametersProtocol->Argv[LoopVar];
if (UnicodeCollation->StriColl (
UnicodeCollation,
L"-startup",
CurrentArg
- ) == 0) {
- ShellInfoObject.ShellInitSettings.BitUnion.Bits.Startup = TRUE;
- }
- else if (UnicodeCollation->StriColl (
- UnicodeCollation,
- L"-nostartup",
- CurrentArg
- ) == 0) {
- ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoStartup = TRUE;
- }
- else if (UnicodeCollation->StriColl (
- UnicodeCollation,
- L"-noconsoleout",
- CurrentArg
- ) == 0) {
+ ) == 0)
+ {
+ ShellInfoObject.ShellInitSettings.BitUnion.Bits.Startup = TRUE;
+ } else if (UnicodeCollation->StriColl (
+ UnicodeCollation,
+ L"-nostartup",
+ CurrentArg
+ ) == 0)
+ {
+ ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoStartup = TRUE;
+ } else if (UnicodeCollation->StriColl (
+ UnicodeCollation,
+ L"-noconsoleout",
+ CurrentArg
+ ) == 0)
+ {
ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoConsoleOut = TRUE;
- }
- else if (UnicodeCollation->StriColl (
- UnicodeCollation,
- L"-noconsolein",
- CurrentArg
- ) == 0) {
- ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoConsoleIn = TRUE;
- }
- else if (UnicodeCollation->StriColl (
- UnicodeCollation,
- L"-nointerrupt",
- CurrentArg
- ) == 0) {
- ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoInterrupt = TRUE;
- }
- else if (UnicodeCollation->StriColl (
- UnicodeCollation,
- L"-nomap",
- CurrentArg
- ) == 0) {
- ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoMap = TRUE;
- }
- else if (UnicodeCollation->StriColl (
- UnicodeCollation,
- L"-noversion",
- CurrentArg
- ) == 0) {
- ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoVersion = TRUE;
- }
- else if (UnicodeCollation->StriColl (
- UnicodeCollation,
- L"-nonest",
- CurrentArg
- ) == 0) {
- ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoNest = TRUE;
- }
- else if (UnicodeCollation->StriColl (
- UnicodeCollation,
- L"-delay",
- CurrentArg
- ) == 0) {
- ShellInfoObject.ShellInitSettings.BitUnion.Bits.Delay = TRUE;
+ } else if (UnicodeCollation->StriColl (
+ UnicodeCollation,
+ L"-noconsolein",
+ CurrentArg
+ ) == 0)
+ {
+ ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoConsoleIn = TRUE;
+ } else if (UnicodeCollation->StriColl (
+ UnicodeCollation,
+ L"-nointerrupt",
+ CurrentArg
+ ) == 0)
+ {
+ ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoInterrupt = TRUE;
+ } else if (UnicodeCollation->StriColl (
+ UnicodeCollation,
+ L"-nomap",
+ CurrentArg
+ ) == 0)
+ {
+ ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoMap = TRUE;
+ } else if (UnicodeCollation->StriColl (
+ UnicodeCollation,
+ L"-noversion",
+ CurrentArg
+ ) == 0)
+ {
+ ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoVersion = TRUE;
+ } else if (UnicodeCollation->StriColl (
+ UnicodeCollation,
+ L"-nonest",
+ CurrentArg
+ ) == 0)
+ {
+ ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoNest = TRUE;
+ } else if (UnicodeCollation->StriColl (
+ UnicodeCollation,
+ L"-delay",
+ CurrentArg
+ ) == 0)
+ {
+ ShellInfoObject.ShellInitSettings.BitUnion.Bits.Delay = TRUE;
// Check for optional delay value following "-delay"
if ((LoopVar + 1) >= gEfiShellParametersProtocol->Argc) {
DelayValueStr = NULL;
} else {
DelayValueStr = gEfiShellParametersProtocol->Argv[LoopVar + 1];
}
- if (DelayValueStr != NULL){
+
+ if (DelayValueStr != NULL) {
if (*DelayValueStr == L':') {
DelayValueStr++;
}
- if (!EFI_ERROR(ShellConvertStringToUint64 (
- DelayValueStr,
- &DelayValue,
- FALSE,
- FALSE
- ))) {
+
+ if (!EFI_ERROR (
+ ShellConvertStringToUint64 (
+ DelayValueStr,
+ &DelayValue,
+ FALSE,
+ FALSE
+ )
+ ))
+ {
ShellInfoObject.ShellInitSettings.Delay = (UINTN)DelayValue;
LoopVar++;
}
@@ -1019,11 +1092,15 @@ ProcessCommandLine(
UnicodeCollation,
L"-exit",
CurrentArg
- ) == 0) {
- ShellInfoObject.ShellInitSettings.BitUnion.Bits.Exit = TRUE;
+ ) == 0)
+ {
+ ShellInfoObject.ShellInitSettings.BitUnion.Bits.Exit = TRUE;
} else if (StrnCmp (L"-", CurrentArg, 1) == 0) {
// Unrecognized option
- ShellPrintHiiEx(-1, -1, NULL,
+ ShellPrintHiiEx (
+ -1,
+ -1,
+ NULL,
STRING_TOKEN (STR_GEN_PROBLEM),
ShellInfoObject.HiiHandle,
CurrentArg
@@ -1038,29 +1115,32 @@ ProcessCommandLine(
}
ShellInfoObject.ShellInitSettings.FileName = NULL;
- Size = 0;
+ Size = 0;
//
// If first argument contains a space, then add double quotes before the argument
//
if (StrStr (CurrentArg, L" ") != NULL) {
- StrnCatGrow(&ShellInfoObject.ShellInitSettings.FileName, &Size, L"\"", 0);
+ StrnCatGrow (&ShellInfoObject.ShellInitSettings.FileName, &Size, L"\"", 0);
if (ShellInfoObject.ShellInitSettings.FileName == NULL) {
return (EFI_OUT_OF_RESOURCES);
}
}
- StrnCatGrow(&ShellInfoObject.ShellInitSettings.FileName, &Size, CurrentArg, 0);
+
+ StrnCatGrow (&ShellInfoObject.ShellInitSettings.FileName, &Size, CurrentArg, 0);
if (ShellInfoObject.ShellInitSettings.FileName == NULL) {
return (EFI_OUT_OF_RESOURCES);
}
+
//
// If first argument contains a space, then add double quotes after the argument
//
if (StrStr (CurrentArg, L" ") != NULL) {
- StrnCatGrow(&ShellInfoObject.ShellInitSettings.FileName, &Size, L"\"", 0);
+ StrnCatGrow (&ShellInfoObject.ShellInitSettings.FileName, &Size, L"\"", 0);
if (ShellInfoObject.ShellInitSettings.FileName == NULL) {
return (EFI_OUT_OF_RESOURCES);
}
}
+
//
// We found `file-name`.
//
@@ -1068,49 +1148,58 @@ ProcessCommandLine(
LoopVar++;
// Add `file-name-options`
- for (Size = 0 ; LoopVar < gEfiShellParametersProtocol->Argc ; LoopVar++) {
- ASSERT((ShellInfoObject.ShellInitSettings.FileOptions == NULL && Size == 0) || (ShellInfoObject.ShellInitSettings.FileOptions != NULL));
+ for (Size = 0; LoopVar < gEfiShellParametersProtocol->Argc; LoopVar++) {
+ ASSERT ((ShellInfoObject.ShellInitSettings.FileOptions == NULL && Size == 0) || (ShellInfoObject.ShellInitSettings.FileOptions != NULL));
//
// Add a space between arguments
//
if (ShellInfoObject.ShellInitSettings.FileOptions != NULL) {
- StrnCatGrow(&ShellInfoObject.ShellInitSettings.FileOptions, &Size, L" ", 0);
+ StrnCatGrow (&ShellInfoObject.ShellInitSettings.FileOptions, &Size, L" ", 0);
if (ShellInfoObject.ShellInitSettings.FileOptions == NULL) {
- SHELL_FREE_NON_NULL(ShellInfoObject.ShellInitSettings.FileName);
+ SHELL_FREE_NON_NULL (ShellInfoObject.ShellInitSettings.FileName);
return (EFI_OUT_OF_RESOURCES);
}
}
+
//
// If an argument contains a space, then add double quotes before the argument
//
if (StrStr (gEfiShellParametersProtocol->Argv[LoopVar], L" ") != NULL) {
- StrnCatGrow(&ShellInfoObject.ShellInitSettings.FileOptions,
- &Size,
- L"\"",
- 0);
+ StrnCatGrow (
+ &ShellInfoObject.ShellInitSettings.FileOptions,
+ &Size,
+ L"\"",
+ 0
+ );
if (ShellInfoObject.ShellInitSettings.FileOptions == NULL) {
- SHELL_FREE_NON_NULL(ShellInfoObject.ShellInitSettings.FileName);
+ SHELL_FREE_NON_NULL (ShellInfoObject.ShellInitSettings.FileName);
return (EFI_OUT_OF_RESOURCES);
}
}
- StrnCatGrow(&ShellInfoObject.ShellInitSettings.FileOptions,
- &Size,
- gEfiShellParametersProtocol->Argv[LoopVar],
- 0);
+
+ StrnCatGrow (
+ &ShellInfoObject.ShellInitSettings.FileOptions,
+ &Size,
+ gEfiShellParametersProtocol->Argv[LoopVar],
+ 0
+ );
if (ShellInfoObject.ShellInitSettings.FileOptions == NULL) {
- SHELL_FREE_NON_NULL(ShellInfoObject.ShellInitSettings.FileName);
+ SHELL_FREE_NON_NULL (ShellInfoObject.ShellInitSettings.FileName);
return (EFI_OUT_OF_RESOURCES);
}
+
//
// If an argument contains a space, then add double quotes after the argument
//
if (StrStr (gEfiShellParametersProtocol->Argv[LoopVar], L" ") != NULL) {
- StrnCatGrow(&ShellInfoObject.ShellInitSettings.FileOptions,
- &Size,
- L"\"",
- 0);
+ StrnCatGrow (
+ &ShellInfoObject.ShellInitSettings.FileOptions,
+ &Size,
+ L"\"",
+ 0
+ );
if (ShellInfoObject.ShellInitSettings.FileOptions == NULL) {
- SHELL_FREE_NON_NULL(ShellInfoObject.ShellInitSettings.FileName);
+ SHELL_FREE_NON_NULL (ShellInfoObject.ShellInitSettings.FileName);
return (EFI_OUT_OF_RESOURCES);
}
}
@@ -1139,14 +1228,14 @@ ProcessCommandLine(
**/
CHAR16 *
LocateStartupScript (
- IN EFI_DEVICE_PATH_PROTOCOL *ImageDevicePath,
- IN EFI_DEVICE_PATH_PROTOCOL *FileDevicePath
+ IN EFI_DEVICE_PATH_PROTOCOL *ImageDevicePath,
+ IN EFI_DEVICE_PATH_PROTOCOL *FileDevicePath
)
{
- CHAR16 *StartupScriptPath;
- CHAR16 *TempSpot;
- CONST CHAR16 *MapName;
- UINTN Size;
+ CHAR16 *StartupScriptPath;
+ CHAR16 *TempSpot;
+ CONST CHAR16 *MapName;
+ UINTN Size;
StartupScriptPath = NULL;
Size = 0;
@@ -1163,12 +1252,13 @@ LocateStartupScript (
//
return NULL;
}
+
TempSpot = StrStr (StartupScriptPath, L";");
if (TempSpot != NULL) {
*TempSpot = CHAR_NULL;
}
- InternalEfiShellSetEnv(L"homefilesystem", StartupScriptPath, TRUE);
+ InternalEfiShellSetEnv (L"homefilesystem", StartupScriptPath, TRUE);
StartupScriptPath = StrnCatGrow (&StartupScriptPath, &Size, ((FILEPATH_DEVICE_PATH *)FileDevicePath)->PathName, 0);
PathRemoveLastItem (StartupScriptPath);
@@ -1197,91 +1287,98 @@ LocateStartupScript (
@retval EFI_SUCCESS the variable is initialized.
**/
EFI_STATUS
-DoStartupScript(
- IN EFI_DEVICE_PATH_PROTOCOL *ImagePath,
- IN EFI_DEVICE_PATH_PROTOCOL *FilePath
+DoStartupScript (
+ IN EFI_DEVICE_PATH_PROTOCOL *ImagePath,
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath
)
{
- EFI_STATUS Status;
- EFI_STATUS CalleeStatus;
- UINTN Delay;
- EFI_INPUT_KEY Key;
- CHAR16 *FileStringPath;
- CHAR16 *FullFileStringPath;
- UINTN NewSize;
+ EFI_STATUS Status;
+ EFI_STATUS CalleeStatus;
+ UINTN Delay;
+ EFI_INPUT_KEY Key;
+ CHAR16 *FileStringPath;
+ CHAR16 *FullFileStringPath;
+ UINTN NewSize;
Key.UnicodeChar = CHAR_NULL;
Key.ScanCode = 0;
- if (!ShellInfoObject.ShellInitSettings.BitUnion.Bits.Startup && ShellInfoObject.ShellInitSettings.FileName != NULL) {
+ if (!ShellInfoObject.ShellInitSettings.BitUnion.Bits.Startup && (ShellInfoObject.ShellInitSettings.FileName != NULL)) {
//
// launch something else instead
//
- NewSize = StrSize(ShellInfoObject.ShellInitSettings.FileName);
+ NewSize = StrSize (ShellInfoObject.ShellInitSettings.FileName);
if (ShellInfoObject.ShellInitSettings.FileOptions != NULL) {
- NewSize += StrSize(ShellInfoObject.ShellInitSettings.FileOptions) + sizeof(CHAR16);
+ NewSize += StrSize (ShellInfoObject.ShellInitSettings.FileOptions) + sizeof (CHAR16);
}
- FileStringPath = AllocateZeroPool(NewSize);
+
+ FileStringPath = AllocateZeroPool (NewSize);
if (FileStringPath == NULL) {
return (EFI_OUT_OF_RESOURCES);
}
- StrCpyS(FileStringPath, NewSize/sizeof(CHAR16), ShellInfoObject.ShellInitSettings.FileName);
+
+ StrCpyS (FileStringPath, NewSize/sizeof (CHAR16), ShellInfoObject.ShellInitSettings.FileName);
if (ShellInfoObject.ShellInitSettings.FileOptions != NULL) {
- StrnCatS(FileStringPath, NewSize/sizeof(CHAR16), L" ", NewSize/sizeof(CHAR16) - StrLen(FileStringPath) -1);
- StrnCatS(FileStringPath, NewSize/sizeof(CHAR16), ShellInfoObject.ShellInitSettings.FileOptions, NewSize/sizeof(CHAR16) - StrLen(FileStringPath) -1);
+ StrnCatS (FileStringPath, NewSize/sizeof (CHAR16), L" ", NewSize/sizeof (CHAR16) - StrLen (FileStringPath) -1);
+ StrnCatS (FileStringPath, NewSize/sizeof (CHAR16), ShellInfoObject.ShellInitSettings.FileOptions, NewSize/sizeof (CHAR16) - StrLen (FileStringPath) -1);
}
- Status = RunShellCommand(FileStringPath, &CalleeStatus);
+
+ Status = RunShellCommand (FileStringPath, &CalleeStatus);
if (ShellInfoObject.ShellInitSettings.BitUnion.Bits.Exit == TRUE) {
- ShellCommandRegisterExit(gEfiShellProtocol->BatchIsActive(), (UINT64)CalleeStatus);
+ ShellCommandRegisterExit (gEfiShellProtocol->BatchIsActive (), (UINT64)CalleeStatus);
}
- FreePool(FileStringPath);
- return (Status);
+ FreePool (FileStringPath);
+ return (Status);
}
//
// for shell level 0 we do no scripts
// Without the Startup bit overriding we allow for nostartup to prevent scripts
//
- if ( (PcdGet8(PcdShellSupportLevel) < 1)
- || (ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoStartup && !ShellInfoObject.ShellInitSettings.BitUnion.Bits.Startup)
- ){
+ if ( (PcdGet8 (PcdShellSupportLevel) < 1)
+ || (ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoStartup && !ShellInfoObject.ShellInitSettings.BitUnion.Bits.Startup)
+ )
+ {
return (EFI_SUCCESS);
}
- gST->ConOut->EnableCursor(gST->ConOut, FALSE);
+ gST->ConOut->EnableCursor (gST->ConOut, FALSE);
//
// print out our warning and see if they press a key
//
for ( Status = EFI_UNSUPPORTED, Delay = ShellInfoObject.ShellInitSettings.Delay
- ; Delay != 0 && EFI_ERROR(Status)
- ; Delay--
- ){
- ShellPrintHiiEx(0, gST->ConOut->Mode->CursorRow, NULL, STRING_TOKEN (STR_SHELL_STARTUP_QUESTION), ShellInfoObject.HiiHandle, Delay);
+ ; Delay != 0 && EFI_ERROR (Status)
+ ; Delay--
+ )
+ {
+ ShellPrintHiiEx (0, gST->ConOut->Mode->CursorRow, NULL, STRING_TOKEN (STR_SHELL_STARTUP_QUESTION), ShellInfoObject.HiiHandle, Delay);
gBS->Stall (1000000);
if (!ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoConsoleIn) {
Status = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);
}
}
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_CRLF), ShellInfoObject.HiiHandle);
- gST->ConOut->EnableCursor(gST->ConOut, TRUE);
+
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SHELL_CRLF), ShellInfoObject.HiiHandle);
+ gST->ConOut->EnableCursor (gST->ConOut, TRUE);
//
// ESC was pressed
//
- if (Status == EFI_SUCCESS && Key.UnicodeChar == 0 && Key.ScanCode == SCAN_ESC) {
+ if ((Status == EFI_SUCCESS) && (Key.UnicodeChar == 0) && (Key.ScanCode == SCAN_ESC)) {
return (EFI_SUCCESS);
}
FileStringPath = LocateStartupScript (ImagePath, FilePath);
if (FileStringPath != NULL) {
- FullFileStringPath = FullyQualifyPath(FileStringPath);
+ FullFileStringPath = FullyQualifyPath (FileStringPath);
if (FullFileStringPath == NULL) {
Status = RunScriptFile (FileStringPath, NULL, FileStringPath, ShellInfoObject.NewShellParametersProtocol);
} else {
Status = RunScriptFile (FullFileStringPath, NULL, FullFileStringPath, ShellInfoObject.NewShellParametersProtocol);
- FreePool(FullFileStringPath);
+ FreePool (FullFileStringPath);
}
+
FreePool (FileStringPath);
} else {
//
@@ -1314,36 +1411,36 @@ DoShellPrompt (
EFI_STATUS Status;
LIST_ENTRY OldBufferList;
- CurDir = NULL;
+ CurDir = NULL;
//
// Get screen setting to decide size of the command line buffer
//
gST->ConOut->QueryMode (gST->ConOut, gST->ConOut->Mode->Mode, &Column, &Row);
- BufferSize = Column * Row * sizeof (CHAR16);
- CmdLine = AllocateZeroPool (BufferSize);
+ BufferSize = Column * Row * sizeof (CHAR16);
+ CmdLine = AllocateZeroPool (BufferSize);
if (CmdLine == NULL) {
return EFI_OUT_OF_RESOURCES;
}
- SaveBufferList(&OldBufferList);
- CurDir = ShellInfoObject.NewEfiShellProtocol->GetEnv(L"cwd");
+ SaveBufferList (&OldBufferList);
+ CurDir = ShellInfoObject.NewEfiShellProtocol->GetEnv (L"cwd");
//
// Prompt for input
//
gST->ConOut->SetCursorPosition (gST->ConOut, 0, gST->ConOut->Mode->CursorRow);
- if (CurDir != NULL && StrLen(CurDir) > 1) {
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_CURDIR), ShellInfoObject.HiiHandle, CurDir);
+ if ((CurDir != NULL) && (StrLen (CurDir) > 1)) {
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SHELL_CURDIR), ShellInfoObject.HiiHandle, CurDir);
} else {
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_SHELL), ShellInfoObject.HiiHandle);
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SHELL_SHELL), ShellInfoObject.HiiHandle);
}
//
// Read a line from the console
//
- Status = ShellInfoObject.NewEfiShellProtocol->ReadFile(ShellInfoObject.NewShellParametersProtocol->StdIn, &BufferSize, CmdLine);
+ Status = ShellInfoObject.NewEfiShellProtocol->ReadFile (ShellInfoObject.NewShellParametersProtocol->StdIn, &BufferSize, CmdLine);
//
// Null terminate the string and parse it
@@ -1355,13 +1452,13 @@ DoShellPrompt (
Status = gBS->CheckEvent (ShellInfoObject.NewEfiShellProtocol->ExecutionBreak);
CmdLine[BufferSize / sizeof (CHAR16)] = CHAR_NULL;
- Status = RunCommand(CmdLine);
+ Status = RunCommand (CmdLine);
}
//
// Done with this command
//
- RestoreBufferList(&OldBufferList);
+ RestoreBufferList (&OldBufferList);
FreePool (CmdLine);
return Status;
}
@@ -1372,12 +1469,12 @@ DoShellPrompt (
@param Buffer Something to pass to FreePool when the shell is exiting.
**/
-VOID*
+VOID *
AddBufferToFreeList (
- VOID *Buffer
+ VOID *Buffer
)
{
- BUFFER_LIST *BufferListEntry;
+ BUFFER_LIST *BufferListEntry;
if (Buffer == NULL) {
return (NULL);
@@ -1393,7 +1490,6 @@ AddBufferToFreeList (
return (Buffer);
}
-
/**
Create a new buffer list and stores the old one to OldBufferList
@@ -1401,7 +1497,7 @@ AddBufferToFreeList (
**/
VOID
SaveBufferList (
- OUT LIST_ENTRY *OldBufferList
+ OUT LIST_ENTRY *OldBufferList
)
{
CopyMem (OldBufferList, &ShellInfoObject.BufferToFreeList.Link, sizeof (LIST_ENTRY));
@@ -1415,38 +1511,36 @@ SaveBufferList (
**/
VOID
RestoreBufferList (
- IN OUT LIST_ENTRY *OldBufferList
+ IN OUT LIST_ENTRY *OldBufferList
)
{
FreeBufferList (&ShellInfoObject.BufferToFreeList);
CopyMem (&ShellInfoObject.BufferToFreeList.Link, OldBufferList, sizeof (LIST_ENTRY));
}
-
/**
Add a buffer to the Line History List
@param Buffer The line buffer to add.
**/
VOID
-AddLineToCommandHistory(
- IN CONST CHAR16 *Buffer
+AddLineToCommandHistory (
+ IN CONST CHAR16 *Buffer
)
{
- BUFFER_LIST *Node;
- BUFFER_LIST *Walker;
+ BUFFER_LIST *Node;
+ BUFFER_LIST *Walker;
UINT16 MaxHistoryCmdCount;
UINT16 Count;
- Count = 0;
- MaxHistoryCmdCount = PcdGet16(PcdShellMaxHistoryCommandCount);
+ Count = 0;
+ MaxHistoryCmdCount = PcdGet16 (PcdShellMaxHistoryCommandCount);
if (MaxHistoryCmdCount == 0) {
- return ;
+ return;
}
-
- Node = AllocateZeroPool(sizeof(BUFFER_LIST));
+ Node = AllocateZeroPool (sizeof (BUFFER_LIST));
if (Node == NULL) {
return;
}
@@ -1457,22 +1551,25 @@ AddLineToCommandHistory(
return;
}
- for ( Walker = (BUFFER_LIST*)GetFirstNode(&ShellInfoObject.ViewingSettings.CommandHistory.Link)
- ; !IsNull(&ShellInfoObject.ViewingSettings.CommandHistory.Link, &Walker->Link)
- ; Walker = (BUFFER_LIST*)GetNextNode(&ShellInfoObject.ViewingSettings.CommandHistory.Link, &Walker->Link)
- ){
+ for ( Walker = (BUFFER_LIST *)GetFirstNode (&ShellInfoObject.ViewingSettings.CommandHistory.Link)
+ ; !IsNull (&ShellInfoObject.ViewingSettings.CommandHistory.Link, &Walker->Link)
+ ; Walker = (BUFFER_LIST *)GetNextNode (&ShellInfoObject.ViewingSettings.CommandHistory.Link, &Walker->Link)
+ )
+ {
Count++;
}
- if (Count < MaxHistoryCmdCount){
- InsertTailList(&ShellInfoObject.ViewingSettings.CommandHistory.Link, &Node->Link);
+
+ if (Count < MaxHistoryCmdCount) {
+ InsertTailList (&ShellInfoObject.ViewingSettings.CommandHistory.Link, &Node->Link);
} else {
- Walker = (BUFFER_LIST*)GetFirstNode(&ShellInfoObject.ViewingSettings.CommandHistory.Link);
- RemoveEntryList(&Walker->Link);
+ Walker = (BUFFER_LIST *)GetFirstNode (&ShellInfoObject.ViewingSettings.CommandHistory.Link);
+ RemoveEntryList (&Walker->Link);
if (Walker->Buffer != NULL) {
- FreePool(Walker->Buffer);
+ FreePool (Walker->Buffer);
}
- FreePool(Walker);
- InsertTailList(&ShellInfoObject.ViewingSettings.CommandHistory.Link, &Node->Link);
+
+ FreePool (Walker);
+ InsertTailList (&ShellInfoObject.ViewingSettings.CommandHistory.Link, &Node->Link);
}
}
@@ -1490,21 +1587,23 @@ AddLineToCommandHistory(
@retval EFI_OUT_OF_RESOURCES A memory allocation failed.
**/
EFI_STATUS
-ShellConvertAlias(
- IN OUT CHAR16 **CommandString
+ShellConvertAlias (
+ IN OUT CHAR16 **CommandString
)
{
CONST CHAR16 *NewString;
- NewString = ShellInfoObject.NewEfiShellProtocol->GetAlias(*CommandString, NULL);
+ NewString = ShellInfoObject.NewEfiShellProtocol->GetAlias (*CommandString, NULL);
if (NewString == NULL) {
return (EFI_SUCCESS);
}
- FreePool(*CommandString);
- *CommandString = AllocateCopyPool(StrSize(NewString), NewString);
+
+ FreePool (*CommandString);
+ *CommandString = AllocateCopyPool (StrSize (NewString), NewString);
if (*CommandString == NULL) {
return (EFI_OUT_OF_RESOURCES);
}
+
return (EFI_SUCCESS);
}
@@ -1514,29 +1613,29 @@ ShellConvertAlias(
@param[in,out] CmdLine The command line to update.
**/
EFI_STATUS
-StripUnreplacedEnvironmentVariables(
- IN OUT CHAR16 *CmdLine
+StripUnreplacedEnvironmentVariables (
+ IN OUT CHAR16 *CmdLine
)
{
- CHAR16 *FirstPercent;
- CHAR16 *FirstQuote;
- CHAR16 *SecondPercent;
- CHAR16 *SecondQuote;
- CHAR16 *CurrentLocator;
-
- for (CurrentLocator = CmdLine ; CurrentLocator != NULL ; ) {
- FirstQuote = FindNextInstance(CurrentLocator, L"\"", TRUE);
- FirstPercent = FindNextInstance(CurrentLocator, L"%", TRUE);
- SecondPercent = FirstPercent!=NULL?FindNextInstance(FirstPercent+1, L"%", TRUE):NULL;
- if (FirstPercent == NULL || SecondPercent == NULL) {
+ CHAR16 *FirstPercent;
+ CHAR16 *FirstQuote;
+ CHAR16 *SecondPercent;
+ CHAR16 *SecondQuote;
+ CHAR16 *CurrentLocator;
+
+ for (CurrentLocator = CmdLine; CurrentLocator != NULL; ) {
+ FirstQuote = FindNextInstance (CurrentLocator, L"\"", TRUE);
+ FirstPercent = FindNextInstance (CurrentLocator, L"%", TRUE);
+ SecondPercent = FirstPercent != NULL ? FindNextInstance (FirstPercent+1, L"%", TRUE) : NULL;
+ if ((FirstPercent == NULL) || (SecondPercent == NULL)) {
//
// If we ever don't have 2 % we are done.
//
break;
}
- if (FirstQuote!= NULL && FirstQuote < FirstPercent) {
- SecondQuote = FindNextInstance(FirstQuote+1, L"\"", TRUE);
+ if ((FirstQuote != NULL) && (FirstQuote < FirstPercent)) {
+ SecondQuote = FindNextInstance (FirstQuote+1, L"\"", TRUE);
//
// Quote is first found
//
@@ -1546,31 +1645,36 @@ StripUnreplacedEnvironmentVariables(
// restart after the pair of "
//
CurrentLocator = SecondQuote + 1;
- } else /* FirstPercent < SecondQuote */{
+ } else {
+ /* FirstPercent < SecondQuote */
//
// Restart on the first percent
//
CurrentLocator = FirstPercent;
}
+
continue;
}
- if (FirstQuote == NULL || SecondPercent < FirstQuote) {
- if (IsValidEnvironmentVariableName(FirstPercent, SecondPercent)) {
+ if ((FirstQuote == NULL) || (SecondPercent < FirstQuote)) {
+ if (IsValidEnvironmentVariableName (FirstPercent, SecondPercent)) {
//
// We need to remove from FirstPercent to SecondPercent
//
- CopyMem(FirstPercent, SecondPercent + 1, StrSize(SecondPercent + 1));
+ CopyMem (FirstPercent, SecondPercent + 1, StrSize (SecondPercent + 1));
//
// don't need to update the locator. both % characters are gone.
//
} else {
CurrentLocator = SecondPercent + 1;
}
+
continue;
}
+
CurrentLocator = FirstQuote;
}
+
return (EFI_SUCCESS);
}
@@ -1585,69 +1689,75 @@ StripUnreplacedEnvironmentVariables(
@retval NULL An error occurred.
@return The new command line with no environment variables present.
**/
-CHAR16*
+CHAR16 *
ShellConvertVariables (
- IN CONST CHAR16 *OriginalCommandLine
+ IN CONST CHAR16 *OriginalCommandLine
)
{
- CONST CHAR16 *MasterEnvList;
- UINTN NewSize;
- CHAR16 *NewCommandLine1;
- CHAR16 *NewCommandLine2;
- CHAR16 *Temp;
- UINTN ItemSize;
- CHAR16 *ItemTemp;
- SCRIPT_FILE *CurrentScriptFile;
- ALIAS_LIST *AliasListNode;
-
- ASSERT(OriginalCommandLine != NULL);
+ CONST CHAR16 *MasterEnvList;
+ UINTN NewSize;
+ CHAR16 *NewCommandLine1;
+ CHAR16 *NewCommandLine2;
+ CHAR16 *Temp;
+ UINTN ItemSize;
+ CHAR16 *ItemTemp;
+ SCRIPT_FILE *CurrentScriptFile;
+ ALIAS_LIST *AliasListNode;
+
+ ASSERT (OriginalCommandLine != NULL);
ItemSize = 0;
- NewSize = StrSize(OriginalCommandLine);
- CurrentScriptFile = ShellCommandGetCurrentScriptFile();
+ NewSize = StrSize (OriginalCommandLine);
+ CurrentScriptFile = ShellCommandGetCurrentScriptFile ();
Temp = NULL;
- ///@todo update this to handle the %0 - %9 for scripting only (borrow from line 1256 area) ? ? ?
+ /// @todo update this to handle the %0 - %9 for scripting only (borrow from line 1256 area) ? ? ?
//
// calculate the size required for the post-conversion string...
//
if (CurrentScriptFile != NULL) {
- for (AliasListNode = (ALIAS_LIST*)GetFirstNode(&CurrentScriptFile->SubstList)
- ; !IsNull(&CurrentScriptFile->SubstList, &AliasListNode->Link)
- ; AliasListNode = (ALIAS_LIST*)GetNextNode(&CurrentScriptFile->SubstList, &AliasListNode->Link)
- ){
- for (Temp = StrStr(OriginalCommandLine, AliasListNode->Alias)
- ; Temp != NULL
- ; Temp = StrStr(Temp+1, AliasListNode->Alias)
- ){
+ for (AliasListNode = (ALIAS_LIST *)GetFirstNode (&CurrentScriptFile->SubstList)
+ ; !IsNull (&CurrentScriptFile->SubstList, &AliasListNode->Link)
+ ; AliasListNode = (ALIAS_LIST *)GetNextNode (&CurrentScriptFile->SubstList, &AliasListNode->Link)
+ )
+ {
+ for (Temp = StrStr (OriginalCommandLine, AliasListNode->Alias)
+ ; Temp != NULL
+ ; Temp = StrStr (Temp+1, AliasListNode->Alias)
+ )
+ {
//
// we need a preceding and if there is space no ^ preceding (if no space ignore)
//
- if ((((Temp-OriginalCommandLine)>2) && *(Temp-2) != L'^') || ((Temp-OriginalCommandLine)<=2)) {
- NewSize += StrSize(AliasListNode->CommandString);
+ if ((((Temp-OriginalCommandLine) > 2) && (*(Temp-2) != L'^')) || ((Temp-OriginalCommandLine) <= 2)) {
+ NewSize += StrSize (AliasListNode->CommandString);
}
}
}
}
- for (MasterEnvList = EfiShellGetEnv(NULL)
- ; MasterEnvList != NULL && *MasterEnvList != CHAR_NULL //&& *(MasterEnvList+1) != CHAR_NULL
- ; MasterEnvList += StrLen(MasterEnvList) + 1
- ){
- if (StrSize(MasterEnvList) > ItemSize) {
- ItemSize = StrSize(MasterEnvList);
+ for (MasterEnvList = EfiShellGetEnv (NULL)
+ ; MasterEnvList != NULL && *MasterEnvList != CHAR_NULL // && *(MasterEnvList+1) != CHAR_NULL
+ ; MasterEnvList += StrLen (MasterEnvList) + 1
+ )
+ {
+ if (StrSize (MasterEnvList) > ItemSize) {
+ ItemSize = StrSize (MasterEnvList);
}
- for (Temp = StrStr(OriginalCommandLine, MasterEnvList)
- ; Temp != NULL
- ; Temp = StrStr(Temp+1, MasterEnvList)
- ){
+
+ for (Temp = StrStr (OriginalCommandLine, MasterEnvList)
+ ; Temp != NULL
+ ; Temp = StrStr (Temp+1, MasterEnvList)
+ )
+ {
//
// we need a preceding and following % and if there is space no ^ preceding (if no space ignore)
//
- if (*(Temp-1) == L'%' && *(Temp+StrLen(MasterEnvList)) == L'%' &&
- ((((Temp-OriginalCommandLine)>2) && *(Temp-2) != L'^') || ((Temp-OriginalCommandLine)<=2))) {
- NewSize+=StrSize(EfiShellGetEnv(MasterEnvList));
+ if ((*(Temp-1) == L'%') && (*(Temp+StrLen (MasterEnvList)) == L'%') &&
+ ((((Temp-OriginalCommandLine) > 2) && (*(Temp-2) != L'^')) || ((Temp-OriginalCommandLine) <= 2)))
+ {
+ NewSize += StrSize (EfiShellGetEnv (MasterEnvList));
}
}
}
@@ -1656,58 +1766,65 @@ ShellConvertVariables (
// now do the replacements...
//
NewCommandLine1 = AllocateZeroPool (NewSize);
- NewCommandLine2 = AllocateZeroPool(NewSize);
- ItemTemp = AllocateZeroPool(ItemSize+(2*sizeof(CHAR16)));
- if (NewCommandLine1 == NULL || NewCommandLine2 == NULL || ItemTemp == NULL) {
- SHELL_FREE_NON_NULL(NewCommandLine1);
- SHELL_FREE_NON_NULL(NewCommandLine2);
- SHELL_FREE_NON_NULL(ItemTemp);
+ NewCommandLine2 = AllocateZeroPool (NewSize);
+ ItemTemp = AllocateZeroPool (ItemSize+(2*sizeof (CHAR16)));
+ if ((NewCommandLine1 == NULL) || (NewCommandLine2 == NULL) || (ItemTemp == NULL)) {
+ SHELL_FREE_NON_NULL (NewCommandLine1);
+ SHELL_FREE_NON_NULL (NewCommandLine2);
+ SHELL_FREE_NON_NULL (ItemTemp);
return (NULL);
}
+
CopyMem (NewCommandLine1, OriginalCommandLine, StrSize (OriginalCommandLine));
- for (MasterEnvList = EfiShellGetEnv(NULL)
- ; MasterEnvList != NULL && *MasterEnvList != CHAR_NULL
- ; MasterEnvList += StrLen(MasterEnvList) + 1
- ){
- StrCpyS( ItemTemp,
- ((ItemSize+(2*sizeof(CHAR16)))/sizeof(CHAR16)),
- L"%"
- );
- StrCatS( ItemTemp,
- ((ItemSize+(2*sizeof(CHAR16)))/sizeof(CHAR16)),
- MasterEnvList
- );
- StrCatS( ItemTemp,
- ((ItemSize+(2*sizeof(CHAR16)))/sizeof(CHAR16)),
- L"%"
- );
- ShellCopySearchAndReplace(NewCommandLine1, NewCommandLine2, NewSize, ItemTemp, EfiShellGetEnv(MasterEnvList), TRUE, FALSE);
- StrCpyS(NewCommandLine1, NewSize/sizeof(CHAR16), NewCommandLine2);
+ for (MasterEnvList = EfiShellGetEnv (NULL)
+ ; MasterEnvList != NULL && *MasterEnvList != CHAR_NULL
+ ; MasterEnvList += StrLen (MasterEnvList) + 1
+ )
+ {
+ StrCpyS (
+ ItemTemp,
+ ((ItemSize+(2*sizeof (CHAR16)))/sizeof (CHAR16)),
+ L"%"
+ );
+ StrCatS (
+ ItemTemp,
+ ((ItemSize+(2*sizeof (CHAR16)))/sizeof (CHAR16)),
+ MasterEnvList
+ );
+ StrCatS (
+ ItemTemp,
+ ((ItemSize+(2*sizeof (CHAR16)))/sizeof (CHAR16)),
+ L"%"
+ );
+ ShellCopySearchAndReplace (NewCommandLine1, NewCommandLine2, NewSize, ItemTemp, EfiShellGetEnv (MasterEnvList), TRUE, FALSE);
+ StrCpyS (NewCommandLine1, NewSize/sizeof (CHAR16), NewCommandLine2);
}
+
if (CurrentScriptFile != NULL) {
- for (AliasListNode = (ALIAS_LIST*)GetFirstNode(&CurrentScriptFile->SubstList)
- ; !IsNull(&CurrentScriptFile->SubstList, &AliasListNode->Link)
- ; AliasListNode = (ALIAS_LIST*)GetNextNode(&CurrentScriptFile->SubstList, &AliasListNode->Link)
- ){
- ShellCopySearchAndReplace(NewCommandLine1, NewCommandLine2, NewSize, AliasListNode->Alias, AliasListNode->CommandString, TRUE, FALSE);
- StrCpyS(NewCommandLine1, NewSize/sizeof(CHAR16), NewCommandLine2);
+ for (AliasListNode = (ALIAS_LIST *)GetFirstNode (&CurrentScriptFile->SubstList)
+ ; !IsNull (&CurrentScriptFile->SubstList, &AliasListNode->Link)
+ ; AliasListNode = (ALIAS_LIST *)GetNextNode (&CurrentScriptFile->SubstList, &AliasListNode->Link)
+ )
+ {
+ ShellCopySearchAndReplace (NewCommandLine1, NewCommandLine2, NewSize, AliasListNode->Alias, AliasListNode->CommandString, TRUE, FALSE);
+ StrCpyS (NewCommandLine1, NewSize/sizeof (CHAR16), NewCommandLine2);
}
}
//
// Remove non-existent environment variables
//
- StripUnreplacedEnvironmentVariables(NewCommandLine1);
+ StripUnreplacedEnvironmentVariables (NewCommandLine1);
//
// Now cleanup any straggler intentionally ignored "%" characters
//
- ShellCopySearchAndReplace(NewCommandLine1, NewCommandLine2, NewSize, L"^%", L"%", TRUE, FALSE);
- StrCpyS(NewCommandLine1, NewSize/sizeof(CHAR16), NewCommandLine2);
+ ShellCopySearchAndReplace (NewCommandLine1, NewCommandLine2, NewSize, L"^%", L"%", TRUE, FALSE);
+ StrCpyS (NewCommandLine1, NewSize/sizeof (CHAR16), NewCommandLine2);
- FreePool(NewCommandLine2);
- FreePool(ItemTemp);
+ FreePool (NewCommandLine2);
+ FreePool (ItemTemp);
return (NewCommandLine1);
}
@@ -1723,24 +1840,24 @@ ShellConvertVariables (
@retval other Some error occurs when executing the split command.
**/
EFI_STATUS
-RunSplitCommand(
+RunSplitCommand (
IN CONST CHAR16 *CmdLine,
IN SHELL_FILE_HANDLE StdIn,
IN SHELL_FILE_HANDLE StdOut
)
{
- EFI_STATUS Status;
- CHAR16 *NextCommandLine;
- CHAR16 *OurCommandLine;
- UINTN Size1;
- UINTN Size2;
- SPLIT_LIST *Split;
- SHELL_FILE_HANDLE TempFileHandle;
- BOOLEAN Unicode;
+ EFI_STATUS Status;
+ CHAR16 *NextCommandLine;
+ CHAR16 *OurCommandLine;
+ UINTN Size1;
+ UINTN Size2;
+ SPLIT_LIST *Split;
+ SHELL_FILE_HANDLE TempFileHandle;
+ BOOLEAN Unicode;
- ASSERT(StdOut == NULL);
+ ASSERT (StdOut == NULL);
- ASSERT(StrStr(CmdLine, L"|") != NULL);
+ ASSERT (StrStr (CmdLine, L"|") != NULL);
Status = EFI_SUCCESS;
NextCommandLine = NULL;
@@ -1748,70 +1865,74 @@ RunSplitCommand(
Size1 = 0;
Size2 = 0;
- NextCommandLine = StrnCatGrow(&NextCommandLine, &Size1, StrStr(CmdLine, L"|")+1, 0);
- OurCommandLine = StrnCatGrow(&OurCommandLine , &Size2, CmdLine , StrStr(CmdLine, L"|") - CmdLine);
+ NextCommandLine = StrnCatGrow (&NextCommandLine, &Size1, StrStr (CmdLine, L"|")+1, 0);
+ OurCommandLine = StrnCatGrow (&OurCommandLine, &Size2, CmdLine, StrStr (CmdLine, L"|") - CmdLine);
- if (NextCommandLine == NULL || OurCommandLine == NULL) {
- SHELL_FREE_NON_NULL(OurCommandLine);
- SHELL_FREE_NON_NULL(NextCommandLine);
+ if ((NextCommandLine == NULL) || (OurCommandLine == NULL)) {
+ SHELL_FREE_NON_NULL (OurCommandLine);
+ SHELL_FREE_NON_NULL (NextCommandLine);
return (EFI_OUT_OF_RESOURCES);
- } else if (StrStr(OurCommandLine, L"|") != NULL || Size1 == 0 || Size2 == 0) {
- SHELL_FREE_NON_NULL(OurCommandLine);
- SHELL_FREE_NON_NULL(NextCommandLine);
+ } else if ((StrStr (OurCommandLine, L"|") != NULL) || (Size1 == 0) || (Size2 == 0)) {
+ SHELL_FREE_NON_NULL (OurCommandLine);
+ SHELL_FREE_NON_NULL (NextCommandLine);
return (EFI_INVALID_PARAMETER);
- } else if (NextCommandLine[0] == L'a' &&
- (NextCommandLine[1] == L' ' || NextCommandLine[1] == CHAR_NULL)
- ){
- CopyMem(NextCommandLine, NextCommandLine+1, StrSize(NextCommandLine) - sizeof(NextCommandLine[0]));
+ } else if ((NextCommandLine[0] == L'a') &&
+ ((NextCommandLine[1] == L' ') || (NextCommandLine[1] == CHAR_NULL))
+ )
+ {
+ CopyMem (NextCommandLine, NextCommandLine+1, StrSize (NextCommandLine) - sizeof (NextCommandLine[0]));
while (NextCommandLine[0] == L' ') {
- CopyMem(NextCommandLine, NextCommandLine+1, StrSize(NextCommandLine) - sizeof(NextCommandLine[0]));
+ CopyMem (NextCommandLine, NextCommandLine+1, StrSize (NextCommandLine) - sizeof (NextCommandLine[0]));
}
+
if (NextCommandLine[0] == CHAR_NULL) {
- SHELL_FREE_NON_NULL(OurCommandLine);
- SHELL_FREE_NON_NULL(NextCommandLine);
+ SHELL_FREE_NON_NULL (OurCommandLine);
+ SHELL_FREE_NON_NULL (NextCommandLine);
return (EFI_INVALID_PARAMETER);
}
+
Unicode = FALSE;
} else {
Unicode = TRUE;
}
-
//
// make a SPLIT_LIST item and add to list
//
- Split = AllocateZeroPool(sizeof(SPLIT_LIST));
+ Split = AllocateZeroPool (sizeof (SPLIT_LIST));
if (Split == NULL) {
return EFI_OUT_OF_RESOURCES;
}
- Split->SplitStdIn = StdIn;
- Split->SplitStdOut = ConvertEfiFileProtocolToShellHandle(CreateFileInterfaceMem(Unicode), NULL);
- ASSERT(Split->SplitStdOut != NULL);
- InsertHeadList(&ShellInfoObject.SplitList.Link, &Split->Link);
- Status = RunCommand(OurCommandLine);
+ Split->SplitStdIn = StdIn;
+ Split->SplitStdOut = ConvertEfiFileProtocolToShellHandle (CreateFileInterfaceMem (Unicode), NULL);
+ ASSERT (Split->SplitStdOut != NULL);
+ InsertHeadList (&ShellInfoObject.SplitList.Link, &Split->Link);
+
+ Status = RunCommand (OurCommandLine);
//
// move the output from the first to the in to the second.
//
- TempFileHandle = Split->SplitStdOut;
+ TempFileHandle = Split->SplitStdOut;
if (Split->SplitStdIn == StdIn) {
Split->SplitStdOut = NULL;
} else {
- Split->SplitStdOut = Split->SplitStdIn;
+ Split->SplitStdOut = Split->SplitStdIn;
}
- Split->SplitStdIn = TempFileHandle;
+
+ Split->SplitStdIn = TempFileHandle;
ShellInfoObject.NewEfiShellProtocol->SetFilePosition (Split->SplitStdIn, 0);
- if (!EFI_ERROR(Status)) {
- Status = RunCommand(NextCommandLine);
+ if (!EFI_ERROR (Status)) {
+ Status = RunCommand (NextCommandLine);
}
//
// remove the top level from the ScriptList
//
- ASSERT((SPLIT_LIST*)GetFirstNode(&ShellInfoObject.SplitList.Link) == Split);
- RemoveEntryList(&Split->Link);
+ ASSERT ((SPLIT_LIST *)GetFirstNode (&ShellInfoObject.SplitList.Link) == Split);
+ RemoveEntryList (&Split->Link);
//
// Note that the original StdIn is now the StdOut...
@@ -1819,13 +1940,14 @@ RunSplitCommand(
if (Split->SplitStdOut != NULL) {
ShellInfoObject.NewEfiShellProtocol->CloseFile (Split->SplitStdOut);
}
+
if (Split->SplitStdIn != NULL) {
ShellInfoObject.NewEfiShellProtocol->CloseFile (Split->SplitStdIn);
}
- FreePool(Split);
- FreePool(NextCommandLine);
- FreePool(OurCommandLine);
+ FreePool (Split);
+ FreePool (NextCommandLine);
+ FreePool (OurCommandLine);
return (Status);
}
@@ -1840,16 +1962,18 @@ RunSplitCommand(
@retval EFI_OUT_OF_RESOURCES a memory allocation failed.
**/
EFI_STATUS
-ShellSubstituteVariables(
- IN CHAR16 **CmdLine
+ShellSubstituteVariables (
+ IN CHAR16 **CmdLine
)
{
- CHAR16 *NewCmdLine;
- NewCmdLine = ShellConvertVariables(*CmdLine);
- SHELL_FREE_NON_NULL(*CmdLine);
+ CHAR16 *NewCmdLine;
+
+ NewCmdLine = ShellConvertVariables (*CmdLine);
+ SHELL_FREE_NON_NULL (*CmdLine);
if (NewCmdLine == NULL) {
return (EFI_OUT_OF_RESOURCES);
}
+
*CmdLine = NewCmdLine;
return (EFI_SUCCESS);
}
@@ -1864,56 +1988,58 @@ ShellSubstituteVariables(
@retval EFI_OUT_OF_RESOURCES a memory allocation failed.
**/
EFI_STATUS
-ShellSubstituteAliases(
- IN CHAR16 **CmdLine
+ShellSubstituteAliases (
+ IN CHAR16 **CmdLine
)
{
CHAR16 *NewCmdLine;
CHAR16 *CommandName;
EFI_STATUS Status;
UINTN PostAliasSize;
- ASSERT(CmdLine != NULL);
- ASSERT(*CmdLine!= NULL);
+ ASSERT (CmdLine != NULL);
+ ASSERT (*CmdLine != NULL);
CommandName = NULL;
- if (StrStr((*CmdLine), L" ") == NULL){
- StrnCatGrow(&CommandName, NULL, (*CmdLine), 0);
+ if (StrStr ((*CmdLine), L" ") == NULL) {
+ StrnCatGrow (&CommandName, NULL, (*CmdLine), 0);
} else {
- StrnCatGrow(&CommandName, NULL, (*CmdLine), StrStr((*CmdLine), L" ") - (*CmdLine));
+ StrnCatGrow (&CommandName, NULL, (*CmdLine), StrStr ((*CmdLine), L" ") - (*CmdLine));
}
//
// This cannot happen 'inline' since the CmdLine can need extra space.
//
NewCmdLine = NULL;
- if (!ShellCommandIsCommandOnList(CommandName)) {
+ if (!ShellCommandIsCommandOnList (CommandName)) {
//
// Convert via alias
//
- Status = ShellConvertAlias(&CommandName);
- if (EFI_ERROR(Status)){
+ Status = ShellConvertAlias (&CommandName);
+ if (EFI_ERROR (Status)) {
return (Status);
}
+
PostAliasSize = 0;
- NewCmdLine = StrnCatGrow(&NewCmdLine, &PostAliasSize, CommandName, 0);
+ NewCmdLine = StrnCatGrow (&NewCmdLine, &PostAliasSize, CommandName, 0);
if (NewCmdLine == NULL) {
- SHELL_FREE_NON_NULL(CommandName);
- SHELL_FREE_NON_NULL(*CmdLine);
+ SHELL_FREE_NON_NULL (CommandName);
+ SHELL_FREE_NON_NULL (*CmdLine);
return (EFI_OUT_OF_RESOURCES);
}
- NewCmdLine = StrnCatGrow(&NewCmdLine, &PostAliasSize, StrStr((*CmdLine), L" "), 0);
+
+ NewCmdLine = StrnCatGrow (&NewCmdLine, &PostAliasSize, StrStr ((*CmdLine), L" "), 0);
if (NewCmdLine == NULL) {
- SHELL_FREE_NON_NULL(CommandName);
- SHELL_FREE_NON_NULL(*CmdLine);
+ SHELL_FREE_NON_NULL (CommandName);
+ SHELL_FREE_NON_NULL (*CmdLine);
return (EFI_OUT_OF_RESOURCES);
}
} else {
- NewCmdLine = StrnCatGrow(&NewCmdLine, NULL, (*CmdLine), 0);
+ NewCmdLine = StrnCatGrow (&NewCmdLine, NULL, (*CmdLine), 0);
}
- SHELL_FREE_NON_NULL(*CmdLine);
- SHELL_FREE_NON_NULL(CommandName);
+ SHELL_FREE_NON_NULL (*CmdLine);
+ SHELL_FREE_NON_NULL (CommandName);
//
// re-assign the passed in double pointer to point to our newly allocated buffer
@@ -1935,46 +2061,48 @@ ShellSubstituteAliases(
@retval Efi_Application the name is an application (.EFI).
**/
SHELL_OPERATION_TYPES
-GetOperationType(
- IN CONST CHAR16 *CmdName
+GetOperationType (
+ IN CONST CHAR16 *CmdName
)
{
- CHAR16* FileWithPath;
- CONST CHAR16* TempLocation;
- CONST CHAR16* TempLocation2;
+ CHAR16 *FileWithPath;
+ CONST CHAR16 *TempLocation;
+ CONST CHAR16 *TempLocation2;
FileWithPath = NULL;
//
// test for an internal command.
//
- if (ShellCommandIsCommandOnList(CmdName)) {
+ if (ShellCommandIsCommandOnList (CmdName)) {
return (Internal_Command);
}
//
// Test for file system change request. anything ending with first : and cant have spaces.
//
- if (CmdName[(StrLen(CmdName)-1)] == L':') {
- if ( StrStr(CmdName, L" ") != NULL
- || StrLen(StrStr(CmdName, L":")) > 1
- ) {
+ if (CmdName[(StrLen (CmdName)-1)] == L':') {
+ if ( (StrStr (CmdName, L" ") != NULL)
+ || (StrLen (StrStr (CmdName, L":")) > 1)
+ )
+ {
return (Unknown_Invalid);
}
+
return (File_Sys_Change);
}
//
// Test for a file
//
- if ((FileWithPath = ShellFindFilePathEx(CmdName, mExecutableExtensions)) != NULL) {
+ if ((FileWithPath = ShellFindFilePathEx (CmdName, mExecutableExtensions)) != NULL) {
//
// See if that file has a script file extension
//
- if (StrLen(FileWithPath) > 4) {
- TempLocation = FileWithPath+StrLen(FileWithPath)-4;
+ if (StrLen (FileWithPath) > 4) {
+ TempLocation = FileWithPath+StrLen (FileWithPath)-4;
TempLocation2 = mScriptExtension;
- if (StringNoCaseCompare((VOID*)(&TempLocation), (VOID*)(&TempLocation2)) == 0) {
- SHELL_FREE_NON_NULL(FileWithPath);
+ if (StringNoCaseCompare ((VOID *)(&TempLocation), (VOID *)(&TempLocation2)) == 0) {
+ SHELL_FREE_NON_NULL (FileWithPath);
return (Script_File_Name);
}
}
@@ -1982,11 +2110,11 @@ GetOperationType(
//
// Was a file, but not a script. we treat this as an application.
//
- SHELL_FREE_NON_NULL(FileWithPath);
+ SHELL_FREE_NON_NULL (FileWithPath);
return (Efi_Application);
}
- SHELL_FREE_NON_NULL(FileWithPath);
+ SHELL_FREE_NON_NULL (FileWithPath);
//
// No clue what this is... return invalid flag...
//
@@ -2003,23 +2131,23 @@ GetOperationType(
@retval EFI_NOT_FOUND The operation type is unknown or invalid.
**/
EFI_STATUS
-IsValidSplit(
- IN CONST CHAR16 *CmdLine
+IsValidSplit (
+ IN CONST CHAR16 *CmdLine
)
{
- CHAR16 *Temp;
- CHAR16 *FirstParameter;
- CHAR16 *TempWalker;
- EFI_STATUS Status;
+ CHAR16 *Temp;
+ CHAR16 *FirstParameter;
+ CHAR16 *TempWalker;
+ EFI_STATUS Status;
- Temp = NULL;
+ Temp = NULL;
- Temp = StrnCatGrow(&Temp, NULL, CmdLine, 0);
+ Temp = StrnCatGrow (&Temp, NULL, CmdLine, 0);
if (Temp == NULL) {
return (EFI_OUT_OF_RESOURCES);
}
- FirstParameter = StrStr(Temp, L"|");
+ FirstParameter = StrStr (Temp, L"|");
if (FirstParameter != NULL) {
*FirstParameter = CHAR_NULL;
}
@@ -2029,26 +2157,27 @@ IsValidSplit(
//
// Process the command line
//
- Status = ProcessCommandLineToFinal(&Temp);
+ Status = ProcessCommandLineToFinal (&Temp);
- if (!EFI_ERROR(Status)) {
- FirstParameter = AllocateZeroPool(StrSize(CmdLine));
+ if (!EFI_ERROR (Status)) {
+ FirstParameter = AllocateZeroPool (StrSize (CmdLine));
if (FirstParameter == NULL) {
- SHELL_FREE_NON_NULL(Temp);
+ SHELL_FREE_NON_NULL (Temp);
return (EFI_OUT_OF_RESOURCES);
}
- TempWalker = (CHAR16*)Temp;
- if (!EFI_ERROR(GetNextParameter(&TempWalker, &FirstParameter, StrSize(CmdLine), TRUE))) {
- if (GetOperationType(FirstParameter) == Unknown_Invalid) {
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_NOT_FOUND), ShellInfoObject.HiiHandle, FirstParameter);
- SetLastError(SHELL_NOT_FOUND);
+
+ TempWalker = (CHAR16 *)Temp;
+ if (!EFI_ERROR (GetNextParameter (&TempWalker, &FirstParameter, StrSize (CmdLine), TRUE))) {
+ if (GetOperationType (FirstParameter) == Unknown_Invalid) {
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SHELL_NOT_FOUND), ShellInfoObject.HiiHandle, FirstParameter);
+ SetLastError (SHELL_NOT_FOUND);
Status = EFI_NOT_FOUND;
}
}
}
- SHELL_FREE_NON_NULL(Temp);
- SHELL_FREE_NON_NULL(FirstParameter);
+ SHELL_FREE_NON_NULL (Temp);
+ SHELL_FREE_NON_NULL (FirstParameter);
return Status;
}
@@ -2061,8 +2190,8 @@ IsValidSplit(
@retval EFI_ABORTED CmdLine has at least one invalid command or application.
**/
EFI_STATUS
-VerifySplit(
- IN CONST CHAR16 *CmdLine
+VerifySplit (
+ IN CONST CHAR16 *CmdLine
)
{
CONST CHAR16 *TempSpot;
@@ -2071,30 +2200,31 @@ VerifySplit(
//
// If this was the only item, then get out
//
- if (!ContainsSplit(CmdLine)) {
+ if (!ContainsSplit (CmdLine)) {
return (EFI_SUCCESS);
}
//
// Verify up to the pipe or end character
//
- Status = IsValidSplit(CmdLine);
- if (EFI_ERROR(Status)) {
+ Status = IsValidSplit (CmdLine);
+ if (EFI_ERROR (Status)) {
return (Status);
}
//
// recurse to verify the next item
//
- TempSpot = FindFirstCharacter(CmdLine, L"|", L'^') + 1;
- if (*TempSpot == L'a' &&
- (*(TempSpot + 1) == L' ' || *(TempSpot + 1) == CHAR_NULL)
- ) {
+ TempSpot = FindFirstCharacter (CmdLine, L"|", L'^') + 1;
+ if ((*TempSpot == L'a') &&
+ ((*(TempSpot + 1) == L' ') || (*(TempSpot + 1) == CHAR_NULL))
+ )
+ {
// If it's an ASCII pipe '|a'
TempSpot += 1;
}
- return (VerifySplit(TempSpot));
+ return (VerifySplit (TempSpot));
}
/**
@@ -2106,15 +2236,15 @@ VerifySplit(
@return an error occurred.
**/
EFI_STATUS
-ProcessNewSplitCommandLine(
- IN CONST CHAR16 *CmdLine
+ProcessNewSplitCommandLine (
+ IN CONST CHAR16 *CmdLine
)
{
- SPLIT_LIST *Split;
- EFI_STATUS Status;
+ SPLIT_LIST *Split;
+ EFI_STATUS Status;
- Status = VerifySplit(CmdLine);
- if (EFI_ERROR(Status)) {
+ Status = VerifySplit (CmdLine);
+ if (EFI_ERROR (Status)) {
return (Status);
}
@@ -2123,18 +2253,20 @@ ProcessNewSplitCommandLine(
//
// are we in an existing split???
//
- if (!IsListEmpty(&ShellInfoObject.SplitList.Link)) {
- Split = (SPLIT_LIST*)GetFirstNode(&ShellInfoObject.SplitList.Link);
+ if (!IsListEmpty (&ShellInfoObject.SplitList.Link)) {
+ Split = (SPLIT_LIST *)GetFirstNode (&ShellInfoObject.SplitList.Link);
}
if (Split == NULL) {
- Status = RunSplitCommand(CmdLine, NULL, NULL);
+ Status = RunSplitCommand (CmdLine, NULL, NULL);
} else {
- Status = RunSplitCommand(CmdLine, Split->SplitStdIn, Split->SplitStdOut);
+ Status = RunSplitCommand (CmdLine, Split->SplitStdIn, Split->SplitStdOut);
}
- if (EFI_ERROR(Status)) {
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_INVALID_SPLIT), ShellInfoObject.HiiHandle, CmdLine);
+
+ if (EFI_ERROR (Status)) {
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SHELL_INVALID_SPLIT), ShellInfoObject.HiiHandle, CmdLine);
}
+
return (Status);
}
@@ -2146,28 +2278,29 @@ ProcessNewSplitCommandLine(
@retval EFI_SUCCESS The operation was successful.
**/
EFI_STATUS
-ChangeMappedDrive(
- IN CONST CHAR16 *CmdLine
+ChangeMappedDrive (
+ IN CONST CHAR16 *CmdLine
)
{
- EFI_STATUS Status;
+ EFI_STATUS Status;
+
Status = EFI_SUCCESS;
//
// make sure we are the right operation
//
- ASSERT(CmdLine[(StrLen(CmdLine)-1)] == L':' && StrStr(CmdLine, L" ") == NULL);
+ ASSERT (CmdLine[(StrLen (CmdLine)-1)] == L':' && StrStr (CmdLine, L" ") == NULL);
//
// Call the protocol API to do the work
//
- Status = ShellInfoObject.NewEfiShellProtocol->SetCurDir(NULL, CmdLine);
+ Status = ShellInfoObject.NewEfiShellProtocol->SetCurDir (NULL, CmdLine);
//
// Report any errors
//
- if (EFI_ERROR(Status)) {
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_INVALID_MAPPING), ShellInfoObject.HiiHandle, CmdLine);
+ if (EFI_ERROR (Status)) {
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SHELL_INVALID_MAPPING), ShellInfoObject.HiiHandle, CmdLine);
}
return (Status);
@@ -2181,31 +2314,31 @@ ChangeMappedDrive(
@param[in,out] CmdLine pointer to the command line to update
**/
EFI_STATUS
-DoHelpUpdate(
- IN OUT CHAR16 **CmdLine
+DoHelpUpdate (
+ IN OUT CHAR16 **CmdLine
)
{
- CHAR16 *CurrentParameter;
- CHAR16 *Walker;
- CHAR16 *NewCommandLine;
- EFI_STATUS Status;
- UINTN NewCmdLineSize;
+ CHAR16 *CurrentParameter;
+ CHAR16 *Walker;
+ CHAR16 *NewCommandLine;
+ EFI_STATUS Status;
+ UINTN NewCmdLineSize;
Status = EFI_SUCCESS;
- CurrentParameter = AllocateZeroPool(StrSize(*CmdLine));
+ CurrentParameter = AllocateZeroPool (StrSize (*CmdLine));
if (CurrentParameter == NULL) {
return (EFI_OUT_OF_RESOURCES);
}
Walker = *CmdLine;
- while(Walker != NULL && *Walker != CHAR_NULL) {
- if (!EFI_ERROR(GetNextParameter(&Walker, &CurrentParameter, StrSize(*CmdLine), TRUE))) {
- if (StrStr(CurrentParameter, L"-?") == CurrentParameter) {
+ while (Walker != NULL && *Walker != CHAR_NULL) {
+ if (!EFI_ERROR (GetNextParameter (&Walker, &CurrentParameter, StrSize (*CmdLine), TRUE))) {
+ if (StrStr (CurrentParameter, L"-?") == CurrentParameter) {
CurrentParameter[0] = L' ';
CurrentParameter[1] = L' ';
- NewCmdLineSize = StrSize(L"help ") + StrSize(*CmdLine);
- NewCommandLine = AllocateZeroPool(NewCmdLineSize);
+ NewCmdLineSize = StrSize (L"help ") + StrSize (*CmdLine);
+ NewCommandLine = AllocateZeroPool (NewCmdLineSize);
if (NewCommandLine == NULL) {
Status = EFI_OUT_OF_RESOURCES;
break;
@@ -2214,16 +2347,16 @@ DoHelpUpdate(
//
// We know the space is sufficient since we just calculated it.
//
- StrnCpyS(NewCommandLine, NewCmdLineSize/sizeof(CHAR16), L"help ", 5);
- StrnCatS(NewCommandLine, NewCmdLineSize/sizeof(CHAR16), *CmdLine, StrLen(*CmdLine));
- SHELL_FREE_NON_NULL(*CmdLine);
+ StrnCpyS (NewCommandLine, NewCmdLineSize/sizeof (CHAR16), L"help ", 5);
+ StrnCatS (NewCommandLine, NewCmdLineSize/sizeof (CHAR16), *CmdLine, StrLen (*CmdLine));
+ SHELL_FREE_NON_NULL (*CmdLine);
*CmdLine = NewCommandLine;
break;
}
}
}
- SHELL_FREE_NON_NULL(CurrentParameter);
+ SHELL_FREE_NON_NULL (CurrentParameter);
return (Status);
}
@@ -2234,18 +2367,22 @@ DoHelpUpdate(
@param[in] ErrorCode the error code to put into lasterror.
**/
EFI_STATUS
-SetLastError(
- IN CONST SHELL_STATUS ErrorCode
+SetLastError (
+ IN CONST SHELL_STATUS ErrorCode
)
{
- CHAR16 LeString[19];
- if (sizeof(EFI_STATUS) == sizeof(UINT64)) {
- UnicodeSPrint(LeString, sizeof(LeString), L"0x%Lx", ErrorCode);
+ CHAR16 LeString[19];
+
+ if (sizeof (EFI_STATUS) == sizeof (UINT64)) {
+ UnicodeSPrint (LeString, sizeof (LeString), L"0x%Lx", ErrorCode);
} else {
- UnicodeSPrint(LeString, sizeof(LeString), L"0x%x", ErrorCode);
+ UnicodeSPrint (LeString, sizeof (LeString), L"0x%x", ErrorCode);
}
- DEBUG_CODE(InternalEfiShellSetEnv(L"debuglasterror", LeString, TRUE););
- InternalEfiShellSetEnv(L"lasterror", LeString, TRUE);
+
+ DEBUG_CODE (
+ InternalEfiShellSetEnv (L"debuglasterror", LeString, TRUE);
+ );
+ InternalEfiShellSetEnv (L"lasterror", LeString, TRUE);
return (EFI_SUCCESS);
}
@@ -2260,40 +2397,42 @@ SetLastError(
@return some other error occurred
**/
EFI_STATUS
-ProcessCommandLineToFinal(
- IN OUT CHAR16 **CmdLine
+ProcessCommandLineToFinal (
+ IN OUT CHAR16 **CmdLine
)
{
- EFI_STATUS Status;
- TrimSpaces(CmdLine);
+ EFI_STATUS Status;
+
+ TrimSpaces (CmdLine);
- Status = ShellSubstituteAliases(CmdLine);
- if (EFI_ERROR(Status)) {
+ Status = ShellSubstituteAliases (CmdLine);
+ if (EFI_ERROR (Status)) {
return (Status);
}
- TrimSpaces(CmdLine);
+ TrimSpaces (CmdLine);
- Status = ShellSubstituteVariables(CmdLine);
- if (EFI_ERROR(Status)) {
+ Status = ShellSubstituteVariables (CmdLine);
+ if (EFI_ERROR (Status)) {
return (Status);
}
+
ASSERT (*CmdLine != NULL);
- TrimSpaces(CmdLine);
+ TrimSpaces (CmdLine);
//
// update for help parsing
//
- if (StrStr(*CmdLine, L"?") != NULL) {
+ if (StrStr (*CmdLine, L"?") != NULL) {
//
// This may do nothing if the ? does not indicate help.
// Save all the details for in the API below.
//
- Status = DoHelpUpdate(CmdLine);
+ Status = DoHelpUpdate (CmdLine);
}
- TrimSpaces(CmdLine);
+ TrimSpaces (CmdLine);
return (EFI_SUCCESS);
}
@@ -2312,43 +2451,43 @@ ProcessCommandLineToFinal(
@retval EFI_ABORTED The command's operation was aborted.
**/
EFI_STATUS
-RunInternalCommand(
+RunInternalCommand (
IN CONST CHAR16 *CmdLine,
IN CHAR16 *FirstParameter,
IN EFI_SHELL_PARAMETERS_PROTOCOL *ParamProtocol,
OUT EFI_STATUS *CommandStatus
-)
+ )
{
- EFI_STATUS Status;
- UINTN Argc;
- CHAR16 **Argv;
- SHELL_STATUS CommandReturnedStatus;
- BOOLEAN LastError;
- CHAR16 *Walker;
- CHAR16 *NewCmdLine;
+ EFI_STATUS Status;
+ UINTN Argc;
+ CHAR16 **Argv;
+ SHELL_STATUS CommandReturnedStatus;
+ BOOLEAN LastError;
+ CHAR16 *Walker;
+ CHAR16 *NewCmdLine;
NewCmdLine = AllocateCopyPool (StrSize (CmdLine), CmdLine);
if (NewCmdLine == NULL) {
return EFI_OUT_OF_RESOURCES;
}
- for (Walker = NewCmdLine; Walker != NULL && *Walker != CHAR_NULL ; Walker++) {
- if (*Walker == L'^' && *(Walker+1) == L'#') {
- CopyMem(Walker, Walker+1, StrSize(Walker) - sizeof(Walker[0]));
+ for (Walker = NewCmdLine; Walker != NULL && *Walker != CHAR_NULL; Walker++) {
+ if ((*Walker == L'^') && (*(Walker+1) == L'#')) {
+ CopyMem (Walker, Walker+1, StrSize (Walker) - sizeof (Walker[0]));
}
}
//
// get the argc and argv updated for internal commands
//
- Status = UpdateArgcArgv(ParamProtocol, NewCmdLine, Internal_Command, &Argv, &Argc);
- if (!EFI_ERROR(Status)) {
+ Status = UpdateArgcArgv (ParamProtocol, NewCmdLine, Internal_Command, &Argv, &Argc);
+ if (!EFI_ERROR (Status)) {
//
// Run the internal command.
//
- Status = ShellCommandRunCommandHandler(FirstParameter, &CommandReturnedStatus, &LastError);
+ Status = ShellCommandRunCommandHandler (FirstParameter, &CommandReturnedStatus, &LastError);
- if (!EFI_ERROR(Status)) {
+ if (!EFI_ERROR (Status)) {
if (CommandStatus != NULL) {
if (CommandReturnedStatus != SHELL_SUCCESS) {
*CommandStatus = (EFI_STATUS)(CommandReturnedStatus | MAX_BIT);
@@ -2362,23 +2501,23 @@ RunInternalCommand(
// some commands do not update last error.
//
if (LastError) {
- SetLastError(CommandReturnedStatus);
+ SetLastError (CommandReturnedStatus);
}
//
// Pass thru the exitcode from the app.
//
- if (ShellCommandGetExit()) {
+ if (ShellCommandGetExit ()) {
//
// An Exit was requested ("exit" command), pass its value up.
//
Status = CommandReturnedStatus;
- } else if (CommandReturnedStatus != SHELL_SUCCESS && IsScriptOnlyCommand(FirstParameter)) {
+ } else if ((CommandReturnedStatus != SHELL_SUCCESS) && IsScriptOnlyCommand (FirstParameter)) {
//
// Always abort when a script only command fails for any reason
//
Status = EFI_ABORTED;
- } else if (ShellCommandGetCurrentScriptFile() != NULL && CommandReturnedStatus == SHELL_ABORTED) {
+ } else if ((ShellCommandGetCurrentScriptFile () != NULL) && (CommandReturnedStatus == SHELL_ABORTED)) {
//
// Abort when in a script and a command aborted
//
@@ -2391,7 +2530,7 @@ RunInternalCommand(
// This is guaranteed to be called after UpdateArgcArgv no matter what else happened.
// This is safe even if the update API failed. In this case, it may be a no-op.
//
- RestoreArgcArgv(ParamProtocol, &Argv, &Argc);
+ RestoreArgcArgv (ParamProtocol, &Argv, &Argc);
//
// If a script is running and the command is not a script only command, then
@@ -2400,10 +2539,11 @@ RunInternalCommand(
// Script only commands have to be able halt the script since the script will
// not operate if they are failing.
//
- if ( ShellCommandGetCurrentScriptFile() != NULL
- && !IsScriptOnlyCommand(FirstParameter)
- && Status != EFI_ABORTED
- ) {
+ if ( (ShellCommandGetCurrentScriptFile () != NULL)
+ && !IsScriptOnlyCommand (FirstParameter)
+ && (Status != EFI_ABORTED)
+ )
+ {
Status = EFI_SUCCESS;
}
@@ -2424,13 +2564,13 @@ RunInternalCommand(
@retval EFI_ABORTED The command's operation was aborted.
**/
EFI_STATUS
-RunCommandOrFile(
+RunCommandOrFile (
IN SHELL_OPERATION_TYPES Type,
IN CONST CHAR16 *CmdLine,
IN CHAR16 *FirstParameter,
IN EFI_SHELL_PARAMETERS_PROTOCOL *ParamProtocol,
OUT EFI_STATUS *CommandStatus
-)
+ )
{
EFI_STATUS Status;
EFI_STATUS StartStatus;
@@ -2439,24 +2579,24 @@ RunCommandOrFile(
EFI_DEVICE_PATH_PROTOCOL *DevPath;
SHELL_STATUS CalleeExitStatus;
- Status = EFI_SUCCESS;
- CommandWithPath = NULL;
- DevPath = NULL;
- CalleeExitStatus = SHELL_INVALID_PARAMETER;
+ Status = EFI_SUCCESS;
+ CommandWithPath = NULL;
+ DevPath = NULL;
+ CalleeExitStatus = SHELL_INVALID_PARAMETER;
switch (Type) {
- case Internal_Command:
- Status = RunInternalCommand(CmdLine, FirstParameter, ParamProtocol, CommandStatus);
+ case Internal_Command:
+ Status = RunInternalCommand (CmdLine, FirstParameter, ParamProtocol, CommandStatus);
break;
- case Script_File_Name:
- case Efi_Application:
+ case Script_File_Name:
+ case Efi_Application:
//
// Process a fully qualified path
//
- if (StrStr(FirstParameter, L":") != NULL) {
+ if (StrStr (FirstParameter, L":") != NULL) {
ASSERT (CommandWithPath == NULL);
- if (ShellIsFile(FirstParameter) == EFI_SUCCESS) {
- CommandWithPath = StrnCatGrow(&CommandWithPath, NULL, FirstParameter, 0);
+ if (ShellIsFile (FirstParameter) == EFI_SUCCESS) {
+ CommandWithPath = StrnCatGrow (&CommandWithPath, NULL, FirstParameter, 0);
}
}
@@ -2464,37 +2604,39 @@ RunCommandOrFile(
// Process a relative path and also check in the path environment variable
//
if (CommandWithPath == NULL) {
- CommandWithPath = ShellFindFilePathEx(FirstParameter, mExecutableExtensions);
+ CommandWithPath = ShellFindFilePathEx (FirstParameter, mExecutableExtensions);
}
//
// This should be impossible now.
//
- ASSERT(CommandWithPath != NULL);
+ ASSERT (CommandWithPath != NULL);
//
// Make sure that path is not just a directory (or not found)
//
- if (!EFI_ERROR(ShellIsDirectory(CommandWithPath))) {
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_NOT_FOUND), ShellInfoObject.HiiHandle, FirstParameter);
- SetLastError(SHELL_NOT_FOUND);
+ if (!EFI_ERROR (ShellIsDirectory (CommandWithPath))) {
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SHELL_NOT_FOUND), ShellInfoObject.HiiHandle, FirstParameter);
+ SetLastError (SHELL_NOT_FOUND);
}
+
switch (Type) {
- case Script_File_Name:
- FullCommandWithPath = FullyQualifyPath(CommandWithPath);
+ case Script_File_Name:
+ FullCommandWithPath = FullyQualifyPath (CommandWithPath);
if (FullCommandWithPath == NULL) {
Status = RunScriptFile (CommandWithPath, NULL, CmdLine, ParamProtocol);
} else {
Status = RunScriptFile (FullCommandWithPath, NULL, CmdLine, ParamProtocol);
- FreePool(FullCommandWithPath);
+ FreePool (FullCommandWithPath);
}
+
break;
- case Efi_Application:
+ case Efi_Application:
//
// Get the device path of the application image
//
- DevPath = ShellInfoObject.NewEfiShellProtocol->GetDevicePathFromFilePath(CommandWithPath);
- if (DevPath == NULL){
+ DevPath = ShellInfoObject.NewEfiShellProtocol->GetDevicePathFromFilePath (CommandWithPath);
+ if (DevPath == NULL) {
Status = EFI_OUT_OF_RESOURCES;
break;
}
@@ -2502,20 +2644,20 @@ RunCommandOrFile(
//
// Execute the device path
//
- Status = InternalShellExecuteDevicePath(
- &gImageHandle,
- DevPath,
- CmdLine,
- NULL,
- &StartStatus
- );
-
- SHELL_FREE_NON_NULL(DevPath);
-
- if(EFI_ERROR (Status)) {
- CalleeExitStatus = (SHELL_STATUS) (Status & (~MAX_BIT));
+ Status = InternalShellExecuteDevicePath (
+ &gImageHandle,
+ DevPath,
+ CmdLine,
+ NULL,
+ &StartStatus
+ );
+
+ SHELL_FREE_NON_NULL (DevPath);
+
+ if (EFI_ERROR (Status)) {
+ CalleeExitStatus = (SHELL_STATUS)(Status & (~MAX_BIT));
} else {
- CalleeExitStatus = (SHELL_STATUS) StartStatus;
+ CalleeExitStatus = (SHELL_STATUS)StartStatus;
}
if (CommandStatus != NULL) {
@@ -2526,7 +2668,7 @@ RunCommandOrFile(
// Update last error status.
//
// Status is an EFI_STATUS. Clear top bit to convert to SHELL_STATUS
- SetLastError(CalleeExitStatus);
+ SetLastError (CalleeExitStatus);
break;
default:
//
@@ -2534,6 +2676,7 @@ RunCommandOrFile(
//
break;
}
+
break;
default:
//
@@ -2542,7 +2685,7 @@ RunCommandOrFile(
break;
}
- SHELL_FREE_NON_NULL(CommandWithPath);
+ SHELL_FREE_NON_NULL (CommandWithPath);
return (Status);
}
@@ -2560,51 +2703,51 @@ RunCommandOrFile(
@retval EFI_ABORTED The command's operation was aborted.
**/
EFI_STATUS
-SetupAndRunCommandOrFile(
+SetupAndRunCommandOrFile (
IN SHELL_OPERATION_TYPES Type,
IN CHAR16 *CmdLine,
IN CHAR16 *FirstParameter,
IN EFI_SHELL_PARAMETERS_PROTOCOL *ParamProtocol,
OUT EFI_STATUS *CommandStatus
-)
+ )
{
- EFI_STATUS Status;
- SHELL_FILE_HANDLE OriginalStdIn;
- SHELL_FILE_HANDLE OriginalStdOut;
- SHELL_FILE_HANDLE OriginalStdErr;
- SYSTEM_TABLE_INFO OriginalSystemTableInfo;
- CONST SCRIPT_FILE *ConstScriptFile;
+ EFI_STATUS Status;
+ SHELL_FILE_HANDLE OriginalStdIn;
+ SHELL_FILE_HANDLE OriginalStdOut;
+ SHELL_FILE_HANDLE OriginalStdErr;
+ SYSTEM_TABLE_INFO OriginalSystemTableInfo;
+ CONST SCRIPT_FILE *ConstScriptFile;
//
// Update the StdIn, StdOut, and StdErr for redirection to environment variables, files, etc... unicode and ASCII
//
- Status = UpdateStdInStdOutStdErr(ParamProtocol, CmdLine, &OriginalStdIn, &OriginalStdOut, &OriginalStdErr, &OriginalSystemTableInfo);
+ Status = UpdateStdInStdOutStdErr (ParamProtocol, CmdLine, &OriginalStdIn, &OriginalStdOut, &OriginalStdErr, &OriginalSystemTableInfo);
//
// The StdIn, StdOut, and StdErr are set up.
// Now run the command, script, or application
//
- if (!EFI_ERROR(Status)) {
- TrimSpaces(&CmdLine);
- Status = RunCommandOrFile(Type, CmdLine, FirstParameter, ParamProtocol, CommandStatus);
+ if (!EFI_ERROR (Status)) {
+ TrimSpaces (&CmdLine);
+ Status = RunCommandOrFile (Type, CmdLine, FirstParameter, ParamProtocol, CommandStatus);
}
//
// Now print errors
//
- if (EFI_ERROR(Status)) {
- ConstScriptFile = ShellCommandGetCurrentScriptFile();
- if (ConstScriptFile == NULL || ConstScriptFile->CurrentCommand == NULL) {
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_ERROR), ShellInfoObject.HiiHandle, (VOID*)(Status));
+ if (EFI_ERROR (Status)) {
+ ConstScriptFile = ShellCommandGetCurrentScriptFile ();
+ if ((ConstScriptFile == NULL) || (ConstScriptFile->CurrentCommand == NULL)) {
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SHELL_ERROR), ShellInfoObject.HiiHandle, (VOID *)(Status));
} else {
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_ERROR_SCRIPT), ShellInfoObject.HiiHandle, (VOID*)(Status), ConstScriptFile->CurrentCommand->Line);
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SHELL_ERROR_SCRIPT), ShellInfoObject.HiiHandle, (VOID *)(Status), ConstScriptFile->CurrentCommand->Line);
}
}
//
// put back the original StdIn, StdOut, and StdErr
//
- RestoreStdInStdOutStdErr(ParamProtocol, &OriginalStdIn, &OriginalStdOut, &OriginalStdErr, &OriginalSystemTableInfo);
+ RestoreStdInStdOutStdErr (ParamProtocol, &OriginalStdIn, &OriginalStdOut, &OriginalStdErr, &OriginalSystemTableInfo);
return (Status);
}
@@ -2622,32 +2765,32 @@ SetupAndRunCommandOrFile(
@retval EFI_ABORTED The command's operation was aborted.
**/
EFI_STATUS
-RunShellCommand(
- IN CONST CHAR16 *CmdLine,
- OUT EFI_STATUS *CommandStatus
+RunShellCommand (
+ IN CONST CHAR16 *CmdLine,
+ OUT EFI_STATUS *CommandStatus
)
{
- EFI_STATUS Status;
- CHAR16 *CleanOriginal;
- CHAR16 *FirstParameter;
- CHAR16 *TempWalker;
- SHELL_OPERATION_TYPES Type;
- CONST CHAR16 *CurDir;
-
- ASSERT(CmdLine != NULL);
- if (StrLen(CmdLine) == 0) {
+ EFI_STATUS Status;
+ CHAR16 *CleanOriginal;
+ CHAR16 *FirstParameter;
+ CHAR16 *TempWalker;
+ SHELL_OPERATION_TYPES Type;
+ CONST CHAR16 *CurDir;
+
+ ASSERT (CmdLine != NULL);
+ if (StrLen (CmdLine) == 0) {
return (EFI_SUCCESS);
}
- Status = EFI_SUCCESS;
- CleanOriginal = NULL;
+ Status = EFI_SUCCESS;
+ CleanOriginal = NULL;
- CleanOriginal = StrnCatGrow(&CleanOriginal, NULL, CmdLine, 0);
+ CleanOriginal = StrnCatGrow (&CleanOriginal, NULL, CmdLine, 0);
if (CleanOriginal == NULL) {
return (EFI_OUT_OF_RESOURCES);
}
- TrimSpaces(&CleanOriginal);
+ TrimSpaces (&CleanOriginal);
//
// NULL out comments (leveraged from RunScriptFileHandle() ).
@@ -2665,71 +2808,73 @@ RunShellCommand(
}
}
- TrimSpaces(&CleanOriginal);
+ TrimSpaces (&CleanOriginal);
//
// Handle case that passed in command line is just 1 or more " " characters.
//
if (StrLen (CleanOriginal) == 0) {
- SHELL_FREE_NON_NULL(CleanOriginal);
+ SHELL_FREE_NON_NULL (CleanOriginal);
return (EFI_SUCCESS);
}
- Status = ProcessCommandLineToFinal(&CleanOriginal);
- if (EFI_ERROR(Status)) {
- SHELL_FREE_NON_NULL(CleanOriginal);
+ Status = ProcessCommandLineToFinal (&CleanOriginal);
+ if (EFI_ERROR (Status)) {
+ SHELL_FREE_NON_NULL (CleanOriginal);
return (Status);
}
//
// We don't do normal processing with a split command line (output from one command input to another)
//
- if (ContainsSplit(CleanOriginal)) {
- Status = ProcessNewSplitCommandLine(CleanOriginal);
- SHELL_FREE_NON_NULL(CleanOriginal);
+ if (ContainsSplit (CleanOriginal)) {
+ Status = ProcessNewSplitCommandLine (CleanOriginal);
+ SHELL_FREE_NON_NULL (CleanOriginal);
return (Status);
}
//
// We need the first parameter information so we can determine the operation type
//
- FirstParameter = AllocateZeroPool(StrSize(CleanOriginal));
+ FirstParameter = AllocateZeroPool (StrSize (CleanOriginal));
if (FirstParameter == NULL) {
- SHELL_FREE_NON_NULL(CleanOriginal);
+ SHELL_FREE_NON_NULL (CleanOriginal);
return (EFI_OUT_OF_RESOURCES);
}
+
TempWalker = CleanOriginal;
- if (!EFI_ERROR(GetNextParameter(&TempWalker, &FirstParameter, StrSize(CleanOriginal), TRUE))) {
+ if (!EFI_ERROR (GetNextParameter (&TempWalker, &FirstParameter, StrSize (CleanOriginal), TRUE))) {
//
// Depending on the first parameter we change the behavior
//
- switch (Type = GetOperationType(FirstParameter)) {
- case File_Sys_Change:
+ switch (Type = GetOperationType (FirstParameter)) {
+ case File_Sys_Change:
Status = ChangeMappedDrive (FirstParameter);
break;
- case Internal_Command:
- case Script_File_Name:
- case Efi_Application:
- Status = SetupAndRunCommandOrFile(Type, CleanOriginal, FirstParameter, ShellInfoObject.NewShellParametersProtocol, CommandStatus);
+ case Internal_Command:
+ case Script_File_Name:
+ case Efi_Application:
+ Status = SetupAndRunCommandOrFile (Type, CleanOriginal, FirstParameter, ShellInfoObject.NewShellParametersProtocol, CommandStatus);
break;
default:
//
// Whatever was typed, it was invalid.
//
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_NOT_FOUND), ShellInfoObject.HiiHandle, FirstParameter);
- SetLastError(SHELL_NOT_FOUND);
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SHELL_NOT_FOUND), ShellInfoObject.HiiHandle, FirstParameter);
+ SetLastError (SHELL_NOT_FOUND);
break;
}
} else {
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_NOT_FOUND), ShellInfoObject.HiiHandle, FirstParameter);
- SetLastError(SHELL_NOT_FOUND);
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SHELL_NOT_FOUND), ShellInfoObject.HiiHandle, FirstParameter);
+ SetLastError (SHELL_NOT_FOUND);
}
+
//
// Check whether the current file system still exists. If not exist, we need update "cwd" and gShellCurMapping.
//
CurDir = EfiShellGetCurDir (NULL);
if (CurDir != NULL) {
- if (EFI_ERROR(ShellFileExists (CurDir))) {
+ if (EFI_ERROR (ShellFileExists (CurDir))) {
//
// EfiShellSetCurDir() cannot set current directory to NULL.
// EfiShellSetEnv() is not allowed to set the "cwd" variable.
@@ -2740,8 +2885,8 @@ RunShellCommand(
}
}
- SHELL_FREE_NON_NULL(CleanOriginal);
- SHELL_FREE_NON_NULL(FirstParameter);
+ SHELL_FREE_NON_NULL (CleanOriginal);
+ SHELL_FREE_NON_NULL (FirstParameter);
return (Status);
}
@@ -2758,11 +2903,11 @@ RunShellCommand(
@retval EFI_ABORTED The command's operation was aborted.
**/
EFI_STATUS
-RunCommand(
- IN CONST CHAR16 *CmdLine
+RunCommand (
+ IN CONST CHAR16 *CmdLine
)
{
- return (RunShellCommand(CmdLine, NULL));
+ return (RunShellCommand (CmdLine, NULL));
}
/**
@@ -2779,28 +2924,28 @@ RunScriptFileHandle (
IN CONST CHAR16 *Name
)
{
- EFI_STATUS Status;
- SCRIPT_FILE *NewScriptFile;
- UINTN LoopVar;
- UINTN PrintBuffSize;
- CHAR16 *CommandLine;
- CHAR16 *CommandLine2;
- CHAR16 *CommandLine3;
- SCRIPT_COMMAND_LIST *LastCommand;
- BOOLEAN Ascii;
- BOOLEAN PreScriptEchoState;
- BOOLEAN PreCommandEchoState;
- CONST CHAR16 *CurDir;
- UINTN LineCount;
- CHAR16 LeString[50];
- LIST_ENTRY OldBufferList;
-
- ASSERT(!ShellCommandGetScriptExit());
-
- PreScriptEchoState = ShellCommandGetEchoState();
- PrintBuffSize = PcdGet16(PcdShellPrintBufferSize);
-
- NewScriptFile = (SCRIPT_FILE*)AllocateZeroPool(sizeof(SCRIPT_FILE));
+ EFI_STATUS Status;
+ SCRIPT_FILE *NewScriptFile;
+ UINTN LoopVar;
+ UINTN PrintBuffSize;
+ CHAR16 *CommandLine;
+ CHAR16 *CommandLine2;
+ CHAR16 *CommandLine3;
+ SCRIPT_COMMAND_LIST *LastCommand;
+ BOOLEAN Ascii;
+ BOOLEAN PreScriptEchoState;
+ BOOLEAN PreCommandEchoState;
+ CONST CHAR16 *CurDir;
+ UINTN LineCount;
+ CHAR16 LeString[50];
+ LIST_ENTRY OldBufferList;
+
+ ASSERT (!ShellCommandGetScriptExit ());
+
+ PreScriptEchoState = ShellCommandGetEchoState ();
+ PrintBuffSize = PcdGet16 (PcdShellPrintBufferSize);
+
+ NewScriptFile = (SCRIPT_FILE *)AllocateZeroPool (sizeof (SCRIPT_FILE));
if (NewScriptFile == NULL) {
return (EFI_OUT_OF_RESOURCES);
}
@@ -2808,10 +2953,10 @@ RunScriptFileHandle (
//
// Set up the name
//
- ASSERT(NewScriptFile->ScriptName == NULL);
- NewScriptFile->ScriptName = StrnCatGrow(&NewScriptFile->ScriptName, NULL, Name, 0);
+ ASSERT (NewScriptFile->ScriptName == NULL);
+ NewScriptFile->ScriptName = StrnCatGrow (&NewScriptFile->ScriptName, NULL, Name, 0);
if (NewScriptFile->ScriptName == NULL) {
- DeleteScriptFileStruct(NewScriptFile);
+ DeleteScriptFileStruct (NewScriptFile);
return (EFI_OUT_OF_RESOURCES);
}
@@ -2820,21 +2965,22 @@ RunScriptFileHandle (
//
NewScriptFile->Argc = ShellInfoObject.NewShellParametersProtocol->Argc;
if (NewScriptFile->Argc != 0) {
- NewScriptFile->Argv = (CHAR16**)AllocateZeroPool(NewScriptFile->Argc * sizeof(CHAR16*));
+ NewScriptFile->Argv = (CHAR16 **)AllocateZeroPool (NewScriptFile->Argc * sizeof (CHAR16 *));
if (NewScriptFile->Argv == NULL) {
- DeleteScriptFileStruct(NewScriptFile);
+ DeleteScriptFileStruct (NewScriptFile);
return (EFI_OUT_OF_RESOURCES);
}
+
//
// Put the full path of the script file into Argv[0] as required by section
// 3.6.2 of version 2.2 of the shell specification.
//
- NewScriptFile->Argv[0] = StrnCatGrow(&NewScriptFile->Argv[0], NULL, NewScriptFile->ScriptName, 0);
- for (LoopVar = 1 ; LoopVar < 10 && LoopVar < NewScriptFile->Argc; LoopVar++) {
- ASSERT(NewScriptFile->Argv[LoopVar] == NULL);
- NewScriptFile->Argv[LoopVar] = StrnCatGrow(&NewScriptFile->Argv[LoopVar], NULL, ShellInfoObject.NewShellParametersProtocol->Argv[LoopVar], 0);
+ NewScriptFile->Argv[0] = StrnCatGrow (&NewScriptFile->Argv[0], NULL, NewScriptFile->ScriptName, 0);
+ for (LoopVar = 1; LoopVar < 10 && LoopVar < NewScriptFile->Argc; LoopVar++) {
+ ASSERT (NewScriptFile->Argv[LoopVar] == NULL);
+ NewScriptFile->Argv[LoopVar] = StrnCatGrow (&NewScriptFile->Argv[LoopVar], NULL, ShellInfoObject.NewShellParametersProtocol->Argv[LoopVar], 0);
if (NewScriptFile->Argv[LoopVar] == NULL) {
- DeleteScriptFileStruct(NewScriptFile);
+ DeleteScriptFileStruct (NewScriptFile);
return (EFI_OUT_OF_RESOURCES);
}
}
@@ -2842,24 +2988,25 @@ RunScriptFileHandle (
NewScriptFile->Argv = NULL;
}
- InitializeListHead(&NewScriptFile->CommandList);
- InitializeListHead(&NewScriptFile->SubstList);
+ InitializeListHead (&NewScriptFile->CommandList);
+ InitializeListHead (&NewScriptFile->SubstList);
//
// Now build the list of all script commands.
//
LineCount = 0;
- while(!ShellFileHandleEof(Handle)) {
- CommandLine = ShellFileHandleReturnLine(Handle, &Ascii);
+ while (!ShellFileHandleEof (Handle)) {
+ CommandLine = ShellFileHandleReturnLine (Handle, &Ascii);
LineCount++;
- if (CommandLine == NULL || StrLen(CommandLine) == 0 || CommandLine[0] == '#') {
- SHELL_FREE_NON_NULL(CommandLine);
+ if ((CommandLine == NULL) || (StrLen (CommandLine) == 0) || (CommandLine[0] == '#')) {
+ SHELL_FREE_NON_NULL (CommandLine);
continue;
}
- NewScriptFile->CurrentCommand = AllocateZeroPool(sizeof(SCRIPT_COMMAND_LIST));
+
+ NewScriptFile->CurrentCommand = AllocateZeroPool (sizeof (SCRIPT_COMMAND_LIST));
if (NewScriptFile->CurrentCommand == NULL) {
- SHELL_FREE_NON_NULL(CommandLine);
- DeleteScriptFileStruct(NewScriptFile);
+ SHELL_FREE_NON_NULL (CommandLine);
+ DeleteScriptFileStruct (NewScriptFile);
return (EFI_OUT_OF_RESOURCES);
}
@@ -2867,7 +3014,7 @@ RunScriptFileHandle (
NewScriptFile->CurrentCommand->Data = NULL;
NewScriptFile->CurrentCommand->Line = LineCount;
- InsertTailList(&NewScriptFile->CommandList, &NewScriptFile->CurrentCommand->Link);
+ InsertTailList (&NewScriptFile->CommandList, &NewScriptFile->CurrentCommand->Link);
}
//
@@ -2878,38 +3025,41 @@ RunScriptFileHandle (
//
// Now enumerate through the commands and run each one.
//
- CommandLine = AllocateZeroPool(PrintBuffSize);
+ CommandLine = AllocateZeroPool (PrintBuffSize);
if (CommandLine == NULL) {
- DeleteScriptFileStruct(NewScriptFile);
+ DeleteScriptFileStruct (NewScriptFile);
return (EFI_OUT_OF_RESOURCES);
}
- CommandLine2 = AllocateZeroPool(PrintBuffSize);
+
+ CommandLine2 = AllocateZeroPool (PrintBuffSize);
if (CommandLine2 == NULL) {
- FreePool(CommandLine);
- DeleteScriptFileStruct(NewScriptFile);
+ FreePool (CommandLine);
+ DeleteScriptFileStruct (NewScriptFile);
return (EFI_OUT_OF_RESOURCES);
}
- for ( NewScriptFile->CurrentCommand = (SCRIPT_COMMAND_LIST *)GetFirstNode(&NewScriptFile->CommandList)
- ; !IsNull(&NewScriptFile->CommandList, &NewScriptFile->CurrentCommand->Link)
- ; // conditional increment in the body of the loop
- ){
- ASSERT(CommandLine2 != NULL);
- StrnCpyS( CommandLine2,
- PrintBuffSize/sizeof(CHAR16),
- NewScriptFile->CurrentCommand->Cl,
- PrintBuffSize/sizeof(CHAR16) - 1
- );
+ for ( NewScriptFile->CurrentCommand = (SCRIPT_COMMAND_LIST *)GetFirstNode (&NewScriptFile->CommandList)
+ ; !IsNull (&NewScriptFile->CommandList, &NewScriptFile->CurrentCommand->Link)
+ ; // conditional increment in the body of the loop
+ )
+ {
+ ASSERT (CommandLine2 != NULL);
+ StrnCpyS (
+ CommandLine2,
+ PrintBuffSize/sizeof (CHAR16),
+ NewScriptFile->CurrentCommand->Cl,
+ PrintBuffSize/sizeof (CHAR16) - 1
+ );
- SaveBufferList(&OldBufferList);
+ SaveBufferList (&OldBufferList);
//
// NULL out comments
//
- for (CommandLine3 = CommandLine2 ; CommandLine3 != NULL && *CommandLine3 != CHAR_NULL ; CommandLine3++) {
+ for (CommandLine3 = CommandLine2; CommandLine3 != NULL && *CommandLine3 != CHAR_NULL; CommandLine3++) {
if (*CommandLine3 == L'^') {
if ( *(CommandLine3+1) == L':') {
- CopyMem(CommandLine3, CommandLine3+1, StrSize(CommandLine3) - sizeof(CommandLine3[0]));
+ CopyMem (CommandLine3, CommandLine3+1, StrSize (CommandLine3) - sizeof (CommandLine3[0]));
} else if (*(CommandLine3+1) == L'#') {
CommandLine3++;
}
@@ -2918,15 +3068,16 @@ RunScriptFileHandle (
}
}
- if (CommandLine2 != NULL && StrLen(CommandLine2) >= 1) {
+ if ((CommandLine2 != NULL) && (StrLen (CommandLine2) >= 1)) {
//
// Due to variability in starting the find and replace action we need to have both buffers the same.
//
- StrnCpyS( CommandLine,
- PrintBuffSize/sizeof(CHAR16),
- CommandLine2,
- PrintBuffSize/sizeof(CHAR16) - 1
- );
+ StrnCpyS (
+ CommandLine,
+ PrintBuffSize/sizeof (CHAR16),
+ CommandLine2,
+ PrintBuffSize/sizeof (CHAR16) - 1
+ );
//
// Remove the %0 to %9 from the command line (if we have some arguments)
@@ -2934,154 +3085,167 @@ RunScriptFileHandle (
if (NewScriptFile->Argv != NULL) {
switch (NewScriptFile->Argc) {
default:
- Status = ShellCopySearchAndReplace(CommandLine2, CommandLine, PrintBuffSize, L"%9", NewScriptFile->Argv[9], FALSE, FALSE);
- ASSERT_EFI_ERROR(Status);
+ Status = ShellCopySearchAndReplace (CommandLine2, CommandLine, PrintBuffSize, L"%9", NewScriptFile->Argv[9], FALSE, FALSE);
+ ASSERT_EFI_ERROR (Status);
case 9:
- Status = ShellCopySearchAndReplace(CommandLine, CommandLine2, PrintBuffSize, L"%8", NewScriptFile->Argv[8], FALSE, FALSE);
- ASSERT_EFI_ERROR(Status);
+ Status = ShellCopySearchAndReplace (CommandLine, CommandLine2, PrintBuffSize, L"%8", NewScriptFile->Argv[8], FALSE, FALSE);
+ ASSERT_EFI_ERROR (Status);
case 8:
- Status = ShellCopySearchAndReplace(CommandLine2, CommandLine, PrintBuffSize, L"%7", NewScriptFile->Argv[7], FALSE, FALSE);
- ASSERT_EFI_ERROR(Status);
+ Status = ShellCopySearchAndReplace (CommandLine2, CommandLine, PrintBuffSize, L"%7", NewScriptFile->Argv[7], FALSE, FALSE);
+ ASSERT_EFI_ERROR (Status);
case 7:
- Status = ShellCopySearchAndReplace(CommandLine, CommandLine2, PrintBuffSize, L"%6", NewScriptFile->Argv[6], FALSE, FALSE);
- ASSERT_EFI_ERROR(Status);
+ Status = ShellCopySearchAndReplace (CommandLine, CommandLine2, PrintBuffSize, L"%6", NewScriptFile->Argv[6], FALSE, FALSE);
+ ASSERT_EFI_ERROR (Status);
case 6:
- Status = ShellCopySearchAndReplace(CommandLine2, CommandLine, PrintBuffSize, L"%5", NewScriptFile->Argv[5], FALSE, FALSE);
- ASSERT_EFI_ERROR(Status);
+ Status = ShellCopySearchAndReplace (CommandLine2, CommandLine, PrintBuffSize, L"%5", NewScriptFile->Argv[5], FALSE, FALSE);
+ ASSERT_EFI_ERROR (Status);
case 5:
- Status = ShellCopySearchAndReplace(CommandLine, CommandLine2, PrintBuffSize, L"%4", NewScriptFile->Argv[4], FALSE, FALSE);
- ASSERT_EFI_ERROR(Status);
+ Status = ShellCopySearchAndReplace (CommandLine, CommandLine2, PrintBuffSize, L"%4", NewScriptFile->Argv[4], FALSE, FALSE);
+ ASSERT_EFI_ERROR (Status);
case 4:
- Status = ShellCopySearchAndReplace(CommandLine2, CommandLine, PrintBuffSize, L"%3", NewScriptFile->Argv[3], FALSE, FALSE);
- ASSERT_EFI_ERROR(Status);
+ Status = ShellCopySearchAndReplace (CommandLine2, CommandLine, PrintBuffSize, L"%3", NewScriptFile->Argv[3], FALSE, FALSE);
+ ASSERT_EFI_ERROR (Status);
case 3:
- Status = ShellCopySearchAndReplace(CommandLine, CommandLine2, PrintBuffSize, L"%2", NewScriptFile->Argv[2], FALSE, FALSE);
- ASSERT_EFI_ERROR(Status);
+ Status = ShellCopySearchAndReplace (CommandLine, CommandLine2, PrintBuffSize, L"%2", NewScriptFile->Argv[2], FALSE, FALSE);
+ ASSERT_EFI_ERROR (Status);
case 2:
- Status = ShellCopySearchAndReplace(CommandLine2, CommandLine, PrintBuffSize, L"%1", NewScriptFile->Argv[1], FALSE, FALSE);
- ASSERT_EFI_ERROR(Status);
+ Status = ShellCopySearchAndReplace (CommandLine2, CommandLine, PrintBuffSize, L"%1", NewScriptFile->Argv[1], FALSE, FALSE);
+ ASSERT_EFI_ERROR (Status);
case 1:
- Status = ShellCopySearchAndReplace(CommandLine, CommandLine2, PrintBuffSize, L"%0", NewScriptFile->Argv[0], FALSE, FALSE);
- ASSERT_EFI_ERROR(Status);
+ Status = ShellCopySearchAndReplace (CommandLine, CommandLine2, PrintBuffSize, L"%0", NewScriptFile->Argv[0], FALSE, FALSE);
+ ASSERT_EFI_ERROR (Status);
break;
case 0:
break;
}
}
- Status = ShellCopySearchAndReplace(CommandLine2, CommandLine, PrintBuffSize, L"%1", L"\"\"", FALSE, FALSE);
- Status = ShellCopySearchAndReplace(CommandLine, CommandLine2, PrintBuffSize, L"%2", L"\"\"", FALSE, FALSE);
- Status = ShellCopySearchAndReplace(CommandLine2, CommandLine, PrintBuffSize, L"%3", L"\"\"", FALSE, FALSE);
- Status = ShellCopySearchAndReplace(CommandLine, CommandLine2, PrintBuffSize, L"%4", L"\"\"", FALSE, FALSE);
- Status = ShellCopySearchAndReplace(CommandLine2, CommandLine, PrintBuffSize, L"%5", L"\"\"", FALSE, FALSE);
- Status = ShellCopySearchAndReplace(CommandLine, CommandLine2, PrintBuffSize, L"%6", L"\"\"", FALSE, FALSE);
- Status = ShellCopySearchAndReplace(CommandLine2, CommandLine, PrintBuffSize, L"%7", L"\"\"", FALSE, FALSE);
- Status = ShellCopySearchAndReplace(CommandLine, CommandLine2, PrintBuffSize, L"%8", L"\"\"", FALSE, FALSE);
- Status = ShellCopySearchAndReplace(CommandLine2, CommandLine, PrintBuffSize, L"%9", L"\"\"", FALSE, FALSE);
-
- StrnCpyS( CommandLine2,
- PrintBuffSize/sizeof(CHAR16),
- CommandLine,
- PrintBuffSize/sizeof(CHAR16) - 1
- );
+
+ Status = ShellCopySearchAndReplace (CommandLine2, CommandLine, PrintBuffSize, L"%1", L"\"\"", FALSE, FALSE);
+ Status = ShellCopySearchAndReplace (CommandLine, CommandLine2, PrintBuffSize, L"%2", L"\"\"", FALSE, FALSE);
+ Status = ShellCopySearchAndReplace (CommandLine2, CommandLine, PrintBuffSize, L"%3", L"\"\"", FALSE, FALSE);
+ Status = ShellCopySearchAndReplace (CommandLine, CommandLine2, PrintBuffSize, L"%4", L"\"\"", FALSE, FALSE);
+ Status = ShellCopySearchAndReplace (CommandLine2, CommandLine, PrintBuffSize, L"%5", L"\"\"", FALSE, FALSE);
+ Status = ShellCopySearchAndReplace (CommandLine, CommandLine2, PrintBuffSize, L"%6", L"\"\"", FALSE, FALSE);
+ Status = ShellCopySearchAndReplace (CommandLine2, CommandLine, PrintBuffSize, L"%7", L"\"\"", FALSE, FALSE);
+ Status = ShellCopySearchAndReplace (CommandLine, CommandLine2, PrintBuffSize, L"%8", L"\"\"", FALSE, FALSE);
+ Status = ShellCopySearchAndReplace (CommandLine2, CommandLine, PrintBuffSize, L"%9", L"\"\"", FALSE, FALSE);
+
+ StrnCpyS (
+ CommandLine2,
+ PrintBuffSize/sizeof (CHAR16),
+ CommandLine,
+ PrintBuffSize/sizeof (CHAR16) - 1
+ );
LastCommand = NewScriptFile->CurrentCommand;
- for (CommandLine3 = CommandLine2 ; CommandLine3[0] == L' ' ; CommandLine3++);
+ for (CommandLine3 = CommandLine2; CommandLine3[0] == L' '; CommandLine3++) {
+ }
- if (CommandLine3 != NULL && CommandLine3[0] == L':' ) {
+ if ((CommandLine3 != NULL) && (CommandLine3[0] == L':')) {
//
// This line is a goto target / label
//
} else {
- if (CommandLine3 != NULL && StrLen(CommandLine3) > 0) {
+ if ((CommandLine3 != NULL) && (StrLen (CommandLine3) > 0)) {
if (CommandLine3[0] == L'@') {
//
// We need to save the current echo state
// and disable echo for just this command.
//
- PreCommandEchoState = ShellCommandGetEchoState();
- ShellCommandSetEchoState(FALSE);
- Status = RunCommand(CommandLine3+1);
+ PreCommandEchoState = ShellCommandGetEchoState ();
+ ShellCommandSetEchoState (FALSE);
+ Status = RunCommand (CommandLine3+1);
//
// If command was "@echo -off" or "@echo -on" then don't restore echo state
//
- if (StrCmp (L"@echo -off", CommandLine3) != 0 &&
- StrCmp (L"@echo -on", CommandLine3) != 0) {
+ if ((StrCmp (L"@echo -off", CommandLine3) != 0) &&
+ (StrCmp (L"@echo -on", CommandLine3) != 0))
+ {
//
// Now restore the pre-'@' echo state.
//
- ShellCommandSetEchoState(PreCommandEchoState);
+ ShellCommandSetEchoState (PreCommandEchoState);
}
} else {
- if (ShellCommandGetEchoState()) {
- CurDir = ShellInfoObject.NewEfiShellProtocol->GetEnv(L"cwd");
- if (CurDir != NULL && StrLen(CurDir) > 1) {
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_CURDIR), ShellInfoObject.HiiHandle, CurDir);
+ if (ShellCommandGetEchoState ()) {
+ CurDir = ShellInfoObject.NewEfiShellProtocol->GetEnv (L"cwd");
+ if ((CurDir != NULL) && (StrLen (CurDir) > 1)) {
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SHELL_CURDIR), ShellInfoObject.HiiHandle, CurDir);
} else {
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_SHELL), ShellInfoObject.HiiHandle);
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SHELL_SHELL), ShellInfoObject.HiiHandle);
}
- ShellPrintEx(-1, -1, L"%s\r\n", CommandLine2);
+
+ ShellPrintEx (-1, -1, L"%s\r\n", CommandLine2);
}
- Status = RunCommand(CommandLine3);
+
+ Status = RunCommand (CommandLine3);
}
}
- if (ShellCommandGetScriptExit()) {
+ if (ShellCommandGetScriptExit ()) {
//
// ShellCommandGetExitCode() always returns a UINT64
//
- UnicodeSPrint(LeString, sizeof(LeString), L"0x%Lx", ShellCommandGetExitCode());
- DEBUG_CODE(InternalEfiShellSetEnv(L"debuglasterror", LeString, TRUE););
- InternalEfiShellSetEnv(L"lasterror", LeString, TRUE);
+ UnicodeSPrint (LeString, sizeof (LeString), L"0x%Lx", ShellCommandGetExitCode ());
+ DEBUG_CODE (
+ InternalEfiShellSetEnv (L"debuglasterror", LeString, TRUE);
+ );
+ InternalEfiShellSetEnv (L"lasterror", LeString, TRUE);
- ShellCommandRegisterExit(FALSE, 0);
+ ShellCommandRegisterExit (FALSE, 0);
Status = EFI_SUCCESS;
- RestoreBufferList(&OldBufferList);
+ RestoreBufferList (&OldBufferList);
break;
}
- if (ShellGetExecutionBreakFlag()) {
- RestoreBufferList(&OldBufferList);
+
+ if (ShellGetExecutionBreakFlag ()) {
+ RestoreBufferList (&OldBufferList);
break;
}
- if (EFI_ERROR(Status)) {
- RestoreBufferList(&OldBufferList);
+
+ if (EFI_ERROR (Status)) {
+ RestoreBufferList (&OldBufferList);
break;
}
- if (ShellCommandGetExit()) {
- RestoreBufferList(&OldBufferList);
+
+ if (ShellCommandGetExit ()) {
+ RestoreBufferList (&OldBufferList);
break;
}
}
+
//
// If that commend did not update the CurrentCommand then we need to advance it...
//
if (LastCommand == NewScriptFile->CurrentCommand) {
- NewScriptFile->CurrentCommand = (SCRIPT_COMMAND_LIST *)GetNextNode(&NewScriptFile->CommandList, &NewScriptFile->CurrentCommand->Link);
- if (!IsNull(&NewScriptFile->CommandList, &NewScriptFile->CurrentCommand->Link)) {
+ NewScriptFile->CurrentCommand = (SCRIPT_COMMAND_LIST *)GetNextNode (&NewScriptFile->CommandList, &NewScriptFile->CurrentCommand->Link);
+ if (!IsNull (&NewScriptFile->CommandList, &NewScriptFile->CurrentCommand->Link)) {
NewScriptFile->CurrentCommand->Reset = TRUE;
}
}
} else {
- NewScriptFile->CurrentCommand = (SCRIPT_COMMAND_LIST *)GetNextNode(&NewScriptFile->CommandList, &NewScriptFile->CurrentCommand->Link);
- if (!IsNull(&NewScriptFile->CommandList, &NewScriptFile->CurrentCommand->Link)) {
+ NewScriptFile->CurrentCommand = (SCRIPT_COMMAND_LIST *)GetNextNode (&NewScriptFile->CommandList, &NewScriptFile->CurrentCommand->Link);
+ if (!IsNull (&NewScriptFile->CommandList, &NewScriptFile->CurrentCommand->Link)) {
NewScriptFile->CurrentCommand->Reset = TRUE;
}
}
- RestoreBufferList(&OldBufferList);
- }
+ RestoreBufferList (&OldBufferList);
+ }
- FreePool(CommandLine);
- FreePool(CommandLine2);
+ FreePool (CommandLine);
+ FreePool (CommandLine2);
ShellCommandSetNewScript (NULL);
//
// Only if this was the last script reset the state.
//
- if (ShellCommandGetCurrentScriptFile()==NULL) {
- ShellCommandSetEchoState(PreScriptEchoState);
+ if (ShellCommandGetCurrentScriptFile () == NULL) {
+ ShellCommandSetEchoState (PreScriptEchoState);
}
+
return (EFI_SUCCESS);
}
@@ -3103,39 +3267,38 @@ RunScriptFile (
IN EFI_SHELL_PARAMETERS_PROTOCOL *ParamProtocol
)
{
- EFI_STATUS Status;
- SHELL_FILE_HANDLE FileHandle;
- UINTN Argc;
- CHAR16 **Argv;
+ EFI_STATUS Status;
+ SHELL_FILE_HANDLE FileHandle;
+ UINTN Argc;
+ CHAR16 **Argv;
- if (ShellIsFile(ScriptPath) != EFI_SUCCESS) {
+ if (ShellIsFile (ScriptPath) != EFI_SUCCESS) {
return (EFI_INVALID_PARAMETER);
}
//
// get the argc and argv updated for scripts
//
- Status = UpdateArgcArgv(ParamProtocol, CmdLine, Script_File_Name, &Argv, &Argc);
- if (!EFI_ERROR(Status)) {
-
+ Status = UpdateArgcArgv (ParamProtocol, CmdLine, Script_File_Name, &Argv, &Argc);
+ if (!EFI_ERROR (Status)) {
if (Handle == NULL) {
//
// open the file
//
- Status = ShellOpenFileByName(ScriptPath, &FileHandle, EFI_FILE_MODE_READ, 0);
- if (!EFI_ERROR(Status)) {
+ Status = ShellOpenFileByName (ScriptPath, &FileHandle, EFI_FILE_MODE_READ, 0);
+ if (!EFI_ERROR (Status)) {
//
// run it
//
- Status = RunScriptFileHandle(FileHandle, ScriptPath);
+ Status = RunScriptFileHandle (FileHandle, ScriptPath);
//
// now close the file
//
- ShellCloseFile(&FileHandle);
+ ShellCloseFile (&FileHandle);
}
} else {
- Status = RunScriptFileHandle(Handle, ScriptPath);
+ Status = RunScriptFileHandle (Handle, ScriptPath);
}
}
@@ -3143,7 +3306,7 @@ RunScriptFile (
// This is guaranteed to be called after UpdateArgcArgv no matter what else happened.
// This is safe even if the update API failed. In this case, it may be a no-op.
//
- RestoreArgcArgv(ParamProtocol, &Argv, &Argc);
+ RestoreArgcArgv (ParamProtocol, &Argv, &Argc);
return (Status);
}
@@ -3158,26 +3321,28 @@ RunScriptFile (
@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
+CONST CHAR16 *
+FindFirstCharacter (
+ IN CONST CHAR16 *String,
+ IN CONST CHAR16 *CharacterList,
+ IN CONST CHAR16 EscapeCharacter
)
{
- UINT32 WalkChar;
- UINT32 WalkStr;
+ UINT32 WalkChar;
+ UINT32 WalkStr;
- for (WalkStr = 0; WalkStr < StrLen(String); WalkStr++) {
+ for (WalkStr = 0; WalkStr < StrLen (String); WalkStr++) {
if (String[WalkStr] == EscapeCharacter) {
WalkStr++;
continue;
}
- for (WalkChar = 0; WalkChar < StrLen(CharacterList); WalkChar++) {
+
+ for (WalkChar = 0; WalkChar < StrLen (CharacterList); WalkChar++) {
if (String[WalkStr] == CharacterList[WalkChar]) {
return (&String[WalkStr]);
}
}
}
- return (String + StrLen(String));
+
+ return (String + StrLen (String));
}