add new function pa_machine_id()

This commit is contained in:
Lennart Poettering 2008-08-07 02:22:57 +02:00
parent b84f738e50
commit 73e2577ca6
3 changed files with 47 additions and 0 deletions

View file

@ -57,6 +57,7 @@ AM_CFLAGS += -DPA_SYSTEM_CONFIG_PATH=\"$(PA_SYSTEM_CONFIG_PATH)\"
AM_CFLAGS += -DPA_SYSTEM_STATE_PATH=\"$(PA_SYSTEM_STATE_PATH)\" AM_CFLAGS += -DPA_SYSTEM_STATE_PATH=\"$(PA_SYSTEM_STATE_PATH)\"
AM_CFLAGS += -DAO_REQUIRE_CAS AM_CFLAGS += -DAO_REQUIRE_CAS
AM_CFLAGS += -DPULSE_LOCALEDIR=\"$(pulselocaledir)\" AM_CFLAGS += -DPULSE_LOCALEDIR=\"$(pulselocaledir)\"
AM_CFLAGS += -DPA_MACHINE_ID=\"$(localstatedir)/lib/dbus/machine-id\"
# This cool debug trap works on i386/gcc only # This cool debug trap works on i386/gcc only
AM_CFLAGS += '-DDEBUG_TRAP=__asm__("int $$3")' AM_CFLAGS += '-DDEBUG_TRAP=__asm__("int $$3")'

View file

@ -2053,3 +2053,47 @@ pa_bool_t pa_in_system_mode(void) {
return !!atoi(e); return !!atoi(e);
} }
char *pa_machine_id(void) {
FILE *f;
size_t l;
if ((f = fopen(PA_MACHINE_ID"x", "r"))) {
char ln[34] = "", *r;
r = fgets(ln, sizeof(ln)-1, f);
fclose(f);
if (r)
return pa_xstrdup(pa_strip_nl(ln));
}
l = 100;
for (;;) {
char *c;
c = pa_xnew(char, l);
if (!pa_get_host_name(c, l)) {
if (errno == EINVAL || errno == ENAMETOOLONG) {
pa_xfree(c);
l *= 2;
continue;
}
return NULL;
}
if (strlen(c) < l-1)
return c;
/* Hmm, the hostname is as long the space we offered the
* function, we cannot know if it fully fit in, so let's play
* safe and retry. */
pa_xfree(c);
l *= 2;
}
}

View file

@ -184,4 +184,6 @@ pa_bool_t pa_in_system_mode(void);
#define pa_streq(a,b) (!strcmp((a),(b))) #define pa_streq(a,b) (!strcmp((a),(b)))
char *pa_machine_id(void);
#endif #endif