From ab94587a7d2cd89695f9190420daceae0d2b7446 Mon Sep 17 00:00:00 2001 From: jcarsey Date: Thu, 30 Jun 2011 22:58:53 +0000 Subject: This refactors 3 functions out of ShellCommandLib and puts them into a new library (but as 2 functions instead of 3). This allows for users outside of the shell itself to have access to these functions. 1) Remove the 3 functions out of the shell's internal library (ShellCommandLib) 2) Add a new library class (PathLib) 3) Add an instance of this class (BasePathLib) 4) Change all internal shell callers to use this new library class. signed-off-by: jcarsey reviewed-by: jljusten git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11936 6f19259b-4bc3-4df7-8a09-765794883524 --- ShellPkg/Library/UefiShellLevel2CommandsLib/Cd.c | 6 +++--- ShellPkg/Library/UefiShellLevel2CommandsLib/Cp.c | 4 ++-- ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c | 2 +- ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c | 4 ++-- .../Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.c | 2 +- .../Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.h | 1 + .../UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.inf | 1 + 7 files changed, 11 insertions(+), 9 deletions(-) (limited to 'ShellPkg/Library/UefiShellLevel2CommandsLib') diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Cd.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Cd.c index bee4b0ae43..82d1c39df0 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Cd.c +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Cd.c @@ -108,7 +108,7 @@ ShellCommandRunCd ( ShellStatus = SHELL_NOT_FOUND; } else { Drive = GetFullyQualifiedPath(Directory); - ChopLastSlash(Drive); + PathRemoveLastItem(Drive); } if (ShellStatus == SHELL_SUCCESS && Drive != NULL) { // @@ -130,7 +130,7 @@ ShellCommandRunCd ( ShellStatus = SHELL_NOT_FOUND; } else { Drive = GetFullyQualifiedPath(Directory); - while (ChopLastSlash(Drive)) ; + while (PathRemoveLastItem(Drive)) ; } if (ShellStatus == SHELL_SUCCESS && Drive != NULL) { // @@ -150,7 +150,7 @@ ShellCommandRunCd ( ASSERT((Drive == NULL && DriveSize == 0) || (Drive != NULL)); Drive = StrnCatGrow(&Drive, &DriveSize, ShellGetCurrentDir(NULL), 0); if (*Param1 == L'\\') { - while (ChopLastSlash(Drive)) ; + while (PathRemoveLastItem(Drive)) ; Drive = StrnCatGrow(&Drive, &DriveSize, Param1+1, 0); } else { Drive = StrnCatGrow(&Drive, &DriveSize, Param1, 0); diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Cp.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Cp.c index 8b30ac3122..08f5514cf5 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Cp.c +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Cp.c @@ -416,7 +416,7 @@ ValidateAndCopyFiles( break; } - CleanPath(DestPath); + PathCleanUpDirectories(DestPath); ShellPrintEx(-1, -1, HiiOutput, Node->FullName, DestPath); @@ -619,7 +619,7 @@ ShellCommandRunCp ( // now copy them all... // if (FileList != NULL && !IsListEmpty(&FileList->Link)) { - ShellStatus = ProcessValidateAndCopyFiles(FileList, ShellCommandCleanPath((CHAR16*)ShellCommandLineGetRawValue(Package, ParamCount)), SilentMode, RecursiveMode); + ShellStatus = ProcessValidateAndCopyFiles(FileList, PathCleanUpDirectories((CHAR16*)ShellCommandLineGetRawValue(Package, ParamCount)), SilentMode, RecursiveMode); Status = ShellCloseFileMetaArg(&FileList); if (EFI_ERROR(Status) && ShellStatus == SHELL_SUCCESS) { ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_FILE), gShellLevel2HiiHandle, ShellCommandLineGetRawValue(Package, ParamCount), ShellStatus|MAX_BIT); diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c index ac71350ef4..a93b54c429 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c @@ -67,7 +67,7 @@ PrintLsOutput( CorrectedPath = StrnCatGrow(&CorrectedPath, NULL, Path, 0); ASSERT(CorrectedPath != NULL); - ShellCommandCleanPath(CorrectedPath); + PathCleanUpDirectories(CorrectedPath); Status = ShellOpenFileMetaArg((CHAR16*)CorrectedPath, EFI_FILE_MODE_READ, &ListHead); if (EFI_ERROR(Status)) { diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c index dc9ef64d7f..5afcea2310 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c @@ -148,7 +148,7 @@ GetDestinationLocation( return (SHELL_OUT_OF_RESOURCES); } StrCpy(DestPath, Cwd); - while (ChopLastSlash(DestPath)) ; + while (PathRemoveLastItem(DestPath)) ; *DestPathPointer = DestPath; return (SHELL_SUCCESS); } @@ -268,7 +268,7 @@ ValidateAndMoveFiles( if (ShellStatus != SHELL_SUCCESS) { return (ShellStatus); } - DestPath = CleanPath(DestPath); + DestPath = PathCleanUpDirectories(DestPath); HiiOutput = HiiGetString (gShellLevel2HiiHandle, STRING_TOKEN (STR_MV_OUTPUT), NULL); HiiResultOk = HiiGetString (gShellLevel2HiiHandle, STRING_TOKEN (STR_GEN_RES_OK), NULL); diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.c index fed233c33a..ce3d87ba50 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.c +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.c @@ -196,7 +196,7 @@ GetFullyQualifiedPath( } StrnCatGrow(&PathToReturn, &Size, Path, 0); - CleanPath(PathToReturn); + PathCleanUpDirectories(PathToReturn); while (PathToReturn[StrLen(PathToReturn)-1] == L'*') { PathToReturn[StrLen(PathToReturn)-1] = CHAR_NULL; diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.h b/ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.h index 49e187fc7a..80f6d59ee9 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.h +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.h @@ -46,6 +46,7 @@ #include #include #include +#include extern CONST CHAR16 mFileName[]; extern EFI_HANDLE gShellLevel2HiiHandle; diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.inf b/ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.inf index 8b618b1f5f..52dc28feb2 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.inf +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.inf @@ -64,6 +64,7 @@ PcdLib HiiLib HandleParsingLib + PathLib [Protocols] gEfiUnicodeCollation2ProtocolGuid # ALWAYS_CONSUMED -- cgit v1.2.3