summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shared/string-helpers.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/shared/string-helpers.h b/shared/string-helpers.h
index c8ce449..3c2f07f 100644
--- a/shared/string-helpers.h
+++ b/shared/string-helpers.h
@@ -27,6 +27,7 @@
#define WESTON_STRING_HELPERS_H
#include <stdbool.h>
+#include <stdarg.h>
#include <stdlib.h>
#include <stdint.h>
#include <errno.h>
@@ -68,4 +69,29 @@ safe_strtoint(const char *str, int32_t *value)
return true;
}
+/**
+ * Exactly like asprintf(), but sets *str_out to NULL if it fails.
+ *
+ * If str_out is NULL, does nothing.
+ */
+static inline void __attribute__ ((format (printf, 2, 3)))
+str_printf(char **str_out, const char *fmt, ...)
+{
+ char *msg;
+ va_list ap;
+ int ret;
+
+ if (!str_out)
+ return;
+
+ va_start(ap, fmt);
+ ret = vasprintf(&msg, fmt, ap);
+ va_end(ap);
+
+ if (ret >= 0)
+ *str_out = msg;
+ else
+ *str_out = NULL;
+}
+
#endif /* WESTON_STRING_HELPERS_H */