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);
static void print_record(struct udev_device *device)
{
size_t len;
+ const char *str;
int i;
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);
printf("E: %s=%s\n",
udev_list_entry_get_name(list_entry),
udev_list_entry_get_value(list_entry));
-
printf("\n");
}
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' },
{}
};
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:
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));