/** @file\r
Function definitions for shell simple text in and out on top of file handles.\r
\r
+ Copyright (c) 2013 Hewlett-Packard Development Company, L.P.\r
Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SimpleTextOut;\r
SHELL_FILE_HANDLE FileHandle;\r
EFI_HANDLE TheHandle;\r
+ EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *OriginalSimpleTextOut;\r
} SHELL_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;\r
\r
/**\r
OUT UINTN *Rows\r
)\r
{\r
- return (EFI_UNSUPPORTED);\r
+ EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *PassThruProtocol = ((SHELL_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *)This)->OriginalSimpleTextOut;\r
+ \r
+ // Pass the QueryMode call thru to the original SimpleTextOutProtocol\r
+ return (PassThruProtocol->QueryMode(\r
+ PassThruProtocol,\r
+ ModeNumber,\r
+ Columns,\r
+ Rows));\r
}\r
\r
/**\r
Function to create a EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL on top of a \r
SHELL_FILE_HANDLE to support redirecting output from a file.\r
\r
- @param[in] FileHandleToUse The pointer to the SHELL_FILE_HANDLE to use.\r
- @param[in] HandleLocation The pointer of a location to copy handle with protocol to.\r
+ @param[in] FileHandleToUse The pointer to the SHELL_FILE_HANDLE to use.\r
+ @param[in] HandleLocation The pointer of a location to copy handle with protocol to.\r
+ @param[in] OriginalProtocol The pointer to the original output protocol for pass thru of functions.\r
\r
@retval NULL There was insufficient memory available.\r
@return A pointer to the allocated protocol structure;\r
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL*\r
EFIAPI\r
CreateSimpleTextOutOnFile(\r
- IN SHELL_FILE_HANDLE FileHandleToUse,\r
- IN EFI_HANDLE *HandleLocation\r
+ IN SHELL_FILE_HANDLE FileHandleToUse,\r
+ IN EFI_HANDLE *HandleLocation,\r
+ IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *OriginalProtocol\r
)\r
{\r
SHELL_EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ProtocolToReturn;\r
return (NULL);\r
}\r
ProtocolToReturn->FileHandle = FileHandleToUse;\r
+ ProtocolToReturn->OriginalSimpleTextOut = OriginalProtocol;\r
ProtocolToReturn->SimpleTextOut.Reset = FileBasedSimpleTextOutReset;\r
ProtocolToReturn->SimpleTextOut.TestString = FileBasedSimpleTextOutTestString;\r
ProtocolToReturn->SimpleTextOut.QueryMode = FileBasedSimpleTextOutQueryMode;\r
FreePool(ProtocolToReturn);\r
return (NULL);\r
}\r
- ProtocolToReturn->SimpleTextOut.Mode->MaxMode = 0;\r
- ProtocolToReturn->SimpleTextOut.Mode->Mode = 0;\r
- ProtocolToReturn->SimpleTextOut.Mode->Attribute = 0;\r
- ProtocolToReturn->SimpleTextOut.Mode->CursorColumn = 0;\r
- ProtocolToReturn->SimpleTextOut.Mode->CursorRow = 0;\r
- ProtocolToReturn->SimpleTextOut.Mode->CursorVisible = FALSE;\r
+ ProtocolToReturn->SimpleTextOut.Mode->MaxMode = OriginalProtocol->Mode->MaxMode;\r
+ ProtocolToReturn->SimpleTextOut.Mode->Mode = OriginalProtocol->Mode->Mode;\r
+ ProtocolToReturn->SimpleTextOut.Mode->Attribute = OriginalProtocol->Mode->Attribute;\r
+ ProtocolToReturn->SimpleTextOut.Mode->CursorColumn = OriginalProtocol->Mode->CursorColumn;\r
+ ProtocolToReturn->SimpleTextOut.Mode->CursorRow = OriginalProtocol->Mode->CursorRow;\r
+ ProtocolToReturn->SimpleTextOut.Mode->CursorVisible = OriginalProtocol->Mode->CursorVisible;\r
\r
Status = gBS->InstallProtocolInterface(\r
&(ProtocolToReturn->TheHandle), \r
/** @file\r
Function definitions for shell simple text in and out on top of file handles.\r
\r
+ Copyright (c) 2013 Hewlett-Packard Development Company, L.P.\r
Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
Function to create a EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL on top of a \r
SHELL_FILE_HANDLE to support redirecting output from a file.\r
\r
- @param[in] FileHandleToUse The pointer to the SHELL_FILE_HANDLE to use.\r
- @param[in] HandleLocation The pointer of a location to copy handle with protocol to.\r
+ @param[in] FileHandleToUse The pointer to the SHELL_FILE_HANDLE to use.\r
+ @param[in] HandleLocation The pointer of a location to copy handle with protocol to.\r
+ @param[in] OriginalProtocol The pointer to the original output protocol for pass thru of functions.\r
\r
@retval NULL There was insufficient memory available.\r
@return A pointer to the allocated protocol structure;\r
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL*\r
EFIAPI\r
CreateSimpleTextOutOnFile(\r
- IN SHELL_FILE_HANDLE FileHandleToUse,\r
- IN EFI_HANDLE *HandleLocation\r
+ IN SHELL_FILE_HANDLE FileHandleToUse,\r
+ IN EFI_HANDLE *HandleLocation,\r
+ IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *OriginalProtocol\r
);\r
\r
/**\r
Member functions of EFI_SHELL_PARAMETERS_PROTOCOL and functions for creation,\r
manipulation, and initialization of EFI_SHELL_PARAMETERS_PROTOCOL.\r
\r
+ Copyright (c) 2013 Hewlett-Packard Development Company, L.P.\r
Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
}\r
if (!EFI_ERROR(Status)) {\r
ShellParameters->StdErr = TempHandle;\r
- gST->StdErr = CreateSimpleTextOutOnFile(TempHandle, &gST->StandardErrorHandle);\r
+ gST->StdErr = CreateSimpleTextOutOnFile(TempHandle, &gST->StandardErrorHandle, gST->StdErr);\r
}\r
}\r
\r
}\r
if (!EFI_ERROR(Status)) {\r
ShellParameters->StdOut = TempHandle;\r
- gST->ConOut = CreateSimpleTextOutOnFile(TempHandle, &gST->ConsoleOutHandle);\r
+ gST->ConOut = CreateSimpleTextOutOnFile(TempHandle, &gST->ConsoleOutHandle, gST->ConOut);\r
}\r
}\r
}\r
TempHandle = CreateFileInterfaceEnv(StdOutVarName);\r
ASSERT(TempHandle != NULL);\r
ShellParameters->StdOut = TempHandle;\r
- gST->ConOut = CreateSimpleTextOutOnFile(TempHandle, &gST->ConsoleOutHandle);\r
+ gST->ConOut = CreateSimpleTextOutOnFile(TempHandle, &gST->ConsoleOutHandle, gST->ConOut);\r
}\r
\r
//\r
TempHandle = CreateFileInterfaceEnv(StdErrVarName);\r
ASSERT(TempHandle != NULL);\r
ShellParameters->StdErr = TempHandle;\r
- gST->StdErr = CreateSimpleTextOutOnFile(TempHandle, &gST->StandardErrorHandle);\r
+ gST->StdErr = CreateSimpleTextOutOnFile(TempHandle, &gST->StandardErrorHandle, gST->StdErr);\r
}\r
\r
//\r