diff options
-rw-r--r-- | shared/string-helpers.h | 26 |
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 */ |