summaryrefslogtreecommitdiffstats
path: root/src/pulsecore/core-util.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-08-07 02:22:57 +0200
committerLennart Poettering <lennart@poettering.net>2008-08-07 02:22:57 +0200
commit73e2577ca677710e1271b5e4590e26e9d73cad15 (patch)
treee293b0c6732efd54a9e1605e0bd1cd81c8f5c59a /src/pulsecore/core-util.c
parentb84f738e502e3f9e41251934cc873985ab2c006f (diff)
add new function pa_machine_id()
Diffstat (limited to 'src/pulsecore/core-util.c')
-rw-r--r--src/pulsecore/core-util.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
index 7c1534ae..abdf1e90 100644
--- a/src/pulsecore/core-util.c
+++ b/src/pulsecore/core-util.c
@@ -2053,3 +2053,47 @@ pa_bool_t pa_in_system_mode(void) {
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;
+ }
+}