mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-05-09 06:08:01 +02:00
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. Since machine_uuid comes out of libdbus allocated with dbus_malloc, to avoid having to copy it from malloc-allocated to dbus_malloc-allocated storage, it makes sense to change it to be consistently dbus_malloc-allocated (particularly now that Bug #83115 has made use of internal symbols relatively painless). However, I'm deliberately not changing the allocation model of any other strings in dbus-launch right now; that's a larger yak-shaving exercise.
This commit is contained in:
parent
2a6cefbc3b
commit
71c11a9e48
3 changed files with 21 additions and 35 deletions
|
|
@ -51,7 +51,17 @@ 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) \
|
||||
$(NULL)
|
||||
dbus_launch_LDADD = \
|
||||
$(top_builddir)/dbus/libdbus-1.la \
|
||||
$(DBUS_X_LIBS) \
|
||||
$(NULL)
|
||||
|
||||
dbus_run_session_SOURCES = \
|
||||
dbus-run-session.c
|
||||
|
|
@ -80,10 +90,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 \
|
||||
|
|
|
|||
|
|
@ -38,6 +38,9 @@
|
|||
#include <sys/select.h>
|
||||
#include <time.h>
|
||||
|
||||
#include <dbus/dbus.h>
|
||||
#include "dbus/dbus-internals.h"
|
||||
|
||||
#ifdef DBUS_BUILD_X11
|
||||
#include <X11/Xlib.h>
|
||||
extern Display *xdisplay;
|
||||
|
|
@ -102,50 +105,25 @@ save_machine_uuid (const char *uuid_arg)
|
|||
exit (1);
|
||||
}
|
||||
|
||||
machine_uuid = xstrdup (uuid_arg);
|
||||
machine_uuid = _dbus_strdup (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;
|
||||
|
||||
if (machine_uuid != NULL)
|
||||
return TRUE;
|
||||
|
||||
f = fopen (DBUS_MACHINE_UUID_FILE, "r");
|
||||
if (f == NULL)
|
||||
machine_uuid = dbus_get_local_machine_id ();
|
||||
|
||||
if (machine_uuid == NULL)
|
||||
return FALSE;
|
||||
|
||||
if (fgets (uuid, UUID_MAXLEN, f) == NULL)
|
||||
goto out;
|
||||
|
||||
len = strlen (uuid);
|
||||
if (len < 32)
|
||||
goto out;
|
||||
|
||||
/* rstrip the read uuid */
|
||||
while (len > 31 && isspace((int) uuid[len - 1]))
|
||||
len--;
|
||||
|
||||
if (len != 32)
|
||||
goto out;
|
||||
|
||||
uuid[len] = '\0';
|
||||
machine_uuid = xstrdup (uuid);
|
||||
verbose ("UID: %s\n", machine_uuid);
|
||||
ret = TRUE;
|
||||
|
||||
out:
|
||||
fclose(f);
|
||||
return ret;
|
||||
return TRUE;
|
||||
}
|
||||
#endif /* DBUS_BUILD_X11 */
|
||||
|
||||
|
|
|
|||
|
|
@ -26,6 +26,8 @@
|
|||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <dbus/dbus.h>
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE (1)
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue