mirror of
https://github.com/Dasharo/edk2-upstream.git
synced 2026-06-13 19:16:19 -07:00
This patch aims to help breaking down the long function present in the ShellPkg and reduce complexity/nested code and conditions. Lower the indentation level in the newly created MainCmdXXX() functions. Remove the ShellStatus variable which is not necessary. No functional change should be induced by this patch. Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
107 lines
2.7 KiB
C
107 lines
2.7 KiB
C
/** @file
|
|
Main file for exit shell level 1 function.
|
|
|
|
(C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>
|
|
Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#include "UefiShellLevel1CommandsLib.h"
|
|
|
|
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
|
|
{ L"/b", TypeFlag },
|
|
{ NULL, TypeMax }
|
|
};
|
|
|
|
/** Main function of the 'Exit' command.
|
|
|
|
@param[in] Package List of input parameter for the command.
|
|
**/
|
|
STATIC
|
|
SHELL_STATUS
|
|
MainCmdExit (
|
|
LIST_ENTRY *Package
|
|
)
|
|
{
|
|
EFI_STATUS Status;
|
|
UINT64 RetVal;
|
|
CONST CHAR16 *Return;
|
|
|
|
//
|
|
// return the specified error code
|
|
//
|
|
Return = ShellCommandLineGetRawValue (Package, 1);
|
|
if (Return == NULL) {
|
|
// If we are in a batch file and /b then pass TRUE otherwise false...
|
|
//
|
|
ShellCommandRegisterExit ((BOOLEAN)(gEfiShellProtocol->BatchIsActive () && ShellCommandLineGetFlag (Package, L"/b")), 0);
|
|
|
|
return SHELL_SUCCESS;
|
|
}
|
|
|
|
Status = ShellConvertStringToUint64 (Return, &RetVal, FALSE, FALSE);
|
|
if (EFI_ERROR (Status)) {
|
|
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellLevel1HiiHandle, L"exit", Return);
|
|
return SHELL_INVALID_PARAMETER;
|
|
}
|
|
|
|
//
|
|
// If we are in a batch file and /b then pass TRUE otherwise false...
|
|
//
|
|
ShellCommandRegisterExit ((BOOLEAN)(gEfiShellProtocol->BatchIsActive () && ShellCommandLineGetFlag (Package, L"/b")), RetVal);
|
|
return SHELL_SUCCESS;
|
|
}
|
|
|
|
/**
|
|
Function for 'exit' command.
|
|
|
|
@param[in] ImageHandle Handle to the Image (NULL if Internal).
|
|
@param[in] SystemTable Pointer to the System Table (NULL if Internal).
|
|
**/
|
|
SHELL_STATUS
|
|
EFIAPI
|
|
ShellCommandRunExit (
|
|
IN EFI_HANDLE ImageHandle,
|
|
IN EFI_SYSTEM_TABLE *SystemTable
|
|
)
|
|
{
|
|
EFI_STATUS Status;
|
|
LIST_ENTRY *Package;
|
|
CHAR16 *ProblemParam;
|
|
SHELL_STATUS ShellStatus;
|
|
|
|
ShellStatus = SHELL_SUCCESS;
|
|
|
|
//
|
|
// initialize the shell lib (we must be in non-auto-init...)
|
|
//
|
|
Status = ShellInitialize ();
|
|
ASSERT_EFI_ERROR (Status);
|
|
|
|
Status = CommandInit ();
|
|
ASSERT_EFI_ERROR (Status);
|
|
|
|
//
|
|
// parse the command line
|
|
//
|
|
Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);
|
|
if (EFI_ERROR (Status)) {
|
|
if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
|
|
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel1HiiHandle, L"exit", ProblemParam);
|
|
FreePool (ProblemParam);
|
|
ShellStatus = SHELL_INVALID_PARAMETER;
|
|
} else {
|
|
ASSERT (FALSE);
|
|
}
|
|
|
|
return ShellStatus;
|
|
}
|
|
|
|
ShellStatus = MainCmdExit (Package);
|
|
|
|
ShellCommandLineFreeVarList (Package);
|
|
|
|
return (ShellStatus);
|
|
}
|