/*++\r
\r
-Copyright (c) 2004 - 2007, Intel Corporation \r
-All rights reserved. This program and the accompanying materials \r
+Copyright (c) 2004 - 2012, 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
which accompanies this distribution. The full text of the license may be found at \r
http://opensource.org/licenses/bsd-license.php \r
\r
Returns: \r
\r
- EFI_SUCCESS - success\r
- EFI_OUT_OF_RESOURCES - out of resources\r
+ Length of string printed to the console\r
\r
--*/\r
{\r
//\r
// For now, allocate an arbitrarily long buffer\r
//\r
+ BufferLen = 0;\r
Buffer = EfiLibAllocateZeroPool (0x10000);\r
if (Buffer == NULL) {\r
- return EFI_OUT_OF_RESOURCES;\r
+ return 0;\r
}\r
\r
if (GraphicsOutput != NULL) {\r
EfiLibSafeFreePool (Blt);\r
EfiLibSafeFreePool (FontInfo);\r
#else\r
- gBS->FreePool (LineBuffer);\r
+ EfiLibSafeFreePool (LineBuffer);\r
#endif \r
gBS->FreePool (Buffer);\r
- return Status;\r
+ \r
+ if (EFI_ERROR (Status)) {\r
+ return 0;\r
+ }\r
+\r
+ return BufferLen;\r
}\r
\r
\r
EFI_SIMPLE_TEXT_OUT_PROTOCOL *Sto;\r
EFI_STATUS Status;\r
VA_LIST Args;\r
-\r
- VA_START (Args, Fmt);\r
+ UINTN LengthOfPrinted;\r
\r
Handle = gST->ConsoleOutHandle;\r
\r
+ GraphicsOutput = NULL;\r
+ UgaDraw = NULL;\r
Status = gBS->HandleProtocol (\r
Handle,\r
&gEfiGraphicsOutputProtocolGuid,\r
(VOID **) &GraphicsOutput\r
);\r
\r
- UgaDraw = NULL;\r
- if (EFI_ERROR (Status)) {\r
+ if (EFI_ERROR (Status) || (GraphicsOutput == NULL)) {\r
GraphicsOutput = NULL;\r
\r
Status = gBS->HandleProtocol (\r
(VOID **) &UgaDraw\r
);\r
\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
+ if (EFI_ERROR (Status) || (UgaDraw == NULL)) {\r
+ return 0;\r
}\r
}\r
\r
+ Sto = NULL;\r
Status = gBS->HandleProtocol (\r
Handle,\r
&gEfiSimpleTextOutProtocolGuid,\r
(VOID **) &Sto\r
);\r
\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
+ if (EFI_ERROR (Status) || (Sto == NULL)) {\r
+ return 0;\r
}\r
\r
- return _IPrint (GraphicsOutput, UgaDraw, Sto, X, Y, ForeGround, BackGround, Fmt, Args);\r
+ VA_START (Args, Fmt);\r
+ LengthOfPrinted = _IPrint (GraphicsOutput, UgaDraw, Sto, X, Y, ForeGround, BackGround, Fmt, Args);\r
+ VA_END (Args);\r
+ return LengthOfPrinted;\r
}\r
\r
\r