Index: kernel/generic/src/printf/vprintf.c
===================================================================
--- kernel/generic/src/printf/vprintf.c	(revision 163e34ce66d8952017bc5a812affc2f72443b230)
+++ kernel/generic/src/printf/vprintf.c	(revision 23d4e6aeb10c07b0fc1436805639ab2e50cf7514)
@@ -37,5 +37,4 @@
 #include <print.h>
 #include <printf_core.h>
-#include <putchar.h>
 #include <str.h>
 #include <synch/spinlock.h>
@@ -44,9 +43,5 @@
 static errno_t vprintf_str_write(const char *str, size_t size, void *data)
 {
-	size_t offset = 0;
-
-	while (offset < size)
-		putuchar(str_decode(str, &offset, size));
-
+	putstr(str, size);
 	return EOK;
 }
@@ -54,19 +49,7 @@
 int puts(const char *str)
 {
-	size_t offset = 0;
-	size_t chars = 0;
-	char32_t uc;
-
-	console_lock();
-
-	while ((uc = str_decode(str, &offset, STR_NO_LIMIT)) != 0) {
-		putuchar(uc);
-		chars++;
-	}
-
-	putuchar('\n');
-
-	console_unlock();
-	return chars;
+	size_t n = str_size(str);
+	putstr(str, n);
+	return n;
 }
 
