#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)
{
* 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.
va_list args;
int num;
unsigned int unum;
+ char *str;
size_t chars_printed = 0;
if (n == 1) {
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);