]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ShellPkg: Refactor Split/Pipe based command lines
authorJaben Carsey <jaben.carsey@intel.com>
Fri, 13 Dec 2013 18:18:27 +0000 (18:18 +0000)
committerjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 13 Dec 2013 18:18:27 +0000 (18:18 +0000)
This moves the initialization for handling command lines with pipe ‘|’ into a separate function.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jaben Carsey <jaben.carsey@intel.com>
Reviewed-by: Erik Bjorge <erik.c.bjorge@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14982 6f19259b-4bc3-4df7-8a09-765794883524

ShellPkg/Application/Shell/Shell.c

index ef757dec0fa724f87b490cd45fde513fed3a16d1..b3dc8766ee64b2dc4614f67e5586426949fe3cdd 100644 (file)
@@ -1588,6 +1588,36 @@ GetOperationType(
   return (UNKNOWN_INVALID);\r
 }\r
 \r
+/**\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+ProcessNewSplitCommandLine(\r
+  IN CONST CHAR16 *CmdLine\r
+  )\r
+{\r
+  SPLIT_LIST                *Split;\r
+  EFI_STATUS                Status;\r
+\r
+  Split = NULL;\r
+\r
+  //\r
+  // are we in an existing split???\r
+  //\r
+  if (!IsListEmpty(&ShellInfoObject.SplitList.Link)) {\r
+    Split = (SPLIT_LIST*)GetFirstNode(&ShellInfoObject.SplitList.Link);\r
+  }\r
+\r
+  if (Split == NULL) {\r
+    Status = RunSplitCommand(CmdLine, NULL, NULL);\r
+  } else {\r
+    Status = RunSplitCommand(CmdLine, Split->SplitStdIn, Split->SplitStdOut);\r
+  }\r
+  if (EFI_ERROR(Status)) {\r
+    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_INVALID_SPLIT), ShellInfoObject.HiiHandle, CmdLine);\r
+  }\r
+  return (Status);\r
+}\r
 /**\r
   Function will process and run a command line.\r
 \r
@@ -1624,7 +1654,6 @@ RunCommand(
   UINTN                     Count;\r
   UINTN                     Count2;\r
   CHAR16                    *CleanOriginal;\r
-  SPLIT_LIST                *Split;\r
 \r
   ASSERT(CmdLine != NULL);\r
   if (StrLen(CmdLine) == 0) {\r
@@ -1636,7 +1665,6 @@ RunCommand(
   DevPath             = NULL;\r
   Status              = EFI_SUCCESS;\r
   CleanOriginal       = NULL;\r
-  Split               = NULL;\r
 \r
   CleanOriginal = StrnCatGrow(&CleanOriginal, NULL, CmdLine, 0);\r
   if (CleanOriginal == NULL) {\r
@@ -1672,21 +1700,7 @@ RunCommand(
   // We dont do normal processing with a split command line (output from one command input to another)\r
   //\r
   if (ContainsSplit(CleanOriginal)) {\r
-    //\r
-    // are we in an existing split???\r
-    //\r
-    if (!IsListEmpty(&ShellInfoObject.SplitList.Link)) {\r
-      Split = (SPLIT_LIST*)GetFirstNode(&ShellInfoObject.SplitList.Link);\r
-    }\r
-\r
-    if (Split == NULL) {\r
-      Status = RunSplitCommand(CleanOriginal, NULL, NULL);\r
-    } else {\r
-      Status = RunSplitCommand(CleanOriginal, Split->SplitStdIn, Split->SplitStdOut);\r
-    }\r
-    if (EFI_ERROR(Status)) {\r
-      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SHELL_INVALID_SPLIT), ShellInfoObject.HiiHandle, CleanOriginal);\r
-    }\r
+    Status = ProcessNewSplitCommandLine(CleanOriginal);\r
   } else {\r
 \r
     //\r