summaryrefslogtreecommitdiff
path: root/src/linux/sysfs-utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/linux/sysfs-utils.c')
-rw-r--r--src/linux/sysfs-utils.c22
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