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;