chiark / gitweb /
sd-id128: handle NULL return parameter in sd_id128_from_string() nicer
authorLennart Poettering <lennart@poettering.net>
Thu, 21 Jul 2016 18:23:51 +0000 (20:23 +0200)
committerSven Eden <yamakuzure@gmx.net>
Fri, 16 Jun 2017 08:13:01 +0000 (10:13 +0200)
If the return parameter is NULL, simply validate the string, and return no
error.

man/sd_id128_to_string.xml
src/libelogind/sd-id128/sd-id128.c

index 8f3efc145a80d0961179cd1eb6817dbf52b67e4a..11bee6919a7e53aeeca4e70c355184827b6335f9 100644 (file)
     lowercase hexadecimal digits and be terminated by a
     <constant>NUL</constant> byte.</para>
 
-    <para><function>sd_id128_from_string()</function> implements the
-    reverse operation: it takes a 33 character string with 32
-    hexadecimal digits (either lowercase or uppercase, terminated by
-    <constant>NUL</constant>) and parses them back into a 128-bit ID
-    returned in <parameter>ret</parameter>. Alternatively, this call
-    can also parse a 37-character string with a 128-bit ID formatted
-    as RFC UUID.</para>
+    <para><function>sd_id128_from_string()</function> implements the reverse operation: it takes a 33 character string
+    with 32 hexadecimal digits (either lowercase or uppercase, terminated by <constant>NUL</constant>) and parses them
+    back into a 128-bit ID returned in <parameter>ret</parameter>. Alternatively, this call can also parse a
+    37-character string with a 128-bit ID formatted as RFC UUID. If <parameter>ret</parameter> is passed as NULL the
+    function will validate the passed ID string, but not actually return it in parsed form.</para>
 
     <para>For more information about the <literal>sd_id128_t</literal>
     type see
index 1470e4c01a7f9c71d365c115d141f084b6a3fdb0..9f47d04e61b26f1fe61750ae2858e87d4bf93172 100644 (file)
@@ -52,7 +52,6 @@ _public_ int sd_id128_from_string(const char s[], sd_id128_t *ret) {
         bool is_guid = false;
 
         assert_return(s, -EINVAL);
-        assert_return(ret, -EINVAL);
 
         for (n = 0, i = 0; n < 16;) {
                 int a, b;
@@ -90,7 +89,8 @@ _public_ int sd_id128_from_string(const char s[], sd_id128_t *ret) {
         if (s[i] != 0)
                 return -EINVAL;
 
-        *ret = t;
+        if (ret)
+                *ret = t;
         return 0;
 }