From 6a20a9d2862d27bb91424419c641acc3f1cd5667 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 6 Nov 2023 11:33:51 +0100 Subject: [PATCH] string-util: add strdup_or_null() helper --- src/basic/string-util.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/basic/string-util.h b/src/basic/string-util.h index 6b6a5746fe..b6d8be3083 100644 --- a/src/basic/string-util.h +++ b/src/basic/string-util.h @@ -301,3 +301,24 @@ bool version_is_valid(const char *s); bool version_is_valid_versionspec(const char *s); ssize_t strlevenshtein(const char *x, const char *y); + +static inline int strdup_or_null(const char *s, char **ret) { + char *c; + + assert(ret); + + /* This is a lot like strdup(), but is happy with NULL strings, and does not treat that as error, but + * copies the NULL value. */ + + if (!s) { + *ret = NULL; + return 0; + } + + c = strdup(s); + if (!c) + return -ENOMEM; + + *ret = c; + return 1; +}