core: Fallbacks for machine-id in filesystem

see https://bugs.freedesktop.org/show_bug.cgi?id=88834

Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net>
This commit is contained in:
Peter Meerwald 2015-06-09 21:56:36 +02:00 committed by Arun Raghavan
parent b727dd540b
commit bb88d90950

View file

@ -3060,12 +3060,21 @@ char *pa_machine_id(void) {
/* The returned value is supposed be some kind of ascii identifier /* The returned value is supposed be some kind of ascii identifier
* that is unique and stable across reboots. */ * that is unique and stable across reboots. */
/* First we try the /etc/machine-id, which is the best option we /* First we try ${sysconfdir}/etc/machine-id, with fallbacks to
* have, since it fits perfectly our needs and is not as volatile * ${localstatedir}/lib/dbus/machine-id, /etc/machine-id and
* /var/lib/dbus/machine-id, which are the best option we
* have, since they fit perfectly our needs and are not as volatile
* as the hostname which might be set from dhcp. */ * as the hostname which might be set from dhcp. */
if ((f = pa_fopen_cloexec(PA_MACHINE_ID, "r")) || if ((f = pa_fopen_cloexec(PA_MACHINE_ID, "r")) ||
(f = pa_fopen_cloexec(PA_MACHINE_ID_FALLBACK, "r"))) { (f = pa_fopen_cloexec(PA_MACHINE_ID_FALLBACK, "r")) ||
#if !defined(OS_IS_WIN32)
(f = pa_fopen_cloexec("/etc/machine-id", "r")) ||
(f = pa_fopen_cloexec("/var/lib/dbus/machine-id", "r"))
#else
false
#endif
) {
char ln[34] = "", *r; char ln[34] = "", *r;
r = fgets(ln, sizeof(ln)-1, f); r = fgets(ln, sizeof(ln)-1, f);