]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
string-util: add strdup_or_null() helper
authorLennart Poettering <lennart@poettering.net>
Mon, 6 Nov 2023 10:33:51 +0000 (11:33 +0100)
committerLennart Poettering <lennart@poettering.net>
Tue, 7 Nov 2023 11:23:27 +0000 (12:23 +0100)
src/basic/string-util.h

index 6b6a5746fe64fe9949aa603c082228dcb91788fd..b6d8be30834e5adbfa357e80d8734bfea698c71b 100644 (file)
@@ -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;
+}