ShellPkg/UefiShellDebug1: Lower indentation level in MainCmdXXX() (4/4)

This patch aims to help breaking down the long functions present in
the ShellPkg and reduce complexity/nested code and conditions.

Lower the indentation level in the newly created MainCmdXXX()
functions.

To avoid having one large commit updating all the UefiShellDebug1
commands, only update these files:
- SerMode.c
- SetSize.c
- SetVar.c
- SmbiosView/SmbiosView.c

No functional change should be induced by this patch.

Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
This commit is contained in:
Pierre Gondois 2026-06-04 11:21:31 +02:00 committed by Ard Biesheuvel
parent 642954d295
commit 42f1d004c0
4 changed files with 281 additions and 292 deletions

View file

@ -272,116 +272,109 @@ MainCmdSerMode (
if ((ShellCommandLineGetCount (Package) < 6) && (ShellCommandLineGetCount (Package) > 2)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"sermode");
ShellStatus = SHELL_INVALID_PARAMETER;
return SHELL_INVALID_PARAMETER;
} else if (ShellCommandLineGetCount (Package) > 6) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"sermode");
return SHELL_INVALID_PARAMETER;
}
Temp = ShellCommandLineGetRawValue (Package, 1);
if (Temp == NULL) {
return DisplaySettings (0, FALSE);
}
Status = ShellConvertStringToUint64 (Temp, &Intermediate, TRUE, FALSE);
HandleIdx = (UINTN)Intermediate;
Temp = ShellCommandLineGetRawValue (Package, 2);
if (Temp == NULL) {
return DisplaySettings (HandleIdx, TRUE);
}
Temp = ShellCommandLineGetRawValue (Package, 2);
if (Temp != NULL) {
BaudRate = ShellStrToUintn (Temp);
} else {
ASSERT (FALSE);
BaudRate = 0;
}
Temp = ShellCommandLineGetRawValue (Package, 3);
if ((Temp == NULL) || (StrLen (Temp) > 1)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"sermode", Temp);
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
Temp = ShellCommandLineGetRawValue (Package, 1);
if (Temp != NULL) {
Status = ShellConvertStringToUint64 (Temp, &Intermediate, TRUE, FALSE);
HandleIdx = (UINTN)Intermediate;
Temp = ShellCommandLineGetRawValue (Package, 2);
if (Temp == NULL) {
ShellStatus = DisplaySettings (HandleIdx, TRUE);
goto Done;
}
} else {
ShellStatus = DisplaySettings (0, FALSE);
goto Done;
}
Temp = ShellCommandLineGetRawValue (Package, 2);
if (Temp != NULL) {
BaudRate = ShellStrToUintn (Temp);
} else {
ASSERT (FALSE);
BaudRate = 0;
}
Temp = ShellCommandLineGetRawValue (Package, 3);
if ((Temp == NULL) || (StrLen (Temp) > 1)) {
Status = GetParityType (Temp[0], &Parity);
if (EFI_ERROR (Status)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"sermode", Temp);
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
Status = GetParityType (Temp[0], &Parity);
return SHELL_INVALID_PARAMETER;
}
}
Temp = ShellCommandLineGetRawValue (Package, 4);
if (Temp != NULL) {
DataBits = ShellStrToUintn (Temp);
} else {
//
// make sure this is some number not in the list below.
//
DataBits = 0;
}
if (!ValidDataBits (DataBits)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"sermode", Temp);
return SHELL_INVALID_PARAMETER;
}
Temp = ShellCommandLineGetRawValue (Package, 5);
if (Temp == NULL) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"sermode");
return SHELL_INVALID_PARAMETER;
}
Status = GetStopBits (ShellStrToUintn (Temp), &StopBits);
if (EFI_ERROR (Status)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"sermode", Temp);
return SHELL_INVALID_PARAMETER;
}
Status = gBS->LocateHandleBuffer (ByProtocol, &gEfiSerialIoProtocolGuid, NULL, &NoHandles, &Handles);
if (EFI_ERROR (Status)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SERMODE_NO_FOUND), gShellDebug1HiiHandle, L"sermode");
return SHELL_INVALID_PARAMETER;
}
for (Index = 0; Index < NoHandles; Index++) {
if (ConvertHandleIndexToHandle (HandleIdx) != Handles[Index]) {
continue;
}
Status = gBS->HandleProtocol (Handles[Index], &gEfiSerialIoProtocolGuid, (VOID **)&SerialIo);
if (!EFI_ERROR (Status)) {
Status = SerialIo->SetAttributes (
SerialIo,
(UINT64)BaudRate,
SerialIo->Mode->ReceiveFifoDepth,
SerialIo->Mode->Timeout,
Parity,
(UINT8)DataBits,
StopBits
);
if (EFI_ERROR (Status)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"sermode", Temp);
ShellStatus = SHELL_INVALID_PARAMETER;
goto Done;
}
}
Temp = ShellCommandLineGetRawValue (Package, 4);
if (Temp != NULL) {
DataBits = ShellStrToUintn (Temp);
} else {
//
// make sure this is some number not in the list below.
//
DataBits = 0;
}
if (!ValidDataBits (DataBits)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"sermode", Temp);
ShellStatus = SHELL_INVALID_PARAMETER;
goto Done;
}
Temp = ShellCommandLineGetRawValue (Package, 5);
if (Temp == NULL) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"sermode");
ShellStatus = SHELL_INVALID_PARAMETER;
goto Done;
}
Status = GetStopBits (ShellStrToUintn (Temp), &StopBits);
if (EFI_ERROR (Status)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"sermode", Temp);
ShellStatus = SHELL_INVALID_PARAMETER;
goto Done;
}
Status = gBS->LocateHandleBuffer (ByProtocol, &gEfiSerialIoProtocolGuid, NULL, &NoHandles, &Handles);
if (EFI_ERROR (Status)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SERMODE_NO_FOUND), gShellDebug1HiiHandle, L"sermode");
ShellStatus = SHELL_INVALID_PARAMETER;
goto Done;
}
for (Index = 0; Index < NoHandles; Index++) {
if (ConvertHandleIndexToHandle (HandleIdx) != Handles[Index]) {
continue;
}
Status = gBS->HandleProtocol (Handles[Index], &gEfiSerialIoProtocolGuid, (VOID **)&SerialIo);
if (!EFI_ERROR (Status)) {
Status = SerialIo->SetAttributes (
SerialIo,
(UINT64)BaudRate,
SerialIo->Mode->ReceiveFifoDepth,
SerialIo->Mode->Timeout,
Parity,
(UINT8)DataBits,
StopBits
);
if (EFI_ERROR (Status)) {
if (Status == EFI_INVALID_PARAMETER) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SERMODE_SET_UNSUPPORTED), gShellDebug1HiiHandle, L"sermode", ConvertHandleToHandleIndex (Handles[Index]));
ShellStatus = SHELL_UNSUPPORTED;
} else if (Status == EFI_DEVICE_ERROR) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SERMODE_SET_DEV_ERROR), gShellDebug1HiiHandle, L"sermode", ConvertHandleToHandleIndex (Handles[Index]));
ShellStatus = SHELL_ACCESS_DENIED;
} else {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SERMODE_SET_FAIL), gShellDebug1HiiHandle, L"sermode", ConvertHandleToHandleIndex (Handles[Index]));
ShellStatus = SHELL_ACCESS_DENIED;
}
if (Status == EFI_INVALID_PARAMETER) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SERMODE_SET_UNSUPPORTED), gShellDebug1HiiHandle, L"sermode", ConvertHandleToHandleIndex (Handles[Index]));
ShellStatus = SHELL_UNSUPPORTED;
} else if (Status == EFI_DEVICE_ERROR) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SERMODE_SET_DEV_ERROR), gShellDebug1HiiHandle, L"sermode", ConvertHandleToHandleIndex (Handles[Index]));
ShellStatus = SHELL_ACCESS_DENIED;
} else {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SERMODE_SET_HANDLE), gShellDebug1HiiHandle, ConvertHandleToHandleIndex (Handles[Index]));
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SERMODE_SET_FAIL), gShellDebug1HiiHandle, L"sermode", ConvertHandleToHandleIndex (Handles[Index]));
ShellStatus = SHELL_ACCESS_DENIED;
}
break;
} else {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SERMODE_SET_HANDLE), gShellDebug1HiiHandle, ConvertHandleToHandleIndex (Handles[Index]));
}
break;
}
}
@ -390,7 +383,6 @@ MainCmdSerMode (
ShellStatus = SHELL_INVALID_PARAMETER;
}
Done:
if (Handles != NULL) {
FreePool (Handles);
}

View file

@ -31,23 +31,20 @@ MainCmdSetSize (
if (ShellCommandLineGetCount (Package) < 3) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"setsize");
ShellStatus = SHELL_INVALID_PARAMETER;
NewSize = 0;
} else {
Temp1 = ShellCommandLineGetRawValue (Package, 1);
if (Temp1 == NULL) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"setsize");
ShellStatus = SHELL_INVALID_PARAMETER;
NewSize = 0;
} else if (!ShellIsHexOrDecimalNumber (Temp1, FALSE, FALSE)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SIZE_NOT_SPEC), gShellDebug1HiiHandle, L"setsize");
ShellStatus = SHELL_INVALID_PARAMETER;
NewSize = 0;
} else {
NewSize = ShellStrToUintn (Temp1);
}
return SHELL_INVALID_PARAMETER;
}
Temp1 = ShellCommandLineGetRawValue (Package, 1);
if (Temp1 == NULL) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"setsize");
return SHELL_INVALID_PARAMETER;
} else if (!ShellIsHexOrDecimalNumber (Temp1, FALSE, FALSE)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SIZE_NOT_SPEC), gShellDebug1HiiHandle, L"setsize");
return SHELL_INVALID_PARAMETER;
}
NewSize = ShellStrToUintn (Temp1);
for (LoopVar = 2; LoopVar < ShellCommandLineGetCount (Package) && ShellStatus == SHELL_SUCCESS; LoopVar++) {
Status = ShellOpenFileByName (ShellCommandLineGetRawValue (Package, LoopVar), &FileHandle, EFI_FILE_MODE_READ|EFI_FILE_MODE_WRITE, 0);
if (EFI_ERROR (Status)) {

View file

@ -370,104 +370,104 @@ MainCmdSetVar (
if (ShellCommandLineGetCount (Package) < 2) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"setvar");
ShellStatus = SHELL_INVALID_PARAMETER;
return SHELL_INVALID_PARAMETER;
}
VariableName = ShellCommandLineGetRawValue (Package, 1);
if (VariableName == NULL) {
return SHELL_INVALID_PARAMETER;
}
if (!ShellCommandLineGetFlag (Package, L"-guid")) {
CopyGuid (&Guid, &gEfiGlobalVariableGuid);
} else {
VariableName = ShellCommandLineGetRawValue (Package, 1);
if (VariableName == NULL) {
StringGuid = ShellCommandLineGetValue (Package, L"-guid");
if (StringGuid != NULL) {
RStatus = StrToGuid (StringGuid, &Guid);
} else {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"setvar", StringGuid);
return SHELL_INVALID_PARAMETER;
}
if (!ShellCommandLineGetFlag (Package, L"-guid")) {
CopyGuid (&Guid, &gEfiGlobalVariableGuid);
} else {
StringGuid = ShellCommandLineGetValue (Package, L"-guid");
if (StringGuid != NULL) {
RStatus = StrToGuid (StringGuid, &Guid);
} else {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"setvar", StringGuid);
return SHELL_INVALID_PARAMETER;
if (RETURN_ERROR (RStatus) || (StringGuid[GUID_STRING_LENGTH] != L'\0')) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"setvar", StringGuid);
ShellStatus = SHELL_INVALID_PARAMETER;
}
}
if (ShellCommandLineGetCount (Package) == 2) {
//
// Display
//
Status = gRT->GetVariable ((CHAR16 *)VariableName, &Guid, &Attributes, &Size, Buffer);
if (Status == EFI_BUFFER_TOO_SMALL) {
Buffer = AllocateZeroPool (Size);
if (Buffer == NULL) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_OUT_MEM), gShellDebug1HiiHandle, L"setvar");
return SHELL_OUT_OF_RESOURCES;
}
if (RETURN_ERROR (RStatus) || (StringGuid[GUID_STRING_LENGTH] != L'\0')) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"setvar", StringGuid);
ShellStatus = SHELL_INVALID_PARAMETER;
Status = gRT->GetVariable ((CHAR16 *)VariableName, &Guid, &Attributes, &Size, Buffer);
}
if (!EFI_ERROR (Status) && (Buffer != NULL)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SETVAR_PRINT), gShellDebug1HiiHandle, &Guid, VariableName, Size);
for (LoopVar = 0; LoopVar < Size; LoopVar++) {
ShellPrintDefaultEx (L"%02x ", ((UINT8 *)Buffer)[LoopVar]);
}
ShellPrintDefaultEx (L"\r\n");
} else {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SETVAR_ERROR_GET), gShellDebug1HiiHandle, L"setvar", &Guid, VariableName);
ShellStatus = SHELL_ACCESS_DENIED;
}
} else {
//
// Create, Delete or Modify.
//
Status = gRT->GetVariable ((CHAR16 *)VariableName, &Guid, &Attributes, &Size, Buffer);
if (Status == EFI_BUFFER_TOO_SMALL) {
Buffer = AllocateZeroPool (Size);
if (Buffer == NULL) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_OUT_MEM), gShellDebug1HiiHandle, L"setvar");
return SHELL_OUT_OF_RESOURCES;
}
Status = gRT->GetVariable ((CHAR16 *)VariableName, &Guid, &Attributes, &Size, Buffer);
}
if (EFI_ERROR (Status) || (Buffer == NULL)) {
//
// Creating a new variable. determine attributes from command line.
//
Attributes = 0;
if (ShellCommandLineGetFlag (Package, L"-bs")) {
Attributes |= EFI_VARIABLE_BOOTSERVICE_ACCESS;
}
if (ShellCommandLineGetFlag (Package, L"-rt")) {
Attributes |= EFI_VARIABLE_RUNTIME_ACCESS |
EFI_VARIABLE_BOOTSERVICE_ACCESS;
}
if (ShellCommandLineGetFlag (Package, L"-nv")) {
Attributes |= EFI_VARIABLE_NON_VOLATILE;
}
}
if (ShellCommandLineGetCount (Package) == 2) {
//
// Display
//
Status = gRT->GetVariable ((CHAR16 *)VariableName, &Guid, &Attributes, &Size, Buffer);
if (Status == EFI_BUFFER_TOO_SMALL) {
Buffer = AllocateZeroPool (Size);
if (Buffer == NULL) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_OUT_MEM), gShellDebug1HiiHandle, L"setvar");
return SHELL_OUT_OF_RESOURCES;
}
SHELL_FREE_NON_NULL (Buffer);
Status = gRT->GetVariable ((CHAR16 *)VariableName, &Guid, &Attributes, &Size, Buffer);
}
Size = 0;
Status = GetVariableDataFromParameter (Package, (UINT8 **)&Buffer, &Size);
if (!EFI_ERROR (Status)) {
Status = gRT->SetVariable ((CHAR16 *)VariableName, &Guid, Attributes, Size, Buffer);
}
if (!EFI_ERROR (Status) && (Buffer != NULL)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SETVAR_PRINT), gShellDebug1HiiHandle, &Guid, VariableName, Size);
for (LoopVar = 0; LoopVar < Size; LoopVar++) {
ShellPrintDefaultEx (L"%02x ", ((UINT8 *)Buffer)[LoopVar]);
}
ShellPrintDefaultEx (L"\r\n");
} else {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SETVAR_ERROR_GET), gShellDebug1HiiHandle, L"setvar", &Guid, VariableName);
ShellStatus = SHELL_ACCESS_DENIED;
}
if (EFI_ERROR (Status)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SETVAR_ERROR_SET), gShellDebug1HiiHandle, L"setvar", &Guid, VariableName);
ShellStatus = SHELL_ACCESS_DENIED;
} else {
//
// Create, Delete or Modify.
//
Status = gRT->GetVariable ((CHAR16 *)VariableName, &Guid, &Attributes, &Size, Buffer);
if (Status == EFI_BUFFER_TOO_SMALL) {
Buffer = AllocateZeroPool (Size);
if (Buffer == NULL) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_OUT_MEM), gShellDebug1HiiHandle, L"setvar");
return SHELL_OUT_OF_RESOURCES;
}
Status = gRT->GetVariable ((CHAR16 *)VariableName, &Guid, &Attributes, &Size, Buffer);
}
if (EFI_ERROR (Status) || (Buffer == NULL)) {
//
// Creating a new variable. determine attributes from command line.
//
Attributes = 0;
if (ShellCommandLineGetFlag (Package, L"-bs")) {
Attributes |= EFI_VARIABLE_BOOTSERVICE_ACCESS;
}
if (ShellCommandLineGetFlag (Package, L"-rt")) {
Attributes |= EFI_VARIABLE_RUNTIME_ACCESS |
EFI_VARIABLE_BOOTSERVICE_ACCESS;
}
if (ShellCommandLineGetFlag (Package, L"-nv")) {
Attributes |= EFI_VARIABLE_NON_VOLATILE;
}
}
SHELL_FREE_NON_NULL (Buffer);
Size = 0;
Status = GetVariableDataFromParameter (Package, (UINT8 **)&Buffer, &Size);
if (!EFI_ERROR (Status)) {
Status = gRT->SetVariable ((CHAR16 *)VariableName, &Guid, Attributes, Size, Buffer);
}
if (EFI_ERROR (Status)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SETVAR_ERROR_SET), gShellDebug1HiiHandle, L"setvar", &Guid, VariableName);
ShellStatus = SHELL_ACCESS_DENIED;
} else {
ASSERT (ShellStatus == SHELL_SUCCESS);
}
ASSERT (ShellStatus == SHELL_SUCCESS);
}
}

View file

@ -57,13 +57,13 @@ MainCmdSmbiosView (
if (ShellCommandLineGetCount (Package) > 1) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"smbiosview");
ShellStatus = SHELL_INVALID_PARAMETER;
return SHELL_INVALID_PARAMETER;
} else if (ShellCommandLineGetFlag (Package, L"-t") && (ShellCommandLineGetValue (Package, L"-t") == NULL)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"smbiosview", L"-t");
ShellStatus = SHELL_INVALID_PARAMETER;
return SHELL_INVALID_PARAMETER;
} else if (ShellCommandLineGetFlag (Package, L"-h") && (ShellCommandLineGetValue (Package, L"-h") == NULL)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"smbiosview", L"-h");
ShellStatus = SHELL_INVALID_PARAMETER;
return SHELL_INVALID_PARAMETER;
} else if (
(ShellCommandLineGetFlag (Package, L"-t") && ShellCommandLineGetFlag (Package, L"-h")) ||
(ShellCommandLineGetFlag (Package, L"-t") && ShellCommandLineGetFlag (Package, L"-s")) ||
@ -74,111 +74,111 @@ MainCmdSmbiosView (
)
{
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"smbiosview");
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
return SHELL_INVALID_PARAMETER;
}
//
// Init Lib
//
Status1 = LibSmbiosInit ();
Status2 = LibSmbios64BitInit ();
if (EFI_ERROR (Status1) && EFI_ERROR (Status2)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SMBIOSVIEW_LIBSMBIOSVIEW_CANNOT_GET_TABLE), gShellDebug1HiiHandle);
ShellStatus = SHELL_NOT_FOUND;
goto Done;
}
StructType = STRUCTURE_TYPE_RANDOM;
RandomView = TRUE;
Temp = ShellCommandLineGetValue (Package, L"-t");
if (Temp != NULL) {
StructType = (UINT8)ShellStrToUintn (Temp);
}
if (ShellCommandLineGetFlag (Package, L"-a")) {
gShowType = SHOW_ALL;
}
if (!EFI_ERROR (Status1)) {
//
// Init Lib
// Initialize the StructHandle to be the first handle
//
Status1 = LibSmbiosInit ();
Status2 = LibSmbios64BitInit ();
if (EFI_ERROR (Status1) && EFI_ERROR (Status2)) {
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_SMBIOSVIEW_LIBSMBIOSVIEW_CANNOT_GET_TABLE), gShellDebug1HiiHandle);
StructHandle = INVALID_HANDLE;
LibGetSmbiosStructure (&StructHandle, NULL, NULL);
Temp = ShellCommandLineGetValue (Package, L"-h");
if (Temp != NULL) {
RandomView = FALSE;
StructHandle = (UINT16)ShellStrToUintn (Temp);
}
//
// build statistics table
//
Status = InitSmbiosTableStatistics ();
if (EFI_ERROR (Status)) {
ShellStatus = SHELL_NOT_FOUND;
goto Done;
}
StructType = STRUCTURE_TYPE_RANDOM;
RandomView = TRUE;
Temp = ShellCommandLineGetValue (Package, L"-t");
if (Temp != NULL) {
StructType = (UINT8)ShellStrToUintn (Temp);
}
if (ShellCommandLineGetFlag (Package, L"-a")) {
gShowType = SHOW_ALL;
}
if (!EFI_ERROR (Status1)) {
//
// Initialize the StructHandle to be the first handle
//
StructHandle = INVALID_HANDLE;
LibGetSmbiosStructure (&StructHandle, NULL, NULL);
Temp = ShellCommandLineGetValue (Package, L"-h");
if (Temp != NULL) {
RandomView = FALSE;
StructHandle = (UINT16)ShellStrToUintn (Temp);
}
//
// build statistics table
//
Status = InitSmbiosTableStatistics ();
if (ShellCommandLineGetFlag (Package, L"-s")) {
Status = DisplayStatisticsTable (SHOW_DETAIL);
if (EFI_ERROR (Status)) {
ShellStatus = SHELL_NOT_FOUND;
goto Done;
}
if (ShellCommandLineGetFlag (Package, L"-s")) {
Status = DisplayStatisticsTable (SHOW_DETAIL);
if (EFI_ERROR (Status)) {
ShellStatus = SHELL_NOT_FOUND;
}
goto Show64Bit;
}
//
// Show SMBIOS structure information
//
Status = SMBiosView (StructType, StructHandle, gShowType, RandomView);
if (EFI_ERROR (Status)) {
ShellStatus = SHELL_NOT_FOUND;
goto Done;
}
goto Show64Bit;
}
//
// Show SMBIOS structure information
//
Status = SMBiosView (StructType, StructHandle, gShowType, RandomView);
if (EFI_ERROR (Status)) {
ShellStatus = SHELL_NOT_FOUND;
goto Done;
}
}
Show64Bit:
if (!EFI_ERROR (Status2)) {
//
// build statistics table
//
Status = InitSmbios64BitTableStatistics ();
if (EFI_ERROR (Status)) {
ShellStatus = SHELL_NOT_FOUND;
goto Done;
}
if (!EFI_ERROR (Status2)) {
//
// build statistics table
//
Status = InitSmbios64BitTableStatistics ();
if (EFI_ERROR (Status)) {
ShellStatus = SHELL_NOT_FOUND;
goto Done;
}
//
// Initialize the StructHandle to be the first handle
//
StructHandle = INVALID_HANDLE;
LibGetSmbios64BitStructure (&StructHandle, NULL, NULL);
//
// Initialize the StructHandle to be the first handle
//
StructHandle = INVALID_HANDLE;
LibGetSmbios64BitStructure (&StructHandle, NULL, NULL);
Temp = ShellCommandLineGetValue (Package, L"-h");
if (Temp != NULL) {
RandomView = FALSE;
StructHandle = (UINT16)ShellStrToUintn (Temp);
}
Temp = ShellCommandLineGetValue (Package, L"-h");
if (Temp != NULL) {
RandomView = FALSE;
StructHandle = (UINT16)ShellStrToUintn (Temp);
}
if (ShellCommandLineGetFlag (Package, L"-s")) {
Status = DisplaySmbios64BitStatisticsTable (SHOW_DETAIL);
if (EFI_ERROR (Status)) {
ShellStatus = SHELL_NOT_FOUND;
}
goto Done;
}
//
// Show SMBIOS structure information
//
Status = SMBios64View (StructType, StructHandle, gShowType, RandomView);
if (ShellCommandLineGetFlag (Package, L"-s")) {
Status = DisplaySmbios64BitStatisticsTable (SHOW_DETAIL);
if (EFI_ERROR (Status)) {
ShellStatus = SHELL_NOT_FOUND;
}
goto Done;
}
//
// Show SMBIOS structure information
//
Status = SMBios64View (StructType, StructHandle, gShowType, RandomView);
if (EFI_ERROR (Status)) {
ShellStatus = SHELL_NOT_FOUND;
}
}