summaryrefslogtreecommitdiff
path: root/src/screen.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/screen.c')
-rw-r--r--src/screen.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/screen.c b/src/screen.c
index 1ce4192..903ce9c 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -28,6 +28,8 @@ screen_draw_pixel(uint32_t x, uint32_t y, uint32_t c)
fb_mem[x + y * (fb->pitch/4)] = c;
}
+static int nested;
+
void
print(char8_t *fmt, ...)
{
@@ -71,6 +73,9 @@ screen_clear(void)
static int
print_fmt(char8_t *fmt, va_list args)
{
+ if(nested)
+ return 0;
+
char8_t digits[] = u8"0123456789ABCDEF";
char8_t *prefixes[17] = {0};
char8_t buf[65];
@@ -112,5 +117,13 @@ print_fmt(char8_t *fmt, va_list args)
UINT(u8"%p", 0, 16, 16, uintptr_t);
+ if(utf8_cmp_n(fmt, u8"%s", 2) == 0){
+ char8_t *str = va_arg(args, char8_t *);
+ nested++;
+ print(str);
+ nested--;
+ return 2;
+ }
+
return 0;
}