libc/snprintf: add support to print "%" character
Enable snprintf()/vsnprintf() in TF-A to print "%" character as C
standard, which may be used in platform porting to print percentage
information.
Signed-off-by: Heyi Guo <guoheyi@linux.alibaba.com>
Change-Id: I9b296372a1002046eabac1df5e8eb99a27efd4a8
diff --git a/lib/libc/snprintf.c b/lib/libc/snprintf.c
index 6e80d8c..42faa26 100644
--- a/lib/libc/snprintf.c
+++ b/lib/libc/snprintf.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2020, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2017-2021, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -130,6 +130,13 @@
/* Check the format specifier. */
loop:
switch (*fmt) {
+ case '%':
+ if (chars_printed < n) {
+ *s = '%';
+ s++;
+ }
+ chars_printed++;
+ break;
case '0':
case '1':
case '2':