Index: uspace/lib/libc/generic/io/vprintf.c
===================================================================
--- uspace/lib/libc/generic/io/vprintf.c	(revision ff9244a50908fdf6a76f151cae83e6d253d15921)
+++ uspace/lib/libc/generic/io/vprintf.c	(revision cee8d3e109ecfcf59fb15c03ff1c4a23c5e3ac81)
@@ -42,8 +42,38 @@
 static atomic_t printf_futex = FUTEX_INITIALIZER;
 
-static int vprintf_write(const char *str, size_t count, void *unused)
+static int vprintf_str_write(const char *str, size_t size, void *data)
 {
-	return write_stdout(str, count);
+	size_t offset = 0;
+	size_t prev;
+	count_t chars = 0;
+	
+	while (offset < size) {
+		prev = offset;
+		str_decode(str, &offset, size);
+		write_stdout(str + prev, offset - prev);
+		chars++;
+	}
+	
+	return chars;
 }
+
+static int vprintf_wstr_write(const wchar_t *str, size_t size, void *data)
+{
+	size_t offset = 0;
+	size_t boff;
+	count_t chars = 0;
+	char buf[4];
+	
+	while (offset < size) {
+		boff = 0;
+		chr_encode(str[chars], buf, &boff, 4);
+		write_stdout(buf, boff);
+		chars++;
+		offset += sizeof(wchar_t);
+	}
+	
+	return chars;
+}
+
 
 /** Print formatted text.
@@ -55,5 +85,6 @@
 {
 	struct printf_spec ps = {
-		(int (*)(void *, size_t, void *)) vprintf_write,
+		vprintf_str_write,
+		vprintf_wstr_write,
 		 NULL
 	};
