Index: uspace/lib/c/generic/uuid.c
===================================================================
--- uspace/lib/c/generic/uuid.c	(revision a508e82133278e5813d320289cc37de7e48a9dda)
+++ uspace/lib/c/generic/uuid.c	(revision ed3d605b4d0afbe0816d5d13d01a3bce3af81ebe)
@@ -39,4 +39,5 @@
 #include <stddef.h>
 #include <str.h>
+#include <stdio.h>
 
 /** Generate UUID.
@@ -176,7 +177,22 @@
  * @return EOK on success, ENOMEM if out of memory
  */
-errno_t uuid_format(uuid_t *uuid, char **rstr)
-{
-	return ENOTSUP;
+errno_t uuid_format(uuid_t *uuid, char **rstr, bool uppercase)
+{
+	size_t size = 37;
+	char *str = malloc(sizeof(char) * size);
+	if (str == NULL)
+		return ENOMEM;
+	
+	const char *format = "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x";
+	if(uppercase)
+		format = "%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X";
+
+	int ret = snprintf(str, size, format, uuid->b[0], uuid->b[1], uuid->b[2], uuid->b[3], uuid->b[4], uuid->b[5], uuid->b[6], uuid->b[7], uuid->b[8], uuid->b[9], uuid->b[10], uuid->b[11], uuid->b[12], uuid->b[13], uuid->b[14], uuid->b[15]);
+	
+	if (ret != 36)
+		return EINVAL;
+
+	*rstr = str;
+	return EOK;
 }
 
Index: uspace/lib/c/include/uuid.h
===================================================================
--- uspace/lib/c/include/uuid.h	(revision a508e82133278e5813d320289cc37de7e48a9dda)
+++ uspace/lib/c/include/uuid.h	(revision ed3d605b4d0afbe0816d5d13d01a3bce3af81ebe)
@@ -38,4 +38,5 @@
 #include <stdint.h>
 #include <types/uuid.h>
+#include <stdbool.h>
 
 extern errno_t uuid_generate(uuid_t *);
@@ -43,5 +44,5 @@
 extern void uuid_decode(uint8_t *, uuid_t *);
 extern errno_t uuid_parse(const char *, uuid_t *, const char **);
-extern errno_t uuid_format(uuid_t *, char **);
+extern errno_t uuid_format(uuid_t *, char **, bool);
 
 #endif
