From 4b4caf187f590efc41a10646e0f35d6a70098103 Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Fri, 18 Oct 2013 16:10:46 +0200 Subject: linux: Add a way to check when sysfs_get_double fails --- src/linux/sysfs-utils.c | 19 +++++++++++++++++++ src/linux/sysfs-utils.h | 1 + 2 files changed, 20 insertions(+) diff --git a/src/linux/sysfs-utils.c b/src/linux/sysfs-utils.c index e32715c..8cdff8d 100644 --- a/src/linux/sysfs-utils.c +++ b/src/linux/sysfs-utils.c @@ -43,6 +43,25 @@ #include "sysfs-utils.h" +double +sysfs_get_double_with_error (const char *dir, const char *attribute) +{ + double result; + char *contents; + char *filename; + + filename = g_build_filename (dir, attribute, NULL); + if (g_file_get_contents (filename, &contents, NULL, NULL)) { + result = atof (contents); + g_free (contents); + } else { + result = -1.0; + } + g_free (filename); + + return result; +} + double sysfs_get_double (const char *dir, const char *attribute) { diff --git a/src/linux/sysfs-utils.h b/src/linux/sysfs-utils.h index 93416b2..df85137 100644 --- a/src/linux/sysfs-utils.h +++ b/src/linux/sysfs-utils.h @@ -28,5 +28,6 @@ char *sysfs_get_string (const char *dir, const char *attribute); int sysfs_get_int (const char *dir, const char *attribute); gboolean sysfs_get_bool (const char *dir, const char *attribute); gboolean sysfs_file_exists (const char *dir, const char *attribute); +double sysfs_get_double_with_error (const char *dir, const char *attribute); #endif /* __SYSFS_UTILS_H__ */ -- cgit v1.2.1