From cb102e115ccc8e4c2998b514c934bd35e5787e60 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 24 Aug 2017 13:50:43 +1000 Subject: [PATCH] Add xasprintf Like asprintf, but leaves strp as NULL on failure Signed-off-by: Peter Hutterer --- src/libratbag-util.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/libratbag-util.h b/src/libratbag-util.h index c9e403ef..b6ec62cd 100644 --- a/src/libratbag-util.h +++ b/src/libratbag-util.h @@ -171,3 +171,19 @@ ratbag_utf8_to_enc(char *buf, size_t buf_len, const char *to_enc, ssize_t ratbag_utf8_from_enc(char *in_buf, size_t in_len, const char *from_enc, char **out); + +__attribute__((format(printf, 2, 3))) +static inline int +xasprintf(char **strp, const char *fmt, ...) +{ + int rc = 0; + va_list args; + + va_start(args, fmt); + rc = vasprintf(strp, fmt, args); + va_end(args); + if ((rc == -1) && strp) + *strp = NULL; + + return rc; +}