]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EmbeddedPkg/Ebl/Dir.c
Add CWD and thus a cd command to EBL shell. Fix WatchdogTimout code in EBL, it was...
[mirror_edk2.git] / EmbeddedPkg / Ebl / Dir.c
index 4e9f7b98b2928d98d2c37e49fd813f9533fc1cee..ff1b557ed18a20e2d954e54dda9714f3b9adbd1e 100644 (file)
@@ -52,7 +52,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED   CHAR8 *gFvFileType[] = {
                       only print out files that contain the string *.efi\r
   dir fv1:\         ; perform a dir on fv1: device in the efi directory \r
                     NOTE: fv devices do not contian subdirs \r
-  dir fv1:\ * PEIM  ; will match all files of type SEC\r
+  dir fv1:\ * PEIM  ; will match all files of type PEIM\r
 \r
   @param  Argc   Number of command arguments in Argv\r
   @param  Argv   Array of strings that represent the parsed command line. \r
@@ -88,14 +88,19 @@ EblDirCmd (
   UINTN                         Length;\r
   UINTN                         BestMatchCount;\r
   CHAR16                        UnicodeFileName[MAX_CMD_LINE];\r
+  CHAR8                         *Path;\r
 \r
 \r
   if (Argc <= 1) {\r
-    // CWD not currently supported \r
-    return EFI_SUCCESS;\r
+    Path = EfiGetCwd ();\r
+    if (Path == NULL) {\r
+      return EFI_SUCCESS;\r
+    }\r
+  } else {\r
+    Path = Argv[1];\r
   }\r
 \r
-  File = EfiOpen (Argv[1], EFI_FILE_MODE_READ, 0);\r
+  File = EfiOpen (Path, EFI_FILE_MODE_READ, 0);\r
   if (File == NULL) {\r
     return EFI_SUCCESS;\r
   }\r
@@ -277,6 +282,32 @@ Done:
   return EFI_SUCCESS;\r
 }\r
 \r
+/**\r
+  Change the Current Working Directory\r
+\r
+  Argv[0] - "cd"\r
+  Argv[1] - Device Name:path. Path is optional \r
+\r
+  @param  Argc   Number of command arguments in Argv\r
+  @param  Argv   Array of strings that represent the parsed command line. \r
+                 Argv[0] is the comamnd name\r
+\r
+  @return EFI_SUCCESS\r
+\r
+**/\r
+EFI_STATUS\r
+EblCdCmd (\r
+  IN UINTN  Argc,\r
+  IN CHAR8  **Argv\r
+  )\r
+{\r
+  if (Argc <= 1) {\r
+    return EFI_SUCCESS;\r
+  } \r
+  \r
+  return EfiSetCwd (Argv[1]);\r
+}\r
+\r
 \r
 \r
 GLOBAL_REMOVE_IF_UNREFERENCED const EBL_COMMAND_TABLE mCmdDirTemplate[] =\r
@@ -286,6 +317,12 @@ GLOBAL_REMOVE_IF_UNREFERENCED const EBL_COMMAND_TABLE mCmdDirTemplate[] =
     " dirdev [*match]; directory listing of dirdev. opt match a substring",\r
     NULL,\r
     EblDirCmd\r
+  },\r
+  {\r
+    "cd",\r
+    " device - set the current working directory",\r
+    NULL,\r
+    EblCdCmd\r
   }\r
 };\r
 \r