Code

Revert "Merge tag 'upstream/5.5.0'"
[pkg-collectd.git] / src / uuid.c
diff --git a/src/uuid.c b/src/uuid.c
deleted file mode 100644 (file)
index 2df6063..0000000
+++ /dev/null
@@ -1,269 +0,0 @@
-/**
- * collectd - src/uuid.c
- * Copyright (C) 2007  Red Hat Inc.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; only version 2 of the License is applicable.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
- *
- * Authors:
- *   Dan Berrange <berrange@redhat.com>
- *   Richard W.M. Jones <rjones@redhat.com>
- *
- * Derived from UUID detection code by Dan Berrange <berrange@redhat.com>
- * http://hg.et.redhat.com/virt/daemons/spectre--devel?f=f6e3a1b06433;file=lib/uuid.c
- **/
-
-#include "collectd.h"
-#include "common.h"
-#include "configfile.h"
-#include "plugin.h"
-
-#if HAVE_LIBHAL
-#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)
-
-static char *uuidfile = NULL;
-
-static const char *config_keys[] = {
-    "UUIDFile"
-};
-
-static int
-looks_like_a_uuid (const char *uuid)
-{
-    int len;
-
-    if (!uuid) return 0;
-
-    len = strlen (uuid);
-
-    if (len < UUID_PRINTABLE_COMPACT_LENGTH)
-        return 0;
-
-    while (*uuid) {
-        if (!isxdigit ((int)*uuid) && *uuid != '-') return 0;
-        uuid++;
-    }
-    return 1;
-}
-
-static char *
-uuid_parse_dmidecode(FILE *file)
-{
-    char line[1024];
-
-    while (fgets (line, sizeof (line), file) != NULL)
-    {
-        char *fields[4];
-        int fields_num;
-
-        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;
-
-        if (strcmp("UUID:", fields[0]) != 0)
-            continue;
-
-        if (!looks_like_a_uuid (fields[1]))
-            continue;
-
-        return strdup (fields[1]);
-    }
-    return NULL;
-}
-
-static char *
-uuid_get_from_dmidecode(void)
-{
-    FILE *dmidecode = popen("dmidecode 2>/dev/null", "r");
-    char *uuid;
-
-    if (!dmidecode) {
-        return NULL;
-    }
-    
-    uuid = uuid_parse_dmidecode(dmidecode);
-
-    pclose(dmidecode);
-    return uuid;
-}
-
-#if HAVE_LIBHAL
-
-#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);
-
-    if (!(con = dbus_bus_get(DBUS_BUS_SYSTEM, &error)) ) {
-        goto bailout_nobus;
-    }
-
-    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);
-    //dbus_connection_unref(con);
-
- bailout_nobus:
-    if (dbus_error_is_set(&error)) {
-        /*printf("Error %s\n", error.name);*/
-        dbus_error_free(&error);
-    }
-    return NULL;
-}
-#endif
-
-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;
-
-    if (!fgets(uuid, sizeof(uuid), file)) {
-        fclose(file);
-        return NULL;
-    }
-    fclose(file);
-    strstripnewline (uuid);
-
-    return strdup (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;
-    }
-
-#if HAVE_LIBHAL
-    if ((uuid = uuid_get_from_hal()) != NULL) {
-        return uuid;
-    }
-#endif
-
-    if ((uuid = uuid_get_from_dmidecode()) != NULL) {
-        return uuid;
-    }
-
-    if ((uuid = uuid_get_from_file("/sys/hypervisor/uuid")) != NULL) {
-        return uuid;
-    }
-
-    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;
-    } else {
-        return 1;
-    }
-
-    return 0;
-}
-
-static int
-uuid_init (void)
-{
-    char *uuid = uuid_get_local ();
-
-    if (uuid) {
-        sstrncpy (hostname_g, uuid, DATA_MAX_NAME_LEN);
-        sfree (uuid);
-        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);
-}
-
-/*
- * 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:
- */