summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2013-10-18 16:10:46 +0200
committerBastien Nocera <hadess@hadess.net>2013-10-18 16:16:54 +0200
commit4b4caf187f590efc41a10646e0f35d6a70098103 (patch)
treee70e7ed8a98f4cbf9409c7a4e15d57ae550d78b2
parent456a9a4ea409cb8630a62a1ecf224e2ed65a817e (diff)
downloadupower-4b4caf187f590efc41a10646e0f35d6a70098103.tar.gz
linux: Add a way to check when sysfs_get_double fails
-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__ */