From: Ruiyu Ni <ruiyu.ni@intel.com>
To: edk2-devel@lists.01.org
Cc: Jaben Carsey <jaben.carsey@intel.com>
Subject: [PATCH 2/2] ShellPkg/redirection: Insert \xFEFF for ENV variable redirection
Date: Thu, 9 Aug 2018 11:45:02 +0800 [thread overview]
Message-ID: <20180809034502.131768-3-ruiyu.ni@intel.com> (raw)
In-Reply-To: <20180809034502.131768-1-ruiyu.ni@intel.com>
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1080
Per Shell spec 2.2 chapter 3.4.4.2, Unicode file tag should be
inserted in the output from the input redirected variable, to ensure
it looks like a UCS-2 encode file.
The patch fixes this issue.
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Jaben Carsey <jaben.carsey@intel.com>
---
ShellPkg/Application/Shell/FileHandleWrappers.c | 34 ++++++++++++++++++++-----
1 file changed, 27 insertions(+), 7 deletions(-)
diff --git a/ShellPkg/Application/Shell/FileHandleWrappers.c b/ShellPkg/Application/Shell/FileHandleWrappers.c
index 655854b25d..bcce055321 100644
--- a/ShellPkg/Application/Shell/FileHandleWrappers.c
+++ b/ShellPkg/Application/Shell/FileHandleWrappers.c
@@ -1148,15 +1148,35 @@ FileInterfaceEnvDelete(
EFI_STATUS
EFIAPI
FileInterfaceEnvRead(
- IN EFI_FILE_PROTOCOL *This,
- IN OUT UINTN *BufferSize,
- OUT VOID *Buffer
+ IN EFI_FILE_PROTOCOL *This,
+ IN OUT UINTN *BufferSize,
+ OUT VOID *Buffer
)
{
- return (SHELL_GET_ENVIRONMENT_VARIABLE(
- ((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name,
- BufferSize,
- Buffer));
+ EFI_STATUS Status;
+
+ *BufferSize = *BufferSize / sizeof (CHAR16) * sizeof (CHAR16);
+ if (*BufferSize != 0) {
+ //
+ // Make sure the first unicode character is \xFEFF
+ //
+ *(CHAR16 *)Buffer = gUnicodeFileTag;
+ Buffer = (CHAR16 *)Buffer + 1;
+ *BufferSize -= sizeof (gUnicodeFileTag);
+ }
+
+ Status = SHELL_GET_ENVIRONMENT_VARIABLE (
+ ((EFI_FILE_PROTOCOL_ENVIRONMENT*)This)->Name,
+ BufferSize,
+ Buffer
+ );
+ if (!EFI_ERROR (Status) || (Status == EFI_BUFFER_TOO_SMALL)) {
+ //
+ // BufferSize is valid and needs update when Status is Success or BufferTooSmall.
+ //
+ *BufferSize += sizeof (gUnicodeFileTag);
+ }
+ return Status;
}
/**
--
2.16.1.windows.1
next prev parent reply other threads:[~2018-08-09 3:44 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-09 3:45 [PATCH 0/2] Fix two bugs regarding shell redirection Ruiyu Ni
2018-08-09 3:45 ` [PATCH 1/2] ShellPkg/redirection: Insert \xFEFF after converting ASCII to Unicode Ruiyu Ni
2018-08-09 3:45 ` Ruiyu Ni [this message]
2018-08-09 15:38 ` [PATCH 0/2] Fix two bugs regarding shell redirection Carsey, Jaben
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180809034502.131768-3-ruiyu.ni@intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox