diff options
Diffstat (limited to 'src/linux/sysfs-utils.c')
-rw-r--r-- | src/linux/sysfs-utils.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/linux/sysfs-utils.c b/src/linux/sysfs-utils.c index a1b7891..2a56f2c 100644 --- a/src/linux/sysfs-utils.c +++ b/src/linux/sysfs-utils.c @@ -43,23 +43,31 @@ #include "sysfs-utils.h" -double -sysfs_get_double_with_error (const char *dir, const char *attribute) +gboolean +sysfs_get_double_with_error (const char *dir, + const char *attribute, + double *value) { - double result; char *contents; char *filename; + gboolean ret = FALSE; + double parsed; + + g_return_val_if_fail (value != NULL, FALSE); filename = g_build_filename (dir, attribute, NULL); if (g_file_get_contents (filename, &contents, NULL, NULL)) { - result = g_ascii_strtod (contents, NULL); + parsed = g_ascii_strtod (contents, NULL); + if (errno == 0) + ret = TRUE; g_free (contents); - } else { - result = -1.0; } g_free (filename); - return result; + if (ret) + *value = parsed; + + return ret; } double |