summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/linux/sysfs-utils.c19
-rw-r--r--src/linux/sysfs-utils.h1
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__ */