summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJean Delvare <khali@linux-fr.org>2012-01-31 12:54:03 +0000
committerJean Delvare <khali@linux-fr.org>2012-01-31 12:54:03 +0000
commitae32c8a9193e09e405aa140ccc38fa557bcec215 (patch)
tree2ebc6ec69f3a28e84e44b565a1bce07b6a21f3aa /lib
parentc9c0cb604f78d5394c802f4f79a1f3d8fd33d661 (diff)
downloadlm-sensors-git-ae32c8a9193e09e405aa140ccc38fa557bcec215.tar.gz
Upcoming change in sysfs will break the way libsensors detects if
sysfs is mounted. Adjust the implementation so that it still works after said change. git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@6017 7894878c-1315-0410-8ee3-d5d059ff63e0
Diffstat (limited to 'lib')
-rw-r--r--lib/sysfs.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/sysfs.c b/lib/sysfs.c
index 94cea355..9068a71a 100644
--- a/lib/sysfs.c
+++ b/lib/sysfs.c
@@ -24,6 +24,7 @@
#include <sys/types.h>
#include <sys/stat.h>
+#include <sys/vfs.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
@@ -40,6 +41,7 @@
/****************************************************************************/
#define ATTR_MAX 128
+#define SYSFS_MAGIC 0x62656572
/*
* Read an attribute from sysfs
@@ -593,11 +595,11 @@ exit_free:
/* returns !0 if sysfs filesystem was found, 0 otherwise */
int sensors_init_sysfs(void)
{
- struct stat statbuf;
+ struct statfs statfsbuf;
snprintf(sensors_sysfs_mount, NAME_MAX, "%s", "/sys");
- if (stat(sensors_sysfs_mount, &statbuf) < 0
- || statbuf.st_nlink <= 2) /* Empty directory */
+ if (statfs(sensors_sysfs_mount, &statfsbuf) < 0
+ || statfsbuf.f_type != SYSFS_MAGIC)
return 0;
return 1;