summaryrefslogtreecommitdiff
path: root/debian/patches/dbus-launch-use-libdbus-to-read-the-UUID.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/dbus-launch-use-libdbus-to-read-the-UUID.patch')
-rw-r--r--debian/patches/dbus-launch-use-libdbus-to-read-the-UUID.patch125
1 files changed, 125 insertions, 0 deletions
diff --git a/debian/patches/dbus-launch-use-libdbus-to-read-the-UUID.patch b/debian/patches/dbus-launch-use-libdbus-to-read-the-UUID.patch
new file mode 100644
index 00000000..dd514b25
--- /dev/null
+++ b/debian/patches/dbus-launch-use-libdbus-to-read-the-UUID.patch
@@ -0,0 +1,125 @@
+From: Simon McVittie <simon.mcvittie@collabora.co.uk>
+Date: Tue, 17 Feb 2015 13:46:53 +0000
+Subject: dbus-launch: use libdbus to read the UUID
+
+As a side benefit, this means that dbus-launch now understands
+/etc/machine-id and not just /var/lib/dbus/machine-id.
+
+I'm using the "internal" (static) version of libdbus rather than
+the shared version, because my next commit is going to need that
+anyway.
+---
+ tools/Makefile.am | 17 ++++++++++++-----
+ tools/dbus-launch.c | 36 ++++++++++--------------------------
+ tools/dbus-launch.h | 2 ++
+ 3 files changed, 24 insertions(+), 31 deletions(-)
+
+diff --git a/tools/Makefile.am b/tools/Makefile.am
+index 9046282..fafee1b 100644
+--- a/tools/Makefile.am
++++ b/tools/Makefile.am
+@@ -48,7 +48,18 @@ else
+ dbus_launch_SOURCES= \
+ dbus-launch.c \
+ dbus-launch-x11.c \
+- dbus-launch.h
++ dbus-launch.h \
++ tool-common.c \
++ tool-common.h \
++ $(NULL)
++dbus_launch_CPPFLAGS = \
++ $(AM_CPPFLAGS) \
++ -DDBUS_STATIC_BUILD \
++ $(NULL)
++dbus_launch_LDADD = \
++ $(top_builddir)/dbus/libdbus-internal.la \
++ $(DBUS_X_LIBS) \
++ $(NULL)
+
+ dbus_run_session_SOURCES = \
+ dbus-run-session.c
+@@ -77,10 +88,6 @@ dbus_uuidgen_LDADD = \
+ $(top_builddir)/dbus/libdbus-1.la \
+ $(NULL)
+
+-dbus_launch_LDADD = \
+- $(DBUS_X_LIBS) \
+- $(NULL)
+-
+ examplesdir = ${docdir}/examples
+ dist_examples_SCRIPTS = \
+ GetAllMatchRules.py \
+diff --git a/tools/dbus-launch.c b/tools/dbus-launch.c
+index 41a20e8..1d9ab3e 100644
+--- a/tools/dbus-launch.c
++++ b/tools/dbus-launch.c
+@@ -106,46 +106,30 @@ save_machine_uuid (const char *uuid_arg)
+ }
+
+ #ifdef DBUS_BUILD_X11
+-#define UUID_MAXLEN 40
+ /* Read the machine uuid from file if needed. Returns TRUE if machine_uuid is
+ * set after this function */
+ static int
+ read_machine_uuid_if_needed (void)
+ {
+- FILE *f;
+- char uuid[UUID_MAXLEN];
+- size_t len;
+- int ret = FALSE;
++ char *uuid;
+
+ if (machine_uuid != NULL)
+ return TRUE;
+
+- f = fopen (DBUS_MACHINE_UUID_FILE, "r");
+- if (f == NULL)
+- return FALSE;
+-
+- if (fgets (uuid, UUID_MAXLEN, f) == NULL)
+- goto out;
++ uuid = dbus_get_local_machine_id ();
+
+- len = strlen (uuid);
+- if (len < 32)
+- goto out;
++ if (uuid == NULL)
++ return FALSE;
+
+- /* rstrip the read uuid */
+- while (len > 31 && isspace((int) uuid[len - 1]))
+- len--;
++ /* one is allocated with malloc and the other with dbus_malloc so copy it */
++ machine_uuid = xstrdup (uuid);
+
+- if (len != 32)
+- goto out;
++ if (machine_uuid == NULL)
++ tool_oom ("reading machine UUID");
+
+- uuid[len] = '\0';
+- machine_uuid = xstrdup (uuid);
++ dbus_free (uuid);
+ verbose ("UID: %s\n", machine_uuid);
+- ret = TRUE;
+-
+-out:
+- fclose(f);
+- return ret;
++ return TRUE;
+ }
+ #endif /* DBUS_BUILD_X11 */
+
+diff --git a/tools/dbus-launch.h b/tools/dbus-launch.h
+index 8220bb8..d0ede6b 100644
+--- a/tools/dbus-launch.h
++++ b/tools/dbus-launch.h
+@@ -26,6 +26,8 @@
+
+ #include <sys/types.h>
+
++#include <dbus/dbus.h>
++
+ #ifndef TRUE
+ #define TRUE (1)
+ #endif