mirror of https://github.com/acidanthera/audk.git
add ASSERT to 2 functions and fix issue with size difference between old and new shell versions.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9537 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
18cefebe12
commit
ecd3d59f33
|
@ -54,7 +54,8 @@ STATIC EFI_SHELL_PARAMETERS_PROTOCOL *mEfiShellParametersProtocol;
|
||||||
STATIC EFI_HANDLE mEfiShellEnvironment2Handle;
|
STATIC EFI_HANDLE mEfiShellEnvironment2Handle;
|
||||||
STATIC FILE_HANDLE_FUNCTION_MAP FileFunctionMap;
|
STATIC FILE_HANDLE_FUNCTION_MAP FileFunctionMap;
|
||||||
STATIC UINTN mTotalParameterCount;
|
STATIC UINTN mTotalParameterCount;
|
||||||
|
STATIC CHAR16 *mPostReplaceFormat;
|
||||||
|
STATIC CHAR16 *mPostReplaceFormat2;
|
||||||
/**
|
/**
|
||||||
Check if a Unicode character is a hexadecimal character.
|
Check if a Unicode character is a hexadecimal character.
|
||||||
|
|
||||||
|
@ -160,6 +161,12 @@ ShellLibConstructorWorker (
|
||||||
) {
|
) {
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
|
||||||
|
ASSERT(PcdGet16 (PcdShellLibMaxPrintBufferSize) < PcdGet32 (PcdMaximumUnicodeStringLength));
|
||||||
|
mPostReplaceFormat = AllocateZeroPool (PcdGet16 (PcdShellLibMaxPrintBufferSize));
|
||||||
|
ASSERT (mPostReplaceFormat != NULL);
|
||||||
|
mPostReplaceFormat2 = AllocateZeroPool (PcdGet16 (PcdShellLibMaxPrintBufferSize));
|
||||||
|
ASSERT (mPostReplaceFormat2 != NULL);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Set the parameter count to an invalid number
|
// Set the parameter count to an invalid number
|
||||||
//
|
//
|
||||||
|
@ -266,6 +273,8 @@ ShellLibConstructor (
|
||||||
mEfiShellParametersProtocol = NULL;
|
mEfiShellParametersProtocol = NULL;
|
||||||
mEfiShellInterface = NULL;
|
mEfiShellInterface = NULL;
|
||||||
mEfiShellEnvironment2Handle = NULL;
|
mEfiShellEnvironment2Handle = NULL;
|
||||||
|
mPostReplaceFormat = NULL;
|
||||||
|
mPostReplaceFormat2 = NULL;
|
||||||
|
|
||||||
//
|
//
|
||||||
// verify that auto initialize is not set false
|
// verify that auto initialize is not set false
|
||||||
|
@ -315,6 +324,16 @@ ShellLibDestructor (
|
||||||
mEfiShellParametersProtocol = NULL;
|
mEfiShellParametersProtocol = NULL;
|
||||||
}
|
}
|
||||||
mEfiShellEnvironment2Handle = NULL;
|
mEfiShellEnvironment2Handle = NULL;
|
||||||
|
|
||||||
|
if (mPostReplaceFormat != NULL) {
|
||||||
|
FreePool(mPostReplaceFormat);
|
||||||
|
}
|
||||||
|
if (mPostReplaceFormat2 != NULL) {
|
||||||
|
FreePool(mPostReplaceFormat2);
|
||||||
|
}
|
||||||
|
mPostReplaceFormat = NULL;
|
||||||
|
mPostReplaceFormat2 = NULL;
|
||||||
|
|
||||||
return (EFI_SUCCESS);
|
return (EFI_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2266,6 +2285,10 @@ InternalPrintTo (
|
||||||
return (mEfiShellParametersProtocol->StdOut->Write(mEfiShellParametersProtocol->StdOut, &Size, (VOID*)String));
|
return (mEfiShellParametersProtocol->StdOut->Write(mEfiShellParametersProtocol->StdOut, &Size, (VOID*)String));
|
||||||
}
|
}
|
||||||
if (mEfiShellInterface != NULL) {
|
if (mEfiShellInterface != NULL) {
|
||||||
|
//
|
||||||
|
// Divide in half for old shell. Must be string length not size.
|
||||||
|
//
|
||||||
|
Size /= 2;
|
||||||
return ( mEfiShellInterface->StdOut->Write(mEfiShellInterface->StdOut, &Size, (VOID*)String));
|
return ( mEfiShellInterface->StdOut->Write(mEfiShellInterface->StdOut, &Size, (VOID*)String));
|
||||||
}
|
}
|
||||||
ASSERT(FALSE);
|
ASSERT(FALSE);
|
||||||
|
@ -2310,42 +2333,30 @@ InternalShellPrintWorker(
|
||||||
VA_LIST Marker
|
VA_LIST Marker
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UINTN BufferSize;
|
|
||||||
CHAR16 *PostReplaceFormat;
|
|
||||||
CHAR16 *PostReplaceFormat2;
|
|
||||||
UINTN Return;
|
UINTN Return;
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
UINTN NormalAttribute;
|
UINTN NormalAttribute;
|
||||||
CHAR16 *ResumeLocation;
|
CHAR16 *ResumeLocation;
|
||||||
CHAR16 *FormatWalker;
|
CHAR16 *FormatWalker;
|
||||||
|
|
||||||
BufferSize = PcdGet16 (PcdShellLibMaxPrintBufferSize);
|
|
||||||
ASSERT(PcdGet16 (PcdShellLibMaxPrintBufferSize) < PcdGet32 (PcdMaximumUnicodeStringLength));
|
|
||||||
PostReplaceFormat = AllocateZeroPool (BufferSize);
|
|
||||||
ASSERT (PostReplaceFormat != NULL);
|
|
||||||
PostReplaceFormat2 = AllocateZeroPool (BufferSize);
|
|
||||||
ASSERT (PostReplaceFormat2 != NULL);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Back and forth each time fixing up 1 of our flags...
|
// Back and forth each time fixing up 1 of our flags...
|
||||||
//
|
//
|
||||||
Status = CopyReplace(Format, PostReplaceFormat, BufferSize, L"%N", L"%%N");
|
Status = CopyReplace(Format, mPostReplaceFormat, PcdGet16 (PcdShellLibMaxPrintBufferSize), L"%N", L"%%N");
|
||||||
ASSERT_EFI_ERROR(Status);
|
ASSERT_EFI_ERROR(Status);
|
||||||
Status = CopyReplace(PostReplaceFormat, PostReplaceFormat2, BufferSize, L"%E", L"%%E");
|
Status = CopyReplace(mPostReplaceFormat, mPostReplaceFormat2, PcdGet16 (PcdShellLibMaxPrintBufferSize), L"%E", L"%%E");
|
||||||
ASSERT_EFI_ERROR(Status);
|
ASSERT_EFI_ERROR(Status);
|
||||||
Status = CopyReplace(PostReplaceFormat2, PostReplaceFormat, BufferSize, L"%H", L"%%H");
|
Status = CopyReplace(mPostReplaceFormat2, mPostReplaceFormat, PcdGet16 (PcdShellLibMaxPrintBufferSize), L"%H", L"%%H");
|
||||||
ASSERT_EFI_ERROR(Status);
|
ASSERT_EFI_ERROR(Status);
|
||||||
Status = CopyReplace(PostReplaceFormat, PostReplaceFormat2, BufferSize, L"%B", L"%%B");
|
Status = CopyReplace(mPostReplaceFormat, mPostReplaceFormat2, PcdGet16 (PcdShellLibMaxPrintBufferSize), L"%B", L"%%B");
|
||||||
ASSERT_EFI_ERROR(Status);
|
ASSERT_EFI_ERROR(Status);
|
||||||
Status = CopyReplace(PostReplaceFormat2, PostReplaceFormat, BufferSize, L"%V", L"%%V");
|
Status = CopyReplace(mPostReplaceFormat2, mPostReplaceFormat, PcdGet16 (PcdShellLibMaxPrintBufferSize), L"%V", L"%%V");
|
||||||
ASSERT_EFI_ERROR(Status);
|
ASSERT_EFI_ERROR(Status);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Use the last buffer from replacing to print from...
|
// Use the last buffer from replacing to print from...
|
||||||
//
|
//
|
||||||
Return = UnicodeVSPrint (PostReplaceFormat2, BufferSize, PostReplaceFormat, Marker);
|
Return = UnicodeVSPrint (mPostReplaceFormat2, PcdGet16 (PcdShellLibMaxPrintBufferSize), mPostReplaceFormat, Marker);
|
||||||
|
|
||||||
FreePool(PostReplaceFormat);
|
|
||||||
|
|
||||||
if (Col != -1 && Row != -1) {
|
if (Col != -1 && Row != -1) {
|
||||||
Status = gST->ConOut->SetCursorPosition(gST->ConOut, Col, Row);
|
Status = gST->ConOut->SetCursorPosition(gST->ConOut, Col, Row);
|
||||||
|
@ -2353,7 +2364,7 @@ InternalShellPrintWorker(
|
||||||
}
|
}
|
||||||
|
|
||||||
NormalAttribute = gST->ConOut->Mode->Attribute;
|
NormalAttribute = gST->ConOut->Mode->Attribute;
|
||||||
FormatWalker = PostReplaceFormat2;
|
FormatWalker = mPostReplaceFormat2;
|
||||||
while (*FormatWalker != CHAR_NULL) {
|
while (*FormatWalker != CHAR_NULL) {
|
||||||
//
|
//
|
||||||
// Find the next attribute change request
|
// Find the next attribute change request
|
||||||
|
@ -2410,8 +2421,6 @@ InternalShellPrintWorker(
|
||||||
FormatWalker = ResumeLocation + 2;
|
FormatWalker = ResumeLocation + 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
FreePool(PostReplaceFormat2);
|
|
||||||
|
|
||||||
return (Return);
|
return (Return);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2532,6 +2541,8 @@ ShellIsDirectory(
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_FILE_HANDLE Handle;
|
EFI_FILE_HANDLE Handle;
|
||||||
|
|
||||||
|
ASSERT(DirName != NULL);
|
||||||
|
|
||||||
Handle = NULL;
|
Handle = NULL;
|
||||||
|
|
||||||
Status = ShellOpenFileByName(DirName, &Handle, EFI_FILE_MODE_READ, 0);
|
Status = ShellOpenFileByName(DirName, &Handle, EFI_FILE_MODE_READ, 0);
|
||||||
|
@ -2565,6 +2576,8 @@ ShellIsFile(
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_FILE_HANDLE Handle;
|
EFI_FILE_HANDLE Handle;
|
||||||
|
|
||||||
|
ASSERT(Name != NULL);
|
||||||
|
|
||||||
Handle = NULL;
|
Handle = NULL;
|
||||||
|
|
||||||
Status = ShellOpenFileByName(Name, &Handle, EFI_FILE_MODE_READ, 0);
|
Status = ShellOpenFileByName(Name, &Handle, EFI_FILE_MODE_READ, 0);
|
||||||
|
|
Loading…
Reference in New Issue