Index: uspace/lib/c/generic/str.c
===================================================================
--- uspace/lib/c/generic/str.c	(revision 61e29a4d8efba82fa65ab85c056b80f308ccfb5b)
+++ uspace/lib/c/generic/str.c	(revision bba3d90d781c876ec1cc2a13ec1903f0b9b1b2fa)
@@ -722,4 +722,39 @@
 }
 
+/** Find first occurence of character in wide string.
+ *
+ * @param wstr String to search.
+ * @param ch  Character to look for.
+ *
+ * @return Pointer to character in @a wstr or NULL if not found.
+ */
+wchar_t *wstr_chr(const wchar_t *wstr, wchar_t ch)
+{
+	while (*wstr && *wstr != ch)
+		wstr++;
+	if (*wstr)
+		return (wchar_t *) wstr;
+	else
+		return NULL;
+}
+
+/** Find last occurence of character in wide string.
+ *
+ * @param wstr String to search.
+ * @param ch  Character to look for.
+ *
+ * @return Pointer to character in @a wstr or NULL if not found.
+ */
+wchar_t *wstr_rchr(const wchar_t *wstr, wchar_t ch)
+{
+	const wchar_t *res = NULL;
+	while (*wstr) {
+		if (*wstr == ch)
+			res = wstr;
+		wstr++;
+	}
+	return (wchar_t *) res;
+}
+
 /** Insert a wide character into a wide string.
  *
@@ -974,4 +1009,34 @@
 }
 
+void str_reverse(char* begin, char* end) 
+{
+    char aux;
+    while(end>begin)
+        aux=*end, *end--=*begin, *begin++=aux;
+}
+
+int size_t_str(size_t value, int base, char* str, size_t size) 
+{
+    static char num[] = "0123456789abcdefghijklmnopqrstuvwxyz";
+    char* wstr=str;
+	
+	if (size == 0) 
+		return EINVAL;
+    if (base<2 || base>35) {
+        *str='\0';
+        return EINVAL;
+    }
+
+    do {
+        *wstr++ = num[value % base];
+		if (--size == 0)
+			return EOVERFLOW;
+    } while(value /= base);
+    *wstr='\0';
+
+    // Reverse string
+    str_reverse(str,wstr-1);
+	return EOK;
+}
 
 /** Convert initial part of string to unsigned long according to given base.
Index: uspace/lib/c/include/str.h
===================================================================
--- uspace/lib/c/include/str.h	(revision 61e29a4d8efba82fa65ab85c056b80f308ccfb5b)
+++ uspace/lib/c/include/str.h	(revision bba3d90d781c876ec1cc2a13ec1903f0b9b1b2fa)
@@ -80,4 +80,6 @@
 extern char *str_chr(const char *str, wchar_t ch);
 extern char *str_rchr(const char *str, wchar_t ch);
+extern wchar_t *wstr_chr(const wchar_t *wstr, wchar_t ch);
+extern wchar_t *wstr_rchr(const wchar_t *wstr, wchar_t ch);
 
 extern bool wstr_linsert(wchar_t *str, wchar_t ch, size_t pos, size_t max_pos);
@@ -86,4 +88,7 @@
 extern char *str_dup(const char *);
 extern char *str_ndup(const char *, size_t max_size);
+
+extern void str_reverse(char* begin, char* end);
+extern int size_t_str(size_t value, int base, char* str, size_t size);
 
 extern int str_uint64(const char *, char **, unsigned int, bool, uint64_t *);
