+/* Mallocing snprintf *
+ *
+ * If it overruns size, it will simply be safely truncated.
+ */
+char *
+x3_msnprintf(const int size, const char *format, ...)
+{
+ va_list ap;
+ char* buff = calloc(sizeof(char *), size+1);
+
+ va_start(ap, format);
+ vsnprintf(buff, size, format, ap);
+ va_end(ap);
+ buff = realloc(buff, strlen(buff) + 1);
+ return buff;
+}
+