X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fturbostat.c;h=31321490309d7a63c0fb449e0944e3b1b835042c;hb=0a8741b9061f8df4a78a448c021612db06e17425;hp=913511f72e612c12d58ad01bec101ceea5df4875;hpb=1bdfcf9791729310f75857d0e002c40ef659a89b;p=collectd.git diff --git a/src/turbostat.c b/src/turbostat.c index 913511f7..31321490 100644 --- a/src/turbostat.c +++ b/src/turbostat.c @@ -524,12 +524,9 @@ turbostat_submit (const char *plugin_instance, gauge_t value) { value_list_t vl = VALUE_LIST_INIT; - value_t v; - v.gauge = value; - vl.values = &v; + vl.values = &(value_t) { .gauge = value }; vl.values_len = 1; - sstrncpy (vl.host, hostname_g, sizeof (vl.host)); sstrncpy (vl.plugin, PLUGIN_NAME, sizeof (vl.plugin)); if (plugin_instance != NULL) sstrncpy (vl.plugin_instance, plugin_instance, sizeof (vl.plugin_instance)); @@ -1018,8 +1015,7 @@ parse_int_file(const char *fmt, ...) { va_list args; char path[PATH_MAX]; - FILE *filep; - int len, value; + int len; va_start(args, fmt); len = vsnprintf(path, sizeof(path), fmt, args); @@ -1029,18 +1025,13 @@ parse_int_file(const char *fmt, ...) return -1; } - filep = fopen(path, "r"); - if (!filep) { - ERROR("turbostat plugin: Failed to open '%s'", path); - return -1; - } - if (fscanf(filep, "%d", &value) != 1) { - ERROR("turbostat plugin: Failed to parse number from '%s'", path); - fclose(filep); + value_t v; + if (parse_value_file (path, &v, DS_TYPE_DERIVE) != 0) { + ERROR ("turbostat plugin: Parsing \"%s\" failed.", path); return -1; } - fclose(filep); - return value; + + return (int) v.derive; } static int @@ -1474,35 +1465,22 @@ out: static int check_permissions(void) { -#ifdef HAVE_SYS_CAPABILITY_H - struct __user_cap_header_struct cap_header_data; - cap_user_header_t cap_header = &cap_header_data; - struct __user_cap_data_struct cap_data_data; - cap_user_data_t cap_data = &cap_data_data; - int ret = 0; -#endif /* HAVE_SYS_CAPABILITY_H */ if (getuid() == 0) { /* We have everything we need */ return 0; -#ifndef HAVE_SYS_CAPABILITY_H +#if !defined(HAVE_SYS_CAPABILITY_H) && !defined(CAP_SYS_RAWIO) } else { ERROR("turbostat plugin: Initialization failed: this plugin " "requires collectd to run as root"); return -1; } -#else /* HAVE_SYS_CAPABILITY_H */ +#else /* HAVE_SYS_CAPABILITY_H && CAP_SYS_RAWIO */ } - /* check for CAP_SYS_RAWIO */ - cap_header->pid = getpid(); - cap_header->version = _LINUX_CAPABILITY_VERSION; - if (capget(cap_header, cap_data) < 0) { - ERROR("turbostat plugin: capget failed"); - return -1; - } + int ret = 0; - if ((cap_data->effective & (1 << CAP_SYS_RAWIO)) == 0) { + if (check_capability(CAP_SYS_RAWIO) != 0) { WARNING("turbostat plugin: Collectd doesn't have the " "CAP_SYS_RAWIO capability. If you don't want to run " "collectd as root, try running \"setcap " @@ -1524,7 +1502,7 @@ check_permissions(void) "collectd a special capability (CAP_SYS_RAWIO) and read " "access to /dev/cpu/*/msr (see previous warnings)"); return ret; -#endif /* HAVE_SYS_CAPABILITY_H */ +#endif /* HAVE_SYS_CAPABILITY_H && CAP_SYS_RAWIO */ } static int