summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libsysfs/sysfs/libsysfs.h6
-rw-r--r--libsysfs/sysfs_utils.c15
2 files changed, 9 insertions, 12 deletions
diff --git a/libsysfs/sysfs/libsysfs.h b/libsysfs/sysfs/libsysfs.h
index 6140c3aecb..2f122405d7 100644
--- a/libsysfs/sysfs/libsysfs.h
+++ b/libsysfs/sysfs/libsysfs.h
@@ -43,14 +43,14 @@
#define SYSFS_NAME_LEN 64
#define SYSFS_BUS_ID_SIZE 32
+/* mount path for sysfs, can be overridden by exporting SYSFS_PATH */
+#define SYSFS_MNT_PATH "/sys"
+
enum sysfs_attribute_method {
SYSFS_METHOD_SHOW = 0x01, /* attr can be read by user */
SYSFS_METHOD_STORE = 0x02, /* attr can be changed by user */
};
-/* NOTE: statically define mnt path for sysfs */
-#define SYSFS_MNT_PATH "/sys"
-
/*
* NOTE:
* 1. We have the statically allocated "name" as the first element of all
diff --git a/libsysfs/sysfs_utils.c b/libsysfs/sysfs_utils.c
index 9f6e18f665..210c2a086d 100644
--- a/libsysfs/sysfs_utils.c
+++ b/libsysfs/sysfs_utils.c
@@ -30,20 +30,16 @@
*/
int sysfs_remove_trailing_slash(char *path)
{
- char *c = NULL;
+ size_t len;
if (!path) {
errno = EINVAL;
return 1;
}
- c = strrchr(path, '/');
- if (c == NULL) {
- dprintf("Invalid path %s\n", path);
- errno = EINVAL;
- return 1;
- }
- if (*(c+1) == '\0')
- *c = '\0';
+
+ len = strlen(path);
+ while (len > 0 && path[len-1] == '/')
+ path[--len] = '\0';
return 0;
}
@@ -64,6 +60,7 @@ int sysfs_get_mnt_path(char *mnt_path, size_t len)
sysfs_path_env = getenv(SYSFS_PATH_ENV);
if (sysfs_path_env != NULL) {
safestrcpymax(mnt_path, sysfs_path_env, len);
+ sysfs_remove_trailing_slash(mnt_path);
return 0;
}
safestrcpymax(mnt_path, SYSFS_MNT_PATH, len);