From bbf904d1549edd87a96f49283e86347419d314c0 Mon Sep 17 00:00:00 2001 From: Jaben Carsey Date: Fri, 11 Apr 2014 19:15:02 +0000 Subject: [PATCH] ShellPkg: Fix using root of drive MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows near complete use of drive roots “fs0:” and “fs0:\” as directories and arguments to commands. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jaben Carsey Reviewed-by: Erik Bjorge Reviewed-by: Tapan Shah git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15463 6f19259b-4bc3-4df7-8a09-765794883524 --- ShellPkg/Application/Shell/ShellProtocol.c | 4 +++- ShellPkg/Library/BasePathLib/BasePathLib.c | 10 +++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ShellPkg/Application/Shell/ShellProtocol.c b/ShellPkg/Application/Shell/ShellProtocol.c index 9cc4ca38c1..ec4559480d 100644 --- a/ShellPkg/Application/Shell/ShellProtocol.c +++ b/ShellPkg/Application/Shell/ShellProtocol.c @@ -1914,6 +1914,8 @@ CreateAndPopulateShellFileInfo( } } + TempString = PathCleanUpDirectories(TempString); + ShellFileListItem->FullName = TempString; ShellFileListItem->Status = Status; ShellFileListItem->Handle = Handle; @@ -2143,7 +2145,7 @@ ShellSearchHandle( // FileInfo = FileHandleGetInfo(FileHandle); NewShellNode = CreateAndPopulateShellFileInfo( - L":", + MapName, EFI_SUCCESS, L"\\", FileHandle, diff --git a/ShellPkg/Library/BasePathLib/BasePathLib.c b/ShellPkg/Library/BasePathLib/BasePathLib.c index cc46c0fc33..301bd3b279 100644 --- a/ShellPkg/Library/BasePathLib/BasePathLib.c +++ b/ShellPkg/Library/BasePathLib/BasePathLib.c @@ -116,7 +116,15 @@ PathCleanUpDirectories( *(TempString + 1) = CHAR_NULL; } - + while ((TempString = StrStr(Path, L"\\\\")) != NULL) { + *TempString = CHAR_NULL; + TempString += 1; + TempSize = StrSize(TempString); + CopyMem(Path+StrLen(Path), TempString, TempSize); + } + if ((TempString = StrStr(Path, L"\\\\")) != NULL && *(TempString + 1) == CHAR_NULL) { + *(TempString) = CHAR_NULL; + } return (Path); }