ShellPkg/UefiShellDebug1: Lower indentation level in MainCmdXXX() (1/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: - Comp.c - Cxl.c - Dblk.c - Dmem.c - DmpStore.c No functional change should be induced by this patch. Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Comp.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/Comp.c index 78975cb..3b7bf34 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Comp.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Comp.c
@@ -247,240 +247,245 @@ if (ShellCommandLineGetCount (Package) > 3) { ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"comp"); - ShellStatus = SHELL_INVALID_PARAMETER; + return SHELL_INVALID_PARAMETER; } else if (ShellCommandLineGetCount (Package) < 3) { ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"comp"); - ShellStatus = SHELL_INVALID_PARAMETER; + return SHELL_INVALID_PARAMETER; + } + + TempParam = ShellCommandLineGetRawValue (Package, 1); + if (TempParam == NULL) { + ASSERT (TempParam != NULL); + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"comp", TempParam); + return SHELL_INVALID_PARAMETER; + } + + FileName1 = ShellFindFilePath (TempParam); + if (FileName1 == NULL) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_FILE_FIND_FAIL), gShellDebug1HiiHandle, L"comp", TempParam); + ShellStatus = SHELL_NOT_FOUND; } else { - TempParam = ShellCommandLineGetRawValue (Package, 1); - if (TempParam == NULL) { - ASSERT (TempParam != NULL); - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"comp", TempParam); - ShellStatus = SHELL_INVALID_PARAMETER; - goto Exit; - } - - FileName1 = ShellFindFilePath (TempParam); - if (FileName1 == NULL) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_FILE_FIND_FAIL), gShellDebug1HiiHandle, L"comp", TempParam); + Status = ShellOpenFileByName (FileName1, &FileHandle1, EFI_FILE_MODE_READ, 0); + if (EFI_ERROR (Status)) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"comp", TempParam); ShellStatus = SHELL_NOT_FOUND; - } else { - Status = ShellOpenFileByName (FileName1, &FileHandle1, EFI_FILE_MODE_READ, 0); - if (EFI_ERROR (Status)) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"comp", TempParam); - ShellStatus = SHELL_NOT_FOUND; - } } + } - TempParam = ShellCommandLineGetRawValue (Package, 2); - if (TempParam == NULL) { - ASSERT (TempParam != NULL); - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"comp", TempParam); - ShellStatus = SHELL_INVALID_PARAMETER; - goto Exit; - } + TempParam = ShellCommandLineGetRawValue (Package, 2); + if (TempParam == NULL) { + ASSERT (TempParam != NULL); + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"comp", TempParam); + ShellStatus = SHELL_INVALID_PARAMETER; + goto Exit; + } - FileName2 = ShellFindFilePath (TempParam); - if (FileName2 == NULL) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_FILE_FIND_FAIL), gShellDebug1HiiHandle, L"comp", TempParam); + FileName2 = ShellFindFilePath (TempParam); + if (FileName2 == NULL) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_FILE_FIND_FAIL), gShellDebug1HiiHandle, L"comp", TempParam); + ShellStatus = SHELL_NOT_FOUND; + } else { + Status = ShellOpenFileByName (FileName2, &FileHandle2, EFI_FILE_MODE_READ, 0); + if (EFI_ERROR (Status)) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"comp", TempParam); ShellStatus = SHELL_NOT_FOUND; - } else { - Status = ShellOpenFileByName (FileName2, &FileHandle2, EFI_FILE_MODE_READ, 0); - if (EFI_ERROR (Status)) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"comp", TempParam); - ShellStatus = SHELL_NOT_FOUND; - } } + } - if (ShellStatus == SHELL_SUCCESS) { - Status = gEfiShellProtocol->GetFileSize (FileHandle1, &Size1); - ASSERT_EFI_ERROR (Status); - Status = gEfiShellProtocol->GetFileSize (FileHandle2, &Size2); - ASSERT_EFI_ERROR (Status); + if (ShellStatus != SHELL_SUCCESS) { + goto Exit; + } - if (ShellCommandLineGetFlag (Package, L"-n")) { - TempParam = ShellCommandLineGetValue (Package, L"-n"); - if (TempParam == NULL) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"comp", L"-n"); + Status = gEfiShellProtocol->GetFileSize (FileHandle1, &Size1); + ASSERT_EFI_ERROR (Status); + Status = gEfiShellProtocol->GetFileSize (FileHandle2, &Size2); + ASSERT_EFI_ERROR (Status); + + if (ShellCommandLineGetFlag (Package, L"-n")) { + TempParam = ShellCommandLineGetValue (Package, L"-n"); + if (TempParam == NULL) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"comp", L"-n"); + ShellStatus = SHELL_INVALID_PARAMETER; + } else { + if (gUnicodeCollation->StriColl (gUnicodeCollation, (CHAR16 *)TempParam, L"all") == 0) { + DifferentCount = MAX_UINTN; + } else { + Status = ShellConvertStringToUint64 (TempParam, &DifferentCount, FALSE, TRUE); + if (EFI_ERROR (Status) || (DifferentCount == 0)) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PROBLEM_VAL), gShellDebug1HiiHandle, L"comp", TempParam, L"-n"); ShellStatus = SHELL_INVALID_PARAMETER; - } else { - if (gUnicodeCollation->StriColl (gUnicodeCollation, (CHAR16 *)TempParam, L"all") == 0) { - DifferentCount = MAX_UINTN; - } else { - Status = ShellConvertStringToUint64 (TempParam, &DifferentCount, FALSE, TRUE); - if (EFI_ERROR (Status) || (DifferentCount == 0)) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PROBLEM_VAL), gShellDebug1HiiHandle, L"comp", TempParam, L"-n"); - ShellStatus = SHELL_INVALID_PARAMETER; - } - } - } - } - - if (ShellCommandLineGetFlag (Package, L"-s")) { - TempParam = ShellCommandLineGetValue (Package, L"-s"); - if (TempParam == NULL) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"comp", L"-s"); - ShellStatus = SHELL_INVALID_PARAMETER; - } else { - Status = ShellConvertStringToUint64 (TempParam, &DifferentBytes, FALSE, TRUE); - if (EFI_ERROR (Status) || (DifferentBytes == 0)) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PROBLEM_VAL), gShellDebug1HiiHandle, L"comp", TempParam, L"-s"); - ShellStatus = SHELL_INVALID_PARAMETER; - } else { - if (DifferentBytes > MAX (Size1, Size2)) { - DifferentBytes = MAX (Size1, Size2); - } - } } } } + } - if (ShellStatus == SHELL_SUCCESS) { - DataFromFile1 = AllocateZeroPool ((UINTN)DifferentBytes); - DataFromFile2 = AllocateZeroPool ((UINTN)DifferentBytes); - FileBufferInit (&FileBuffer1); - FileBufferInit (&FileBuffer2); - if ((DataFromFile1 == NULL) || (DataFromFile2 == NULL) || - (FileBuffer1.Data == NULL) || (FileBuffer2.Data == NULL)) - { - ShellStatus = SHELL_OUT_OF_RESOURCES; - SHELL_FREE_NON_NULL (DataFromFile1); - SHELL_FREE_NON_NULL (DataFromFile2); - FileBufferUninit (&FileBuffer1); - FileBufferUninit (&FileBuffer2); + if (ShellCommandLineGetFlag (Package, L"-s")) { + TempParam = ShellCommandLineGetValue (Package, L"-s"); + if (TempParam == NULL) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"comp", L"-s"); + ShellStatus = SHELL_INVALID_PARAMETER; + } else { + Status = ShellConvertStringToUint64 (TempParam, &DifferentBytes, FALSE, TRUE); + if (EFI_ERROR (Status) || (DifferentBytes == 0)) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PROBLEM_VAL), gShellDebug1HiiHandle, L"comp", TempParam, L"-s"); + ShellStatus = SHELL_INVALID_PARAMETER; + } else { + if (DifferentBytes > MAX (Size1, Size2)) { + DifferentBytes = MAX (Size1, Size2); + } + } + } + } + + if (ShellStatus != SHELL_SUCCESS) { + goto Exit; + } + + DataFromFile1 = AllocateZeroPool ((UINTN)DifferentBytes); + DataFromFile2 = AllocateZeroPool ((UINTN)DifferentBytes); + FileBufferInit (&FileBuffer1); + FileBufferInit (&FileBuffer2); + if ((DataFromFile1 == NULL) || (DataFromFile2 == NULL) || + (FileBuffer1.Data == NULL) || (FileBuffer2.Data == NULL)) + { + ShellStatus = SHELL_OUT_OF_RESOURCES; + SHELL_FREE_NON_NULL (DataFromFile1); + SHELL_FREE_NON_NULL (DataFromFile2); + FileBufferUninit (&FileBuffer1); + FileBufferUninit (&FileBuffer2); + } + + if (ShellStatus != SHELL_SUCCESS) { + goto Exit; + } + + while ((UINT64)DiffPointNumber < DifferentCount) { + DataSizeFromFile1 = 1; + DataSizeFromFile2 = 1; + OneByteFromFile1 = 0; + OneByteFromFile2 = 0; + Status = FileBufferReadByte ( + FileHandle1, + &FileBuffer1, + &DataSizeFromFile1, + &OneByteFromFile1 + ); + ASSERT_EFI_ERROR (Status); + Status = FileBufferReadByte ( + FileHandle2, + &FileBuffer2, + &DataSizeFromFile2, + &OneByteFromFile2 + ); + ASSERT_EFI_ERROR (Status); + + TempAddress++; + + // + // 1.When end of file and no chars in DataFromFile buffer, then break while. + // 2.If no more char in File1 or File2, The ReadStatus is InPrevDiffPoint forever. + // So the previous different point is the last one, then break the while block. + // + if (((DataSizeFromFile1 == 0) && (InsertPosition1 == 0) && (DataSizeFromFile2 == 0) && (InsertPosition2 == 0)) || + ((ReadStatus == InPrevDiffPoint) && ((DataSizeFromFile1 == 0) || (DataSizeFromFile2 == 0))) + ) + { + break; + } + + if (ReadStatus == OutOfDiffPoint) { + if (OneByteFromFile1 != OneByteFromFile2) { + ReadStatus = InDiffPoint; + DiffPointAddress = TempAddress; + if (DataSizeFromFile1 == 1) { + DataFromFile1[InsertPosition1++] = OneByteFromFile1; + } + + if (DataSizeFromFile2 == 1) { + DataFromFile2[InsertPosition2++] = OneByteFromFile2; + } + } + } else if (ReadStatus == InDiffPoint) { + if (DataSizeFromFile1 == 1) { + DataFromFile1[InsertPosition1++] = OneByteFromFile1; + } + + if (DataSizeFromFile2 == 1) { + DataFromFile2[InsertPosition2++] = OneByteFromFile2; + } + } else if (ReadStatus == InPrevDiffPoint) { + if (OneByteFromFile1 == OneByteFromFile2) { + ReadStatus = OutOfDiffPoint; } } - if (ShellStatus == SHELL_SUCCESS) { - while ((UINT64)DiffPointNumber < DifferentCount) { - DataSizeFromFile1 = 1; - DataSizeFromFile2 = 1; - OneByteFromFile1 = 0; - OneByteFromFile2 = 0; - Status = FileBufferReadByte ( - FileHandle1, - &FileBuffer1, - &DataSizeFromFile1, - &OneByteFromFile1 - ); - ASSERT_EFI_ERROR (Status); - Status = FileBufferReadByte ( - FileHandle2, - &FileBuffer2, - &DataSizeFromFile2, - &OneByteFromFile2 - ); - ASSERT_EFI_ERROR (Status); + // + // ReadStatus should be always equal InDiffPoint. + // + if ((InsertPosition1 == DifferentBytes) || + (InsertPosition2 == DifferentBytes) || + ((DataSizeFromFile1 == 0) && (DataSizeFromFile2 == 0)) + ) + { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_COMP_DIFFERENCE_POINT), gShellDebug1HiiHandle, ++DiffPointNumber); + PrintDifferentPoint (FileName1, L"File1", DataFromFile1, InsertPosition1, DiffPointAddress, DifferentBytes); + PrintDifferentPoint (FileName2, L"File2", DataFromFile2, InsertPosition2, DiffPointAddress, DifferentBytes); - TempAddress++; + // + // One of two buffuers is empty, it means this is the last different point. + // + if ((InsertPosition1 == 0) || (InsertPosition2 == 0)) { + break; + } - // - // 1.When end of file and no chars in DataFromFile buffer, then break while. - // 2.If no more char in File1 or File2, The ReadStatus is InPrevDiffPoint forever. - // So the previous different point is the last one, then break the while block. - // - if (((DataSizeFromFile1 == 0) && (InsertPosition1 == 0) && (DataSizeFromFile2 == 0) && (InsertPosition2 == 0)) || - ((ReadStatus == InPrevDiffPoint) && ((DataSizeFromFile1 == 0) || (DataSizeFromFile2 == 0))) - ) - { + for (Index = 1; Index < InsertPosition1 && Index < InsertPosition2; Index++) { + if (DataFromFile1[Index] == DataFromFile2[Index]) { + ReadStatus = OutOfDiffPoint; break; } + } - if (ReadStatus == OutOfDiffPoint) { - if (OneByteFromFile1 != OneByteFromFile2) { - ReadStatus = InDiffPoint; - DiffPointAddress = TempAddress; - if (DataSizeFromFile1 == 1) { - DataFromFile1[InsertPosition1++] = OneByteFromFile1; - } - - if (DataSizeFromFile2 == 1) { - DataFromFile2[InsertPosition2++] = OneByteFromFile2; - } - } - } else if (ReadStatus == InDiffPoint) { - if (DataSizeFromFile1 == 1) { - DataFromFile1[InsertPosition1++] = OneByteFromFile1; - } - - if (DataSizeFromFile2 == 1) { - DataFromFile2[InsertPosition2++] = OneByteFromFile2; - } - } else if (ReadStatus == InPrevDiffPoint) { - if (OneByteFromFile1 == OneByteFromFile2) { - ReadStatus = OutOfDiffPoint; - } - } - + if (ReadStatus == OutOfDiffPoint) { // - // ReadStatus should be always equal InDiffPoint. + // Try to find a new different point in the rest of DataFromFile. // - if ((InsertPosition1 == DifferentBytes) || - (InsertPosition2 == DifferentBytes) || - ((DataSizeFromFile1 == 0) && (DataSizeFromFile2 == 0)) - ) - { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_COMP_DIFFERENCE_POINT), gShellDebug1HiiHandle, ++DiffPointNumber); - PrintDifferentPoint (FileName1, L"File1", DataFromFile1, InsertPosition1, DiffPointAddress, DifferentBytes); - PrintDifferentPoint (FileName2, L"File2", DataFromFile2, InsertPosition2, DiffPointAddress, DifferentBytes); - - // - // One of two buffuers is empty, it means this is the last different point. - // - if ((InsertPosition1 == 0) || (InsertPosition2 == 0)) { + for ( ; Index < MAX (InsertPosition1, InsertPosition2); Index++) { + if (DataFromFile1[Index] != DataFromFile2[Index]) { + ReadStatus = InDiffPoint; + DiffPointAddress += Index; break; } - - for (Index = 1; Index < InsertPosition1 && Index < InsertPosition2; Index++) { - if (DataFromFile1[Index] == DataFromFile2[Index]) { - ReadStatus = OutOfDiffPoint; - break; - } - } - - if (ReadStatus == OutOfDiffPoint) { - // - // Try to find a new different point in the rest of DataFromFile. - // - for ( ; Index < MAX (InsertPosition1, InsertPosition2); Index++) { - if (DataFromFile1[Index] != DataFromFile2[Index]) { - ReadStatus = InDiffPoint; - DiffPointAddress += Index; - break; - } - } - } else { - // - // Doesn't find a new different point, still in the same different point. - // - ReadStatus = InPrevDiffPoint; - } - - CopyMem (DataFromFile1, DataFromFile1 + Index, InsertPosition1 - Index); - CopyMem (DataFromFile2, DataFromFile2 + Index, InsertPosition2 - Index); - - SetMem (DataFromFile1 + InsertPosition1 - Index, (UINTN)DifferentBytes - InsertPosition1 + Index, 0); - SetMem (DataFromFile2 + InsertPosition2 - Index, (UINTN)DifferentBytes - InsertPosition2 + Index, 0); - - InsertPosition1 -= Index; - InsertPosition2 -= Index; } - } - - SHELL_FREE_NON_NULL (DataFromFile1); - SHELL_FREE_NON_NULL (DataFromFile2); - FileBufferUninit (&FileBuffer1); - FileBufferUninit (&FileBuffer2); - - if (DiffPointNumber == 0) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_COMP_FOOTER_PASS), gShellDebug1HiiHandle); } else { - ShellStatus = SHELL_NOT_EQUAL; - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_COMP_FOOTER_FAIL), gShellDebug1HiiHandle); + // + // Doesn't find a new different point, still in the same different point. + // + ReadStatus = InPrevDiffPoint; } + + CopyMem (DataFromFile1, DataFromFile1 + Index, InsertPosition1 - Index); + CopyMem (DataFromFile2, DataFromFile2 + Index, InsertPosition2 - Index); + + SetMem (DataFromFile1 + InsertPosition1 - Index, (UINTN)DifferentBytes - InsertPosition1 + Index, 0); + SetMem (DataFromFile2 + InsertPosition2 - Index, (UINTN)DifferentBytes - InsertPosition2 + Index, 0); + + InsertPosition1 -= Index; + InsertPosition2 -= Index; } } + SHELL_FREE_NON_NULL (DataFromFile1); + SHELL_FREE_NON_NULL (DataFromFile2); + FileBufferUninit (&FileBuffer1); + FileBufferUninit (&FileBuffer2); + + if (DiffPointNumber == 0) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_COMP_FOOTER_PASS), gShellDebug1HiiHandle); + } else { + ShellStatus = SHELL_NOT_EQUAL; + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_COMP_FOOTER_FAIL), gShellDebug1HiiHandle); + } + Exit: SHELL_FREE_NON_NULL (FileName1); SHELL_FREE_NON_NULL (FileName2);
diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Cxl.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/Cxl.c index e79391b..fb0cebc 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Cxl.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Cxl.c
@@ -351,138 +351,138 @@ Status = EFI_SUCCESS; goto Done; - } else { - // Dump extended information - TargetSegment = 0; - TargetBus = 0; - TargetDevice = 0; - TargetFunc = 0; - if ((ShellCommandLineGetCount (Package) < 4) || (ShellCommandLineGetCount (Package) == 5)) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"cxl"); - ShellStatus = SHELL_INVALID_PARAMETER; - goto Done; - } + } - if (ShellCommandLineGetCount (Package) > 6) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"cxl"); - ShellStatus = SHELL_INVALID_PARAMETER; - goto Done; - } + // Dump extended information + TargetSegment = 0; + TargetBus = 0; + TargetDevice = 0; + TargetFunc = 0; + if ((ShellCommandLineGetCount (Package) < 4) || (ShellCommandLineGetCount (Package) == 5)) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"cxl"); + ShellStatus = SHELL_INVALID_PARAMETER; + goto Done; + } - if (ShellCommandLineGetFlag (Package, L"-s") && (ShellCommandLineGetValue (Package, L"-s") == NULL)) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"cxl", L"-s"); - ShellStatus = SHELL_INVALID_PARAMETER; - goto Done; - } + if (ShellCommandLineGetCount (Package) > 6) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"cxl"); + ShellStatus = SHELL_INVALID_PARAMETER; + goto Done; + } - Temp = ShellCommandLineGetValue (Package, L"-s"); - if (Temp != NULL) { - // - // Input converted to hexadecimal number. - // - if (!EFI_ERROR (ShellConvertStringToUint64 (Temp, &RetVal, TRUE, TRUE))) { - TargetSegment = (UINT16)RetVal; - } else { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV_HEX), gShellDebug1HiiHandle, L"cxl", Temp); - ShellStatus = SHELL_INVALID_PARAMETER; - goto Done; - } - } + if (ShellCommandLineGetFlag (Package, L"-s") && (ShellCommandLineGetValue (Package, L"-s") == NULL)) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"cxl", L"-s"); + ShellStatus = SHELL_INVALID_PARAMETER; + goto Done; + } + Temp = ShellCommandLineGetValue (Package, L"-s"); + if (Temp != NULL) { // - // The first Argument is assumed to be Bus number, second - // to be Device number, and third to be Func number. + // Input converted to hexadecimal number. // - Temp = ShellCommandLineGetRawValue (Package, 1); - if (Temp != NULL) { - // - // Input converted to hexadecimal number. - // - if (!EFI_ERROR (ShellConvertStringToUint64 (Temp, &RetVal, TRUE, TRUE))) { - TargetBus = (UINT16)RetVal; - } else { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV_HEX), gShellDebug1HiiHandle, L"cxl", Temp); - ShellStatus = SHELL_INVALID_PARAMETER; - goto Done; - } + if (!EFI_ERROR (ShellConvertStringToUint64 (Temp, &RetVal, TRUE, TRUE))) { + TargetSegment = (UINT16)RetVal; + } else { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV_HEX), gShellDebug1HiiHandle, L"cxl", Temp); + ShellStatus = SHELL_INVALID_PARAMETER; + goto Done; + } + } - if (TargetBus > PCI_MAX_BUS) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"cxl", Temp); - ShellStatus = SHELL_INVALID_PARAMETER; - goto Done; - } + // + // The first Argument is assumed to be Bus number, second + // to be Device number, and third to be Func number. + // + Temp = ShellCommandLineGetRawValue (Package, 1); + if (Temp != NULL) { + // + // Input converted to hexadecimal number. + // + if (!EFI_ERROR (ShellConvertStringToUint64 (Temp, &RetVal, TRUE, TRUE))) { + TargetBus = (UINT16)RetVal; + } else { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV_HEX), gShellDebug1HiiHandle, L"cxl", Temp); + ShellStatus = SHELL_INVALID_PARAMETER; + goto Done; } - Temp = ShellCommandLineGetRawValue (Package, 2); - if (Temp != NULL) { - // - // Input converted to hexadecimal number. - // - if (!EFI_ERROR (ShellConvertStringToUint64 (Temp, &RetVal, TRUE, TRUE))) { - TargetDevice = (UINT16)RetVal; - } else { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV_HEX), gShellDebug1HiiHandle, L"cxl", Temp); - ShellStatus = SHELL_INVALID_PARAMETER; - goto Done; - } + if (TargetBus > PCI_MAX_BUS) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"cxl", Temp); + ShellStatus = SHELL_INVALID_PARAMETER; + goto Done; + } + } - if (TargetDevice > PCI_MAX_DEVICE) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"cxl", Temp); - ShellStatus = SHELL_INVALID_PARAMETER; - goto Done; - } + Temp = ShellCommandLineGetRawValue (Package, 2); + if (Temp != NULL) { + // + // Input converted to hexadecimal number. + // + if (!EFI_ERROR (ShellConvertStringToUint64 (Temp, &RetVal, TRUE, TRUE))) { + TargetDevice = (UINT16)RetVal; + } else { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV_HEX), gShellDebug1HiiHandle, L"cxl", Temp); + ShellStatus = SHELL_INVALID_PARAMETER; + goto Done; } - Temp = ShellCommandLineGetRawValue (Package, 3); - if (Temp != NULL) { - // - // Input converted to hexadecimal number. - // - if (!EFI_ERROR (ShellConvertStringToUint64 (Temp, &RetVal, TRUE, TRUE))) { - TargetFunc = (UINT16)RetVal; - } else { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV_HEX), gShellDebug1HiiHandle, L"cxl", Temp); - ShellStatus = SHELL_INVALID_PARAMETER; - goto Done; - } + if (TargetDevice > PCI_MAX_DEVICE) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"cxl", Temp); + ShellStatus = SHELL_INVALID_PARAMETER; + goto Done; + } + } - if (TargetFunc > PCI_MAX_FUNC) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"cxl", Temp); - ShellStatus = SHELL_INVALID_PARAMETER; - goto Done; - } + Temp = ShellCommandLineGetRawValue (Package, 3); + if (Temp != NULL) { + // + // Input converted to hexadecimal number. + // + if (!EFI_ERROR (ShellConvertStringToUint64 (Temp, &RetVal, TRUE, TRUE))) { + TargetFunc = (UINT16)RetVal; + } else { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV_HEX), gShellDebug1HiiHandle, L"cxl", Temp); + ShellStatus = SHELL_INVALID_PARAMETER; + goto Done; } - Status = CxlFindEndpoints (&HandleBuf, &HandleCount); + if (TargetFunc > PCI_MAX_FUNC) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"cxl", Temp); + ShellStatus = SHELL_INVALID_PARAMETER; + goto Done; + } + } + + Status = CxlFindEndpoints (&HandleBuf, &HandleCount); + if (EFI_ERROR (Status)) { + goto Done; + } + + for (Index = 0; Index < HandleCount; Index++) { + Status = gBS->HandleProtocol (HandleBuf[Index], &gEdkiiCxlIoProtocolGuid, (VOID **)&CxlIo); + if (EFI_ERROR (Status)) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_PCI_HANDLE_CFG_ERR), gShellDebug1HiiHandle, L"cxl"); + ShellStatus = SHELL_NOT_FOUND; + goto Done; + } + + PciIo = CxlIo->PciIo; + Status = PciIo->GetLocation (PciIo, &Segment, &Bus, &Device, &Func); if (EFI_ERROR (Status)) { goto Done; } - for (Index = 0; Index < HandleCount; Index++) { - Status = gBS->HandleProtocol (HandleBuf[Index], &gEdkiiCxlIoProtocolGuid, (VOID **)&CxlIo); - if (EFI_ERROR (Status)) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_PCI_HANDLE_CFG_ERR), gShellDebug1HiiHandle, L"cxl"); - ShellStatus = SHELL_NOT_FOUND; - goto Done; - } - - PciIo = CxlIo->PciIo; - Status = PciIo->GetLocation (PciIo, &Segment, &Bus, &Device, &Func); - if (EFI_ERROR (Status)) { - goto Done; - } - - if ((Segment != TargetSegment) || - (Bus != TargetBus) || - (Device != TargetDevice) || - (Func != TargetFunc)) - { - continue; - } - - PrintCdatInfo (CxlIo); - goto Done; + if ((Segment != TargetSegment) || + (Bus != TargetBus) || + (Device != TargetDevice) || + (Func != TargetFunc)) + { + continue; } + + PrintCdatInfo (CxlIo); + goto Done; } Done:
diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Dblk.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/Dblk.c index 7f51b83..325852c 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Dblk.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Dblk.c
@@ -103,71 +103,69 @@ EFI_DEVICE_PATH_PROTOCOL *DevPath; Lba = 0; - BlockCount = 0; + BlockCount = 1; ShellStatus = SHELL_SUCCESS; if (ShellCommandLineGetCount (Package) > 4) { ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"dblk"); - ShellStatus = SHELL_INVALID_PARAMETER; + return SHELL_INVALID_PARAMETER; } else if (ShellCommandLineGetCount (Package) < 2) { ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"dblk"); - ShellStatus = SHELL_INVALID_PARAMETER; - } else { - // - // Parse the params - // - BlockName = ShellCommandLineGetRawValue (Package, 1); - LbaString = ShellCommandLineGetRawValue (Package, 2); - BlockCountString = ShellCommandLineGetRawValue (Package, 3); + return SHELL_INVALID_PARAMETER; + } - if (LbaString == NULL) { - Lba = 0; - } else { - if (!ShellIsHexOrDecimalNumber (LbaString, TRUE, FALSE)) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dblk", LbaString); - ShellStatus = SHELL_INVALID_PARAMETER; - } + // + // Parse the params + // + BlockName = ShellCommandLineGetRawValue (Package, 1); + LbaString = ShellCommandLineGetRawValue (Package, 2); + BlockCountString = ShellCommandLineGetRawValue (Package, 3); - if (EFI_ERROR (ShellConvertStringToUint64 (LbaString, &Lba, TRUE, FALSE))) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dblk", LbaString); - ShellStatus = SHELL_INVALID_PARAMETER; - } + if (LbaString != NULL) { + if (!ShellIsHexOrDecimalNumber (LbaString, TRUE, FALSE)) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dblk", LbaString); + ShellStatus = SHELL_INVALID_PARAMETER; } - if (BlockCountString == NULL) { - BlockCount = 1; - } else { - if (!ShellIsHexOrDecimalNumber (BlockCountString, TRUE, FALSE)) { + if (EFI_ERROR (ShellConvertStringToUint64 (LbaString, &Lba, TRUE, FALSE))) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dblk", LbaString); + ShellStatus = SHELL_INVALID_PARAMETER; + } + } + + if (BlockCountString != NULL) { + if (!ShellIsHexOrDecimalNumber (BlockCountString, TRUE, FALSE)) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dblk", BlockCountString); + ShellStatus = SHELL_INVALID_PARAMETER; + } + + if (!EFI_ERROR (ShellConvertStringToUint64 (BlockCountString, &BlockCount, TRUE, FALSE))) { + if (BlockCount > 0x10) { + BlockCount = 0x10; + } else if (BlockCount == 0) { ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dblk", BlockCountString); ShellStatus = SHELL_INVALID_PARAMETER; } - - if (!EFI_ERROR (ShellConvertStringToUint64 (BlockCountString, &BlockCount, TRUE, FALSE))) { - if (BlockCount > 0x10) { - BlockCount = 0x10; - } else if (BlockCount == 0) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dblk", BlockCountString); - ShellStatus = SHELL_INVALID_PARAMETER; - } - } } + } - if (ShellStatus == SHELL_SUCCESS) { - // - // do the work if we have a valid block identifier - // - if ((BlockName == NULL) || (gEfiShellProtocol->GetDevicePathFromMap (BlockName) == NULL)) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dblk", BlockName); - ShellStatus = SHELL_INVALID_PARAMETER; - } else { - DevPath = (EFI_DEVICE_PATH_PROTOCOL *)gEfiShellProtocol->GetDevicePathFromMap (BlockName); - if (gBS->LocateDevicePath (&gEfiBlockIoProtocolGuid, &DevPath, NULL) == EFI_NOT_FOUND) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_MAP_PROTOCOL), gShellDebug1HiiHandle, L"dblk", BlockName, L"BlockIo"); - ShellStatus = SHELL_INVALID_PARAMETER; - } else { - ShellStatus = DisplayTheBlocks (gEfiShellProtocol->GetDevicePathFromMap (BlockName), Lba, (UINT8)BlockCount); - } - } + if (ShellStatus != SHELL_SUCCESS) { + return ShellStatus; + } + + // + // do the work if we have a valid block identifier + // + if ((BlockName == NULL) || (gEfiShellProtocol->GetDevicePathFromMap (BlockName) == NULL)) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dblk", BlockName); + ShellStatus = SHELL_INVALID_PARAMETER; + } else { + DevPath = (EFI_DEVICE_PATH_PROTOCOL *)gEfiShellProtocol->GetDevicePathFromMap (BlockName); + if (gBS->LocateDevicePath (&gEfiBlockIoProtocolGuid, &DevPath, NULL) == EFI_NOT_FOUND) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_MAP_PROTOCOL), gShellDebug1HiiHandle, L"dblk", BlockName, L"BlockIo"); + ShellStatus = SHELL_INVALID_PARAMETER; + } else { + ShellStatus = DisplayTheBlocks (gEfiShellProtocol->GetDevicePathFromMap (BlockName), Lba, (UINT8)BlockCount); } }
diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c index 5c48a00..efce6cd 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Dmem.c
@@ -451,27 +451,27 @@ if (ShellCommandLineGetCount (Package) > 3) { ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"dmem"); - ShellStatus = SHELL_INVALID_PARAMETER; + return SHELL_INVALID_PARAMETER; + } + + Temp1 = ShellCommandLineGetRawValue (Package, 1); + if (Temp1 == NULL) { + Address = gST; + Size = sizeof (*gST); } else { - Temp1 = ShellCommandLineGetRawValue (Package, 1); + if (!ShellIsHexOrDecimalNumber (Temp1, TRUE, FALSE) || EFI_ERROR (ShellConvertStringToUint64 (Temp1, (UINT64 *)&Address, TRUE, FALSE))) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dmem", Temp1); + ShellStatus = SHELL_INVALID_PARAMETER; + } + + Temp1 = ShellCommandLineGetRawValue (Package, 2); if (Temp1 == NULL) { - Address = gST; - Size = sizeof (*gST); + Size = 512; } else { - if (!ShellIsHexOrDecimalNumber (Temp1, TRUE, FALSE) || EFI_ERROR (ShellConvertStringToUint64 (Temp1, (UINT64 *)&Address, TRUE, FALSE))) { + if (!ShellIsHexOrDecimalNumber (Temp1, FALSE, FALSE) || EFI_ERROR (ShellConvertStringToUint64 (Temp1, &Size, TRUE, FALSE))) { ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dmem", Temp1); ShellStatus = SHELL_INVALID_PARAMETER; } - - Temp1 = ShellCommandLineGetRawValue (Package, 2); - if (Temp1 == NULL) { - Size = 512; - } else { - if (!ShellIsHexOrDecimalNumber (Temp1, FALSE, FALSE) || EFI_ERROR (ShellConvertStringToUint64 (Temp1, &Size, TRUE, FALSE))) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dmem", Temp1); - ShellStatus = SHELL_INVALID_PARAMETER; - } - } } }
diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/DmpStore.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/DmpStore.c index bba6dbf..c3670cc 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/DmpStore.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/DmpStore.c
@@ -736,145 +736,149 @@ if (ShellCommandLineGetCount (Package) > 2) { ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"dmpstore"); - ShellStatus = SHELL_INVALID_PARAMETER; + return SHELL_INVALID_PARAMETER; } else if (ShellCommandLineGetFlag (Package, L"-all") && ShellCommandLineGetFlag (Package, L"-guid")) { ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellDebug1HiiHandle, L"dmpstore", L"-all", L"-guid"); - ShellStatus = SHELL_INVALID_PARAMETER; + return SHELL_INVALID_PARAMETER; } else if (ShellCommandLineGetFlag (Package, L"-s") && ShellCommandLineGetFlag (Package, L"-l")) { ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellDebug1HiiHandle, L"dmpstore", L"-l", L"-s"); - ShellStatus = SHELL_INVALID_PARAMETER; + return SHELL_INVALID_PARAMETER; } else if ((ShellCommandLineGetFlag (Package, L"-s") || ShellCommandLineGetFlag (Package, L"-l")) && ShellCommandLineGetFlag (Package, L"-d")) { ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellDebug1HiiHandle, L"dmpstore", L"-l or -s", L"-d"); - ShellStatus = SHELL_INVALID_PARAMETER; + return SHELL_INVALID_PARAMETER; } else if ((ShellCommandLineGetFlag (Package, L"-s") || ShellCommandLineGetFlag (Package, L"-l")) && ShellCommandLineGetFlag (Package, L"-sfo")) { ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellDebug1HiiHandle, L"dmpstore", L"-l or -s", L"-sfo"); - ShellStatus = SHELL_INVALID_PARAMETER; - } else { - // - // Determine the GUID to search for based on -all and -guid parameters - // - if (!ShellCommandLineGetFlag (Package, L"-all")) { - GuidStr = ShellCommandLineGetValue (Package, L"-guid"); - if (GuidStr != NULL) { - RStatus = StrToGuid (GuidStr, &GuidData); - if (RETURN_ERROR (RStatus) || (GuidStr[GUID_STRING_LENGTH] != L'\0')) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dmpstore", GuidStr); - ShellStatus = SHELL_INVALID_PARAMETER; - } + return SHELL_INVALID_PARAMETER; + } - Guid = &GuidData; - } else { - Guid = &gEfiGlobalVariableGuid; + // + // Determine the GUID to search for based on -all and -guid parameters + // + if (!ShellCommandLineGetFlag (Package, L"-all")) { + GuidStr = ShellCommandLineGetValue (Package, L"-guid"); + if (GuidStr != NULL) { + RStatus = StrToGuid (GuidStr, &GuidData); + if (RETURN_ERROR (RStatus) || (GuidStr[GUID_STRING_LENGTH] != L'\0')) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dmpstore", GuidStr); + ShellStatus = SHELL_INVALID_PARAMETER; } + + Guid = &GuidData; } else { - Guid = NULL; + Guid = &gEfiGlobalVariableGuid; } + } else { + Guid = NULL; + } - // - // Get the Name of the variable to find - // - Name = ShellCommandLineGetRawValue (Package, 1); + // + // Get the Name of the variable to find + // + Name = ShellCommandLineGetRawValue (Package, 1); - if (ShellStatus == SHELL_SUCCESS) { - if (ShellCommandLineGetFlag (Package, L"-s")) { - Type = DmpStoreSave; - File = ShellCommandLineGetValue (Package, L"-s"); - if (File == NULL) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"dmpstore", L"-s"); - ShellStatus = SHELL_INVALID_PARAMETER; + if (ShellStatus != SHELL_SUCCESS) { + return ShellStatus; + } + + if (ShellCommandLineGetFlag (Package, L"-s")) { + Type = DmpStoreSave; + File = ShellCommandLineGetValue (Package, L"-s"); + if (File == NULL) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"dmpstore", L"-s"); + ShellStatus = SHELL_INVALID_PARAMETER; + } else { + Status = ShellOpenFileByName (File, &FileHandle, EFI_FILE_MODE_WRITE | EFI_FILE_MODE_READ, 0); + if (!EFI_ERROR (Status)) { + // + // Delete existing file, but do not delete existing directory + // + FileInfo = ShellGetFileInfo (FileHandle); + if (FileInfo == NULL) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", File); + Status = EFI_DEVICE_ERROR; } else { - Status = ShellOpenFileByName (File, &FileHandle, EFI_FILE_MODE_WRITE | EFI_FILE_MODE_READ, 0); - if (!EFI_ERROR (Status)) { - // - // Delete existing file, but do not delete existing directory - // - FileInfo = ShellGetFileInfo (FileHandle); - if (FileInfo == NULL) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", File); - Status = EFI_DEVICE_ERROR; - } else { - if ((FileInfo->Attribute & EFI_FILE_DIRECTORY) == EFI_FILE_DIRECTORY) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_IS_DIRECTORY), gShellDebug1HiiHandle, L"dmpstore", File); - Status = EFI_INVALID_PARAMETER; - } else { - Status = ShellDeleteFile (&FileHandle); - if (EFI_ERROR (Status)) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_DELETE_FAIL), gShellDebug1HiiHandle, L"dmpstore", File); - } - } - - FreePool (FileInfo); - } - } else if (Status == EFI_NOT_FOUND) { - // - // Good when file doesn't exist - // - Status = EFI_SUCCESS; + if ((FileInfo->Attribute & EFI_FILE_DIRECTORY) == EFI_FILE_DIRECTORY) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_IS_DIRECTORY), gShellDebug1HiiHandle, L"dmpstore", File); + Status = EFI_INVALID_PARAMETER; } else { - // - // Otherwise it's bad. - // - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", File); - } - - if (!EFI_ERROR (Status)) { - Status = ShellOpenFileByName (File, &FileHandle, EFI_FILE_MODE_CREATE | EFI_FILE_MODE_WRITE | EFI_FILE_MODE_READ, 0); + Status = ShellDeleteFile (&FileHandle); if (EFI_ERROR (Status)) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", File); + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_DELETE_FAIL), gShellDebug1HiiHandle, L"dmpstore", File); } } - if (EFI_ERROR (Status)) { - ShellStatus = SHELL_INVALID_PARAMETER; - } + FreePool (FileInfo); } - } else if (ShellCommandLineGetFlag (Package, L"-l")) { - Type = DmpStoreLoad; - File = ShellCommandLineGetValue (Package, L"-l"); - if (File == NULL) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"dmpstore", L"-l"); - ShellStatus = SHELL_INVALID_PARAMETER; + } else if (Status == EFI_NOT_FOUND) { + // + // Good when file doesn't exist + // + Status = EFI_SUCCESS; + } else { + // + // Otherwise it's bad. + // + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", File); + } + + if (!EFI_ERROR (Status)) { + Status = ShellOpenFileByName (File, &FileHandle, EFI_FILE_MODE_CREATE | EFI_FILE_MODE_WRITE | EFI_FILE_MODE_READ, 0); + if (EFI_ERROR (Status)) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", File); + } + } + + if (EFI_ERROR (Status)) { + ShellStatus = SHELL_INVALID_PARAMETER; + } + } + } else if (ShellCommandLineGetFlag (Package, L"-l")) { + Type = DmpStoreLoad; + File = ShellCommandLineGetValue (Package, L"-l"); + if (File == NULL) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"dmpstore", L"-l"); + ShellStatus = SHELL_INVALID_PARAMETER; + } else { + Status = ShellOpenFileByName (File, &FileHandle, EFI_FILE_MODE_READ, 0); + if (EFI_ERROR (Status)) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", File); + ShellStatus = SHELL_INVALID_PARAMETER; + } else { + FileInfo = ShellGetFileInfo (FileHandle); + if (FileInfo == NULL) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", File); + ShellStatus = SHELL_DEVICE_ERROR; } else { - Status = ShellOpenFileByName (File, &FileHandle, EFI_FILE_MODE_READ, 0); - if (EFI_ERROR (Status)) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", File); + if ((FileInfo->Attribute & EFI_FILE_DIRECTORY) == EFI_FILE_DIRECTORY) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_IS_DIRECTORY), gShellDebug1HiiHandle, L"dmpstore", File); ShellStatus = SHELL_INVALID_PARAMETER; - } else { - FileInfo = ShellGetFileInfo (FileHandle); - if (FileInfo == NULL) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", File); - ShellStatus = SHELL_DEVICE_ERROR; - } else { - if ((FileInfo->Attribute & EFI_FILE_DIRECTORY) == EFI_FILE_DIRECTORY) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_FILE_IS_DIRECTORY), gShellDebug1HiiHandle, L"dmpstore", File); - ShellStatus = SHELL_INVALID_PARAMETER; - } - - FreePool (FileInfo); - } } + + FreePool (FileInfo); } - } else if (ShellCommandLineGetFlag (Package, L"-d")) { - Type = DmpStoreDelete; - } - - if (ShellCommandLineGetFlag (Package, L"-sfo")) { - StandardFormatOutput = TRUE; } } + } else if (ShellCommandLineGetFlag (Package, L"-d")) { + Type = DmpStoreDelete; + } - if (ShellStatus == SHELL_SUCCESS) { - if (Type == DmpStoreSave) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_DMPSTORE_SAVE), gShellDebug1HiiHandle, File); - } else if (Type == DmpStoreLoad) { - ShellPrintHiiDefaultEx (STRING_TOKEN (STR_DMPSTORE_LOAD), gShellDebug1HiiHandle, File); - } + if (ShellCommandLineGetFlag (Package, L"-sfo")) { + StandardFormatOutput = TRUE; + } - ShellStatus = ProcessVariables (Name, Guid, Type, FileHandle, StandardFormatOutput); - if ((Type == DmpStoreLoad) || (Type == DmpStoreSave)) { - ShellCloseFile (&FileHandle); - } - } + if (ShellStatus != SHELL_SUCCESS) { + return ShellStatus; + } + + if (Type == DmpStoreSave) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_DMPSTORE_SAVE), gShellDebug1HiiHandle, File); + } else if (Type == DmpStoreLoad) { + ShellPrintHiiDefaultEx (STRING_TOKEN (STR_DMPSTORE_LOAD), gShellDebug1HiiHandle, File); + } + + ShellStatus = ProcessVariables (Name, Guid, Type, FileHandle, StandardFormatOutput); + if ((Type == DmpStoreLoad) || (Type == DmpStoreSave)) { + ShellCloseFile (&FileHandle); } return ShellStatus;