]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/HexEdit.c
ShellPkg: Clean up source files
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / HexEdit / HexEdit.c
index 511eb9e6366e66d3b4f374dcb494afbc3a75aa39..199cc42c7f1af5deee2a1522d5f047cc31d19afa 100644 (file)
@@ -1,7 +1,8 @@
 /** @file\r
   Main entry point of editor\r
-  \r
-  Copyright (c) 2005 - 2011, Intel Corporation. All rights reserved. <BR>\r
+\r
+  (C) Copyright 2014-2015 Hewlett-Packard Development Company, L.P.<BR>\r
+  Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved. <BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
@@ -43,25 +44,19 @@ ShellCommandRunHexEdit (
   CHAR16                  *ProblemParam;\r
   SHELL_STATUS            ShellStatus;\r
   LIST_ENTRY              *Package;\r
-  CONST CHAR16            *Cwd;\r
-  CHAR16                  *NFS;\r
-  CHAR16                  *Spot;\r
+  CHAR16                  *NewName;\r
   CONST CHAR16            *Name;\r
   UINTN                   Offset;\r
   UINTN                   Size;\r
-  UINT64                  LastOffset;\r
   EDIT_FILE_TYPE          WhatToDo;\r
 \r
   Buffer      = NULL;\r
   ShellStatus = SHELL_SUCCESS;\r
-  NFS         = NULL;\r
-  Cwd         = NULL;\r
+  NewName         = NULL;\r
   Buffer      = NULL;\r
   Name        = NULL;\r
-  Spot        = NULL;\r
   Offset      = 0;\r
   Size        = 0;\r
-  LastOffset  = 0;\r
   WhatToDo    = FileTypeNone;\r
 \r
   //\r
@@ -79,7 +74,7 @@ ShellCommandRunHexEdit (
   Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);\r
   if (EFI_ERROR(Status)) {\r
     if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, ProblemParam);\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"hexedit", ProblemParam);\r
       FreePool(ProblemParam);\r
       ShellStatus = SHELL_INVALID_PARAMETER;\r
     } else {\r
@@ -91,10 +86,10 @@ ShellCommandRunHexEdit (
     //\r
     if (ShellCommandLineGetFlag(Package, L"-d")){\r
       if (ShellCommandLineGetCount(Package) < 4) {\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle);\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"hexedit");\r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       } else if (ShellCommandLineGetCount(Package) > 4) {\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle);\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"hexedit");\r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       } else {\r
         WhatToDo = FileTypeDiskBuffer;\r
@@ -102,19 +97,26 @@ ShellCommandRunHexEdit (
         Offset  = ShellStrToUintn(ShellCommandLineGetRawValue(Package, 2));\r
         Size    = ShellStrToUintn(ShellCommandLineGetRawValue(Package, 3));\r
       }\r
+      if (Offset == (UINTN)-1 || Size == (UINTN)-1) {\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"hexedit", L"-d");\r
+        ShellStatus = SHELL_INVALID_PARAMETER;\r
+      }\r
     }\r
 \r
     //\r
     // check for -f\r
     //\r
     if (ShellCommandLineGetFlag(Package, L"-f") && (WhatToDo == FileTypeNone)){\r
-      if (ShellCommandLineGetCount(Package) > 2) {\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle);\r
+      if (ShellCommandLineGetCount(Package) < 2) {\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"hexedit");\r
+        ShellStatus = SHELL_INVALID_PARAMETER;\r
+      } else if (ShellCommandLineGetCount(Package) > 2) {\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"hexedit");\r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       } else {\r
         Name      = ShellCommandLineGetRawValue(Package, 1);\r
-        if (!IsValidFileName(Name)) {\r
-          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, Name);\r
+        if (Name == NULL || !IsValidFileName(Name)) {\r
+          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"hexedit", Name);\r
           ShellStatus = SHELL_INVALID_PARAMETER;\r
         } else {\r
           WhatToDo  = FileTypeFileBuffer;\r
@@ -127,10 +129,10 @@ ShellCommandRunHexEdit (
     //\r
     if (ShellCommandLineGetFlag(Package, L"-m") && (WhatToDo == FileTypeNone)){\r
       if (ShellCommandLineGetCount(Package) < 3) {\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle);\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"hexedit");\r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       } else if (ShellCommandLineGetCount(Package) > 3) {\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle);\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"hexedit");\r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       } else {\r
         WhatToDo = FileTypeMemBuffer;\r
@@ -138,10 +140,33 @@ ShellCommandRunHexEdit (
         Size    = ShellStrToUintn(ShellCommandLineGetRawValue(Package, 2));\r
       }\r
     }\r
-    ShellCommandLineFreeVarList (Package);\r
+    Name = ShellCommandLineGetRawValue(Package, 1);\r
+    if (WhatToDo == FileTypeNone && Name != NULL) {\r
+      if (ShellCommandLineGetCount(Package) > 2) {\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"hexedit");\r
+        ShellStatus = SHELL_INVALID_PARAMETER;\r
+      } else if (!IsValidFileName(Name)) {\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"hexedit", Name);\r
+        ShellStatus = SHELL_INVALID_PARAMETER;\r
+      } else {\r
+        WhatToDo  = FileTypeFileBuffer;\r
+      }\r
+    } else if (WhatToDo == FileTypeNone) {\r
+      if (gEfiShellProtocol->GetCurDir(NULL) == NULL) {\r
+        ShellStatus = SHELL_NOT_FOUND;\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_CWD), gShellDebug1HiiHandle, L"hexedit");\r
+      } else {\r
+        NewName = EditGetDefaultFileName(L"bin");\r
+        Name = NewName;\r
+        WhatToDo  = FileTypeFileBuffer;\r
+      }\r
+    }\r
 \r
     if (ShellStatus == SHELL_SUCCESS && WhatToDo == FileTypeNone) {\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle);\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"hexedit");\r
+      ShellStatus = SHELL_INVALID_PARAMETER;\r
+    } else if (WhatToDo == FileTypeFileBuffer && ShellGetCurrentDir(NULL) == NULL) {\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_CWD), gShellDebug1HiiHandle, L"hexedit");\r
       ShellStatus = SHELL_INVALID_PARAMETER;\r
     }\r
 \r
@@ -159,7 +184,7 @@ ShellCommandRunHexEdit (
         switch (WhatToDo) {\r
         case FileTypeFileBuffer:\r
           Status = HBufferImageRead (\r
-                    Name,\r
+                    Name==NULL?L"":Name,\r
                     NULL,\r
                     0,\r
                     0,\r
@@ -173,7 +198,7 @@ ShellCommandRunHexEdit (
         case FileTypeDiskBuffer:\r
           Status = HBufferImageRead (\r
                     NULL,\r
-                    Name,\r
+                    Name==NULL?L"":Name,\r
                     Offset,\r
                     Size,\r
                     0,\r
@@ -196,6 +221,9 @@ ShellCommandRunHexEdit (
                     );\r
           break;\r
 \r
+        default:\r
+          Status = EFI_NOT_FOUND;\r
+          break;\r
         }\r
         if (!EFI_ERROR (Status)) {\r
           HMainEditorRefresh ();\r
@@ -205,7 +233,7 @@ ShellCommandRunHexEdit (
           //\r
           // back up the status string\r
           //\r
-          Buffer = CatSPrint (NULL, L"%s", StatusBarGetString());\r
+          Buffer = CatSPrint (NULL, L"%s\r\n", StatusBarGetString());\r
         }\r
       }\r
 \r
@@ -214,7 +242,7 @@ ShellCommandRunHexEdit (
       //\r
       HMainEditorCleanup ();\r
 \r
-      if (!EFI_ERROR (Status)) {\r
+      if (EFI_ERROR (Status)) {\r
         if (ShellStatus == SHELL_SUCCESS) {\r
           ShellStatus = SHELL_UNSUPPORTED;\r
         }\r
@@ -224,14 +252,14 @@ ShellCommandRunHexEdit (
       // print editor exit code on screen\r
       //\r
       if (Status == EFI_OUT_OF_RESOURCES) {\r
-        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDebug1HiiHandle);\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDebug1HiiHandle, L"hexedit");\r
       } else if (EFI_ERROR(Status)){\r
         if (Buffer != NULL) {\r
           if (StrCmp (Buffer, L"") != 0) {\r
             //\r
             // print out the status string\r
             //\r
-            ShellPrintEx(-1, -1, L"%s", gShellDebug1HiiHandle, Buffer);\r
+            ShellPrintEx(-1, -1, L"%s", Buffer);\r
           } else {\r
             ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_HEXEDIT_UNKNOWN_EDITOR), gShellDebug1HiiHandle);\r
           }\r
@@ -240,8 +268,10 @@ ShellCommandRunHexEdit (
         }\r
       }\r
     }\r
+    ShellCommandLineFreeVarList (Package);\r
   }\r
 \r
   SHELL_FREE_NON_NULL (Buffer);\r
+  SHELL_FREE_NON_NULL (NewName);\r
   return ShellStatus;\r
 }\r