[systemd-commits] 2 commits - Makefile.am man/sd-id128.xml src/shared src/systemd

Lennart Poettering lennart at kemper.freedesktop.org
Tue Oct 16 08:03:25 PDT 2012


 Makefile.am            |    2 ++
 man/sd-id128.xml       |   15 +++++++++++++--
 src/shared/log.h       |    2 ++
 src/systemd/sd-id128.h |   37 ++++++++++++++++++++++++++++++++++++-
 4 files changed, 53 insertions(+), 3 deletions(-)

New commits:
commit 183de6d7d9def43ec90b94e775fdc49539a950ba
Author: Lennart Poettering <lennart at poettering.net>
Date:   Tue Oct 16 17:02:51 2012 +0200

    id128: introduce new SD_ID128_CONST_STR() macro

diff --git a/Makefile.am b/Makefile.am
index e714b6e..0a3ed18 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -544,6 +544,7 @@ MANPAGES_ALIAS = \
 	man/systemd-tmpfiles-clean.timer.8 \
 	man/sd_id128_t.3 \
 	man/SD_ID128_MAKE.3 \
+	man/SD_ID128_CONST_STR.3 \
 	man/SD_ID128_FORMAT_STR.3 \
 	man/SD_ID128_FORMAT_VAL.3 \
 	man/sd_id128_equal.3 \
@@ -613,6 +614,7 @@ man/systemd-tmpfiles-clean.service.8: man/systemd-tmpfiles.8
 man/systemd-tmpfiles-clean.timer.8: man/systemd-tmpfiles.8
 man/sd_id128_t.3: man/sd-id128.3
 man/SD_ID128_MAKE.3: man/sd-id128.3
+man/SD_ID128_CONST_STR.3: man/sd-id128.3
 man/SD_ID128_FORMAT_STR.3: man/sd-id128.3
 man/SD_ID128_FORMAT_VAL.3: man/sd-id128.3
 man/sd_id128_equal.3: man/sd-id128.3
diff --git a/man/sd-id128.xml b/man/sd-id128.xml
index d453390..abd2004 100644
--- a/man/sd-id128.xml
+++ b/man/sd-id128.xml
@@ -46,6 +46,7 @@
                 <refname>sd-id128</refname>
                 <refname>sd_id128_t</refname>
                 <refname>SD_ID128_MAKE</refname>
+                <refname>SD_ID128_CONST_STR</refname>
                 <refname>SD_ID128_FORMAT_STR</refname>
                 <refname>SD_ID128_FORMAT_VAL</refname>
                 <refname>sd_id128_equal</refname>
@@ -104,11 +105,21 @@
                 decode 128 bit IDs:</para>
 
                 <para><function>SD_ID128_MAKE()</function> may be used
-                to write a 128 bit ID in source code. A commonly used
-                idiom is to give 128 bit IDs names using this macro:</para>
+                to denote a constant 128 bit ID in source code. A
+                commonly used idiom is to assign a name to a 128 bit
+                ID using this macro:</para>
 
                 <programlisting>#define SD_MESSAGE_COREDUMP SD_ID128_MAKE(fc,2e,22,bc,6e,e6,47,b6,b9,07,29,ab,34,a2,50,b1)</programlisting>
 
+                <para><function>SD_ID128_CONST_STR()</function> may be
+                use to convert constant 128bit IDs into constant
+                strings for output. The following example code will
+                output the string
+                "fc2e22bc6ee647b6b90729ab34a250b1":</para>
+                <programlisting>int main(int argc, char *argv[]) {
+        puts(SD_ID128_CONST_STR(SD_MESSAGE_COREDUMP));
+}</programlisting>
+
                 <para><function>SD_ID128_FORMAT_STR</function> and
                 <function>SD_ID128_FORMAT_VAL()</function> may be used
                 to format a 128 bit ID in a
diff --git a/src/systemd/sd-id128.h b/src/systemd/sd-id128.h
index 05521ae..79bb8b3 100644
--- a/src/systemd/sd-id128.h
+++ b/src/systemd/sd-id128.h
@@ -60,6 +60,42 @@ int sd_id128_get_boot(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]
 
+#define SD_ID128_CONST_STR(x)                                           \
+        ((char[33]) {                                                   \
+                ((x).bytes[0] >> 4) >= 10 ? 'a' + ((x).bytes[0] >> 4) - 10 : '0' + ((x).bytes[0] >> 4), \
+                ((x).bytes[0] & 15) >= 10 ? 'a' + ((x).bytes[0] & 15) - 10 : '0' + ((x).bytes[0] & 15), \
+                ((x).bytes[1] >> 4) >= 10 ? 'a' + ((x).bytes[1] >> 4) - 10 : '0' + ((x).bytes[1] >> 4), \
+                ((x).bytes[1] & 15) >= 10 ? 'a' + ((x).bytes[1] & 15) - 10 : '0' + ((x).bytes[1] & 15), \
+                ((x).bytes[2] >> 4) >= 10 ? 'a' + ((x).bytes[2] >> 4) - 10 : '0' + ((x).bytes[2] >> 4), \
+                ((x).bytes[2] & 15) >= 10 ? 'a' + ((x).bytes[2] & 15) - 10 : '0' + ((x).bytes[2] & 15), \
+                ((x).bytes[3] >> 4) >= 10 ? 'a' + ((x).bytes[3] >> 4) - 10 : '0' + ((x).bytes[3] >> 4), \
+                ((x).bytes[3] & 15) >= 10 ? 'a' + ((x).bytes[3] & 15) - 10 : '0' + ((x).bytes[3] & 15), \
+                ((x).bytes[4] >> 4) >= 10 ? 'a' + ((x).bytes[4] >> 4) - 10 : '0' + ((x).bytes[4] >> 4), \
+                ((x).bytes[4] & 15) >= 10 ? 'a' + ((x).bytes[4] & 15) - 10 : '0' + ((x).bytes[4] & 15), \
+                ((x).bytes[5] >> 4) >= 10 ? 'a' + ((x).bytes[5] >> 4) - 10 : '0' + ((x).bytes[5] >> 4), \
+                ((x).bytes[5] & 15) >= 10 ? 'a' + ((x).bytes[5] & 15) - 10 : '0' + ((x).bytes[5] & 15), \
+                ((x).bytes[6] >> 4) >= 10 ? 'a' + ((x).bytes[6] >> 4) - 10 : '0' + ((x).bytes[6] >> 4), \
+                ((x).bytes[6] & 15) >= 10 ? 'a' + ((x).bytes[6] & 15) - 10 : '0' + ((x).bytes[6] & 15), \
+                ((x).bytes[7] >> 4) >= 10 ? 'a' + ((x).bytes[7] >> 4) - 10 : '0' + ((x).bytes[7] >> 4), \
+                ((x).bytes[7] & 15) >= 10 ? 'a' + ((x).bytes[7] & 15) - 10 : '0' + ((x).bytes[7] & 15), \
+                ((x).bytes[8] >> 4) >= 10 ? 'a' + ((x).bytes[8] >> 4) - 10 : '0' + ((x).bytes[8] >> 4), \
+                ((x).bytes[8] & 15) >= 10 ? 'a' + ((x).bytes[8] & 15) - 10 : '0' + ((x).bytes[8] & 15), \
+                ((x).bytes[9] >> 4) >= 10 ? 'a' + ((x).bytes[9] >> 4) - 10 : '0' + ((x).bytes[9] >> 4), \
+                ((x).bytes[9] & 15) >= 10 ? 'a' + ((x).bytes[9] & 15) - 10 : '0' + ((x).bytes[9] & 15), \
+                ((x).bytes[10] >> 4) >= 10 ? 'a' + ((x).bytes[10] >> 4) - 10 : '0' + ((x).bytes[10] >> 4), \
+                ((x).bytes[10] & 15) >= 10 ? 'a' + ((x).bytes[10] & 15) - 10 : '0' + ((x).bytes[10] & 15), \
+                ((x).bytes[11] >> 4) >= 10 ? 'a' + ((x).bytes[11] >> 4) - 10 : '0' + ((x).bytes[11] >> 4), \
+                ((x).bytes[11] & 15) >= 10 ? 'a' + ((x).bytes[11] & 15) - 10 : '0' + ((x).bytes[11] & 15), \
+                ((x).bytes[12] >> 4) >= 10 ? 'a' + ((x).bytes[12] >> 4) - 10 : '0' + ((x).bytes[12] >> 4), \
+                ((x).bytes[12] & 15) >= 10 ? 'a' + ((x).bytes[12] & 15) - 10 : '0' + ((x).bytes[12] & 15), \
+                ((x).bytes[13] >> 4) >= 10 ? 'a' + ((x).bytes[13] >> 4) - 10 : '0' + ((x).bytes[13] >> 4), \
+                ((x).bytes[13] & 15) >= 10 ? 'a' + ((x).bytes[13] & 15) - 10 : '0' + ((x).bytes[13] & 15), \
+                ((x).bytes[14] >> 4) >= 10 ? 'a' + ((x).bytes[14] >> 4) - 10 : '0' + ((x).bytes[14] >> 4), \
+                ((x).bytes[14] & 15) >= 10 ? 'a' + ((x).bytes[14] & 15) - 10 : '0' + ((x).bytes[14] & 15), \
+                ((x).bytes[15] >> 4) >= 10 ? 'a' + ((x).bytes[15] >> 4) - 10 : '0' + ((x).bytes[15] >> 4), \
+                ((x).bytes[15] & 15) >= 10 ? 'a' + ((x).bytes[15] & 15) - 10 : '0' + ((x).bytes[15] & 15), \
+                0 })
+
 static inline int sd_id128_equal(sd_id128_t a, sd_id128_t b) {
         return memcmp(&a, &b, 16) == 0;
 }

commit 706911fba8d071449848f02516eef117277ff48b
Author: Lennart Poettering <lennart at poettering.net>
Date:   Tue Oct 16 16:26:41 2012 +0200

    journal: don't export MESSAGE_ID() macro
    
    If it is exported it would need to be prefixed, but since we need it
    exclusively internally so far, simply move it to an internal header.

diff --git a/src/shared/log.h b/src/shared/log.h
index c242cc2..1bd9dbf 100644
--- a/src/shared/log.h
+++ b/src/shared/log.h
@@ -135,3 +135,5 @@ bool log_on_console(void);
 
 const char *log_target_to_string(LogTarget target);
 LogTarget log_target_from_string(const char *s);
+
+#define MESSAGE_ID(x) "MESSAGE_ID=" SD_ID128_FORMAT_STR, SD_ID128_FORMAT_VAL(x)
diff --git a/src/systemd/sd-id128.h b/src/systemd/sd-id128.h
index fa17be8..05521ae 100644
--- a/src/systemd/sd-id128.h
+++ b/src/systemd/sd-id128.h
@@ -65,7 +65,6 @@ static inline int sd_id128_equal(sd_id128_t a, sd_id128_t b) {
 }
 
 #define SD_ID128_NULL ((sd_id128_t) { .qwords = { 0, 0 }})
-#define MESSAGE_ID(x) "MESSAGE_ID=" SD_ID128_FORMAT_STR, SD_ID128_FORMAT_VAL(x)
 
 #ifdef __cplusplus
 }



More information about the systemd-commits mailing list