]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDebug1CommandsLib/DmpStore.c
Update prints of variable attributes from 'RS' to 'RT' for 'Dmpstore' command.
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / DmpStore.c
index c5a6204bcdda7960c9014c2f9365c572a40ddaf3..5642f6ff5567c89d88dba5d0b0d8e5ed4fd4b2f4 100644 (file)
@@ -56,7 +56,7 @@ GetAttrType (
     StrnCatGrow (&RetString, &BufLen, L"+NV", 0);\r
   }\r
   if ((Atts & EFI_VARIABLE_RUNTIME_ACCESS) != 0) {\r
-    StrnCatGrow (&RetString, &BufLen, L"+RS+BS", 0);\r
+    StrnCatGrow (&RetString, &BufLen, L"+RT+BS", 0);\r
   } else if ((Atts & EFI_VARIABLE_BOOTSERVICE_ACCESS) != 0) {\r
     StrnCatGrow (&RetString, &BufLen, L"+BS", 0);\r
   }\r
@@ -89,11 +89,12 @@ GetAttrType (
   @param[in]  Guid           The guid of the variables to be loaded.\r
   @param[out] Found          TRUE when at least one variable was loaded and set.\r
 \r
-  @retval EFI_VOLUME_CORRUPTED  The file is in bad format.\r
-  @retval EFI_OUT_OF_RESOURCES  There is not enough memory to perform the operation.\r
-  @retval EFI_SUCCESS           Successfully load and set the variables.\r
+  @retval SHELL_DEVICE_ERROR      Cannot access the file.\r
+  @retval SHELL_VOLUME_CORRUPTED  The file is in bad format.\r
+  @retval SHELL_OUT_OF_RESOURCES  There is not enough memory to perform the operation.\r
+  @retval SHELL_SUCCESS           Successfully load and set the variables.\r
 **/\r
-EFI_STATUS\r
+SHELL_STATUS\r
 LoadVariablesFromFile (\r
   IN SHELL_FILE_HANDLE FileHandle,\r
   IN CONST CHAR16      *Name,\r
@@ -102,6 +103,7 @@ LoadVariablesFromFile (
   )\r
 {\r
   EFI_STATUS           Status;\r
+  SHELL_STATUS         ShellStatus;\r
   UINT32               NameSize;\r
   UINT32               DataSize;\r
   UINTN                BufferSize;\r
@@ -117,9 +119,11 @@ LoadVariablesFromFile (
 \r
   Status = ShellGetFileSize (FileHandle, &FileSize);\r
   if (EFI_ERROR (Status)) {\r
-    return Status;\r
+    return SHELL_DEVICE_ERROR;\r
   }\r
-\r
+  \r
+  ShellStatus = SHELL_SUCCESS;\r
+  \r
   InitializeListHead (&List);\r
   \r
   Position = 0;\r
@@ -130,7 +134,7 @@ LoadVariablesFromFile (
     BufferSize = sizeof (NameSize);\r
     Status = ShellReadFile (FileHandle, &BufferSize, &NameSize);\r
     if (EFI_ERROR (Status) || (BufferSize != sizeof (NameSize))) {\r
-      Status = EFI_VOLUME_CORRUPTED;\r
+      ShellStatus = SHELL_VOLUME_CORRUPTED;\r
       break;\r
     }\r
 \r
@@ -140,7 +144,7 @@ LoadVariablesFromFile (
     BufferSize = sizeof (DataSize);\r
     Status = ShellReadFile (FileHandle, &BufferSize, &DataSize);\r
     if (EFI_ERROR (Status) || (BufferSize != sizeof (DataSize))) {\r
-      Status = EFI_VOLUME_CORRUPTED;\r
+      ShellStatus = SHELL_VOLUME_CORRUPTED;\r
       break;\r
     }\r
 \r
@@ -151,13 +155,13 @@ LoadVariablesFromFile (
     BufferSize    = sizeof (NameSize) + sizeof (DataSize) + RemainingSize;\r
     Buffer        = AllocatePool (BufferSize);\r
     if (Buffer == NULL) {\r
-      Status = EFI_OUT_OF_RESOURCES;\r
+      ShellStatus = SHELL_OUT_OF_RESOURCES;\r
       break;\r
     }\r
     BufferSize    = RemainingSize;\r
     Status = ShellReadFile (FileHandle, &BufferSize, (UINT32 *) Buffer + 2);\r
     if (EFI_ERROR (Status) || (BufferSize != RemainingSize)) {\r
-      Status = EFI_VOLUME_CORRUPTED;\r
+      ShellStatus = SHELL_VOLUME_CORRUPTED;\r
       FreePool (Buffer);\r
       break;\r
     }\r
@@ -175,7 +179,7 @@ LoadVariablesFromFile (
            );\r
     if (Crc32 != * (UINT32 *) (Buffer + BufferSize)) {\r
       FreePool (Buffer);\r
-      Status = EFI_VOLUME_CORRUPTED;\r
+      ShellStatus = SHELL_VOLUME_CORRUPTED;\r
       break;\r
     }\r
 \r
@@ -184,7 +188,7 @@ LoadVariablesFromFile (
     Variable = AllocateZeroPool (sizeof (*Variable) + NameSize + DataSize);\r
     if (Variable == NULL) {\r
       FreePool (Buffer);\r
-      Status = EFI_OUT_OF_RESOURCES;\r
+      ShellStatus = SHELL_OUT_OF_RESOURCES;\r
       break;\r
     }\r
     Variable->Signature = DMP_STORE_VARIABLE_SIGNATURE;\r
@@ -200,13 +204,15 @@ LoadVariablesFromFile (
     FreePool (Buffer);\r
   }\r
     \r
-  if ((Position != FileSize) || EFI_ERROR (Status)) {\r
+  if ((Position != FileSize) || (ShellStatus != SHELL_SUCCESS)) {\r
     ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_LOAD_BAD_FILE), gShellDebug1HiiHandle);\r
-    Status = EFI_VOLUME_CORRUPTED;\r
+    if (Position != FileSize) {\r
+      ShellStatus = SHELL_VOLUME_CORRUPTED;\r
+    }\r
   }\r
   \r
   for ( Link = GetFirstNode (&List)\r
-      ; !IsNull (&List, Link) && !EFI_ERROR (Status)\r
+      ; !IsNull (&List, Link) && (ShellStatus == SHELL_SUCCESS)\r
       ; Link = GetNextNode (&List, Link)\r
       ) {\r
     Variable = CR (Link, DMP_STORE_VARIABLE, Link, DMP_STORE_VARIABLE_SIGNATURE);\r
@@ -231,10 +237,6 @@ LoadVariablesFromFile (
                       );\r
       if (EFI_ERROR (Status)) {\r
         ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_LOAD_GEN_FAIL), gShellDebug1HiiHandle, Variable->Name, Status);\r
-        //\r
-        // continue set variable upon failure\r
-        //\r
-        Status = EFI_SUCCESS;\r
       }\r
     }\r
   }\r
@@ -245,7 +247,7 @@ LoadVariablesFromFile (
     FreePool (Variable);\r
   }\r
 \r
-  return Status;\r
+  return ShellStatus;\r
 }\r
 \r
 /**\r
@@ -457,7 +459,7 @@ CascadeProcessVariables (
       //\r
       // Last error check then print this variable out.\r
       //\r
-      if (!EFI_ERROR(Status) && DataBuffer != NULL) {\r
+      if (!EFI_ERROR(Status) && (DataBuffer != NULL) && (FoundVarName != NULL)) {\r
         RetString = GetAttrType(Atts);\r
         ShellPrintHiiEx(\r
           -1,\r
@@ -546,7 +548,7 @@ ProcessVariables (
   ZeroMem (&FoundVarGuid, sizeof(EFI_GUID));\r
 \r
   if (Type == DmpStoreLoad) {\r
-    ShellStatus = (SHELL_STATUS) LoadVariablesFromFile (FileHandle, Name, Guid, &Found);\r
+    ShellStatus = LoadVariablesFromFile (FileHandle, Name, Guid, &Found);\r
   } else {\r
     ShellStatus = CascadeProcessVariables(Name, Guid, Type, FileHandle, NULL, FoundVarGuid, &Found);\r
   }\r