|
|
@@ -668,6 +668,27 @@ void qi_buffer_append_str(qi_buffer_t *buf, char *s)
|
|
|
qi_buffer_append(buf, *s++);
|
|
|
}
|
|
|
|
|
|
+void qi_buffer_format(qi_buffer_t *buf, const char *fmt, ...)
|
|
|
+{
|
|
|
+ va_list args;
|
|
|
+ va_list largs;
|
|
|
+
|
|
|
+ va_start(largs, fmt);
|
|
|
+ va_copy(args, largs);
|
|
|
+
|
|
|
+ qi_size_t size = vsnprintf(NULL, 0, fmt, largs) + 1;
|
|
|
+ char *str = qi_malloc_atomic(sizeof(char) * size);
|
|
|
+
|
|
|
+ vsnprintf(str, size, fmt, args);
|
|
|
+
|
|
|
+ va_end(args);
|
|
|
+ va_end(largs);
|
|
|
+
|
|
|
+ qi_buffer_append_str(buf, str);
|
|
|
+
|
|
|
+ qi_free(str);
|
|
|
+}
|
|
|
+
|
|
|
void qi_buffer_appendn(qi_buffer_t *buf, char *s, qi_size_t z)
|
|
|
{
|
|
|
for (qi_size_t i = 0; i < z; i++)
|