]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
shared: Add specifier_id128() and specifier_uuid()
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Mon, 19 Sep 2022 13:35:17 +0000 (15:35 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 22 Sep 2022 12:16:57 +0000 (14:16 +0200)
src/shared/specifier.c
src/shared/specifier.h

index 0742fae39ed67d46226e12a80654d0ffcd571d72..a49b16b73620cf8c5948264cefefef5019559f61 100644 (file)
@@ -151,9 +151,32 @@ int specifier_real_directory(char specifier, const void *data, const char *root,
         return path_extract_directory(path, ret);
 }
 
+int specifier_id128(char specifier, const void *data, const char *root, const void *userdata, char **ret) {
+        const sd_id128_t *id = ASSERT_PTR(data);
+        char *n;
+
+        n = new(char, SD_ID128_STRING_MAX);
+        if (!n)
+                return -ENOMEM;
+
+        *ret = sd_id128_to_string(*id, n);
+        return 0;
+}
+
+int specifier_uuid(char specifier, const void *data, const char *root, const void *userdata, char **ret) {
+        const sd_id128_t *id = ASSERT_PTR(data);
+        char *n;
+
+        n = new(char, SD_ID128_UUID_STRING_MAX);
+        if (!n)
+                return -ENOMEM;
+
+        *ret = sd_id128_to_uuid_string(*id, n);
+        return 0;
+}
+
 int specifier_machine_id(char specifier, const void *data, const char *root, const void *userdata, char **ret) {
         sd_id128_t id;
-        char *n;
         int r;
 
         assert(ret);
@@ -172,17 +195,11 @@ int specifier_machine_id(char specifier, const void *data, const char *root, con
         if (r < 0)
                 return r;
 
-        n = new(char, SD_ID128_STRING_MAX);
-        if (!n)
-                return -ENOMEM;
-
-        *ret = sd_id128_to_string(id, n);
-        return 0;
+        return specifier_id128(specifier, &id, root, userdata, ret);
 }
 
 int specifier_boot_id(char specifier, const void *data, const char *root, const void *userdata, char **ret) {
         sd_id128_t id;
-        char *n;
         int r;
 
         assert(ret);
@@ -191,12 +208,7 @@ int specifier_boot_id(char specifier, const void *data, const char *root, const
         if (r < 0)
                 return r;
 
-        n = new(char, SD_ID128_STRING_MAX);
-        if (!n)
-                return -ENOMEM;
-
-        *ret = sd_id128_to_string(id, n);
-        return 0;
+        return specifier_id128(specifier, &id, root, userdata, ret);
 }
 
 int specifier_hostname(char specifier, const void *data, const char *root, const void *userdata, char **ret) {
index abde3d9ad2b3738b741015c8d845513e08cf14a2..a245e546e035cbd2ead3400ebe414125822eecb2 100644 (file)
@@ -16,6 +16,8 @@ int specifier_printf(const char *text, size_t max_length, const Specifier table[
 int specifier_string(char specifier, const void *data, const char *root, const void *userdata, char **ret);
 int specifier_real_path(char specifier, const void *data, const char *root, const void *userdata, char **ret);
 int specifier_real_directory(char specifier, const void *data, const char *root, const void *userdata, char **ret);
+int specifier_id128(char specifier, const void *data, const char *root, const void *userdata, char **ret);
+int specifier_uuid(char specifier, const void *data, const char *root, const void *userdata, char **ret);
 
 int specifier_machine_id(char specifier, const void *data, const char *root, const void *userdata, char **ret);
 int specifier_boot_id(char specifier, const void *data, const char *root, const void *userdata, char **ret);