Index: uspace/app/kio/kio.c
===================================================================
--- uspace/app/kio/kio.c	(revision d5b37b625566a35b56a2768799f8082882139e67)
+++ uspace/app/kio/kio.c	(revision 39e1b9a104f1ac094dcf8801fd04c9afbbaac36f)
@@ -59,6 +59,6 @@
 typedef struct {
 	link_t link;
-	size_t length;
-	char32_t *data;
+	size_t bytes;
+	char *data;
 } item_t;
 
@@ -68,8 +68,8 @@
 static FIBRIL_MUTEX_INITIALIZE(mtx);
 
-#define READ_BUFFER_SIZE (PAGE_SIZE / sizeof(char32_t))
+#define READ_BUFFER_SIZE PAGE_SIZE
 
 static size_t current_at;
-static char32_t read_buffer[READ_BUFFER_SIZE];
+static char read_buffer[READ_BUFFER_SIZE];
 
 /** Klog producer
@@ -82,22 +82,20 @@
  *
  */
-static void producer(size_t length, char32_t *data)
-{
-	item_t *item = (item_t *) malloc(sizeof(item_t));
+static void producer(size_t bytes, char *data)
+{
+	item_t *item = malloc(sizeof(item_t));
 	if (item == NULL)
 		return;
 
-	size_t sz = sizeof(char32_t) * length;
-	char32_t *buf = (char32_t *) malloc(sz);
-	if (buf == NULL) {
+	item->bytes = bytes;
+	item->data = malloc(bytes);
+	if (!item->data) {
 		free(item);
 		return;
 	}
 
-	memcpy(buf, data, sz);
+	memcpy(item->data, data, bytes);
 
 	link_initialize(&item->link);
-	item->length = length;
-	item->data = buf;
 	prodcons_produce(&pc, &item->link);
 }
@@ -125,11 +123,8 @@
 		item_t *item = list_get_instance(link, item_t, link);
 
-		for (size_t i = 0; i < item->length; i++)
-			putuchar(item->data[i]);
-
-		if (log != NULL) {
-			for (size_t i = 0; i < item->length; i++)
-				fputuc(item->data[i], log);
-
+		fwrite(item->data, 1, item->bytes, stdout);
+
+		if (log) {
+			fwrite(item->data, 1, item->bytes, log);
 			fflush(log);
 			vfs_sync(fileno(log));
Index: uspace/lib/c/generic/io/kio.c
===================================================================
--- uspace/lib/c/generic/io/kio.c	(revision d5b37b625566a35b56a2768799f8082882139e67)
+++ uspace/lib/c/generic/io/kio.c	(revision 39e1b9a104f1ac094dcf8801fd04c9afbbaac36f)
@@ -113,5 +113,5 @@
 }
 
-size_t kio_read(char32_t *buf, size_t n, size_t at)
+size_t kio_read(char *buf, size_t n, size_t at)
 {
 	return __SYSCALL3(SYS_KIO_READ, (sysarg_t) buf, n, at);
Index: uspace/lib/c/include/io/kio.h
===================================================================
--- uspace/lib/c/include/io/kio.h	(revision d5b37b625566a35b56a2768799f8082882139e67)
+++ uspace/lib/c/include/io/kio.h	(revision 39e1b9a104f1ac094dcf8801fd04c9afbbaac36f)
@@ -52,5 +52,5 @@
 extern int kio_vprintf(const char *, va_list);
 
-extern size_t kio_read(char32_t *buf, size_t n, size_t at);
+extern size_t kio_read(char *buf, size_t n, size_t at);
 
 /*
