Index: uspace/lib/bithenge/src/linux/common.h
===================================================================
--- uspace/lib/bithenge/src/linux/common.h	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/bithenge/src/linux/common.h	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -67,5 +67,5 @@
 }
 
-static inline size_t str_length(const char *string)
+static inline size_t str_code_points(const char *string)
 {
 	return strlen(string);
Index: uspace/lib/bithenge/src/source.c
===================================================================
--- uspace/lib/bithenge/src/source.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/bithenge/src/source.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -60,5 +60,5 @@
 static errno_t blob_from_hex(bithenge_node_t **out, const char *hex)
 {
-	size_t size = str_length(hex);
+	size_t size = str_code_points(hex);
 	if (size % 2)
 		return EINVAL;
Index: uspace/lib/bithenge/src/transform.c
===================================================================
--- uspace/lib/bithenge/src/transform.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/bithenge/src/transform.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -286,5 +286,5 @@
 			const char *end = str_chr(format, '%');
 			if (!end)
-				end = format + str_length(format);
+				end = format + str_code_points(format);
 			size_t size = min((size_t)(end - format),
 			    space_left - 1);
Index: uspace/lib/c/generic/arg_parse.c
===================================================================
--- uspace/lib/c/generic/arg_parse.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/arg_parse.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -40,6 +40,6 @@
 		return 0;
 
-	if (str_lcmp(arg, along, str_length(along)) == 0)
-		return str_length(along);
+	if (str_lcmp(arg, along, str_code_points(along)) == 0)
+		return str_code_points(along);
 
 	return -1;
Index: uspace/lib/c/generic/cap.c
===================================================================
--- uspace/lib/c/generic/cap.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/cap.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -285,6 +285,6 @@
 		for (i = 0; i < CU_LIMIT; i++) {
 			if (str_lcasecmp(eptr, cu_str[i],
-			    str_length(cu_str[i])) == 0) {
-				p = eptr + str_size(cu_str[i]);
+			    str_code_points(cu_str[i])) == 0) {
+				p = eptr + str_bytes(cu_str[i]);
 				while (*p == ' ')
 					++p;
Index: uspace/lib/c/generic/clipboard.c
===================================================================
--- uspace/lib/c/generic/clipboard.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/clipboard.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -100,5 +100,5 @@
 errno_t clipboard_put_str(const char *str)
 {
-	size_t size = str_size(str);
+	size_t size = str_bytes(str);
 
 	if (size == 0) {
Index: uspace/lib/c/generic/devman.c
===================================================================
--- uspace/lib/c/generic/devman.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/devman.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -182,5 +182,5 @@
 	ipc_call_t answer;
 	aid_t req = async_send_2(exch, DEVMAN_DRIVER_REGISTER, 0, 0, &answer);
-	errno_t retval = async_data_write_start(exch, name, str_size(name));
+	errno_t retval = async_data_write_start(exch, name, str_bytes(name));
 
 	devman_exchange_end(exch);
@@ -222,5 +222,5 @@
 	aid_t req = async_send_3(exch, DEVMAN_ADD_FUNCTION, (sysarg_t) ftype,
 	    devh, match_count, &answer);
-	errno_t retval = async_data_write_start(exch, name, str_size(name));
+	errno_t retval = async_data_write_start(exch, name, str_bytes(name));
 	if (retval != EOK) {
 		devman_exchange_end(exch);
@@ -234,5 +234,5 @@
 		    match_id->score, &answer2);
 		retval = async_data_write_start(exch, match_id->id,
-		    str_size(match_id->id));
+		    str_bytes(match_id->id));
 		if (retval != EOK) {
 			devman_exchange_end(exch);
@@ -273,5 +273,5 @@
 	    devman_handle, &answer);
 	errno_t retval = async_data_write_start(exch, cat_name,
-	    str_size(cat_name));
+	    str_bytes(cat_name));
 
 	devman_exchange_end(exch);
@@ -375,5 +375,5 @@
 	    &answer);
 	errno_t retval = async_data_write_start(exch, pathname,
-	    str_size(pathname));
+	    str_bytes(pathname));
 
 	devman_exchange_end(exch);
@@ -644,5 +644,5 @@
 	aid_t req = async_send_0(exch, DEVMAN_DRIVER_GET_HANDLE, &answer);
 	errno_t retval = async_data_write_start(exch, drvname,
-	    str_size(drvname));
+	    str_bytes(drvname));
 
 	devman_exchange_end(exch);
Index: uspace/lib/c/generic/dnsr.c
===================================================================
--- uspace/lib/c/generic/dnsr.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/dnsr.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -75,5 +75,5 @@
 	    &answer);
 
-	errno_t rc = async_data_write_start(exch, name, str_size(name));
+	errno_t rc = async_data_write_start(exch, name, str_bytes(name));
 	if (rc != EOK) {
 		async_exchange_end(exch);
Index: uspace/lib/c/generic/getopt.c
===================================================================
--- uspace/lib/c/generic/getopt.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/getopt.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -366,13 +366,13 @@
 			has_equal++;
 		} else
-			current_argv_len = str_size(current_argv);
+			current_argv_len = str_bytes(current_argv);
 
 		for (i = 0; long_options[i].name; i++) {
 			/* find matching long option */
 			if (str_lcmp(current_argv, long_options[i].name,
-			    str_nlength(current_argv, current_argv_len)))
+			    str_ncode_points(current_argv, current_argv_len)))
 				continue;
 
-			if (str_size(long_options[i].name) ==
+			if (str_bytes(long_options[i].name) ==
 			    (unsigned)current_argv_len) {
 				/* exact match */
Index: uspace/lib/c/generic/inetcfg.c
===================================================================
--- uspace/lib/c/generic/inetcfg.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/inetcfg.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -149,5 +149,5 @@
 	}
 
-	rc = async_data_write_start(exch, name, str_size(name));
+	rc = async_data_write_start(exch, name, str_bytes(name));
 
 	async_exchange_end(exch);
@@ -234,5 +234,5 @@
 	ipc_call_t answer;
 	aid_t req = async_send_1(exch, INETCFG_ADDR_GET_ID, link_id, &answer);
-	errno_t retval = async_data_write_start(exch, name, str_size(name));
+	errno_t retval = async_data_write_start(exch, name, str_bytes(name));
 
 	async_exchange_end(exch);
@@ -347,5 +347,5 @@
 	}
 
-	rc = async_data_write_start(exch, name, str_size(name));
+	rc = async_data_write_start(exch, name, str_bytes(name));
 
 	async_exchange_end(exch);
@@ -444,5 +444,5 @@
 	ipc_call_t answer;
 	aid_t req = async_send_0(exch, INETCFG_SROUTE_GET_ID, &answer);
-	errno_t retval = async_data_write_start(exch, name, str_size(name));
+	errno_t retval = async_data_write_start(exch, name, str_bytes(name));
 
 	async_exchange_end(exch);
Index: uspace/lib/c/generic/io/asprintf.c
===================================================================
--- uspace/lib/c/generic/io/asprintf.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/io/asprintf.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -43,13 +43,13 @@
 static int asprintf_str_write(const char *str, size_t count, void *unused)
 {
-	return str_nlength(str, count);
+	return str_ncode_points(str, count);
 }
 
 static int asprintf_wstr_write(const wchar_t *str, size_t count, void *unused)
 {
-	return wstr_nlength(str, count);
+	return wstr_ncode_points(str, count);
 }
 
-int vprintf_length(const char *fmt, va_list args)
+int vprintf_code_points(const char *fmt, va_list args)
 {
 	printf_spec_t ps = {
@@ -62,9 +62,9 @@
 }
 
-int printf_length(const char *fmt, ...)
+int printf_code_points(const char *fmt, ...)
 {
 	va_list args;
 	va_start(args, fmt);
-	int ret = vprintf_length(fmt, args);
+	int ret = vprintf_code_points(fmt, args);
 	va_end(args);
 
Index: uspace/lib/c/generic/io/io.c
===================================================================
--- uspace/lib/c/generic/io/io.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/io/io.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -774,5 +774,5 @@
 int fputs(const char *str, FILE *stream)
 {
-	(void) fwrite(str, str_size(str), 1, stream);
+	(void) fwrite(str, str_bytes(str), 1, stream);
 	if (ferror(stream))
 		return EOF;
Index: uspace/lib/c/generic/io/kio.c
===================================================================
--- uspace/lib/c/generic/io/kio.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/io/kio.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -137,5 +137,5 @@
 	wr = 0;
 	(void) kio_write(str, size, &wr);
-	return str_nlength(str, wr);
+	return str_ncode_points(str, wr);
 }
 
Index: uspace/lib/c/generic/io/log.c
===================================================================
--- uspace/lib/c/generic/io/log.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/io/log.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -89,5 +89,5 @@
 	aid_t reg_msg = async_send_2(exchange, LOGGER_WRITER_MESSAGE,
 	    log, level, NULL);
-	errno_t rc = async_data_write_start(exchange, message, str_size(message));
+	errno_t rc = async_data_write_start(exchange, message, str_bytes(message));
 	errno_t reg_msg_rc;
 	async_wait_for(reg_msg, &reg_msg_rc);
@@ -144,5 +144,5 @@
 	char *end_ptr;
 	int level_int = strtol(name, &end_ptr, 0);
-	if ((end_ptr == name) || (str_length(end_ptr) != 0))
+	if ((end_ptr == name) || (str_code_points(end_ptr) != 0))
 		return EINVAL;
 	if (level_int < 0)
@@ -199,5 +199,5 @@
 	aid_t reg_msg = async_send_1(exchange, LOGGER_WRITER_CREATE_LOG,
 	    parent, &answer);
-	errno_t rc = async_data_write_start(exchange, name, str_size(name));
+	errno_t rc = async_data_write_start(exchange, name, str_bytes(name));
 	errno_t reg_msg_rc;
 	async_wait_for(reg_msg, &reg_msg_rc);
Index: uspace/lib/c/generic/io/logctl.c
===================================================================
--- uspace/lib/c/generic/io/logctl.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/io/logctl.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -110,5 +110,5 @@
 	aid_t reg_msg = async_send_1(exchange, LOGGER_CONTROL_SET_LOG_LEVEL,
 	    new_level, NULL);
-	rc = async_data_write_start(exchange, logname, str_size(logname));
+	rc = async_data_write_start(exchange, logname, str_bytes(logname));
 	errno_t reg_msg_rc;
 	async_wait_for(reg_msg, &reg_msg_rc);
Index: uspace/lib/c/generic/io/printf_core.c
===================================================================
--- uspace/lib/c/generic/io/printf_core.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/io/printf_core.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -204,7 +204,7 @@
 {
 	if (str == NULL)
-		return printf_putnchars(nullstr, str_size(nullstr), ps);
-
-	return ps->str_write((void *) str, str_size(str), ps->data);
+		return printf_putnchars(nullstr, str_bytes(nullstr), ps);
+
+	return ps->str_write((void *) str, str_bytes(str), ps->data);
 }
 
@@ -332,5 +332,5 @@
 		return printf_putstr(nullstr, ps);
 
-	size_t strw = str_length(str);
+	size_t strw = str_code_points(str);
 
 	/* Precision unspecified - print everything. */
@@ -350,5 +350,5 @@
 	/* Part of @a str fitting into the alloted space. */
 	int retval;
-	size_t size = str_lsize(str, precision);
+	size_t size = str_lbytes(str, precision);
 	if ((retval = printf_putnchars(str, size, ps)) < 0)
 		return -counter;
@@ -381,5 +381,5 @@
 		return printf_putstr(nullstr, ps);
 
-	size_t strw = wstr_length(str);
+	size_t strw = wstr_code_points(str);
 
 	/* Precision not specified - print everything. */
@@ -399,5 +399,5 @@
 	/* Part of @a wstr fitting into the alloted space. */
 	int retval;
-	size_t size = wstr_lsize(str, precision);
+	size_t size = wstr_lbytes(str, precision);
 	if ((retval = printf_wputnchars(str, size, ps)) < 0)
 		return -counter;
Index: uspace/lib/c/generic/io/vprintf.c
===================================================================
--- uspace/lib/c/generic/io/vprintf.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/io/vprintf.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -45,5 +45,5 @@
 {
 	size_t wr = fwrite(str, 1, size, (FILE *) stream);
-	return str_nlength(str, wr);
+	return str_ncode_points(str, wr);
 }
 
Index: uspace/lib/c/generic/loader.c
===================================================================
--- uspace/lib/c/generic/loader.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/loader.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -57,5 +57,5 @@
 {
 	return (errno_t) __SYSCALL2(SYS_PROGRAM_SPAWN_LOADER,
-	    (sysarg_t) name, str_size(name));
+	    (sysarg_t) name, str_bytes(name));
 }
 
@@ -125,5 +125,5 @@
 		str_cpy(cwd, MAX_PATH_LEN + 1, "/");
 
-	size_t len = str_length(cwd);
+	size_t len = str_code_points(cwd);
 
 	async_exch_t *exch = async_exchange_begin(ldr->sess);
@@ -161,5 +161,5 @@
 	aid_t req = async_send_0(exch, LOADER_SET_PROGRAM, &answer);
 
-	errno_t rc = async_data_write_start(exch, name, str_size(name) + 1);
+	errno_t rc = async_data_write_start(exch, name, str_bytes(name) + 1);
 	if (rc == EOK) {
 		async_exch_t *vfs_exch = vfs_exchange_begin();
@@ -226,5 +226,5 @@
 	size_t buffer_size = 0;
 	while (*ap != NULL) {
-		buffer_size += str_size(*ap) + 1;
+		buffer_size += str_bytes(*ap) + 1;
 		ap++;
 	}
@@ -240,5 +240,5 @@
 	while (*ap != NULL) {
 		str_cpy(dp, buffer_size - (dp - arg_buf), *ap);
-		dp += str_size(*ap) + 1;
+		dp += str_bytes(*ap) + 1;
 		ap++;
 	}
@@ -280,5 +280,5 @@
 	aid_t req = async_send_0(exch, LOADER_ADD_INBOX, NULL);
 
-	errno_t rc = async_data_write_start(exch, name, str_size(name) + 1);
+	errno_t rc = async_data_write_start(exch, name, str_bytes(name) + 1);
 	if (rc == EOK) {
 		rc = vfs_pass_handle(vfs_exch, file, exch);
Index: uspace/lib/c/generic/loc.c
===================================================================
--- uspace/lib/c/generic/loc.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/loc.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -246,5 +246,5 @@
 	ipc_call_t answer;
 	aid_t req = async_send_2(exch, LOC_SERVER_REGISTER, 0, 0, &answer);
-	errno_t retval = async_data_write_start(exch, name, str_size(name));
+	errno_t retval = async_data_write_start(exch, name, str_bytes(name));
 
 	if (retval != EOK) {
@@ -279,5 +279,5 @@
 	ipc_call_t answer;
 	aid_t req = async_send_0(exch, LOC_SERVICE_REGISTER, &answer);
-	errno_t retval = async_data_write_start(exch, fqsn, str_size(fqsn));
+	errno_t retval = async_data_write_start(exch, fqsn, str_bytes(fqsn));
 
 	if (retval != EOK) {
@@ -340,5 +340,5 @@
 	aid_t req = async_send_2(exch, LOC_SERVICE_GET_ID, flags, 0,
 	    &answer);
-	errno_t retval = async_data_write_start(exch, fqdn, str_size(fqdn));
+	errno_t retval = async_data_write_start(exch, fqdn, str_bytes(fqdn));
 
 	loc_exchange_end(exch);
@@ -473,5 +473,5 @@
 	aid_t req = async_send_2(exch, LOC_NAMESPACE_GET_ID, flags, 0,
 	    &answer);
-	errno_t retval = async_data_write_start(exch, name, str_size(name));
+	errno_t retval = async_data_write_start(exch, name, str_bytes(name));
 
 	loc_exchange_end(exch);
@@ -522,5 +522,5 @@
 	aid_t req = async_send_0(exch, LOC_CATEGORY_GET_ID,
 	    &answer);
-	errno_t retval = async_data_write_start(exch, name, str_size(name));
+	errno_t retval = async_data_write_start(exch, name, str_bytes(name));
 
 	loc_exchange_end(exch);
Index: uspace/lib/c/generic/rtld/module.c
===================================================================
--- uspace/lib/c/generic/rtld/module.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/rtld/module.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -196,5 +196,5 @@
 		m->local = true;
 
-	if (str_size(name) > NAME_BUF_SIZE - 2) {
+	if (str_bytes(name) > NAME_BUF_SIZE - 2) {
 		printf("soname too long. increase NAME_BUF_SIZE\n");
 		exit(1);
Index: uspace/lib/c/generic/str.c
===================================================================
--- uspace/lib/c/generic/str.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/str.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -332,5 +332,5 @@
  *
  */
-size_t str_size(const char *str)
+size_t str_bytes(const char *str)
 {
 	size_t size = 0;
@@ -352,7 +352,7 @@
  *
  */
-size_t wstr_size(const wchar_t *str)
-{
-	return (wstr_length(str) * sizeof(wchar_t));
+size_t wstr_bytes(const wchar_t *str)
+{
+	return (wstr_code_points(str) * sizeof(wchar_t));
 }
 
@@ -370,5 +370,5 @@
  *
  */
-size_t str_lsize(const char *str, size_t max_len)
+size_t str_lbytes(const char *str, size_t max_len)
 {
 	size_t len = 0;
@@ -396,5 +396,5 @@
  *
  */
-size_t str_nsize(const char *str, size_t max_size)
+size_t str_nbytes(const char *str, size_t max_size)
 {
 	size_t size = 0;
@@ -417,7 +417,7 @@
  *
  */
-size_t wstr_nsize(const wchar_t *str, size_t max_size)
-{
-	return (wstr_nlength(str, max_size) * sizeof(wchar_t));
+size_t wstr_nbytes(const wchar_t *str, size_t max_size)
+{
+	return (wstr_ncode_points(str, max_size) * sizeof(wchar_t));
 }
 
@@ -435,7 +435,7 @@
  *
  */
-size_t wstr_lsize(const wchar_t *str, size_t max_len)
-{
-	return (wstr_nlength(str, max_len * sizeof(wchar_t)) * sizeof(wchar_t));
+size_t wstr_lbytes(const wchar_t *str, size_t max_len)
+{
+	return (wstr_ncode_points(str, max_len * sizeof(wchar_t)) * sizeof(wchar_t));
 }
 
@@ -447,5 +447,5 @@
  *
  */
-size_t str_length(const char *str)
+size_t str_code_points(const char *str)
 {
 	size_t len = 0;
@@ -465,5 +465,5 @@
  *
  */
-size_t wstr_length(const wchar_t *wstr)
+size_t wstr_code_points(const wchar_t *wstr)
 {
 	size_t len = 0;
@@ -483,5 +483,5 @@
  *
  */
-size_t str_nlength(const char *str, size_t size)
+size_t str_ncode_points(const char *str, size_t size)
 {
 	size_t len = 0;
@@ -502,5 +502,5 @@
  *
  */
-size_t wstr_nlength(const wchar_t *str, size_t size)
+size_t wstr_ncode_points(const wchar_t *str, size_t size)
 {
 	size_t len = 0;
@@ -616,5 +616,5 @@
  * Do a char-by-char comparison of two NULL-terminated strings.
  * The strings are considered equal iff
- * min(str_length(s1), max_len) == min(str_length(s2), max_len)
+ * min(str_code_points(s1), max_len) == min(str_code_points(s2), max_len)
  * and both strings consist of the same sequence of characters,
  * up to max_len characters.
@@ -716,5 +716,5 @@
  * Do a char-by-char comparison of two NULL-terminated strings.
  * The strings are considered equal iff
- * min(str_length(s1), max_len) == min(str_length(s2), max_len)
+ * min(str_code_points(s1), max_len) == min(str_code_points(s2), max_len)
  * and both strings consist of the same sequence of characters,
  * up to max_len characters.
@@ -879,11 +879,11 @@
 void str_append(char *dest, size_t size, const char *src)
 {
-	size_t dstr_size;
-
-	dstr_size = str_size(dest);
-	if (dstr_size >= size)
+	size_t dstr_bytes;
+
+	dstr_bytes = str_bytes(dest);
+	if (dstr_bytes >= size)
 		return;
 
-	str_cpy(dest + dstr_size, size - dstr_size, src);
+	str_cpy(dest + dstr_bytes, size - dstr_bytes, src);
 }
 
@@ -1178,5 +1178,5 @@
 wchar_t *str_to_awstr(const char *str)
 {
-	size_t len = str_length(str);
+	size_t len = str_code_points(str);
 
 	wchar_t *wstr = calloc(len + 1, sizeof(wchar_t));
@@ -1221,9 +1221,9 @@
 	size_t off = 0;
 
-	if (str_lcmp(hs, n, str_length(n)) == 0)
+	if (str_lcmp(hs, n, str_code_points(n)) == 0)
 		return (char *)hs;
 
 	while (str_decode(hs, &off, STR_NO_LIMIT) != 0) {
-		if (str_lcmp(hs + off, n, str_length(n)) == 0)
+		if (str_lcmp(hs + off, n, str_code_points(n)) == 0)
 			return (char *)(hs + off);
 	}
@@ -1270,5 +1270,5 @@
 	size_t off = 0;
 	size_t pos = 0;
-	size_t str_sz = str_size(str);
+	size_t str_sz = str_bytes(str);
 
 	while ((acc = str_decode(str, &off, STR_NO_LIMIT)) != 0) {
@@ -1325,5 +1325,5 @@
 bool wstr_linsert(wchar_t *str, wchar_t ch, size_t pos, size_t max_pos)
 {
-	size_t len = wstr_length(str);
+	size_t len = wstr_code_points(str);
 
 	if ((pos > len) || (pos + 1 > max_pos))
@@ -1353,5 +1353,5 @@
 bool wstr_remove(wchar_t *str, size_t pos)
 {
-	size_t len = wstr_length(str);
+	size_t len = wstr_code_points(str);
 
 	if (pos >= len)
@@ -1383,5 +1383,5 @@
 char *str_dup(const char *src)
 {
-	size_t size = str_size(src) + 1;
+	size_t size = str_bytes(src) + 1;
 	char *dest = malloc(size);
 	if (!dest)
@@ -1414,5 +1414,5 @@
 char *str_ndup(const char *src, size_t n)
 {
-	size_t size = str_size(src);
+	size_t size = str_bytes(src);
 	if (size > n)
 		size = n;
@@ -1445,5 +1445,5 @@
 		return NULL;
 
-	size_t len = str_size(s);
+	size_t len = str_bytes(s);
 	size_t cur;
 	size_t tmp;
Index: uspace/lib/c/generic/sysinfo.c
===================================================================
--- uspace/lib/c/generic/sysinfo.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/sysinfo.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -52,5 +52,5 @@
 {
 	return (errno_t) __SYSCALL3(SYS_SYSINFO_GET_KEYS_SIZE, (sysarg_t) path,
-	    (sysarg_t) str_size(path), (sysarg_t) size);
+	    (sysarg_t) str_bytes(path), (sysarg_t) size);
 }
 
@@ -93,5 +93,5 @@
 	size_t sz;
 	ret = (errno_t) __SYSCALL5(SYS_SYSINFO_GET_KEYS, (sysarg_t) path,
-	    (sysarg_t) str_size(path), (sysarg_t) data, (sysarg_t) *size,
+	    (sysarg_t) str_bytes(path), (sysarg_t) data, (sysarg_t) *size,
 	    (sysarg_t) &sz);
 	if (ret == EOK) {
@@ -115,5 +115,5 @@
 {
 	return (sysinfo_item_val_type_t) __SYSCALL2(SYS_SYSINFO_GET_VAL_TYPE,
-	    (sysarg_t) path, (sysarg_t) str_size(path));
+	    (sysarg_t) path, (sysarg_t) str_bytes(path));
 }
 
@@ -130,5 +130,5 @@
 {
 	return (errno_t) __SYSCALL3(SYS_SYSINFO_GET_VALUE, (sysarg_t) path,
-	    (sysarg_t) str_size(path), (sysarg_t) value);
+	    (sysarg_t) str_bytes(path), (sysarg_t) value);
 }
 
@@ -145,5 +145,5 @@
 {
 	return (errno_t) __SYSCALL3(SYS_SYSINFO_GET_DATA_SIZE, (sysarg_t) path,
-	    (sysarg_t) str_size(path), (sysarg_t) size);
+	    (sysarg_t) str_bytes(path), (sysarg_t) size);
 }
 
@@ -187,5 +187,5 @@
 	size_t sz;
 	ret = (errno_t) __SYSCALL5(SYS_SYSINFO_GET_DATA, (sysarg_t) path,
-	    (sysarg_t) str_size(path), (sysarg_t) data, (sysarg_t) *size,
+	    (sysarg_t) str_bytes(path), (sysarg_t) data, (sysarg_t) *size,
 	    (sysarg_t) &sz);
 	if (ret == EOK) {
@@ -223,5 +223,5 @@
 	while (pos < total_size) {
 		/* Process each property with sanity checks */
-		size_t cur_size = str_nsize(data + pos, total_size - pos);
+		size_t cur_size = str_nbytes(data + pos, total_size - pos);
 		if (((char *) data)[pos + cur_size] != 0)
 			break;
Index: uspace/lib/c/generic/task.c
===================================================================
--- uspace/lib/c/generic/task.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/task.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -75,5 +75,5 @@
 	assert(name);
 
-	return (errno_t) __SYSCALL2(SYS_TASK_SET_NAME, (sysarg_t) name, str_size(name));
+	return (errno_t) __SYSCALL2(SYS_TASK_SET_NAME, (sysarg_t) name, str_bytes(name));
 }
 
Index: uspace/lib/c/generic/thread/thread.c
===================================================================
--- uspace/lib/c/generic/thread/thread.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/thread/thread.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -122,5 +122,5 @@
 
 	errno_t rc = (errno_t) __SYSCALL4(SYS_THREAD_CREATE, (sysarg_t) uarg,
-	    (sysarg_t) name, (sysarg_t) str_size(name), (sysarg_t) tid);
+	    (sysarg_t) name, (sysarg_t) str_bytes(name), (sysarg_t) tid);
 
 	if (rc != EOK) {
Index: uspace/lib/c/generic/tmpfile.c
===================================================================
--- uspace/lib/c/generic/tmpfile.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/tmpfile.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -62,5 +62,5 @@
 	errno_t rc;
 
-	tsize = str_size(templ);
+	tsize = str_bytes(templ);
 	if (tsize < 6)
 		return -1;
Index: uspace/lib/c/generic/vfs/vfs.c
===================================================================
--- uspace/lib/c/generic/vfs/vfs.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/vfs/vfs.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -181,5 +181,5 @@
 
 	fibril_mutex_lock(&cwd_mutex);
-	size_t size = str_size(path);
+	size_t size = str_bytes(path);
 	if (*path != '/') {
 		if (cwd_path == NULL) {
@@ -382,5 +382,5 @@
 
 	rc = async_data_write_start(exch, (void *) fs_name,
-	    str_size(fs_name));
+	    str_bytes(fs_name));
 
 	async_wait_for(req, &rc);
@@ -630,8 +630,8 @@
 	    &answer);
 
-	rc1 = async_data_write_start(exch, (void *) opts, str_size(opts));
+	rc1 = async_data_write_start(exch, (void *) opts, str_bytes(opts));
 	if (rc1 == EOK) {
 		rc1 = async_data_write_start(exch, (void *) fs_name,
-		    str_size(fs_name));
+		    str_bytes(fs_name));
 	}
 
@@ -1180,5 +1180,5 @@
 
 	req = async_send_2(exch, VFS_IN_UNLINK, parent, expect, NULL);
-	rc = async_data_write_start(exch, child, str_size(child));
+	rc = async_data_write_start(exch, child, str_bytes(child));
 
 	vfs_exchange_end(exch);
@@ -1271,5 +1271,5 @@
 	ipc_call_t answer;
 	aid_t req = async_send_2(exch, VFS_IN_WALK, parent, flags, &answer);
-	errno_t rc = async_data_write_start(exch, path, str_size(path));
+	errno_t rc = async_data_write_start(exch, path, str_bytes(path));
 	vfs_exchange_end(exch);
 
Index: uspace/lib/c/generic/vol.c
===================================================================
--- uspace/lib/c/generic/vol.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/generic/vol.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -328,5 +328,5 @@
 	aid_t req = async_send_0(exch, VOL_PART_INSERT_BY_PATH, &answer);
 
-	retval = async_data_write_start(exch, path, str_size(path));
+	retval = async_data_write_start(exch, path, str_bytes(path));
 	if (retval != EOK) {
 		async_exchange_end(exch);
@@ -395,5 +395,5 @@
 	aid_t req = async_send_2(exch, VOL_PART_MKFS, sid, fstype, &answer);
 
-	retval = async_data_write_start(exch, label, str_size(label));
+	retval = async_data_write_start(exch, label, str_bytes(label));
 	if (retval != EOK) {
 		async_exchange_end(exch);
@@ -402,5 +402,5 @@
 	}
 
-	retval = async_data_write_start(exch, mountp, str_size(mountp));
+	retval = async_data_write_start(exch, mountp, str_bytes(mountp));
 	if (retval != EOK) {
 		async_exchange_end(exch);
@@ -437,5 +437,5 @@
 	    &answer);
 
-	retval = async_data_write_start(exch, mountp, str_size(mountp));
+	retval = async_data_write_start(exch, mountp, str_bytes(mountp));
 	if (retval != EOK) {
 		async_exchange_end(exch);
Index: uspace/lib/c/include/io/klog.h
===================================================================
--- uspace/lib/c/include/io/klog.h	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/include/io/klog.h	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -51,5 +51,5 @@
 	errno_t _rc = ENOMEM; \
 	if (asprintf(&_s, fmt, ##__VA_ARGS__) >= 0) { \
-		_rc = klog_write((lvl), _s, str_size(_s)); \
+		_rc = klog_write((lvl), _s, str_bytes(_s)); \
 		free(_s); \
 	}; \
Index: uspace/lib/c/include/stdio.h
===================================================================
--- uspace/lib/c/include/stdio.h	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/include/stdio.h	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -204,6 +204,6 @@
 };
 
-extern int vprintf_length(const char *, va_list);
-extern int printf_length(const char *, ...)
+extern int vprintf_code_points(const char *, va_list);
+extern int printf_code_points(const char *, ...)
     _HELENOS_PRINTF_ATTRIBUTE(1, 2);
 extern FILE *fdopen(int, const char *);
Index: uspace/lib/c/include/str.h
===================================================================
--- uspace/lib/c/include/str.h	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/c/include/str.h	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -68,18 +68,18 @@
 extern errno_t chr_encode(wchar_t ch, char *str, size_t *offset, size_t sz);
 
-extern size_t str_size(const char *str);
-extern size_t wstr_size(const wchar_t *str);
+extern size_t str_bytes(const char *str);
+extern size_t wstr_bytes(const wchar_t *str);
 
-extern size_t str_nsize(const char *str, size_t max_size);
-extern size_t wstr_nsize(const wchar_t *str, size_t max_size);
+extern size_t str_nbytes(const char *str, size_t max_size);
+extern size_t wstr_nbytes(const wchar_t *str, size_t max_size);
 
-extern size_t str_lsize(const char *str, size_t max_len);
-extern size_t wstr_lsize(const wchar_t *str, size_t max_len);
+extern size_t str_lbytes(const char *str, size_t max_len);
+extern size_t wstr_lbytes(const wchar_t *str, size_t max_len);
 
-extern size_t str_length(const char *str);
-extern size_t wstr_length(const wchar_t *wstr);
+extern size_t str_code_points(const char *str);
+extern size_t wstr_code_points(const wchar_t *wstr);
 
-extern size_t str_nlength(const char *str, size_t size);
-extern size_t wstr_nlength(const wchar_t *str, size_t size);
+extern size_t str_ncode_points(const char *str, size_t size);
+extern size_t wstr_ncode_points(const wchar_t *str, size_t size);
 
 extern size_t chr_width(wchar_t ch);
Index: uspace/lib/clui/tinput.c
===================================================================
--- uspace/lib/clui/tinput.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/clui/tinput.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -203,5 +203,5 @@
 
 	ti->prompt_coord = row0 * ti->con_cols + col0;
-	ti->text_coord = ti->prompt_coord + str_length(ti->prompt);
+	ti->text_coord = ti->prompt_coord + str_code_points(ti->prompt);
 
 	tinput_display_prompt(ti);
@@ -243,5 +243,5 @@
 static void tinput_insert_string(tinput_t *ti, const char *str)
 {
-	size_t ilen = min(str_length(str), INPUT_MAX_SIZE - ti->nc);
+	size_t ilen = min(str_code_points(str), INPUT_MAX_SIZE - ti->nc);
 	if (ilen == 0)
 		return;
@@ -467,5 +467,5 @@
 {
 	str_to_wstr(ti->buffer, INPUT_MAX_SIZE, str);
-	ti->nc = wstr_length(ti->buffer);
+	ti->nc = wstr_code_points(ti->buffer);
 	ti->pos = ti->nc;
 	ti->sel_start = ti->pos;
@@ -579,5 +579,5 @@
 	ti->hpos += offs;
 
-	int pad = (int) ti->nc - str_length(ti->history[ti->hpos]);
+	int pad = (int) ti->nc - str_code_points(ti->history[ti->hpos]);
 	if (pad < 0)
 		pad = 0;
@@ -727,10 +727,10 @@
 		size_t cplen;
 
-		cplen = str_length(compl[0]);
+		cplen = str_code_points(compl[0]);
 		for (i = 1; i < cnum; i++)
 			cplen = min(cplen, common_pref_len(compl[0], compl[i]));
 
 		/* Compute how many bytes we should skip. */
-		size_t istart = str_lsize(compl[0], ti->pos - cstart);
+		size_t istart = str_lbytes(compl[0], ti->pos - cstart);
 
 		if (cplen > istart) {
@@ -739,5 +739,5 @@
 			/* Copy remainder of common prefix. */
 			char *cpref = str_ndup(compl[0] + istart,
-			    str_lsize(compl[0], cplen - istart));
+			    str_lbytes(compl[0], cplen - istart));
 
 			/* Insert it. */
@@ -759,5 +759,5 @@
 
 		/* Compute how many bytes of completion string we should skip. */
-		size_t istart = str_lsize(compl[0], ti->pos - cstart);
+		size_t istart = str_lbytes(compl[0], ti->pos - cstart);
 
 		/* Insert remainder of completion string at current position. */
Index: uspace/lib/cpp/include/__bits/string/string.hpp
===================================================================
--- uspace/lib/cpp/include/__bits/string/string.hpp	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/cpp/include/__bits/string/string.hpp	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -87,5 +87,5 @@
         static size_t length(const char_type* s)
         {
-            return hel::str_size(s);
+            return hel::str_bytes(s);
         }
 
@@ -373,5 +373,5 @@
         static size_t length(const char_type* s)
         {
-            return hel::wstr_size(s);
+            return hel::wstr_bytes(s);
         }
 
Index: uspace/lib/drv/generic/logbuf.c
===================================================================
--- uspace/lib/drv/generic/logbuf.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/drv/generic/logbuf.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -105,6 +105,6 @@
 
 	size_t dump_itself = item_size * 2 * items;
-	size_t group_spaces = str_size(SPACE_GROUP) * group_space_count;
-	size_t normal_spaces = str_size(SPACE_NORMAL) * normal_space_count;
+	size_t group_spaces = str_bytes(SPACE_GROUP) * group_space_count;
+	size_t normal_spaces = str_bytes(SPACE_NORMAL) * normal_space_count;
 
 	return dump_itself + group_spaces + normal_spaces;
@@ -193,5 +193,5 @@
 
 	if (print_remainder && (index < items)) {
-		size_t s = str_size(dump);
+		size_t s = str_bytes(dump);
 		snprintf(dump + s, dump_size - s, REMAINDER_STR_FMT,
 		    items - index);
Index: uspace/lib/drv/generic/remote_ahci.c
===================================================================
--- uspace/lib/drv/generic/remote_ahci.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/drv/generic/remote_ahci.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -70,5 +70,5 @@
 		return NULL;
 
-	size_t devn_size = str_size(devn);
+	size_t devn_size = str_bytes(devn);
 
 	if ((devn_size > 5) && (str_lcmp(devn, "ahci_", 5) == 0)) {
Index: uspace/lib/drv/generic/remote_audio_mixer.c
===================================================================
--- uspace/lib/drv/generic/remote_audio_mixer.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/drv/generic/remote_audio_mixer.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -234,5 +234,5 @@
 	unsigned items = 0;
 	const errno_t ret = mixer_iface->get_info(fun, &name, &items);
-	const size_t name_size = name ? str_size(name) + 1 : 0;
+	const size_t name_size = name ? str_bytes(name) + 1 : 0;
 	async_answer_2(icall, ret, name_size, items);
 
@@ -269,5 +269,5 @@
 	unsigned values = 0;
 	const errno_t ret = mixer_iface->get_item_info(fun, item, &name, &values);
-	const size_t name_size = name ? str_size(name) + 1 : 0;
+	const size_t name_size = name ? str_bytes(name) + 1 : 0;
 	async_answer_2(icall, ret, name_size, values);
 
Index: uspace/lib/drv/generic/remote_audio_pcm.c
===================================================================
--- uspace/lib/drv/generic/remote_audio_pcm.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/drv/generic/remote_audio_pcm.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -646,5 +646,5 @@
 	const char *name = NULL;
 	const errno_t ret = pcm_iface->get_info_str(fun, &name);
-	const size_t name_size = name ? str_size(name) + 1 : 0;
+	const size_t name_size = name ? str_bytes(name) + 1 : 0;
 	async_answer_1(call, ret, name_size);
 
Index: uspace/lib/drv/generic/remote_ieee80211.c
===================================================================
--- uspace/lib/drv/generic/remote_ieee80211.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/drv/generic/remote_ieee80211.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -138,5 +138,5 @@
 
 	errno_t rc = async_data_write_start(exch, ssid_start,
-	    str_size(ssid_start) + 1);
+	    str_bytes(ssid_start) + 1);
 	if (rc != EOK) {
 		async_exchange_end(exch);
@@ -153,5 +153,5 @@
 		password = (char *) "";
 
-	rc = async_data_write_start(exch, password, str_size(password) + 1);
+	rc = async_data_write_start(exch, password, str_bytes(password) + 1);
 	if (rc != EOK) {
 		async_exchange_end(exch);
Index: uspace/lib/ext4/src/directory.c
===================================================================
--- uspace/lib/ext4/src/directory.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/ext4/src/directory.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -417,5 +417,5 @@
 	uint32_t total_blocks = inode_size / block_size;
 
-	uint32_t name_len = str_size(name);
+	uint32_t name_len = str_bytes(name);
 
 	/* Find block, where is space for new entry and try to add */
@@ -485,5 +485,5 @@
     ext4_inode_ref_t *parent, const char *name)
 {
-	uint32_t name_len = str_size(name);
+	uint32_t name_len = str_bytes(name);
 
 	ext4_superblock_t *sb = parent->fs->superblock;
Index: uspace/lib/ext4/src/directory_index.c
===================================================================
--- uspace/lib/ext4/src/directory_index.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/ext4/src/directory_index.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -1066,5 +1066,5 @@
 
 	/* Initialize hinfo structure (mainly compute hash) */
-	uint32_t name_len = str_size(name);
+	uint32_t name_len = str_bytes(name);
 	ext4_hash_info_t hinfo;
 	rc = ext4_directory_hinfo_init(&hinfo, root_block, fs->superblock,
Index: uspace/lib/ext4/src/ops.c
===================================================================
--- uspace/lib/ext4/src/ops.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/ext4/src/ops.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -539,5 +539,5 @@
 {
 	/* Check maximum name length */
-	if (str_size(name) > EXT4_DIRECTORY_FILENAME_LEN)
+	if (str_bytes(name) > EXT4_DIRECTORY_FILENAME_LEN)
 		return ENAMETOOLONG;
 
Index: uspace/lib/fmtutil/fmtutil.c
===================================================================
--- uspace/lib/fmtutil/fmtutil.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/fmtutil/fmtutil.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -91,5 +91,5 @@
 {
 	size_t i;
-	size_t len = wstr_length(wstr);
+	size_t len = wstr_code_points(wstr);
 	if (mode == ALIGN_LEFT || (mode == ALIGN_JUSTIFY && last)) {
 		for (i = 0; i < width; i++) {
Index: uspace/lib/gui/terminal.c
===================================================================
--- uspace/lib/gui/terminal.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/gui/terminal.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -425,5 +425,5 @@
 
 				wstr_to_str(term->char_remains, UTF8_CHAR_BUFFER_SIZE, tmp);
-				term->char_remains_len = str_size(term->char_remains);
+				term->char_remains_len = str_bytes(term->char_remains);
 			}
 
Index: uspace/lib/hound/src/protocol.c
===================================================================
--- uspace/lib/hound/src/protocol.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/hound/src/protocol.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -131,5 +131,5 @@
 
 	if (ret == EOK)
-		ret = async_data_write_start(exch, name, str_size(name));
+		ret = async_data_write_start(exch, name, str_bytes(name));
 	else
 		async_forget(mid);
@@ -194,5 +194,5 @@
 	if (mid && connection)
 		ret = async_data_write_start(exch, connection,
-		    str_size(connection));
+		    str_bytes(connection));
 
 	if (ret == EOK)
@@ -261,7 +261,7 @@
 	errno_t ret = id ? EOK : EPARTY;
 	if (ret == EOK)
-		ret = async_data_write_start(exch, source, str_size(source));
+		ret = async_data_write_start(exch, source, str_bytes(source));
 	if (ret == EOK)
-		ret = async_data_write_start(exch, sink, str_size(sink));
+		ret = async_data_write_start(exch, sink, str_bytes(sink));
 	async_wait_for(id, &ret);
 	async_exchange_end(exch);
@@ -287,7 +287,7 @@
 	errno_t ret = id ? EOK : EPARTY;
 	if (ret == EOK)
-		ret = async_data_write_start(exch, source, str_size(source));
+		ret = async_data_write_start(exch, source, str_bytes(source));
 	if (ret == EOK)
-		ret = async_data_write_start(exch, sink, str_size(sink));
+		ret = async_data_write_start(exch, sink, str_bytes(sink));
 	async_wait_for(id, &ret);
 	async_exchange_end(exch);
@@ -486,5 +486,5 @@
 			/* Prepare sizes table */
 			for (unsigned i = 0; i < count; ++i)
-				sizes[i] = str_size(list[i]);
+				sizes[i] = str_bytes(list[i]);
 
 			/* Send sizes table */
@@ -498,5 +498,5 @@
 			/* Proceed to send names */
 			for (unsigned i = 0; i < count; ++i) {
-				size_t size = str_size(list[i]);
+				size_t size = str_bytes(list[i]);
 				ipc_call_t id;
 				if (ret == EOK &&
Index: uspace/lib/http/src/request.c
===================================================================
--- uspace/lib/http/src/request.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/http/src/request.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -100,5 +100,5 @@
 		size += header_size;
 	}
-	size += str_length(HTTP_REQUEST_LINE);
+	size += str_code_points(HTTP_REQUEST_LINE);
 
 	char *buf = malloc(size);
@@ -126,5 +126,5 @@
 	}
 
-	size_t rlsize = str_size(HTTP_REQUEST_LINE);
+	size_t rlsize = str_bytes(HTTP_REQUEST_LINE);
 	memcpy(pos, HTTP_REQUEST_LINE, rlsize);
 	pos_size -= rlsize;
Index: uspace/lib/http/src/response.c
===================================================================
--- uspace/lib/http/src/response.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/http/src/response.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -100,5 +100,5 @@
 	if (rc != EOK)
 		return rc;
-	if (ndisc < str_length(expect))
+	if (ndisc < str_code_points(expect))
 		return HTTP_EPARSE;
 	return EOK;
Index: uspace/lib/ieee80211/src/ieee80211.c
===================================================================
--- uspace/lib/ieee80211/src/ieee80211.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/ieee80211/src/ieee80211.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -858,5 +858,5 @@
 	nic_query_address(nic, &nic_address);
 
-	size_t ssid_data_size = (ssid != NULL) ? str_size(ssid) : 0;
+	size_t ssid_data_size = (ssid != NULL) ? str_bytes(ssid) : 0;
 	size_t channel_data_size = 1;
 
@@ -980,5 +980,5 @@
 	ieee80211_scan_result_t *auth_data = &auth_link->scan_result;
 
-	size_t ssid_data_size = str_size(auth_data->ssid);
+	size_t ssid_data_size = str_bytes(auth_data->ssid);
 
 	size_t payload_size =
@@ -1043,5 +1043,5 @@
 	memset(ieee80211_dev->bssid_info.password, 0, IEEE80211_MAX_PASSW_LEN);
 	memcpy(ieee80211_dev->bssid_info.password, password,
-	    str_size(password));
+	    str_bytes(password));
 
 	free(buffer);
@@ -1538,7 +1538,7 @@
 		uint8_t pmk[PBKDF2_KEY_LENGTH];
 		pbkdf2((uint8_t *) ieee80211_dev->bssid_info.password,
-		    str_size(ieee80211_dev->bssid_info.password),
+		    str_bytes(ieee80211_dev->bssid_info.password),
 		    (uint8_t *) auth_data->ssid,
-		    str_size(auth_data->ssid), pmk);
+		    str_bytes(auth_data->ssid), pmk);
 
 		uint8_t *anonce = key_frame->key_nonce;
Index: uspace/lib/ieee80211/src/ieee80211_iface_impl.c
===================================================================
--- uspace/lib/ieee80211/src/ieee80211_iface_impl.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/ieee80211/src/ieee80211_iface_impl.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -204,5 +204,5 @@
 	ieee80211_scan_result_list_foreach(ieee80211_dev->ap_list, result) {
 		if (!str_lcmp(ssid_start, result->scan_result.ssid,
-		    str_size(ssid_start))) {
+		    str_bytes(ssid_start))) {
 			rc = ieee80211_connect_proc(ieee80211_dev, result,
 			    password);
Index: uspace/lib/ieee80211/src/ieee80211_impl.c
===================================================================
--- uspace/lib/ieee80211/src/ieee80211_impl.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/ieee80211/src/ieee80211_impl.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -193,10 +193,10 @@
 	uint8_t temp[HASH_SHA1];
 
-	size_t data_size = PRF_CRYPT_DATA_LENGTH + str_size(a) + 2;
+	size_t data_size = PRF_CRYPT_DATA_LENGTH + str_bytes(a) + 2;
 	uint8_t work_arr[data_size];
 	memset(work_arr, 0, data_size);
 
-	memcpy(work_arr, a, str_size(a));
-	memcpy(work_arr + str_size(a) + 1, data, PRF_CRYPT_DATA_LENGTH);
+	memcpy(work_arr, a, str_bytes(a));
+	memcpy(work_arr + str_bytes(a) + 1, data, PRF_CRYPT_DATA_LENGTH);
 
 	for (uint8_t i = 0; i < iters; i++) {
Index: uspace/lib/pcut/src/assert.c
===================================================================
--- uspace/lib/pcut/src/assert.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/pcut/src/assert.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -70,5 +70,5 @@
 
 	pcut_snprintf(current_buffer, MAX_MESSAGE_LENGTH, "%s:%d: ", filename, line);
-	offset = pcut_str_size(current_buffer);
+	offset = pcut_str_bytes(current_buffer);
 
 	if (offset + 1 < MAX_MESSAGE_LENGTH) {
Index: uspace/lib/pcut/src/internal.h
===================================================================
--- uspace/lib/pcut/src/internal.h	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/pcut/src/internal.h	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -166,5 +166,5 @@
  * @return Size of @p s in bytes.
  */
-int pcut_str_size(const char *s);
+int pcut_str_bytes(const char *s);
 
 /** Convert string to integer.
Index: uspace/lib/pcut/src/main.c
===================================================================
--- uspace/lib/pcut/src/main.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/pcut/src/main.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -62,5 +62,5 @@
  */
 int pcut_is_arg_with_number(const char *arg, const char *opt, int *value) {
-	int opt_len = pcut_str_size(opt);
+	int opt_len = pcut_str_bytes(opt);
 	if (! pcut_str_start_equals(arg, opt, opt_len)) {
 		return 0;
Index: uspace/lib/pcut/src/os/helenos.c
===================================================================
--- uspace/lib/pcut/src/os/helenos.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/pcut/src/os/helenos.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -55,6 +55,6 @@
 }
 
-int pcut_str_size(const char *s) {
-	return str_size(s);
+int pcut_str_bytes(const char *s) {
+	return str_bytes(s);
 }
 
Index: uspace/lib/pcut/src/os/stdc.c
===================================================================
--- uspace/lib/pcut/src/os/stdc.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/pcut/src/os/stdc.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -46,5 +46,5 @@
 }
 
-int pcut_str_size(const char *s) {
+int pcut_str_bytes(const char *s) {
 	return strlen(s);
 }
Index: uspace/lib/pcut/src/report/report.c
===================================================================
--- uspace/lib/pcut/src/report/report.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/pcut/src/report/report.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -78,5 +78,5 @@
 		return;
 	}
-	if (pcut_str_size(msg) == 0) {
+	if (pcut_str_bytes(msg) == 0) {
 		return;
 	}
@@ -130,5 +130,5 @@
 
 		/* Determine the length of the text after the zeros. */
-		message_length = pcut_str_size(full_output);
+		message_length = pcut_str_bytes(full_output);
 
 		if (cont_zeros_count < 2) {
Index: uspace/lib/posix/src/stdio.c
===================================================================
--- uspace/lib/posix/src/stdio.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/posix/src/stdio.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -238,5 +238,5 @@
 	if (failed(vfs_write(fildes, &posix_pos[fildes], str, size, &wr)))
 		return -1;
-	return str_nlength(str, wr);
+	return str_ncode_points(str, wr);
 }
 
Index: uspace/lib/posix/test/stdio.c
===================================================================
--- uspace/lib/posix/test/stdio.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/posix/test/stdio.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -45,5 +45,5 @@
 
 	PCUT_ASSERT_TRUE(str_lcmp(p, "/tmp/tmp.",
-	    str_length("/tmp/tmp.")) == 0);
+	    str_code_points("/tmp/tmp.")) == 0);
 
 	f = fopen(p, "w+x");
@@ -64,5 +64,5 @@
 
 	PCUT_ASSERT_TRUE(str_lcmp(p, "/tmp/tmp.",
-	    str_length("/tmp/tmp.")) == 0);
+	    str_code_points("/tmp/tmp.")) == 0);
 
 	f = fopen(p, "w+x");
@@ -83,5 +83,5 @@
 
 	PCUT_ASSERT_TRUE(str_lcmp(p, P_tmpdir "/tmp.",
-	    str_length(P_tmpdir "/tmp.")) == 0);
+	    str_code_points(P_tmpdir "/tmp.")) == 0);
 
 	f = fopen(p, "w+x");
Index: uspace/lib/posix/test/stdlib.c
===================================================================
--- uspace/lib/posix/test/stdlib.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/posix/test/stdlib.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -54,5 +54,5 @@
 	PCUT_ASSERT_TRUE(p == buf);
 	PCUT_ASSERT_TRUE(str_lcmp(p, MKSTEMP_TEMPL,
-	    str_length(MKSTEMP_TEMPL) - 6) == 0);
+	    str_code_points(MKSTEMP_TEMPL) - 6) == 0);
 
 	file = open(p, O_CREAT | O_EXCL | O_RDWR, 0600);
@@ -76,10 +76,10 @@
 	PCUT_ASSERT_TRUE(p == buf1);
 	PCUT_ASSERT_TRUE(str_lcmp(p, MKSTEMP_TEMPL,
-	    str_length(MKSTEMP_TEMPL) - 6) == 0);
+	    str_code_points(MKSTEMP_TEMPL) - 6) == 0);
 
 	p = mktemp(buf2);
 	PCUT_ASSERT_TRUE(p == buf2);
 	PCUT_ASSERT_TRUE(str_lcmp(p, MKSTEMP_TEMPL,
-	    str_length(MKSTEMP_TEMPL) - 6) == 0);
+	    str_code_points(MKSTEMP_TEMPL) - 6) == 0);
 
 	PCUT_ASSERT_TRUE(str_cmp(buf1, buf2) != 0);
Index: uspace/lib/sif/src/sif.c
===================================================================
--- uspace/lib/sif/src/sif.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/sif/src/sif.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -702,12 +702,12 @@
 {
 	char *str;
-	size_t str_size;
+	size_t str_bytes;
 	size_t sidx;
 	int c;
 	errno_t rc;
 
-	str_size = 1;
+	str_bytes = 1;
 	sidx = 0;
-	str = malloc(str_size + 1);
+	str = malloc(str_bytes + 1);
 	if (str == NULL)
 		return ENOMEM;
@@ -737,7 +737,7 @@
 		}
 
-		if (sidx >= str_size) {
-			str_size *= 2;
-			str = realloc(str, str_size + 1);
+		if (sidx >= str_bytes) {
+			str_bytes *= 2;
+			str = realloc(str, str_bytes + 1);
 			if (str == NULL) {
 				rc = ENOMEM;
Index: uspace/lib/trackmod/xm.c
===================================================================
--- uspace/lib/trackmod/xm.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/trackmod/xm.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -289,5 +289,5 @@
 	xm_smp_t smp;
 	size_t samples;
-	size_t instr_size;
+	size_t instr_bytes;
 	size_t smp_size;
 	size_t smp_hdr_size = 0;  /* GCC false alarm on uninitialized */
@@ -314,5 +314,5 @@
 
 		samples = uint16_t_le2host(instr.samples);
-		instr_size = (size_t)uint32_t_le2host(instr.size);
+		instr_bytes = (size_t)uint32_t_le2host(instr.size);
 
 		if (samples > 0) {
@@ -339,5 +339,5 @@
 		}
 
-		if (fseek(f, pos + instr_size, SEEK_SET) < 0) {
+		if (fseek(f, pos + instr_bytes, SEEK_SET) < 0) {
 			rc = EIO;
 			goto error;
Index: uspace/lib/untar/tar.c
===================================================================
--- uspace/lib/untar/tar.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/untar/tar.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -70,5 +70,5 @@
 errno_t tar_header_parse(tar_header_t *parsed, const tar_header_raw_t *raw)
 {
-	if (str_length(raw->filename) == 0) {
+	if (str_code_points(raw->filename) == 0) {
 		return EEMPTY;
 	}
Index: uspace/lib/usbvirt/src/ipc_dev.c
===================================================================
--- uspace/lib/usbvirt/src/ipc_dev.c	(revision d066259279e2e85ad364d7828aa3db232f394ec4)
+++ uspace/lib/usbvirt/src/ipc_dev.c	(revision 08e103d46af516da7dcb378db322a88e2c4aca0b)
@@ -54,5 +54,5 @@
 	}
 
-	size_t size = str_size(dev->name);
+	size_t size = str_bytes(dev->name);
 
 	ipc_call_t call;
