Add 2 functions to UefiLib library class: CatSPrint and CatVSPrint.
Implement these functions in the UefiLib instance. Add 2 functions to PrintLib library class: SPrintLengthAsciiFormat and SPrintLength. Implement these functions in the BasePrintLib instance and the DxePrintLib2Protocol instance. Signed-off-by: jcarsey Reviewed-by: jljusten Reviewed-by: geekboy15a git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12081 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
Mde UEFI library API implementation.
|
||||
Print to StdErr or ConOut defined in EFI_SYSTEM_TABLE
|
||||
|
||||
Copyright (c) 2007 - 2009, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
@@ -706,3 +706,97 @@ AsciiPrintXY (
|
||||
return ReturnNum;
|
||||
}
|
||||
|
||||
/**
|
||||
Appends a formatted Unicode string to a Null-terminated Unicode string
|
||||
|
||||
This function appends a formatted Unicode string to the Null-terminated
|
||||
Unicode string specified by String. String is optional and may be NULL.
|
||||
Storage for the formatted Unicode string returned is allocated using
|
||||
AllocatePool(). The pointer to the appended string is returned. The caller
|
||||
is responsible for freeing the returned string.
|
||||
|
||||
If String is not NULL and not aligned on a 16-bit boundary, then ASSERT().
|
||||
If FormatString is NULL, then ASSERT().
|
||||
If FormatString is not aligned on a 16-bit boundary, then ASSERT().
|
||||
|
||||
@param[in] String A Null-terminated Unicode string.
|
||||
@param[in] FormatString A Null-terminated Unicode format string.
|
||||
@param[in] Marker VA_LIST marker for the variable argument list.
|
||||
|
||||
@retval NULL There was not enough available memory.
|
||||
@return Null-terminated Unicode string is that is the formatted
|
||||
string appended to String.
|
||||
**/
|
||||
CHAR16*
|
||||
EFIAPI
|
||||
CatVSPrint (
|
||||
IN CHAR16 *String, OPTIONAL
|
||||
IN CONST CHAR16 *FormatString,
|
||||
IN VA_LIST Marker
|
||||
)
|
||||
{
|
||||
UINTN CharactersRequired;
|
||||
UINTN SizeRequired;
|
||||
CHAR16 *BufferToReturn;
|
||||
|
||||
CharactersRequired = SPrintLength(FormatString, Marker);
|
||||
|
||||
if (String != NULL) {
|
||||
SizeRequired = StrSize(String) + (CharactersRequired * sizeof(CHAR16));
|
||||
} else {
|
||||
SizeRequired = sizeof(CHAR16) + (CharactersRequired * sizeof(CHAR16));
|
||||
}
|
||||
|
||||
BufferToReturn = AllocateZeroPool(SizeRequired);
|
||||
|
||||
if (BufferToReturn == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (String != NULL) {
|
||||
StrCpy(BufferToReturn, String);
|
||||
}
|
||||
|
||||
UnicodeVSPrint(BufferToReturn + StrLen(BufferToReturn), (CharactersRequired+1) * sizeof(CHAR16), FormatString, Marker);
|
||||
|
||||
ASSERT(StrSize(BufferToReturn)==SizeRequired);
|
||||
|
||||
return (BufferToReturn);
|
||||
}
|
||||
|
||||
/**
|
||||
Appends a formatted Unicode string to a Null-terminated Unicode string
|
||||
|
||||
This function appends a formatted Unicode string to the Null-terminated
|
||||
Unicode string specified by String. String is optional and may be NULL.
|
||||
Storage for the formatted Unicode string returned is allocated using
|
||||
AllocatePool(). The pointer to the appended string is returned. The caller
|
||||
is responsible for freeing the returned string.
|
||||
|
||||
If String is not NULL and not aligned on a 16-bit boundary, then ASSERT().
|
||||
If FormatString is NULL, then ASSERT().
|
||||
If FormatString is not aligned on a 16-bit boundary, then ASSERT().
|
||||
|
||||
@param[in] String A Null-terminated Unicode string.
|
||||
@param[in] FormatString A Null-terminated Unicode format string.
|
||||
@param[in] ... The variable argument list whose contents are
|
||||
accessed based on the format string specified by
|
||||
FormatString.
|
||||
|
||||
@retval NULL There was not enough available memory.
|
||||
@return Null-terminated Unicode string is that is the formatted
|
||||
string appended to String.
|
||||
**/
|
||||
CHAR16 *
|
||||
EFIAPI
|
||||
CatSPrint (
|
||||
IN CHAR16 *String, OPTIONAL
|
||||
IN CONST CHAR16 *FormatString,
|
||||
...
|
||||
)
|
||||
{
|
||||
VA_LIST Marker;
|
||||
VA_START (Marker, FormatString);
|
||||
return (CatVSPrint(String, FormatString, Marker));
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user