[edk2-devel] [PATCH] ShellPkg/Ls: Return empty content for all empty folders

Gao, Zhichao zhichao.gao at intel.com
Fri Nov 1 00:39:00 UTC 2019


Sorry for missing this one.
Reviewed-by: Zhichao Gao <zhichao.gao at intel.com>

> -----Original Message-----
> From: Marvin Häuser [mailto:Marvin.Haeuser at outlook.com]
> Sent: Sunday, October 20, 2019 8:09 PM
> To: devel at edk2.groups.io
> Cc: vit9696 at protonmail.com; Ni, Ray <ray.ni at intel.com>; Gao, Zhichao
> <zhichao.gao at intel.com>
> Subject: [PATCH] ShellPkg/Ls: Return empty content for all empty folders
> 
> From: Marvin Haeuser <mhaeuser at outlook.de>
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2296
> 
> Currently, when 'ls' is run on an entirely empty directory (this includes not
> having '.' and '..'), the output is always 'File not found'. For when not filtering
> its children, this patch rather displays the usual header and footer.
> 
> Cc: Ray Ni <ray.ni at intel.com>
> Cc: Zhichao Gao <zhichao.gao at intel.com>
> Signed-off-by: Marvin Haeuser <mhaeuser at outlook.de>
> ---
>  ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c | 33
> +++++++++++++++++---
>  1 file changed, 28 insertions(+), 5 deletions(-)
> 
> diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c
> b/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c
> index 1a65f60c3b44..da2b1acab47c 100644
> --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c
> +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c
> @@ -417,6 +417,8 @@ FileTimeToLocalTime (
>    @param[in] Found          Set to TRUE, if anyone were found.   @param[in]
> Count          The count of bits enabled in Attribs.   @param[in] TimeZone
> The current time zone offset.+  @param[in] ListUnfiltered TRUE to request
> listing the directory contents+                            unfiltered.    @retval
> SHELL_SUCCESS     the printing was sucessful. **/@@ -429,7 +431,8 @@
> PrintLsOutput(
>    IN CONST CHAR16  *SearchString,   IN       BOOLEAN *Found,   IN CONST
> UINTN   Count,-  IN CONST INT16   TimeZone+  IN CONST INT16   TimeZone,+
> IN CONST BOOLEAN ListUnfiltered   ) {   EFI_STATUS            Status;@@ -555,7
> +558,7 @@ PrintLsOutput(
>        HeaderPrinted = TRUE;     } -    if (!Sfo && ShellStatus != SHELL_ABORTED)
> {+    if (!Sfo && ShellStatus != SHELL_ABORTED && HeaderPrinted)
> {       PrintNonSfoFooter(FileCount, FileSize, DirCount);     }   }@@ -602,7 +605,8
> @@ PrintLsOutput(
>              SearchString,             &FoundOne,             Count,-            TimeZone);+
> TimeZone,+            FALSE);            //           // Since it's running recursively, we
> have to break immediately when returned SHELL_ABORTED@@ -619,7
> +623,21 @@ PrintLsOutput(
>    ShellCloseFileMetaArg(&ListHead);    if (Found == NULL && !FoundOne) {-
> return (SHELL_NOT_FOUND);+    if (ListUnfiltered) {+      //+      // When
> running "ls" without any filtering request, avoid outputing+      // "File not
> found" when the directory is entirely empty, but print+      // header and
> footer stating "0 File(s), 0 Dir(s)".+      //+      if (!Sfo) {+        PrintNonSfoHeader
> (RootPath);+        if (ShellStatus != SHELL_ABORTED) {+
> PrintNonSfoFooter (FileCount, FileSize, DirCount);+        }+      }+    } else {+
> return (SHELL_NOT_FOUND);+    }   }    if (Found != NULL) {@@ -662,6 +680,7
> @@ ShellCommandRunLs (
>    UINTN         Size;   EFI_TIME      TheTime;   CHAR16        *SearchString;+
> BOOLEAN       ListUnfiltered;    Size                = 0;   FullPath            = NULL;@@ -
> 673,6 +692,7 @@ ShellCommandRunLs (
>    SearchString        = NULL;   CurDir              = NULL;   Count               = 0;+
> ListUnfiltered      = FALSE;    //   // initialize the shell lib (we must be in non-
> auto-init...)@@ -768,6 +788,7 @@ ShellCommandRunLs (
>              ShellStatus = SHELL_NOT_FOUND;             ShellPrintHiiEx(-1, -1, NULL,
> STRING_TOKEN (STR_GEN_NO_CWD), gShellLevel2HiiHandle, L"ls");           }+
> ListUnfiltered = TRUE;           //           // Copy to the 2 strings for starting path
> and file search string           //@@ -808,6 +829,7 @@ ShellCommandRunLs (
>                //               // is listing ends with a directory, then we list all files in that
> directory               //+              ListUnfiltered = TRUE;
> StrnCatGrow(&SearchString, NULL, L"*", 0);             } else {               //@@ -839,7
> +861,8 @@ ShellCommandRunLs (
>              SearchString,             NULL,             Count,-            TheTime.TimeZone+
> TheTime.TimeZone,+            ListUnfiltered            );           if (ShellStatus ==
> SHELL_NOT_FOUND) {             ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN
> (STR_LS_FILE_NOT_FOUND), gShellLevel2HiiHandle, L"ls", FullPath);--
> 2.23.0.windows.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#49784): https://edk2.groups.io/g/devel/message/49784
Mute This Topic: https://groups.io/mt/35954834/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-





More information about the edk2-devel-archive mailing list