static void print_all_attributes(struct udev_device *device, const char *key)
{
+ struct udev *udev = udev_device_get_udev(device);
DIR *dir;
struct dirent *dent;
if (S_ISLNK(statbuf.st_mode))
continue;
- value = udev_device_get_attr_value(device, dent->d_name);
+ value = udev_device_get_sysattr_value(device, dent->d_name);
if (value == NULL)
continue;
dbg(udev, "attr '%s'='%s'(%zi)\n", dent->d_name, value, len);
while (len > 0 && isprint(value[len-1]))
len--;
if (len > 0) {
- dbg(info, "attribute value of '%s' non-printable, skip\n", dent->d_name);
+ dbg(udev, "attribute value of '%s' non-printable, skip\n", dent->d_name);
continue;
}
static void print_record(struct udev_device *device)
{
size_t len;
+ const char *str;
int i;
- struct udev_list *list;
+ struct udev_list_entry *list_entry;
printf("P: %s\n", udev_device_get_devpath(device));
len = strlen(udev_get_dev_path(udev_device_get_udev(device)));
- printf("N: %s\n", &udev_device_get_devnode(device)[len+1]);
+ str = udev_device_get_devnode(device);
+ if (str != NULL)
+ printf("N: %s\n", &str[len+1]);
- i = device_get_devlink_priority(device);
+ i = udev_device_get_devlink_priority(device);
if (i != 0)
printf("L: %i\n", i);
- i = device_get_num_fake_partitions(device);
+ i = udev_device_get_num_fake_partitions(device);
if (i != 0)
printf("A:%u\n", i);
- i = device_get_ignore_remove(device);
+ i = udev_device_get_ignore_remove(device);
if (i != 0)
printf("R:%u\n", i);
- list = udev_device_get_devlinks_list(device);
- while (list != NULL) {
+ udev_list_entry_foreach(list_entry, udev_device_get_devlinks_list_entry(device)) {
len = strlen(udev_get_dev_path(udev_device_get_udev(device)));
- printf("S: %s\n", &udev_list_entry_get_name(list)[len+1]);
- list = udev_list_entry_get_next(list);
- }
-
- list = udev_device_get_properties_list(device);
- while (list != NULL) {
- printf("E: %s=%s\n", udev_list_entry_get_name(list), udev_list_entry_get_value(list));
- list = udev_list_entry_get_next(list);
+ printf("S: %s\n", &udev_list_entry_get_name(list_entry)[len+1]);
}
+ udev_list_entry_foreach(list_entry, udev_device_get_properties_list_entry(device))
+ printf("E: %s=%s\n",
+ udev_list_entry_get_name(list_entry),
+ udev_list_entry_get_value(list_entry));
printf("\n");
}
static int export_devices(struct udev *udev)
{
- struct udev_enumerate *enumerate;
- struct udev_list *list;
+ struct udev_enumerate *udev_enumerate;
+ struct udev_list_entry *list_entry;
- enumerate = udev_enumerate_new_from_subsystems(udev, NULL);
- if (enumerate == NULL)
+ udev_enumerate = udev_enumerate_new(udev);
+ if (udev_enumerate == NULL)
return -1;
- list = udev_enumerate_get_list(enumerate);
- while (list != NULL) {
+ udev_enumerate_scan_devices(udev_enumerate);
+ udev_list_entry_foreach(list_entry, udev_enumerate_get_list_entry(udev_enumerate)) {
struct udev_device *device;
- device = udev_device_new_from_syspath(udev, udev_list_entry_get_name(list));
+ device = udev_device_new_from_syspath(udev, udev_list_entry_get_name(list_entry));
if (device != NULL) {
if (udev_device_get_devnode(device) != NULL)
print_record(device);
udev_device_unref(device);
}
- list = udev_list_entry_get_next(list);
}
- udev_enumerate_unref(enumerate);
+ udev_enumerate_unref(udev_enumerate);
return 0;
}
const char *export_prefix = NULL;
char path[UTIL_PATH_SIZE];
char name[UTIL_PATH_SIZE];
- struct udev_list *list;
+ struct udev_list_entry *list_entry;
int rc = 0;
static const struct option options[] = {
- { "name", 1, NULL, 'n' },
- { "path", 1, NULL, 'p' },
- { "query", 1, NULL, 'q' },
- { "attribute-walk", 0, NULL, 'a' },
- { "export-db", 0, NULL, 'e' },
- { "root", 0, NULL, 'r' },
- { "device-id-of-file", 1, NULL, 'd' },
- { "export", 0, NULL, 'x' },
- { "export-prefix", 1, NULL, 'P' },
- { "version", 0, NULL, 1 }, /* -V outputs braindead format */
- { "help", 0, NULL, 'h' },
+ { "name", required_argument, NULL, 'n' },
+ { "path", required_argument, NULL, 'p' },
+ { "query", required_argument, NULL, 'q' },
+ { "attribute-walk", no_argument, NULL, 'a' },
+ { "export-db", no_argument, NULL, 'e' },
+ { "root", no_argument, NULL, 'r' },
+ { "device-id-of-file", required_argument, NULL, 'd' },
+ { "export", no_argument, NULL, 'x' },
+ { "export-prefix", required_argument, NULL, 'P' },
+ { "version", no_argument, NULL, 1 }, /* -V outputs braindead format */
+ { "help", no_argument, NULL, 'h' },
{}
};
rc = 2;
goto exit;
}
- /* add /sys if needed */
+ /* add sys dir if needed */
if (strncmp(optarg, udev_get_sys_path(udev), strlen(udev_get_sys_path(udev))) != 0) {
util_strlcpy(path, udev_get_sys_path(udev), sizeof(path));
util_strlcat(path, optarg, sizeof(path));
break;
}
fprintf(stderr, "unknown query type\n");
- rc = 2;
+ rc = 3;
goto exit;
case 'r':
if (action == ACTION_NONE)
printf("%s\n", udev_device_get_devnode(device));
} else {
size_t len;
+ const char *node;
len = strlen(udev_get_dev_path(udev));
- printf("%s\n", &udev_device_get_devnode(device)[len+1]);
+ node = udev_device_get_devnode(device);
+ if (node == NULL) {
+ fprintf(stderr, "no device node found\n");
+ rc = 5;
+ goto exit;
+ }
+ printf("%s\n", &udev_device_get_devnode(device)[len+1]);
}
break;
case QUERY_SYMLINK:
- list = udev_device_get_devlinks_list(device);
- while (list != NULL) {
+ list_entry = udev_device_get_devlinks_list_entry(device);
+ while (list_entry != NULL) {
if (root) {
- printf("%s", udev_list_entry_get_name(list));
+ printf("%s", udev_list_entry_get_name(list_entry));
} else {
size_t len;
len = strlen(udev_get_dev_path(udev_device_get_udev(device)));
- printf("%s", &udev_list_entry_get_name(list)[len+1]);
+ printf("%s", &udev_list_entry_get_name(list_entry)[len+1]);
}
- list = udev_list_entry_get_next(list);
- if (list != NULL)
+ list_entry = udev_list_entry_get_next(list_entry);
+ if (list_entry != NULL)
printf(" ");
}
printf("\n");
printf("%s\n", udev_device_get_devpath(device));
goto exit;
case QUERY_ENV:
- list = udev_device_get_properties_list(device);
- while (list != NULL) {
- printf("%s=%s\n", udev_list_entry_get_name(list), udev_list_entry_get_value(list));
- list = udev_list_entry_get_next(list);
+ list_entry = udev_device_get_properties_list_entry(device);
+ while (list_entry != NULL) {
+ printf("%s=%s\n", udev_list_entry_get_name(list_entry), udev_list_entry_get_value(list_entry));
+ list_entry = udev_list_entry_get_next(list_entry);
}
break;
case QUERY_ALL:
case ACTION_ATTRIBUTE_WALK:
if (device == NULL) {
fprintf(stderr, "query needs a valid device specified by --path= or --name=\n");
- rc = 5;
+ rc = 4;
goto exit;
}
print_device_chain(device);
break;
case ACTION_DEVICE_ID_FILE:
if (stat_device(name, export, export_prefix) != 0)
- rc = 6;
+ rc = 1;
break;
case ACTION_ROOT:
printf("%s\n", udev_get_dev_path(udev));