Sorry for missing this one. Reviewed-by: Zhichao Gao <zhichao....@intel.com>
> -----Original Message----- > From: Marvin Häuser [mailto:marvin.haeu...@outlook.com] > Sent: Sunday, October 20, 2019 8:09 PM > To: devel@edk2.groups.io > Cc: vit9...@protonmail.com; Ni, Ray <ray...@intel.com>; Gao, Zhichao > <zhichao....@intel.com> > Subject: [PATCH] ShellPkg/Ls: Return empty content for all empty folders > > From: Marvin Haeuser <mhaeu...@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...@intel.com> > Cc: Zhichao Gao <zhichao....@intel.com> > Signed-off-by: Marvin Haeuser <mhaeu...@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/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-