* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
-#include "sysfs/libsysfs.h"
+#include "libsysfs.h"
#include "sysfs.h"
-#ifndef __KLIBC__
-#include <mntent.h>
-#endif
-static int sort_char(void *new_elem, void *old_elem)
+static int sort_char(void *new, void *old)
{
- return ((strncmp((char *)new_elem, (char *)old_elem,
- strlen((char *)new_elem))) < 0 ? 1 : 0);
+ return ((strncmp((char *)new, (char *)old,
+ strlen((char *)new))) < 0 ? 1 : 0);
}
/**
static int sysfs_get_fs_mnt_path(const char *fs_type,
char *mnt_path, size_t len)
{
-#ifdef __KLIBC__
- safestrncpy(mnt_path, "/sys", len);
- return 0;
-#else
FILE *mnt;
struct mntent *mntent;
int ret = 0;
if (strcmp(mntent->mnt_type, fs_type) == 0) {
dirlen = strlen(mntent->mnt_dir);
if (dirlen <= (len - 1)) {
- safestrncpy(mnt_path, mntent->mnt_dir, len);
+ safestrcpymax(mnt_path, mntent->mnt_dir, len);
} else {
dprintf("Error - mount path too long\n");
ret = -1;
ret = -1;
return ret;
-#endif
}
/*
}
sysfs_path = getenv(SYSFS_PATH_ENV);
if (sysfs_path != NULL) {
- safestrncpy(mnt_path, sysfs_path, len);
+ safestrcpymax(mnt_path, sysfs_path, len);
if ((sysfs_remove_trailing_slash(mnt_path)) != 0)
return 1;
} else
}
}
n++;
- safestrncpy(name, n, len);
+ safestrcpymax(name, n, len);
return 0;
}
} else {
safestrcpy(temp_path, d);
}
- safestrncpy(target, temp_path, len);
+ safestrcpymax(target, temp_path, len);
break;
/*
* relative path
if (*s == '/')
count++;
}
- safestrncpy(s, d, (SYSFS_PATH_MAX-strlen(devdir)));
- safestrncpy(target, devdir, len);
+ safestrcpymax(s, d, (SYSFS_PATH_MAX-strlen(devdir)));
+ safestrcpymax(target, devdir, len);
break;
case '/':
/* absolute path - copy as is */
- safestrncpy(target, linkpath, len);
+ safestrcpymax(target, linkpath, len);
break;
default:
/* relative path from this directory */
} else {
safestrcpy(temp_path, linkpath);
}
- safestrncpy(target, temp_path, len);
+ safestrcpymax(target, temp_path, len);
}
return 0;
}
dlist_for_each_data(dir->subdirs, cur,
struct sysfs_directory) {
subsys_name = (char *)calloc(1, SYSFS_NAME_LEN);
- safestrncpy(subsys_name, cur->name, SYSFS_NAME_LEN);
+ safestrcpymax(subsys_name, cur->name, SYSFS_NAME_LEN);
dlist_unshift_sorted(list, subsys_name, sort_char);
}
}
if (c == NULL)
goto out;
*c = '\0';
- safestrncpy(c, SYSFS_BLOCK_NAME,
+ safestrcpymax(c, SYSFS_BLOCK_NAME,
sizeof(sysfs_path) - strlen(sysfs_path));
if ((sysfs_path_is_dir(sysfs_path)) == 0) {
subsys_name = (char *)calloc(1, SYSFS_NAME_LEN);
- safestrncpy(subsys_name, SYSFS_BLOCK_NAME,
+ safestrcpymax(subsys_name, SYSFS_BLOCK_NAME,
SYSFS_NAME_LEN);
dlist_unshift_sorted(list, subsys_name, sort_char);
}
dlist_for_each_data(dir->links, cur,
struct sysfs_link) {
device_name = (char *)calloc(1, SYSFS_NAME_LEN);
- safestrncpy(device_name, cur->name, SYSFS_NAME_LEN);
+ safestrcpymax(device_name, cur->name, SYSFS_NAME_LEN);
dlist_unshift_sorted(list, device_name, sort_char);
}
}