Index: uspace/lib/c/generic/io/asprintf.c
===================================================================
--- uspace/lib/c/generic/io/asprintf.c	(revision ddd0499d218f4fad4f9b6e819d50044f2863aba0)
+++ uspace/lib/c/generic/io/asprintf.c	(revision b7adc2268d6532c011fd39106df4ecc5a7a6b0c8)
@@ -50,4 +50,25 @@
 }
 
+int vprintf_size(const char *fmt, va_list args)
+{
+	printf_spec_t ps = {
+		asprintf_str_write,
+		asprintf_wstr_write,
+		NULL
+	};
+	
+	return printf_core(fmt, &ps, args);
+}
+
+int printf_size(const char *fmt, ...)
+{
+	va_list args;
+	va_start(args, fmt);
+	int ret = vprintf_size(fmt, args);
+	va_end(args);
+	
+	return ret;
+}
+
 /** Allocate and print to string.
  *
@@ -61,14 +82,7 @@
 int asprintf(char **strp, const char *fmt, ...)
 {
-	printf_spec_t ps = {
-		asprintf_str_write,
-		asprintf_wstr_write,
-		NULL
-	};
-	
 	va_list args;
 	va_start(args, fmt);
-	
-	int ret = printf_core(fmt, &ps, args);
+	int ret = vprintf_size(fmt, args);
 	va_end(args);
 	
Index: uspace/lib/c/include/stdio.h
===================================================================
--- uspace/lib/c/include/stdio.h	(revision ddd0499d218f4fad4f9b6e819d50044f2863aba0)
+++ uspace/lib/c/include/stdio.h	(revision b7adc2268d6532c011fd39106df4ecc5a7a6b0c8)
@@ -124,4 +124,8 @@
 extern int vsnprintf(char *, size_t, const char *, va_list);
 
+extern int printf_size(const char *, ...)
+    PRINTF_ATTRIBUTE(1, 2);
+extern int vprintf_size(const char *, va_list);
+
 /* File stream functions */
 extern FILE *fopen(const char *, const char *);
