diff options
-rw-r--r-- | src/linux/sysfs-utils.c | 19 | ||||
-rw-r--r-- | src/linux/sysfs-utils.h | 1 |
2 files changed, 20 insertions, 0 deletions
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 @@ -44,6 +44,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) { double result; 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__ */ |