*
* Copyright (C) 2004 Kay Sievers <kay.sievers@vrfy.org>
*
- *
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation version 2 of the License.
#include <errno.h>
#include "libsysfs/sysfs/libsysfs.h"
-#include "libsysfs/dlist.h"
+#include "udev_libc_wrapper.h"
#include "udev.h"
#include "udev_utils.h"
#include "udev_version.h"
#include "logging.h"
-#define SYSFS_VALUE_SIZE 256
-
-#ifdef LOG
+#ifdef USE_LOG
void log_message (int level, const char *format, ...)
{
va_list args;
static void print_all_attributes(struct dlist *attr_list)
{
struct sysfs_attribute *attr;
- char value[SYSFS_VALUE_SIZE];
+ char value[VALUE_SIZE];
int len;
dlist_for_each_data(attr_list, attr, struct sysfs_attribute) {
if (attr->value != NULL) {
- strfieldcpy(value, attr->value);
+ strlcpy(value, attr->value, sizeof(value));
len = strlen(value);
if (len == 0)
continue;
return retval;
}
-static int print_dump(struct udevice *udev) {
- printf("%s:%s/%s\n", udev->devpath, udev_root, udev->name);
+static int print_dump(const char *devpath, const char *name) {
+ printf("%s=%s/%s\n", devpath, udev_root, name);
return 0;
}
int root = 0;
int attributes = 0;
enum query_type query = NONE;
- char path[NAME_SIZE] = "";
- char name[NAME_SIZE] = "";
- char temp[NAME_SIZE];
+ char path[PATH_SIZE] = "";
+ char name[PATH_SIZE] = "";
+ char temp[PATH_SIZE];
struct name_entry *name_loop;
char *pos;
int retval = 0;
switch (option) {
case 'n':
dbg("udev name: %s\n", optarg);
- strfieldcpy(name, optarg);
+ strlcpy(name, optarg, sizeof(name));
break;
case 'p':
dbg("udev path: %s\n", optarg);
- strfieldcpy(path, optarg);
+ strlcpy(path, optarg, sizeof(path));
break;
case 'q':
break;
case 'd':
- udev_db_call_foreach(print_dump);
+ udev_db_dump_names(print_dump);
goto exit;
case 'V':
if (path[0] != '/') {
/* prepend '/' if missing */
strcpy(temp, "/");
- strfieldcat(temp, path);
+ strlcpy(temp, path, sizeof(temp));
pos = temp;
} else {
pos = path;
}
if (name[0] != '\0') {
- char devpath[NAME_SIZE];
+ char devpath[PATH_SIZE];
int len;
/* remove udev_root if given */
} else
pos = name;
- retval = udev_db_search_name(devpath, DEVPATH_SIZE, pos);
+ retval = udev_db_search_name(devpath, sizeof(devpath), pos);
if (retval != 0) {
printf("device not found in database\n");
goto exit;
} else {
if (strncmp(path, sysfs_path, strlen(sysfs_path)) != 0) {
/* prepend sysfs mountpoint if not given */
- strfieldcpy(temp, path);
- strfieldcpy(path, sysfs_path);
- strfieldcat(path, temp);
+ snprintf(temp, sizeof(temp), "%s%s", sysfs_path, path);
+ temp[sizeof(temp)-1] = '\0';
+ strlcpy(path, temp, sizeof(temp));
}
print_device_chain(path);
goto exit;