From 93ca11e4be8f4414f09ba60d9d8c77ec8ff2ec3b Mon Sep 17 00:00:00 2001 From: "kay.sievers@vrfy.org" Date: Sun, 27 Mar 2005 00:09:05 +0100 Subject: [PATCH] [PATCH] libsysfs: remove trailing slash on SYSFS_PATH override --- libsysfs/sysfs/libsysfs.h | 6 +++--- libsysfs/sysfs_utils.c | 15 ++++++--------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/libsysfs/sysfs/libsysfs.h b/libsysfs/sysfs/libsysfs.h index 6140c3ae..2f122405 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 9f6e18f6..210c2a08 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); -- 2.39.5