summaryrefslogtreecommitdiff
path: root/kernel/src/libk/serial_stdio.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src/libk/serial_stdio.c')
-rw-r--r--kernel/src/libk/serial_stdio.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/kernel/src/libk/serial_stdio.c b/kernel/src/libk/serial_stdio.c
index fb61ba1..951a170 100644
--- a/kernel/src/libk/serial_stdio.c
+++ b/kernel/src/libk/serial_stdio.c
@@ -33,12 +33,19 @@ void serial_print_hex(uint64_t num)
void serial_printf(const char *s, ...)
{
- size_t count = 0;
- for(size_t i = 0; i < strlen(s); i++) if(s[i] == '%') count++;
-
va_list list;
va_start(list, s);
+ serial_vprintf(s, list);
+
+ va_end(list);
+}
+
+void serial_vprintf(const char *s, va_list list)
+{
+ size_t count = 0;
+ for(size_t i = 0; i < strlen(s); i++) if(s[i] == '%') count++;
+
for(size_t i = 0; i < strlen(s); i++)
{
if(s[i] == '%')
@@ -50,12 +57,10 @@ void serial_printf(const char *s, ...)
else if(s[i] == 'x') serial_print_hex((uint64_t)va_arg(list, uint64_t));
else
{
- serial_print_string("Wrong format using serial_printf\n");
+ serial_print_string("Wrong format using printf\n");
return;
}
}
else serial_print_char(s[i]);
}
-
- va_end(list);
}