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
This commit is contained in:
@@ -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);
|
||||
|
@@ -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);
|
||||
|
@@ -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)) {
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
|
@@ -46,6 +46,7 @@
|
||||
#include <Library/HiiLib.h>
|
||||
#include <Library/SortLib.h>
|
||||
#include <Library/FileHandleLib.h>
|
||||
#include <Library/PathLib.h>
|
||||
|
||||
extern CONST CHAR16 mFileName[];
|
||||
extern EFI_HANDLE gShellLevel2HiiHandle;
|
||||
|
@@ -64,6 +64,7 @@
|
||||
PcdLib
|
||||
HiiLib
|
||||
HandleParsingLib
|
||||
PathLib
|
||||
|
||||
[Protocols]
|
||||
gEfiUnicodeCollation2ProtocolGuid # ALWAYS_CONSUMED
|
||||
|
Reference in New Issue
Block a user