Merge branch 'collectd-5.7' into collectd-5.8
[collectd.git] / src / uuid.c
index 8976626..1cb9027 100644 (file)
 #include "collectd.h"
 
 #include "common.h"
-#include "configfile.h"
 #include "plugin.h"
 
 #if HAVE_SYS_SYSCTL_H
 #include <sys/sysctl.h>
 #endif
 
-#if HAVE_LIBHAL_H
-#include <libhal.h>
-#endif
-
 #define UUID_RAW_LENGTH 16
-#define UUID_PRINTABLE_COMPACT_LENGTH  (UUID_RAW_LENGTH * 2)
-#define UUID_PRINTABLE_NORMAL_LENGTH  (UUID_PRINTABLE_COMPACT_LENGTH + 4)
+#define UUID_PRINTABLE_COMPACT_LENGTH (UUID_RAW_LENGTH * 2)
+#define UUID_PRINTABLE_NORMAL_LENGTH (UUID_PRINTABLE_COMPACT_LENGTH + 4)
 
 static char *uuidfile = NULL;
 
-static const char *config_keys[] = {
-    "UUIDFile"
-};
+static const char *config_keys[] = {"UUIDFile"};
 
-static int
-looks_like_a_uuid (const char *uuid)
-{
-    int len;
+static int looks_like_a_uuid(const char *uuid) {
+  int len;
 
-    if (!uuid)
-        return (0);
+  if (!uuid)
+    return 0;
 
-    len = strlen (uuid);
+  len = strlen(uuid);
 
-    if (len < UUID_PRINTABLE_COMPACT_LENGTH)
-        return (0);
+  if (len < UUID_PRINTABLE_COMPACT_LENGTH)
+    return 0;
 
-    while (*uuid) {
-        if (!isxdigit ((int)*uuid) && *uuid != '-')
-            return (0);
-        uuid++;
-    }
-    return (1);
+  while (*uuid) {
+    if (!isxdigit((int)*uuid) && *uuid != '-')
+      return 0;
+    uuid++;
+  }
+  return 1;
 }
 
-static char *
-uuid_parse_dmidecode(FILE *file)
-{
-    char line[1024];
+static char *uuid_parse_dmidecode(FILE *file) {
+  char line[1024];
 
-    while (fgets (line, sizeof (line), file) != NULL)
-    {
-        char *fields[4];
-        int fields_num;
+  while (fgets(line, sizeof(line), file) != NULL) {
+    char *fields[4];
+    int fields_num;
 
-        strstripnewline (line);
+    strstripnewline(line);
 
-        /* Look for a line reading:
-         *   UUID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
-         */
-        fields_num = strsplit (line, fields, STATIC_ARRAY_SIZE (fields));
-        if (fields_num != 2)
-            continue;
+    /* Look for a line reading:
+     *   UUID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
+     */
+    fields_num = strsplit(line, fields, STATIC_ARRAY_SIZE(fields));
+    if (fields_num != 2)
+      continue;
 
-        if (strcmp("UUID:", fields[0]) != 0)
-            continue;
+    if (strcmp("UUID:", fields[0]) != 0)
+      continue;
 
-        if (!looks_like_a_uuid (fields[1]))
-            continue;
+    if (!looks_like_a_uuid(fields[1]))
+      continue;
 
-        return (strdup (fields[1]));
-    }
-    return (NULL);
+    return strdup(fields[1]);
+  }
+  return NULL;
 }
 
-static char *
-uuid_get_from_dmidecode(void)
-{
-    FILE *dmidecode = popen("dmidecode -t system 2>/dev/null", "r");
-    char *uuid;
+static char *uuid_get_from_dmidecode(void) {
+  FILE *dmidecode = popen("dmidecode -t system 2>/dev/null", "r");
+  char *uuid;
 
-    if (!dmidecode)
-        return (NULL);
+  if (!dmidecode)
+    return NULL;
 
-    uuid = uuid_parse_dmidecode(dmidecode);
+  uuid = uuid_parse_dmidecode(dmidecode);
 
-    pclose(dmidecode);
-    return (uuid);
+  pclose(dmidecode);
+  return uuid;
 }
 
 #if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__)
-static char *
-uuid_get_from_sysctlbyname(const char *name)
-{
-    char uuid[UUID_PRINTABLE_NORMAL_LENGTH + 1];
-    size_t len = sizeof (uuid);
-    if (sysctlbyname(name, &uuid, &len, NULL, 0) == -1)
-        return NULL;
-    return (strdup (uuid));
+static char *uuid_get_from_sysctlbyname(const char *name) {
+  char uuid[UUID_PRINTABLE_NORMAL_LENGTH + 1];
+  size_t len = sizeof(uuid);
+  if (sysctlbyname(name, &uuid, &len, NULL, 0) == -1)
+    return NULL;
+  return strdup(uuid);
 }
 #elif defined(__OpenBSD__)
-static char *
-uuid_get_from_sysctl(void)
-{
-    char uuid[UUID_PRINTABLE_NORMAL_LENGTH + 1];
-    size_t len = sizeof (uuid);
-    int mib[2];
-
-    mib[0] = CTL_HW;
-    mib[1] = HW_UUID;
-
-    if (sysctl(mib, 2, uuid, &len, NULL, 0) == -1)
-        return NULL;
-    return (strdup (uuid));
-}
-#endif
-
-#if HAVE_LIBHAL_H
-
-#define UUID_PATH "/org/freedesktop/Hal/devices/computer"
-#define UUID_PROPERTY "smbios.system.uuid"
-
-static char *
-uuid_get_from_hal(void)
-{
-    LibHalContext *ctx;
-
-    DBusError error;
-    DBusConnection *con;
-
-    dbus_error_init(&error);
+static char *uuid_get_from_sysctl(void) {
+  char uuid[UUID_PRINTABLE_NORMAL_LENGTH + 1];
+  size_t len = sizeof(uuid);
+  int mib[2];
 
-    if (!(con = dbus_bus_get(DBUS_BUS_SYSTEM, &error)))
-        goto bailout_nobus;
+  mib[0] = CTL_HW;
+  mib[1] = HW_UUID;
 
-    ctx = libhal_ctx_new();
-    libhal_ctx_set_dbus_connection(ctx, con);
-
-    if (!libhal_ctx_init(ctx, &error))
-        goto bailout;
-
-    if (!libhal_device_property_exists(ctx,
-                                       UUID_PATH,
-                                       UUID_PROPERTY,
-                                       &error))
-        goto bailout;
-
-    char *uuid  = libhal_device_get_property_string(ctx,
-                                                    UUID_PATH,
-                                                    UUID_PROPERTY,
-                                                    &error);
-    if (looks_like_a_uuid (uuid))
-        return (uuid);
-
- bailout:
-    {
-        DBusError ctxerror;
-        dbus_error_init(&ctxerror);
-        if (!(libhal_ctx_shutdown(ctx, &ctxerror)))
-            dbus_error_free(&ctxerror);
-    }
-
-    libhal_ctx_free(ctx);
-
- bailout_nobus:
-    if (dbus_error_is_set(&error))
-        dbus_error_free(&error);
-    return (NULL);
+  if (sysctl(mib, 2, uuid, &len, NULL, 0) == -1)
+    return NULL;
+  return strdup(uuid);
 }
 #endif
 
-static char *
-uuid_get_from_file(const char *path)
-{
-    FILE *file;
-    char uuid[UUID_PRINTABLE_NORMAL_LENGTH + 1] = "";
+static char *uuid_get_from_file(const char *path) {
+  FILE *file;
+  char uuid[UUID_PRINTABLE_NORMAL_LENGTH + 1] = "";
 
-    file = fopen (path, "r");
-    if (file == NULL)
-        return (NULL);
+  file = fopen(path, "r");
+  if (file == NULL)
+    return NULL;
 
-    if (!fgets(uuid, sizeof(uuid), file)) {
-        fclose(file);
-        return (NULL);
-    }
+  if (!fgets(uuid, sizeof(uuid), file)) {
     fclose(file);
-    strstripnewline (uuid);
+    return NULL;
+  }
+  fclose(file);
+  strstripnewline(uuid);
 
-    return (strdup (uuid));
+  return strdup(uuid);
 }
 
-static char *
-uuid_get_local(void)
-{
-    char *uuid;
+static char *uuid_get_local(void) {
+  char *uuid;
 
-    /* Check /etc/uuid / UUIDFile before any other method. */
-    if ((uuid = uuid_get_from_file(uuidfile ? uuidfile : "/etc/uuid")) != NULL)
-        return (uuid);
+  /* Check /etc/uuid / UUIDFile before any other method. */
+  if ((uuid = uuid_get_from_file(uuidfile ? uuidfile : "/etc/uuid")) != NULL)
+    return uuid;
 
 #if defined(__APPLE__)
-    if ((uuid = uuid_get_from_sysctlbyname("kern.uuid")) != NULL)
-        return (uuid);
+  if ((uuid = uuid_get_from_sysctlbyname("kern.uuid")) != NULL)
+    return uuid;
 #elif defined(__FreeBSD__)
-    if ((uuid = uuid_get_from_sysctlbyname("kern.hostuuid")) != NULL)
-        return (uuid);
+  if ((uuid = uuid_get_from_sysctlbyname("kern.hostuuid")) != NULL)
+    return uuid;
 #elif defined(__NetBSD__)
-    if ((uuid = uuid_get_from_sysctlbyname("machdep.dmi.system-uuid")) != NULL)
-        return (uuid);
+  if ((uuid = uuid_get_from_sysctlbyname("machdep.dmi.system-uuid")) != NULL)
+    return uuid;
 #elif defined(__OpenBSD__)
-    if ((uuid = uuid_get_from_sysctl()) != NULL)
-        return (uuid);
+  if ((uuid = uuid_get_from_sysctl()) != NULL)
+    return uuid;
 #elif defined(__linux__)
-    if ((uuid = uuid_get_from_file("/sys/class/dmi/id/product_uuid")) != NULL)
-        return (uuid);
-#endif
-
-#if HAVE_LIBHAL_H
-    if ((uuid = uuid_get_from_hal()) != NULL)
-        return (uuid);
+  if ((uuid = uuid_get_from_file("/sys/class/dmi/id/product_uuid")) != NULL)
+    return uuid;
 #endif
 
-    if ((uuid = uuid_get_from_dmidecode()) != NULL)
-        return (uuid);
+  if ((uuid = uuid_get_from_dmidecode()) != NULL)
+    return uuid;
 
 #if defined(__linux__)
-    if ((uuid = uuid_get_from_file("/sys/hypervisor/uuid")) != NULL)
-        return (uuid);
+  if ((uuid = uuid_get_from_file("/sys/hypervisor/uuid")) != NULL)
+    return uuid;
 #endif
 
-    return (NULL);
+  return NULL;
 }
 
-static int
-uuid_config (const char *key, const char *value)
-{
-    if (strcasecmp (key, "UUIDFile") == 0) {
-        char *tmp = strdup (value);
-        if (tmp == NULL)
-            return (-1);
-        sfree (uuidfile);
-        uuidfile = tmp;
-        return (0);
-    }
-
-    return (1);
+static int uuid_config(const char *key, const char *value) {
+  if (strcasecmp(key, "UUIDFile") == 0) {
+    char *tmp = strdup(value);
+    if (tmp == NULL)
+      return -1;
+    sfree(uuidfile);
+    uuidfile = tmp;
+    return 0;
+  }
+
+  return 1;
 }
 
-static int
-uuid_init (void)
-{
-    char *uuid = uuid_get_local ();
+static int uuid_init(void) {
+  char *uuid = uuid_get_local();
 
-    if (uuid) {
-        sstrncpy (hostname_g, uuid, DATA_MAX_NAME_LEN);
-        sfree (uuid);
-        return (0);
-    }
+  if (uuid) {
+    hostname_set(uuid);
+    sfree(uuid);
+    return 0;
+  }
 
-    WARNING ("uuid: could not read UUID using any known method");
-    return (0);
+  WARNING("uuid: could not read UUID using any known method");
+  return 0;
 }
 
-void module_register (void)
-{
-    plugin_register_config ("uuid", uuid_config,
-            config_keys, STATIC_ARRAY_SIZE (config_keys));
-    plugin_register_init ("uuid", uuid_init);
+void module_register(void) {
+  plugin_register_config("uuid", uuid_config, config_keys,
+                         STATIC_ARRAY_SIZE(config_keys));
+  plugin_register_init("uuid", uuid_init);
 }
-
-/*
- * vim: set tabstop=4:
- * vim: set shiftwidth=4:
- * vim: set expandtab:
- */
-/*
- * Local variables:
- *  indent-tabs-mode: nil
- *  c-indent-level: 4
- *  c-basic-offset: 4
- *  tab-width: 4
- * End:
- */