Update FrameworkUefiLib library instance to implement the missing CatSPrint() and CatVSPrint() API.
Signed-off-by: lgao4 Reviewed-by: rsun3 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13070 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
77a750a550
commit
b0855f925c
|
@ -710,3 +710,104 @@ AsciiPrintXY (
|
||||||
return ReturnNum;
|
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;
|
||||||
|
VA_LIST ExtraMarker;
|
||||||
|
|
||||||
|
VA_COPY (ExtraMarker, Marker);
|
||||||
|
CharactersRequired = SPrintLength(FormatString, ExtraMarker);
|
||||||
|
VA_END (ExtraMarker);
|
||||||
|
|
||||||
|
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;
|
||||||
|
CHAR16 *NewString;
|
||||||
|
|
||||||
|
VA_START (Marker, FormatString);
|
||||||
|
NewString = CatVSPrint(String, FormatString, Marker);
|
||||||
|
VA_END (Marker);
|
||||||
|
return NewString;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue