From db2e266a0e926be03fb0e6c86fadf121532912d1 Mon Sep 17 00:00:00 2001 From: Ruiyu Ni Date: Fri, 5 Aug 2016 13:10:11 +0800 Subject: ShellPkg: TAB logic incorrectly shows files in CWD when typing \ It should shows files in root directory of current map. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni Reviewed-by: Jaben Carsey Reviewed-by: Tapan Shah --- ShellPkg/Application/Shell/FileHandleWrappers.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'ShellPkg/Application/Shell/FileHandleWrappers.c') diff --git a/ShellPkg/Application/Shell/FileHandleWrappers.c b/ShellPkg/Application/Shell/FileHandleWrappers.c index 00919344b5..0d38e9d5fe 100644 --- a/ShellPkg/Application/Shell/FileHandleWrappers.c +++ b/ShellPkg/Application/Shell/FileHandleWrappers.c @@ -368,13 +368,24 @@ CreateTabCompletionList ( if (StrStr (InputString + TabPos, L":") == NULL) { // - // If file path doesn't contain ":", it's a path relative to current directory. + // If file path doesn't contain ":", ... // Cwd = ShellInfoObject.NewEfiShellProtocol->GetCurDir (NULL); if (Cwd != NULL) { - StrnCpyS (TabStr, (BufferSize) / sizeof (CHAR16), Cwd, (BufferSize) / sizeof (CHAR16) - 1); if (InputString[TabPos] != L'\\') { + // + // and it doesn't begin with "\\", it's a path relative to current directory. + // TabStr = "\\" + // + StrnCpyS (TabStr, BufferSize / sizeof (CHAR16), Cwd, (BufferSize) / sizeof (CHAR16) - 1); StrCatS (TabStr, (BufferSize) / sizeof (CHAR16), L"\\"); + } else { + // + // and it begins with "\\", it's a path pointing to root directory of current map. + // TabStr = "fsx:" + // + Index = StrStr (Cwd, L":") - Cwd + 1; + StrnCpyS (TabStr, BufferSize / sizeof (CHAR16), Cwd, Index); } } } -- cgit v1.2.3