sd-id128: expose ID128_UUID_FORMAT_STR
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 5 Apr 2019 11:46:33 +0000 (13:46 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 5 Apr 2019 11:47:54 +0000 (13:47 +0200)
It is generally useful, and can be made public in the same manner that
SD_ID128_FORMAT_STR is.

man/rules/meson.build
man/sd-id128.xml
src/libsystemd/sd-id128/id128-util.h
src/systemd/sd-id128.h
src/test/test-id128.c

index d949900..6f9f4c4 100644 (file)
@@ -101,6 +101,7 @@ manpages = [
    'SD_ID128_MAKE',
    'SD_ID128_MAKE_STR',
    'SD_ID128_NULL',
+   'SD_ID128_UUID_FORMAT_STR',
    'sd_id128_equal',
    'sd_id128_is_null',
    'sd_id128_t'],
index 74d838d..22d5e0e 100644 (file)
@@ -24,6 +24,7 @@
     <refname>SD_ID128_NULL</refname>
     <refname>SD_ID128_CONST_STR</refname>
     <refname>SD_ID128_FORMAT_STR</refname>
+    <refname>SD_ID128_UUID_FORMAT_STR</refname>
     <refname>SD_ID128_FORMAT_VAL</refname>
     <refname>sd_id128_equal</refname>
     <refname>sd_id128_is_null</refname>
@@ -119,6 +120,11 @@ int main(int argc, char **argv) {
         return 0;
 }</programlisting>
 
+    <para><function>SD_ID128_UUID_FORMAT_STR()</function> is similar to
+    <function>SD_ID128_FORMAT_STR()</function> but includes separating hyphens to conform to the
+    "<ulink url="https://en.wikipedia.org/wiki/Universally_unique_identifier#Format">canonical representation</ulink>".
+    </para>
+
     <para>Use <function>sd_id128_equal()</function> to compare two 128-bit IDs:</para>
 
     <programlisting>int main(int argc, char *argv[]) {
index 65f14ab..82a69a7 100644 (file)
@@ -10,9 +10,6 @@
 
 char *id128_to_uuid_string(sd_id128_t id, char s[37]);
 
-/* Like SD_ID128_FORMAT_STR, but formats as UUID, not in plain format */
-#define ID128_UUID_FORMAT_STR "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x"
-
 bool id128_is_valid(const char *s) _pure_;
 
 typedef enum Id128Format {
index bdf88ed..c5fbe0a 100644 (file)
@@ -63,6 +63,9 @@ int sd_id128_get_boot_app_specific(sd_id128_t app_id, sd_id128_t *ret);
 #define SD_ID128_FORMAT_STR "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
 #define SD_ID128_FORMAT_VAL(x) (x).bytes[0], (x).bytes[1], (x).bytes[2], (x).bytes[3], (x).bytes[4], (x).bytes[5], (x).bytes[6], (x).bytes[7], (x).bytes[8], (x).bytes[9], (x).bytes[10], (x).bytes[11], (x).bytes[12], (x).bytes[13], (x).bytes[14], (x).bytes[15]
 
+/* Like SD_ID128_FORMAT_STR, but formats as UUID, not in plain format */
+#define SD_ID128_UUID_FORMAT_STR "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x"
+
 #define SD_ID128_CONST_STR(x)                                           \
         ((const char[SD_ID128_STRING_MAX]) {                            \
                 ((x).bytes[0] >> 4) >= 10 ? 'a' + ((x).bytes[0] >> 4) - 10 : '0' + ((x).bytes[0] >> 4), \
index 8840788..eea0765 100644 (file)
@@ -52,7 +52,7 @@ int main(int argc, char *argv[]) {
         assert_se(streq(q, UUID_WALDI));
 
         b = mfree(b);
-        assert_se(asprintf(&b, ID128_UUID_FORMAT_STR, SD_ID128_FORMAT_VAL(ID128_WALDI)) == 36);
+        assert_se(asprintf(&b, SD_ID128_UUID_FORMAT_STR, SD_ID128_FORMAT_VAL(ID128_WALDI)) == 36);
         printf("waldi4: %s\n", b);
         assert_se(streq(q, b));