mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-19 02:54:24 +00:00
tf_snprintf: Add support for '%s'
Change-Id: Ia3a159444e638f63de7dc5a6a4b76169c757188a Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
This commit is contained in:
parent
781842ea8a
commit
73bc6e77f1
1 changed files with 17 additions and 0 deletions
|
@ -8,6 +8,17 @@
|
|||
#include <platform.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
static void string_print(char **s, size_t n, size_t *chars_printed,
|
||||
const char *str)
|
||||
{
|
||||
while (*str) {
|
||||
if (*chars_printed < n)
|
||||
*(*s)++ = *str;
|
||||
(*chars_printed)++;
|
||||
str++;
|
||||
}
|
||||
}
|
||||
|
||||
static void unsigned_dec_print(char **s, size_t n, size_t *chars_printed,
|
||||
unsigned int unum)
|
||||
{
|
||||
|
@ -32,6 +43,7 @@ static void unsigned_dec_print(char **s, size_t n, size_t *chars_printed,
|
|||
* The following type specifiers are supported:
|
||||
*
|
||||
* %d or %i - signed decimal format
|
||||
* %s - string format
|
||||
* %u - unsigned decimal format
|
||||
*
|
||||
* The function panics on all other formats specifiers.
|
||||
|
@ -45,6 +57,7 @@ int tf_snprintf(char *s, size_t n, const char *fmt, ...)
|
|||
va_list args;
|
||||
int num;
|
||||
unsigned int unum;
|
||||
char *str;
|
||||
size_t chars_printed = 0;
|
||||
|
||||
if (n == 1) {
|
||||
|
@ -79,6 +92,10 @@ int tf_snprintf(char *s, size_t n, const char *fmt, ...)
|
|||
|
||||
unsigned_dec_print(&s, n, &chars_printed, unum);
|
||||
break;
|
||||
case 's':
|
||||
str = va_arg(args, char *);
|
||||
string_print(&s, n, &chars_printed, str);
|
||||
break;
|
||||
case 'u':
|
||||
unum = va_arg(args, unsigned int);
|
||||
unsigned_dec_print(&s, n, &chars_printed, unum);
|
||||
|
|
Loading…
Add table
Reference in a new issue