WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
**/\r
\r
-#include "ConsoleLogger.h"\r
#include "Shell.h"\r
\r
-STATIC CONST CHAR16 mCrLfString[3] = { CHAR_CARRIAGE_RETURN, CHAR_LINEFEED, CHAR_NULL };\r
-\r
/**\r
Install our intermediate ConOut into the system table to\r
keep a log of all the info that is displayed to the user.\r
CHAR16 *StringSegment;\r
CHAR16 *StringSegmentEnd;\r
CHAR16 StringSegmentEndChar;\r
+ INT32 OrigAttribute;\r
\r
ASSERT(ConsoleInfo != NULL);\r
TempCharHolder = CHAR_NULL;\r
RetVal = EFI_SUCCESS;\r
+ OrigAttribute = ConsoleInfo->OldConOut->Mode->Attribute;\r
\r
//\r
// Disable cursor visibility and move it to the top left corner\r
if (EFI_ERROR (Status)) {\r
RetVal = Status;\r
}\r
+ } else {\r
+ ConsoleInfo->OldConOut->SetAttribute (\r
+ ConsoleInfo->OldConOut,\r
+ OrigAttribute\r
+ );\r
}\r
\r
return (RetVal);\r
; Index < ConsoleInfo->ColsPerScreen\r
; Index++\r
){\r
- *(ConsoleInfo->Attributes + (CopySize/sizeof(ConsoleInfo->Attributes)) + Index) = ConsoleInfo->HistoryMode.Attribute;\r
+ *(ConsoleInfo->Attributes + (CopySize/sizeof(ConsoleInfo->Attributes[0])) + Index) = ConsoleInfo->HistoryMode.Attribute;\r
}\r
\r
//\r
//\r
// check if that is the last column\r
//\r
- if ((INTN)ConsoleInfo->ColsPerScreen == ConsoleInfo->OurConOut.Mode->CursorColumn - 1) {\r
+ if ((INTN)ConsoleInfo->ColsPerScreen == ConsoleInfo->OurConOut.Mode->CursorColumn + 1) {\r
//\r
// output a line similar to the linefeed character.\r
//\r
//\r
// Update LineStart Variable\r
//\r
- LineStart = Walker;\r
+ LineStart = Walker + 1;\r
\r
//\r
// increment row count and zero the column\r
IN CHAR16 *WString\r
)\r
{\r
+ EFI_INPUT_KEY Key;\r
+ UINTN EventIndex;\r
CONSOLE_LOGGER_PRIVATE_DATA *ConsoleInfo;\r
ConsoleInfo = CONSOLE_LOGGER_PRIVATE_DATA_FROM_THIS(This);\r
if (ShellInfoObject.ShellInitSettings.BitUnion.Bits.NoConsoleOut) {\r
return (EFI_UNSUPPORTED);\r
}\r
ASSERT(ShellInfoObject.ConsoleInfo == ConsoleInfo);\r
+ if (ShellInfoObject.HaltOutput) {\r
+ //\r
+ // just get some key\r
+ //\r
+ gBS->WaitForEvent (1, &gST->ConIn->WaitForKey, &EventIndex);\r
+ gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);\r
+ ShellInfoObject.HaltOutput = FALSE;\r
+ }\r
if (!ShellInfoObject.ConsoleInfo->Enabled) {\r
return (EFI_DEVICE_ERROR);\r
} else if (ShellInfoObject.PageBreakEnabled) {\r
// Record console output history\r
//\r
if (!EFI_ERROR (Status)) {\r
- Screen = &ConsoleInfo->Buffer[(ConsoleInfo->ColsPerScreen + 1) * ConsoleInfo->CurrentStartRow];\r
+ Screen = &ConsoleInfo->Buffer[(ConsoleInfo->ColsPerScreen + 2) * ConsoleInfo->CurrentStartRow];\r
Attributes = &ConsoleInfo->Attributes[ConsoleInfo->ColsPerScreen * ConsoleInfo->CurrentStartRow];\r
for ( Row = ConsoleInfo->OriginalStartRow\r
; Row < (ConsoleInfo->RowsPerScreen * ConsoleInfo->ScreenCount)\r
//\r
// Skip the NULL on each column end in text buffer only\r
//\r
- Screen++;\r
+ Screen += 2;\r
}\r
ConsoleInfo->HistoryMode.CursorColumn = 0;\r
ConsoleInfo->HistoryMode.CursorRow = 0;\r