public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH] ShellPkg/Ls: Consider UEFI timezone may not be set
       [not found] <aa5718fc4fdc610f03912cfcfd6fd8760d866117.1571572996.git.mhaeuser@outlook.de>
  2019-10-20 12:08 ` [PATCH] MdePkg/UefiFileHandleLib: Tolerate more Root handle FileNames Marvin Häuser
@ 2019-10-20 12:08 ` Marvin Häuser
  2019-10-24  1:19   ` Gao, Zhichao
  2019-10-20 12:08 ` [PATCH] ShellPkg/Ls: Return empty content for all empty folders Marvin Häuser
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 16+ messages in thread
From: Marvin Häuser @ 2019-10-20 12:08 UTC (permalink / raw)
  To: devel@edk2.groups.io; +Cc: vit9696@protonmail.com, Ray Ni, Zhichao Gao

From: Marvin Haeuser <mhaeuser@outlook.de>

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2294

EFI_RUNTIME_SERVICES.GetTime() might return an unspecified Timezone,
such as when SetTime() has not been called after the RTC was cut off
power. Consider this case by not attempting Timezone translations for
when it is invalid.

Cc: Ray Ni <ray.ni@intel.com>
Cc: Zhichao Gao <zhichao.gao@intel.com>
Signed-off-by: Marvin Haeuser <mhaeuser@outlook.de>
---
 ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c
index adeb987e6ecb..1a65f60c3b44 100644
--- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c
+++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c
@@ -500,7 +500,7 @@ PrintLsOutput(
       // Change the file time to local time.
       //
       Status = gRT->GetTime(&LocalTime, NULL);
-      if (!EFI_ERROR (Status)) {
+      if (!EFI_ERROR (Status) && (LocalTime.TimeZone != EFI_UNSPECIFIED_TIMEZONE)) {
         if ((Node->Info->CreateTime.TimeZone != EFI_UNSPECIFIED_TIMEZONE) &&
             (Node->Info->CreateTime.Month >= 1 && Node->Info->CreateTime.Month <= 12)) {
           //
-- 
2.23.0.windows.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH] MdePkg/UefiFileHandleLib: Tolerate more Root handle FileNames
       [not found] <aa5718fc4fdc610f03912cfcfd6fd8760d866117.1571572996.git.mhaeuser@outlook.de>
@ 2019-10-20 12:08 ` Marvin Häuser
  2019-10-24  2:51   ` Gao, Zhichao
  2019-10-20 12:08 ` [PATCH] ShellPkg/Ls: Consider UEFI timezone may not be set Marvin Häuser
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 16+ messages in thread
From: Marvin Häuser @ 2019-10-20 12:08 UTC (permalink / raw)
  To: devel@edk2.groups.io; +Cc: vit9696@protonmail.com, Michael D Kinney, Liming Gao

From: Marvin Haeuser <mhaeuser@outlook.de>

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2295

The current implementation of the FileHandleGetFileName() function
assumes that the Root directory always has the FileName '\0'.
However, the only requirement the UEFI specification defines is that
a prepended '\\' must be supported to access files and folders
relative to the Root directory.
This patch removes this assumption and supports constructing valid
paths for any value of FileName for the Root Directory.

In practice, this fixes compatibility issues with File System drivers
that report '\\' as the FileName of the Root directory, which
currently is both generating an invalid path ("\\\\") and resulting
in an EFI_NOT_FOUND result from the CurrentHandle->Open() call.

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Signed-off-by: Marvin Haeuser <mhaeuser@outlook.de>
---
 MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c | 25 ++++++++++++++------
 1 file changed, 18 insertions(+), 7 deletions(-)

diff --git a/MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c b/MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c
index 5dc893833a46..28e28e5f67d5 100644
--- a/MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c
+++ b/MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c
@@ -816,10 +816,25 @@ FileHandleGetFileName (
         Status = EFI_OUT_OF_RESOURCES;
         break;
       } else {
+        //
+        // Prepare to move to the parent directory.
+        // Also determine whether CurrentHandle refers to the Root directory.
+        //
+        Status = CurrentHandle->Open (CurrentHandle, &NextHigherHandle, L"..", EFI_FILE_MODE_READ, 0);
         //
         // We got info... do we have a name? if yes precede the current path with it...
         //
-        if (StrLen (FileInfo->FileName) == 0) {
+        if ((StrLen (FileInfo->FileName) == 0) || EFI_ERROR (Status)) {
+          //
+          // Both FileInfo->FileName being '\0' and EFI_ERROR() suggest that
+          // CurrentHandle refers to the Root directory.  As this loop ensures
+          // FullFileName is starting with '\\' at all times, signal success
+          // and exit the loop.
+          // While FileInfo->FileName could theoretically be a value other than
+          // '\0' or '\\', '\\' is guaranteed to be supported by the
+          // specification and hence its value can safely be ignored.
+          //
+          Status = EFI_SUCCESS;
           if (*FullFileName == NULL) {
             ASSERT((*FullFileName == NULL && Size == 0) || (*FullFileName != NULL));
             *FullFileName = StrnCatGrowLeft(FullFileName, &Size, L"\\", 0);
@@ -837,15 +852,11 @@ FileHandleGetFileName (
           FreePool(FileInfo);
         }
       }
+
+      FileHandleClose(CurrentHandle);
       //
       // Move to the parent directory
       //
-      Status = CurrentHandle->Open (CurrentHandle, &NextHigherHandle, L"..", EFI_FILE_MODE_READ, 0);
-      if (EFI_ERROR (Status)) {
-        break;
-      }
-
-      FileHandleClose(CurrentHandle);
       CurrentHandle = NextHigherHandle;
     }
   } else if (Status == EFI_NOT_FOUND) {
-- 
2.23.0.windows.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH] ShellPkg/Ls: Return empty content for all empty folders
       [not found] <aa5718fc4fdc610f03912cfcfd6fd8760d866117.1571572996.git.mhaeuser@outlook.de>
  2019-10-20 12:08 ` [PATCH] MdePkg/UefiFileHandleLib: Tolerate more Root handle FileNames Marvin Häuser
  2019-10-20 12:08 ` [PATCH] ShellPkg/Ls: Consider UEFI timezone may not be set Marvin Häuser
@ 2019-10-20 12:08 ` Marvin Häuser
  2019-11-01  0:39   ` Gao, Zhichao
  2019-10-20 12:08 ` [PATCH] UefiShellCommandLib: Default to first found UC for unsupported PlatformLang Marvin Häuser
  2019-10-20 12:08 ` [PATCH] MdePkg/UefiDebugLibConOut: Pass the correct buffer size Marvin Häuser
  4 siblings, 1 reply; 16+ messages in thread
From: Marvin Häuser @ 2019-10-20 12:08 UTC (permalink / raw)
  To: devel@edk2.groups.io; +Cc: vit9696@protonmail.com, Ray Ni, Zhichao Gao

From: Marvin Haeuser <mhaeuser@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@intel.com>
Cc: Zhichao Gao <zhichao.gao@intel.com>
Signed-off-by: Marvin Haeuser <mhaeuser@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


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH] UefiShellCommandLib: Default to first found UC for unsupported PlatformLang
       [not found] <aa5718fc4fdc610f03912cfcfd6fd8760d866117.1571572996.git.mhaeuser@outlook.de>
                   ` (2 preceding siblings ...)
  2019-10-20 12:08 ` [PATCH] ShellPkg/Ls: Return empty content for all empty folders Marvin Häuser
@ 2019-10-20 12:08 ` Marvin Häuser
  2019-10-24  1:24   ` Gao, Zhichao
  2019-10-20 12:08 ` [PATCH] MdePkg/UefiDebugLibConOut: Pass the correct buffer size Marvin Häuser
  4 siblings, 1 reply; 16+ messages in thread
From: Marvin Häuser @ 2019-10-20 12:08 UTC (permalink / raw)
  To: devel@edk2.groups.io; +Cc: vit9696@protonmail.com, Ray Ni, Zhichao Gao

From: Marvin Haeuser <mhaeuser@outlook.de>

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2300

On some firmwares PlatformLang is set to the local language (e.g. ru-RU),
however there is no Unicode Collation protocol instance that supports it.
As for missing PlatformLang, fall back to the first found instance.

Cc: Ray Ni <ray.ni@intel.com>
Cc: Zhichao Gao <zhichao.gao@intel.com>
Signed-off-by: Marvin Haeuser <mhaeuser@outlook.de>
---
 ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c b/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
index 4c48b65fbc1d..345808a1eac6 100644
--- a/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
+++ b/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
@@ -107,9 +107,13 @@ CommandInit(
 
       //
       // Without clue provided use the first Unicode Collation2 protocol.
+      // This may happen when PlatformLang is NULL or when no installed Unicode
+      // Collation2 protocol instance supports PlatformLang.
       //
-      if (PlatformLang == NULL) {
+      if (gUnicodeCollation == NULL) {
         gUnicodeCollation = Uc;
+      }
+      if (PlatformLang == NULL) {
         break;
       }
 
-- 
2.23.0.windows.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH] MdePkg/UefiDebugLibConOut: Pass the correct buffer size
       [not found] <aa5718fc4fdc610f03912cfcfd6fd8760d866117.1571572996.git.mhaeuser@outlook.de>
                   ` (3 preceding siblings ...)
  2019-10-20 12:08 ` [PATCH] UefiShellCommandLib: Default to first found UC for unsupported PlatformLang Marvin Häuser
@ 2019-10-20 12:08 ` Marvin Häuser
  2019-10-21  3:11   ` Liming Gao
       [not found]   ` <15CF8AE415F70486.7044@groups.io>
  4 siblings, 2 replies; 16+ messages in thread
From: Marvin Häuser @ 2019-10-20 12:08 UTC (permalink / raw)
  To: devel@edk2.groups.io; +Cc: vit9696@protonmail.com, Michael D Kinney, Liming Gao

From: Marvin Haeuser <mhaeuser@outlook.de>

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2302

The second argument of "UnicodeVSPrintAsciiFormat" is "BufferSize",
which takes the size of the buffer in bytes. Replace the currently
used MAX_DEBUG_MESSAGE_LENGTH usage, which is the buffer's length,
with the actual buffer size.

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Signed-off-by: Marvin Haeuser <mhaeuser@outlook.de>
---
 MdePkg/Library/UefiDebugLibConOut/DebugLib.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/MdePkg/Library/UefiDebugLibConOut/DebugLib.c b/MdePkg/Library/UefiDebugLibConOut/DebugLib.c
index cf168d05cf21..8ea38ea7cc7c 100644
--- a/MdePkg/Library/UefiDebugLibConOut/DebugLib.c
+++ b/MdePkg/Library/UefiDebugLibConOut/DebugLib.c
@@ -104,9 +104,9 @@ DebugPrintMarker (
     // Convert the DEBUG() message to a Unicode String
     //
     if (BaseListMarker == NULL) {
-      UnicodeVSPrintAsciiFormat (Buffer, MAX_DEBUG_MESSAGE_LENGTH,  Format, VaListMarker);
+      UnicodeVSPrintAsciiFormat (Buffer, sizeof (Buffer), Format, VaListMarker);
     } else {
-      UnicodeBSPrintAsciiFormat (Buffer, MAX_DEBUG_MESSAGE_LENGTH,  Format, BaseListMarker);
+      UnicodeBSPrintAsciiFormat (Buffer, sizeof (Buffer), Format, BaseListMarker);
     }
 
 
-- 
2.23.0.windows.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH] MdePkg/UefiDebugLibConOut: Pass the correct buffer size
  2019-10-20 12:08 ` [PATCH] MdePkg/UefiDebugLibConOut: Pass the correct buffer size Marvin Häuser
@ 2019-10-21  3:11   ` Liming Gao
       [not found]   ` <15CF8AE415F70486.7044@groups.io>
  1 sibling, 0 replies; 16+ messages in thread
From: Liming Gao @ 2019-10-21  3:11 UTC (permalink / raw)
  To: Marvin.Haeuser@outlook.com, devel@edk2.groups.io
  Cc: vit9696@protonmail.com, Kinney, Michael D

Reviewed-by: Liming Gao <liming.gao@intel.com>

>-----Original Message-----
>From: Marvin Häuser [mailto:Marvin.Haeuser@outlook.com]
>Sent: Sunday, October 20, 2019 8:09 PM
>To: devel@edk2.groups.io
>Cc: vit9696@protonmail.com; Kinney, Michael D
><michael.d.kinney@intel.com>; Gao, Liming <liming.gao@intel.com>
>Subject: [PATCH] MdePkg/UefiDebugLibConOut: Pass the correct buffer size
>
>From: Marvin Haeuser <mhaeuser@outlook.de>
>
>REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2302
>
>The second argument of "UnicodeVSPrintAsciiFormat" is "BufferSize",
>which takes the size of the buffer in bytes. Replace the currently
>used MAX_DEBUG_MESSAGE_LENGTH usage, which is the buffer's length,
>with the actual buffer size.
>
>Cc: Michael D Kinney <michael.d.kinney@intel.com>
>Cc: Liming Gao <liming.gao@intel.com>
>Signed-off-by: Marvin Haeuser <mhaeuser@outlook.de>
>---
> MdePkg/Library/UefiDebugLibConOut/DebugLib.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
>diff --git a/MdePkg/Library/UefiDebugLibConOut/DebugLib.c
>b/MdePkg/Library/UefiDebugLibConOut/DebugLib.c
>index cf168d05cf21..8ea38ea7cc7c 100644
>--- a/MdePkg/Library/UefiDebugLibConOut/DebugLib.c
>+++ b/MdePkg/Library/UefiDebugLibConOut/DebugLib.c
>@@ -104,9 +104,9 @@ DebugPrintMarker (
>     // Convert the DEBUG() message to a Unicode String
>
>     //
>
>     if (BaseListMarker == NULL) {
>
>-      UnicodeVSPrintAsciiFormat (Buffer, MAX_DEBUG_MESSAGE_LENGTH,
>Format, VaListMarker);
>
>+      UnicodeVSPrintAsciiFormat (Buffer, sizeof (Buffer), Format,
>VaListMarker);
>
>     } else {
>
>-      UnicodeBSPrintAsciiFormat (Buffer, MAX_DEBUG_MESSAGE_LENGTH,
>Format, BaseListMarker);
>
>+      UnicodeBSPrintAsciiFormat (Buffer, sizeof (Buffer), Format,
>BaseListMarker);
>
>     }
>
>
>
>
>
>--
>2.23.0.windows.1


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] ShellPkg/Ls: Consider UEFI timezone may not be set
  2019-10-20 12:08 ` [PATCH] ShellPkg/Ls: Consider UEFI timezone may not be set Marvin Häuser
@ 2019-10-24  1:19   ` Gao, Zhichao
  0 siblings, 0 replies; 16+ messages in thread
From: Gao, Zhichao @ 2019-10-24  1:19 UTC (permalink / raw)
  To: Marvin Häuser, devel@edk2.groups.io; +Cc: vit9696@protonmail.com, Ni, Ray

Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>

> -----Original Message-----
> From: Marvin Häuser [mailto:Marvin.Haeuser@outlook.com]
> Sent: Sunday, October 20, 2019 8:09 PM
> To: devel@edk2.groups.io
> Cc: vit9696@protonmail.com; Ni, Ray <ray.ni@intel.com>; Gao, Zhichao
> <zhichao.gao@intel.com>
> Subject: [PATCH] ShellPkg/Ls: Consider UEFI timezone may not be set
> 
> From: Marvin Haeuser <mhaeuser@outlook.de>
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2294
> 
> EFI_RUNTIME_SERVICES.GetTime() might return an unspecified Timezone,
> such as when SetTime() has not been called after the RTC was cut off power.
> Consider this case by not attempting Timezone translations for when it is
> invalid.
> 
> Cc: Ray Ni <ray.ni@intel.com>
> Cc: Zhichao Gao <zhichao.gao@intel.com>
> Signed-off-by: Marvin Haeuser <mhaeuser@outlook.de>
> ---
>  ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c
> b/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c
> index adeb987e6ecb..1a65f60c3b44 100644
> --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c
> +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c
> @@ -500,7 +500,7 @@ PrintLsOutput(
>        // Change the file time to local time.       //       Status = gRT-
> >GetTime(&LocalTime, NULL);-      if (!EFI_ERROR (Status)) {+      if
> (!EFI_ERROR (Status) && (LocalTime.TimeZone !=
> EFI_UNSPECIFIED_TIMEZONE)) {         if ((Node->Info-
> >CreateTime.TimeZone != EFI_UNSPECIFIED_TIMEZONE) &&             (Node-
> >Info->CreateTime.Month >= 1 && Node->Info->CreateTime.Month <= 12))
> {           //--
> 2.23.0.windows.1


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] UefiShellCommandLib: Default to first found UC for unsupported PlatformLang
  2019-10-20 12:08 ` [PATCH] UefiShellCommandLib: Default to first found UC for unsupported PlatformLang Marvin Häuser
@ 2019-10-24  1:24   ` Gao, Zhichao
  2019-11-05  3:03     ` Ni, Ray
  0 siblings, 1 reply; 16+ messages in thread
From: Gao, Zhichao @ 2019-10-24  1:24 UTC (permalink / raw)
  To: Marvin Häuser, devel@edk2.groups.io; +Cc: vit9696@protonmail.com, Ni, Ray

Hi Ray,

This patch would set the default language of shell to the first found language instead of ASSERT when the matched language is not found. What do you think of this change? I don't know the reason of assert. If it is required to ASSERT to show the user the shell language should be matched with the platform language. Then the patch is inappropriate. If not, the patch is fine.

Thanks,
Zhichao

> -----Original Message-----
> From: Marvin Häuser [mailto:Marvin.Haeuser@outlook.com]
> Sent: Sunday, October 20, 2019 8:09 PM
> To: devel@edk2.groups.io
> Cc: vit9696@protonmail.com; Ni, Ray <ray.ni@intel.com>; Gao, Zhichao
> <zhichao.gao@intel.com>
> Subject: [PATCH] UefiShellCommandLib: Default to first found UC for
> unsupported PlatformLang
> 
> From: Marvin Haeuser <mhaeuser@outlook.de>
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2300
> 
> On some firmwares PlatformLang is set to the local language (e.g. ru-RU),
> however there is no Unicode Collation protocol instance that supports it.
> As for missing PlatformLang, fall back to the first found instance.
> 
> Cc: Ray Ni <ray.ni@intel.com>
> Cc: Zhichao Gao <zhichao.gao@intel.com>
> Signed-off-by: Marvin Haeuser <mhaeuser@outlook.de>
> ---
>  ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
> b/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
> index 4c48b65fbc1d..345808a1eac6 100644
> --- a/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
> +++ b/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
> @@ -107,9 +107,13 @@ CommandInit(
>         //       // Without clue provided use the first Unicode Collation2 protocol.+
> // This may happen when PlatformLang is NULL or when no installed
> Unicode+      // Collation2 protocol instance supports PlatformLang.       //-      if
> (PlatformLang == NULL) {+      if (gUnicodeCollation == NULL)
> {         gUnicodeCollation = Uc;+      }+      if (PlatformLang == NULL)
> {         break;       } --
> 2.23.0.windows.1


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] MdePkg/UefiFileHandleLib: Tolerate more Root handle FileNames
  2019-10-20 12:08 ` [PATCH] MdePkg/UefiFileHandleLib: Tolerate more Root handle FileNames Marvin Häuser
@ 2019-10-24  2:51   ` Gao, Zhichao
  2019-11-04  0:50     ` Liming Gao
       [not found]     ` <15D3CF493CDD3994.15406@groups.io>
  0 siblings, 2 replies; 16+ messages in thread
From: Gao, Zhichao @ 2019-10-24  2:51 UTC (permalink / raw)
  To: devel@edk2.groups.io, Marvin.Haeuser@outlook.com
  Cc: vit9696@protonmail.com, Kinney, Michael D, Gao, Liming

This patch makes sense. The patch would not affect the original logic and figure out the failure if the root directory file name is '\\'.
Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>

> -----Original Message-----
> From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
> Marvin Häuser
> Sent: Sunday, October 20, 2019 8:09 PM
> To: devel@edk2.groups.io
> Cc: vit9696@protonmail.com; Kinney, Michael D
> <michael.d.kinney@intel.com>; Gao, Liming <liming.gao@intel.com>
> Subject: [edk2-devel] [PATCH] MdePkg/UefiFileHandleLib: Tolerate more
> Root handle FileNames
> 
> From: Marvin Haeuser <mhaeuser@outlook.de>
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2295
> 
> The current implementation of the FileHandleGetFileName() function
> assumes that the Root directory always has the FileName '\0'.
> However, the only requirement the UEFI specification defines is that a
> prepended '\\' must be supported to access files and folders relative to the
> Root directory.
> This patch removes this assumption and supports constructing valid paths for
> any value of FileName for the Root Directory.
> 
> In practice, this fixes compatibility issues with File System drivers that report
> '\\' as the FileName of the Root directory, which currently is both generating
> an invalid path ("\\\\") and resulting in an EFI_NOT_FOUND result from the
> CurrentHandle->Open() call.
> 
> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> Cc: Liming Gao <liming.gao@intel.com>
> Signed-off-by: Marvin Haeuser <mhaeuser@outlook.de>
> ---
>  MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c | 25
> ++++++++++++++------
>  1 file changed, 18 insertions(+), 7 deletions(-)
> 
> diff --git a/MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c
> b/MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c
> index 5dc893833a46..28e28e5f67d5 100644
> --- a/MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c
> +++ b/MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c
> @@ -816,10 +816,25 @@ FileHandleGetFileName (
>          Status = EFI_OUT_OF_RESOURCES;
>          break;
>        } else {
> +        //
> +        // Prepare to move to the parent directory.
> +        // Also determine whether CurrentHandle refers to the Root directory.
> +        //
> +        Status = CurrentHandle->Open (CurrentHandle, &NextHigherHandle,
> + L"..", EFI_FILE_MODE_READ, 0);
>          //
>          // We got info... do we have a name? if yes precede the current path
> with it...
>          //
> -        if (StrLen (FileInfo->FileName) == 0) {
> +        if ((StrLen (FileInfo->FileName) == 0) || EFI_ERROR (Status)) {
> +          //
> +          // Both FileInfo->FileName being '\0' and EFI_ERROR() suggest that
> +          // CurrentHandle refers to the Root directory.  As this loop ensures
> +          // FullFileName is starting with '\\' at all times, signal success
> +          // and exit the loop.
> +          // While FileInfo->FileName could theoretically be a value other than
> +          // '\0' or '\\', '\\' is guaranteed to be supported by the
> +          // specification and hence its value can safely be ignored.
> +          //
> +          Status = EFI_SUCCESS;
>            if (*FullFileName == NULL) {
>              ASSERT((*FullFileName == NULL && Size == 0) || (*FullFileName !=
> NULL));
>              *FullFileName = StrnCatGrowLeft(FullFileName, &Size, L"\\", 0); @@ -
> 837,15 +852,11 @@ FileHandleGetFileName (
>            FreePool(FileInfo);
>          }
>        }
> +
> +      FileHandleClose(CurrentHandle);
>        //
>        // Move to the parent directory
>        //
> -      Status = CurrentHandle->Open (CurrentHandle, &NextHigherHandle,
> L"..", EFI_FILE_MODE_READ, 0);
> -      if (EFI_ERROR (Status)) {
> -        break;
> -      }
> -
> -      FileHandleClose(CurrentHandle);
>        CurrentHandle = NextHigherHandle;
>      }
>    } else if (Status == EFI_NOT_FOUND) {
> --
> 2.23.0.windows.1
> 
> 
> 


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] ShellPkg/Ls: Return empty content for all empty folders
  2019-10-20 12:08 ` [PATCH] ShellPkg/Ls: Return empty content for all empty folders Marvin Häuser
@ 2019-11-01  0:39   ` Gao, Zhichao
  0 siblings, 0 replies; 16+ messages in thread
From: Gao, Zhichao @ 2019-11-01  0:39 UTC (permalink / raw)
  To: 'Marvin Häuser', devel@edk2.groups.io
  Cc: vit9696@protonmail.com, Ni, Ray

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

> -----Original Message-----
> From: Marvin Häuser [mailto:Marvin.Haeuser@outlook.com]
> Sent: Sunday, October 20, 2019 8:09 PM
> To: devel@edk2.groups.io
> Cc: vit9696@protonmail.com; Ni, Ray <ray.ni@intel.com>; Gao, Zhichao
> <zhichao.gao@intel.com>
> Subject: [PATCH] ShellPkg/Ls: Return empty content for all empty folders
> 
> From: Marvin Haeuser <mhaeuser@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@intel.com>
> Cc: Zhichao Gao <zhichao.gao@intel.com>
> Signed-off-by: Marvin Haeuser <mhaeuser@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


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] MdePkg/UefiFileHandleLib: Tolerate more Root handle FileNames
  2019-10-24  2:51   ` Gao, Zhichao
@ 2019-11-04  0:50     ` Liming Gao
       [not found]     ` <15D3CF493CDD3994.15406@groups.io>
  1 sibling, 0 replies; 16+ messages in thread
From: Liming Gao @ 2019-11-04  0:50 UTC (permalink / raw)
  To: Gao, Zhichao, devel@edk2.groups.io, Marvin.Haeuser@outlook.com
  Cc: vit9696@protonmail.com, Kinney, Michael D

Reviewed-by: Liming Gao <liming.gao@intel.com>

>-----Original Message-----
>From: Gao, Zhichao
>Sent: Thursday, October 24, 2019 10:52 AM
>To: devel@edk2.groups.io; Marvin.Haeuser@outlook.com
>Cc: vit9696@protonmail.com; Kinney, Michael D
><michael.d.kinney@intel.com>; Gao, Liming <liming.gao@intel.com>
>Subject: RE: [PATCH] MdePkg/UefiFileHandleLib: Tolerate more Root handle
>FileNames
>
>This patch makes sense. The patch would not affect the original logic and
>figure out the failure if the root directory file name is '\\'.
>Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>
>
>> -----Original Message-----
>> From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
>> Marvin Häuser
>> Sent: Sunday, October 20, 2019 8:09 PM
>> To: devel@edk2.groups.io
>> Cc: vit9696@protonmail.com; Kinney, Michael D
>> <michael.d.kinney@intel.com>; Gao, Liming <liming.gao@intel.com>
>> Subject: [edk2-devel] [PATCH] MdePkg/UefiFileHandleLib: Tolerate more
>> Root handle FileNames
>>
>> From: Marvin Haeuser <mhaeuser@outlook.de>
>>
>> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2295
>>
>> The current implementation of the FileHandleGetFileName() function
>> assumes that the Root directory always has the FileName '\0'.
>> However, the only requirement the UEFI specification defines is that a
>> prepended '\\' must be supported to access files and folders relative to the
>> Root directory.
>> This patch removes this assumption and supports constructing valid paths
>for
>> any value of FileName for the Root Directory.
>>
>> In practice, this fixes compatibility issues with File System drivers that report
>> '\\' as the FileName of the Root directory, which currently is both generating
>> an invalid path ("\\\\") and resulting in an EFI_NOT_FOUND result from the
>> CurrentHandle->Open() call.
>>
>> Cc: Michael D Kinney <michael.d.kinney@intel.com>
>> Cc: Liming Gao <liming.gao@intel.com>
>> Signed-off-by: Marvin Haeuser <mhaeuser@outlook.de>
>> ---
>>  MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c | 25
>> ++++++++++++++------
>>  1 file changed, 18 insertions(+), 7 deletions(-)
>>
>> diff --git a/MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c
>> b/MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c
>> index 5dc893833a46..28e28e5f67d5 100644
>> --- a/MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c
>> +++ b/MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c
>> @@ -816,10 +816,25 @@ FileHandleGetFileName (
>>          Status = EFI_OUT_OF_RESOURCES;
>>          break;
>>        } else {
>> +        //
>> +        // Prepare to move to the parent directory.
>> +        // Also determine whether CurrentHandle refers to the Root directory.
>> +        //
>> +        Status = CurrentHandle->Open (CurrentHandle, &NextHigherHandle,
>> + L"..", EFI_FILE_MODE_READ, 0);
>>          //
>>          // We got info... do we have a name? if yes precede the current path
>> with it...
>>          //
>> -        if (StrLen (FileInfo->FileName) == 0) {
>> +        if ((StrLen (FileInfo->FileName) == 0) || EFI_ERROR (Status)) {
>> +          //
>> +          // Both FileInfo->FileName being '\0' and EFI_ERROR() suggest that
>> +          // CurrentHandle refers to the Root directory.  As this loop ensures
>> +          // FullFileName is starting with '\\' at all times, signal success
>> +          // and exit the loop.
>> +          // While FileInfo->FileName could theoretically be a value other than
>> +          // '\0' or '\\', '\\' is guaranteed to be supported by the
>> +          // specification and hence its value can safely be ignored.
>> +          //
>> +          Status = EFI_SUCCESS;
>>            if (*FullFileName == NULL) {
>>              ASSERT((*FullFileName == NULL && Size == 0) || (*FullFileName !=
>> NULL));
>>              *FullFileName = StrnCatGrowLeft(FullFileName, &Size, L"\\", 0); @@ -
>> 837,15 +852,11 @@ FileHandleGetFileName (
>>            FreePool(FileInfo);
>>          }
>>        }
>> +
>> +      FileHandleClose(CurrentHandle);
>>        //
>>        // Move to the parent directory
>>        //
>> -      Status = CurrentHandle->Open (CurrentHandle, &NextHigherHandle,
>> L"..", EFI_FILE_MODE_READ, 0);
>> -      if (EFI_ERROR (Status)) {
>> -        break;
>> -      }
>> -
>> -      FileHandleClose(CurrentHandle);
>>        CurrentHandle = NextHigherHandle;
>>      }
>>    } else if (Status == EFI_NOT_FOUND) {
>> --
>> 2.23.0.windows.1
>>
>>
>> 


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [edk2-devel] [PATCH] MdePkg/UefiFileHandleLib: Tolerate more Root handle FileNames
       [not found]     ` <15D3CF493CDD3994.15406@groups.io>
@ 2019-11-04  2:07       ` Liming Gao
  0 siblings, 0 replies; 16+ messages in thread
From: Liming Gao @ 2019-11-04  2:07 UTC (permalink / raw)
  To: devel@edk2.groups.io, Gao, Liming, Gao, Zhichao,
	Marvin.Haeuser@outlook.com
  Cc: vit9696@protonmail.com, Kinney, Michael D

Push @ 6407186db9505f101ece4e1571eceed69b9fbdbe

>-----Original Message-----
>From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
>Liming Gao
>Sent: Monday, November 04, 2019 8:50 AM
>To: Gao, Zhichao <zhichao.gao@intel.com>; devel@edk2.groups.io;
>Marvin.Haeuser@outlook.com
>Cc: vit9696@protonmail.com; Kinney, Michael D <michael.d.kinney@intel.com>
>Subject: Re: [edk2-devel] [PATCH] MdePkg/UefiFileHandleLib: Tolerate more
>Root handle FileNames
>
>Reviewed-by: Liming Gao <liming.gao@intel.com>
>
>>-----Original Message-----
>>From: Gao, Zhichao
>>Sent: Thursday, October 24, 2019 10:52 AM
>>To: devel@edk2.groups.io; Marvin.Haeuser@outlook.com
>>Cc: vit9696@protonmail.com; Kinney, Michael D
>><michael.d.kinney@intel.com>; Gao, Liming <liming.gao@intel.com>
>>Subject: RE: [PATCH] MdePkg/UefiFileHandleLib: Tolerate more Root handle
>>FileNames
>>
>>This patch makes sense. The patch would not affect the original logic and
>>figure out the failure if the root directory file name is '\\'.
>>Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>
>>
>>> -----Original Message-----
>>> From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
>>> Marvin Häuser
>>> Sent: Sunday, October 20, 2019 8:09 PM
>>> To: devel@edk2.groups.io
>>> Cc: vit9696@protonmail.com; Kinney, Michael D
>>> <michael.d.kinney@intel.com>; Gao, Liming <liming.gao@intel.com>
>>> Subject: [edk2-devel] [PATCH] MdePkg/UefiFileHandleLib: Tolerate more
>>> Root handle FileNames
>>>
>>> From: Marvin Haeuser <mhaeuser@outlook.de>
>>>
>>> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2295
>>>
>>> The current implementation of the FileHandleGetFileName() function
>>> assumes that the Root directory always has the FileName '\0'.
>>> However, the only requirement the UEFI specification defines is that a
>>> prepended '\\' must be supported to access files and folders relative to the
>>> Root directory.
>>> This patch removes this assumption and supports constructing valid paths
>>for
>>> any value of FileName for the Root Directory.
>>>
>>> In practice, this fixes compatibility issues with File System drivers that
>report
>>> '\\' as the FileName of the Root directory, which currently is both
>generating
>>> an invalid path ("\\\\") and resulting in an EFI_NOT_FOUND result from the
>>> CurrentHandle->Open() call.
>>>
>>> Cc: Michael D Kinney <michael.d.kinney@intel.com>
>>> Cc: Liming Gao <liming.gao@intel.com>
>>> Signed-off-by: Marvin Haeuser <mhaeuser@outlook.de>
>>> ---
>>>  MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c | 25
>>> ++++++++++++++------
>>>  1 file changed, 18 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c
>>> b/MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c
>>> index 5dc893833a46..28e28e5f67d5 100644
>>> --- a/MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c
>>> +++ b/MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.c
>>> @@ -816,10 +816,25 @@ FileHandleGetFileName (
>>>          Status = EFI_OUT_OF_RESOURCES;
>>>          break;
>>>        } else {
>>> +        //
>>> +        // Prepare to move to the parent directory.
>>> +        // Also determine whether CurrentHandle refers to the Root
>directory.
>>> +        //
>>> +        Status = CurrentHandle->Open (CurrentHandle, &NextHigherHandle,
>>> + L"..", EFI_FILE_MODE_READ, 0);
>>>          //
>>>          // We got info... do we have a name? if yes precede the current path
>>> with it...
>>>          //
>>> -        if (StrLen (FileInfo->FileName) == 0) {
>>> +        if ((StrLen (FileInfo->FileName) == 0) || EFI_ERROR (Status)) {
>>> +          //
>>> +          // Both FileInfo->FileName being '\0' and EFI_ERROR() suggest that
>>> +          // CurrentHandle refers to the Root directory.  As this loop ensures
>>> +          // FullFileName is starting with '\\' at all times, signal success
>>> +          // and exit the loop.
>>> +          // While FileInfo->FileName could theoretically be a value other than
>>> +          // '\0' or '\\', '\\' is guaranteed to be supported by the
>>> +          // specification and hence its value can safely be ignored.
>>> +          //
>>> +          Status = EFI_SUCCESS;
>>>            if (*FullFileName == NULL) {
>>>              ASSERT((*FullFileName == NULL && Size == 0) || (*FullFileName !=
>>> NULL));
>>>              *FullFileName = StrnCatGrowLeft(FullFileName, &Size, L"\\", 0); @@
>-
>>> 837,15 +852,11 @@ FileHandleGetFileName (
>>>            FreePool(FileInfo);
>>>          }
>>>        }
>>> +
>>> +      FileHandleClose(CurrentHandle);
>>>        //
>>>        // Move to the parent directory
>>>        //
>>> -      Status = CurrentHandle->Open (CurrentHandle, &NextHigherHandle,
>>> L"..", EFI_FILE_MODE_READ, 0);
>>> -      if (EFI_ERROR (Status)) {
>>> -        break;
>>> -      }
>>> -
>>> -      FileHandleClose(CurrentHandle);
>>>        CurrentHandle = NextHigherHandle;
>>>      }
>>>    } else if (Status == EFI_NOT_FOUND) {
>>> --
>>> 2.23.0.windows.1
>>>
>>>
>>>
>
>
>


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [edk2-devel] [PATCH] MdePkg/UefiDebugLibConOut: Pass the correct buffer size
       [not found]   ` <15CF8AE415F70486.7044@groups.io>
@ 2019-11-04  2:11     ` Liming Gao
  0 siblings, 0 replies; 16+ messages in thread
From: Liming Gao @ 2019-11-04  2:11 UTC (permalink / raw)
  To: devel@edk2.groups.io, Gao, Liming, Marvin.Haeuser@outlook.com
  Cc: vit9696@protonmail.com, Kinney, Michael D

Push @ 5ae6c993ab75c694831547b7436543a41d60458a

>-----Original Message-----
>From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
>Liming Gao
>Sent: Monday, October 21, 2019 11:12 AM
>To: Marvin.Haeuser@outlook.com; devel@edk2.groups.io
>Cc: vit9696@protonmail.com; Kinney, Michael D <michael.d.kinney@intel.com>
>Subject: Re: [edk2-devel] [PATCH] MdePkg/UefiDebugLibConOut: Pass the
>correct buffer size
>
>Reviewed-by: Liming Gao <liming.gao@intel.com>
>
>>-----Original Message-----
>>From: Marvin Häuser [mailto:Marvin.Haeuser@outlook.com]
>>Sent: Sunday, October 20, 2019 8:09 PM
>>To: devel@edk2.groups.io
>>Cc: vit9696@protonmail.com; Kinney, Michael D
>><michael.d.kinney@intel.com>; Gao, Liming <liming.gao@intel.com>
>>Subject: [PATCH] MdePkg/UefiDebugLibConOut: Pass the correct buffer size
>>
>>From: Marvin Haeuser <mhaeuser@outlook.de>
>>
>>REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2302
>>
>>The second argument of "UnicodeVSPrintAsciiFormat" is "BufferSize",
>>which takes the size of the buffer in bytes. Replace the currently
>>used MAX_DEBUG_MESSAGE_LENGTH usage, which is the buffer's length,
>>with the actual buffer size.
>>
>>Cc: Michael D Kinney <michael.d.kinney@intel.com>
>>Cc: Liming Gao <liming.gao@intel.com>
>>Signed-off-by: Marvin Haeuser <mhaeuser@outlook.de>
>>---
>> MdePkg/Library/UefiDebugLibConOut/DebugLib.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>>diff --git a/MdePkg/Library/UefiDebugLibConOut/DebugLib.c
>>b/MdePkg/Library/UefiDebugLibConOut/DebugLib.c
>>index cf168d05cf21..8ea38ea7cc7c 100644
>>--- a/MdePkg/Library/UefiDebugLibConOut/DebugLib.c
>>+++ b/MdePkg/Library/UefiDebugLibConOut/DebugLib.c
>>@@ -104,9 +104,9 @@ DebugPrintMarker (
>>     // Convert the DEBUG() message to a Unicode String
>>
>>     //
>>
>>     if (BaseListMarker == NULL) {
>>
>>-      UnicodeVSPrintAsciiFormat (Buffer, MAX_DEBUG_MESSAGE_LENGTH,
>>Format, VaListMarker);
>>
>>+      UnicodeVSPrintAsciiFormat (Buffer, sizeof (Buffer), Format,
>>VaListMarker);
>>
>>     } else {
>>
>>-      UnicodeBSPrintAsciiFormat (Buffer, MAX_DEBUG_MESSAGE_LENGTH,
>>Format, BaseListMarker);
>>
>>+      UnicodeBSPrintAsciiFormat (Buffer, sizeof (Buffer), Format,
>>BaseListMarker);
>>
>>     }
>>
>>
>>
>>
>>
>>--
>>2.23.0.windows.1
>
>
>


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] UefiShellCommandLib: Default to first found UC for unsupported PlatformLang
  2019-10-24  1:24   ` Gao, Zhichao
@ 2019-11-05  3:03     ` Ni, Ray
  2019-11-05  4:52       ` Gao, Zhichao
  2019-11-05  6:41       ` Gao, Zhichao
  0 siblings, 2 replies; 16+ messages in thread
From: Ni, Ray @ 2019-11-05  3:03 UTC (permalink / raw)
  To: Gao, Zhichao, Marvin Häuser, devel@edk2.groups.io
  Cc: vit9696@protonmail.com

I am ok to this change.

> -----Original Message-----
> From: Gao, Zhichao <zhichao.gao@intel.com>
> Sent: Thursday, October 24, 2019 9:25 AM
> To: Marvin Häuser <Marvin.Haeuser@outlook.com>; devel@edk2.groups.io
> Cc: vit9696@protonmail.com; Ni, Ray <ray.ni@intel.com>
> Subject: RE: [PATCH] UefiShellCommandLib: Default to first found UC for
> unsupported PlatformLang
> 
> Hi Ray,
> 
> This patch would set the default language of shell to the first found language
> instead of ASSERT when the matched language is not found. What do you
> think of this change? I don't know the reason of assert. If it is required to
> ASSERT to show the user the shell language should be matched with the
> platform language. Then the patch is inappropriate. If not, the patch is fine.
> 
> Thanks,
> Zhichao
> 
> > -----Original Message-----
> > From: Marvin Häuser [mailto:Marvin.Haeuser@outlook.com]
> > Sent: Sunday, October 20, 2019 8:09 PM
> > To: devel@edk2.groups.io
> > Cc: vit9696@protonmail.com; Ni, Ray <ray.ni@intel.com>; Gao, Zhichao
> > <zhichao.gao@intel.com>
> > Subject: [PATCH] UefiShellCommandLib: Default to first found UC for
> > unsupported PlatformLang
> >
> > From: Marvin Haeuser <mhaeuser@outlook.de>
> >
> > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2300
> >
> > On some firmwares PlatformLang is set to the local language (e.g.
> > ru-RU), however there is no Unicode Collation protocol instance that
> supports it.
> > As for missing PlatformLang, fall back to the first found instance.
> >
> > Cc: Ray Ni <ray.ni@intel.com>
> > Cc: Zhichao Gao <zhichao.gao@intel.com>
> > Signed-off-by: Marvin Haeuser <mhaeuser@outlook.de>
> > ---
> >  ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c | 6
> +++++-
> >  1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git
> > a/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
> > b/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
> > index 4c48b65fbc1d..345808a1eac6 100644
> > --- a/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
> > +++ b/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
> > @@ -107,9 +107,13 @@ CommandInit(
> >         //       // Without clue provided use the first Unicode Collation2
> protocol.+
> > // This may happen when PlatformLang is NULL or when no installed
> > Unicode+      // Collation2 protocol instance supports PlatformLang.       //-
> if
> > (PlatformLang == NULL) {+      if (gUnicodeCollation == NULL)
> > {         gUnicodeCollation = Uc;+      }+      if (PlatformLang == NULL)
> > {         break;       } --
> > 2.23.0.windows.1


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] UefiShellCommandLib: Default to first found UC for unsupported PlatformLang
  2019-11-05  3:03     ` Ni, Ray
@ 2019-11-05  4:52       ` Gao, Zhichao
  2019-11-05  6:41       ` Gao, Zhichao
  1 sibling, 0 replies; 16+ messages in thread
From: Gao, Zhichao @ 2019-11-05  4:52 UTC (permalink / raw)
  To: Ni, Ray, Marvin Häuser, devel@edk2.groups.io; +Cc: vit9696@protonmail.com

Then there is no requirement to force ASSERT when the platform Language is mismatch with the shell language.
Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>

> -----Original Message-----
> From: Ni, Ray
> Sent: Tuesday, November 5, 2019 11:03 AM
> To: Gao, Zhichao <zhichao.gao@intel.com>; Marvin Häuser
> <Marvin.Haeuser@outlook.com>; devel@edk2.groups.io
> Cc: vit9696@protonmail.com
> Subject: RE: [PATCH] UefiShellCommandLib: Default to first found UC for
> unsupported PlatformLang
> 
> I am ok to this change.
> 
> > -----Original Message-----
> > From: Gao, Zhichao <zhichao.gao@intel.com>
> > Sent: Thursday, October 24, 2019 9:25 AM
> > To: Marvin Häuser <Marvin.Haeuser@outlook.com>;
> devel@edk2.groups.io
> > Cc: vit9696@protonmail.com; Ni, Ray <ray.ni@intel.com>
> > Subject: RE: [PATCH] UefiShellCommandLib: Default to first found UC
> > for unsupported PlatformLang
> >
> > Hi Ray,
> >
> > This patch would set the default language of shell to the first found
> > language instead of ASSERT when the matched language is not found.
> > What do you think of this change? I don't know the reason of assert.
> > If it is required to ASSERT to show the user the shell language should
> > be matched with the platform language. Then the patch is inappropriate. If
> not, the patch is fine.
> >
> > Thanks,
> > Zhichao
> >
> > > -----Original Message-----
> > > From: Marvin Häuser [mailto:Marvin.Haeuser@outlook.com]
> > > Sent: Sunday, October 20, 2019 8:09 PM
> > > To: devel@edk2.groups.io
> > > Cc: vit9696@protonmail.com; Ni, Ray <ray.ni@intel.com>; Gao, Zhichao
> > > <zhichao.gao@intel.com>
> > > Subject: [PATCH] UefiShellCommandLib: Default to first found UC for
> > > unsupported PlatformLang
> > >
> > > From: Marvin Haeuser <mhaeuser@outlook.de>
> > >
> > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2300
> > >
> > > On some firmwares PlatformLang is set to the local language (e.g.
> > > ru-RU), however there is no Unicode Collation protocol instance that
> > supports it.
> > > As for missing PlatformLang, fall back to the first found instance.
> > >
> > > Cc: Ray Ni <ray.ni@intel.com>
> > > Cc: Zhichao Gao <zhichao.gao@intel.com>
> > > Signed-off-by: Marvin Haeuser <mhaeuser@outlook.de>
> > > ---
> > >  ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c | 6
> > +++++-
> > >  1 file changed, 5 insertions(+), 1 deletion(-)
> > >
> > > diff --git
> > > a/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
> > > b/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
> > > index 4c48b65fbc1d..345808a1eac6 100644
> > > --- a/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
> > > +++ b/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
> > > @@ -107,9 +107,13 @@ CommandInit(
> > >         //       // Without clue provided use the first Unicode Collation2
> > protocol.+
> > > // This may happen when PlatformLang is NULL or when no installed
> > > Unicode+      // Collation2 protocol instance supports PlatformLang.       //-
> > if
> > > (PlatformLang == NULL) {+      if (gUnicodeCollation == NULL)
> > > {         gUnicodeCollation = Uc;+      }+      if (PlatformLang == NULL)
> > > {         break;       } --
> > > 2.23.0.windows.1


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] UefiShellCommandLib: Default to first found UC for unsupported PlatformLang
  2019-11-05  3:03     ` Ni, Ray
  2019-11-05  4:52       ` Gao, Zhichao
@ 2019-11-05  6:41       ` Gao, Zhichao
  1 sibling, 0 replies; 16+ messages in thread
From: Gao, Zhichao @ 2019-11-05  6:41 UTC (permalink / raw)
  To: Ni, Ray, Marvin Häuser, devel@edk2.groups.io; +Cc: vit9696@protonmail.com

Sorry for missing check the commit message title's length. The length should be within 72 chars (less than not equal).
So I advise to change the titile to "ShellPkg/CommandLib: Use first found UC when PlatformLang not support".
With that addressed, then take my R-B.

Thanks,
Zhichao

> -----Original Message-----
> From: Gao, Zhichao
> Sent: Tuesday, November 5, 2019 12:52 PM
> To: Ni, Ray <ray.ni@intel.com>; Marvin Häuser
> <Marvin.Haeuser@outlook.com>; devel@edk2.groups.io
> Cc: vit9696@protonmail.com
> Subject: RE: [PATCH] UefiShellCommandLib: Default to first found UC for
> unsupported PlatformLang
> 
> Then there is no requirement to force ASSERT when the platform Language is
> mismatch with the shell language.
> Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>
> 
> > -----Original Message-----
> > From: Ni, Ray
> > Sent: Tuesday, November 5, 2019 11:03 AM
> > To: Gao, Zhichao <zhichao.gao@intel.com>; Marvin Häuser
> > <Marvin.Haeuser@outlook.com>; devel@edk2.groups.io
> > Cc: vit9696@protonmail.com
> > Subject: RE: [PATCH] UefiShellCommandLib: Default to first found UC
> > for unsupported PlatformLang
> >
> > I am ok to this change.
> >
> > > -----Original Message-----
> > > From: Gao, Zhichao <zhichao.gao@intel.com>
> > > Sent: Thursday, October 24, 2019 9:25 AM
> > > To: Marvin Häuser <Marvin.Haeuser@outlook.com>;
> > devel@edk2.groups.io
> > > Cc: vit9696@protonmail.com; Ni, Ray <ray.ni@intel.com>
> > > Subject: RE: [PATCH] UefiShellCommandLib: Default to first found UC
> > > for unsupported PlatformLang
> > >
> > > Hi Ray,
> > >
> > > This patch would set the default language of shell to the first
> > > found language instead of ASSERT when the matched language is not
> found.
> > > What do you think of this change? I don't know the reason of assert.
> > > If it is required to ASSERT to show the user the shell language
> > > should be matched with the platform language. Then the patch is
> > > inappropriate. If
> > not, the patch is fine.
> > >
> > > Thanks,
> > > Zhichao
> > >
> > > > -----Original Message-----
> > > > From: Marvin Häuser [mailto:Marvin.Haeuser@outlook.com]
> > > > Sent: Sunday, October 20, 2019 8:09 PM
> > > > To: devel@edk2.groups.io
> > > > Cc: vit9696@protonmail.com; Ni, Ray <ray.ni@intel.com>; Gao,
> > > > Zhichao <zhichao.gao@intel.com>
> > > > Subject: [PATCH] UefiShellCommandLib: Default to first found UC
> > > > for unsupported PlatformLang
> > > >
> > > > From: Marvin Haeuser <mhaeuser@outlook.de>
> > > >
> > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2300
> > > >
> > > > On some firmwares PlatformLang is set to the local language (e.g.
> > > > ru-RU), however there is no Unicode Collation protocol instance
> > > > that
> > > supports it.
> > > > As for missing PlatformLang, fall back to the first found instance.
> > > >
> > > > Cc: Ray Ni <ray.ni@intel.com>
> > > > Cc: Zhichao Gao <zhichao.gao@intel.com>
> > > > Signed-off-by: Marvin Haeuser <mhaeuser@outlook.de>
> > > > ---
> > > >  ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c | 6
> > > +++++-
> > > >  1 file changed, 5 insertions(+), 1 deletion(-)
> > > >
> > > > diff --git
> > > > a/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
> > > > b/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
> > > > index 4c48b65fbc1d..345808a1eac6 100644
> > > > --- a/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
> > > > +++ b/ShellPkg/Library/UefiShellCommandLib/UefiShellCommandLib.c
> > > > @@ -107,9 +107,13 @@ CommandInit(
> > > >         //       // Without clue provided use the first Unicode Collation2
> > > protocol.+
> > > > // This may happen when PlatformLang is NULL or when no installed
> > > > Unicode+      // Collation2 protocol instance supports PlatformLang.
> //-
> > > if
> > > > (PlatformLang == NULL) {+      if (gUnicodeCollation == NULL)
> > > > {         gUnicodeCollation = Uc;+      }+      if (PlatformLang == NULL)
> > > > {         break;       } --
> > > > 2.23.0.windows.1


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2019-11-05  6:41 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <aa5718fc4fdc610f03912cfcfd6fd8760d866117.1571572996.git.mhaeuser@outlook.de>
2019-10-20 12:08 ` [PATCH] MdePkg/UefiFileHandleLib: Tolerate more Root handle FileNames Marvin Häuser
2019-10-24  2:51   ` Gao, Zhichao
2019-11-04  0:50     ` Liming Gao
     [not found]     ` <15D3CF493CDD3994.15406@groups.io>
2019-11-04  2:07       ` [edk2-devel] " Liming Gao
2019-10-20 12:08 ` [PATCH] ShellPkg/Ls: Consider UEFI timezone may not be set Marvin Häuser
2019-10-24  1:19   ` Gao, Zhichao
2019-10-20 12:08 ` [PATCH] ShellPkg/Ls: Return empty content for all empty folders Marvin Häuser
2019-11-01  0:39   ` Gao, Zhichao
2019-10-20 12:08 ` [PATCH] UefiShellCommandLib: Default to first found UC for unsupported PlatformLang Marvin Häuser
2019-10-24  1:24   ` Gao, Zhichao
2019-11-05  3:03     ` Ni, Ray
2019-11-05  4:52       ` Gao, Zhichao
2019-11-05  6:41       ` Gao, Zhichao
2019-10-20 12:08 ` [PATCH] MdePkg/UefiDebugLibConOut: Pass the correct buffer size Marvin Häuser
2019-10-21  3:11   ` Liming Gao
     [not found]   ` <15CF8AE415F70486.7044@groups.io>
2019-11-04  2:11     ` [edk2-devel] " Liming Gao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox