X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udev%2Fudevadm-info.c;h=d30fc0031ce23b8183207e70dadb6520fdfe9f49;hb=1e78dcbe51419124846e1f35e540cb0253362231;hp=c2ff0bbea3c135a9add01ecb333b263a5eedde9a;hpb=c97f839eed652c3e05eb71bc2ba5fbe40678e7b7;p=elogind.git diff --git a/udev/udevadm-info.c b/udev/udevadm-info.c index c2ff0bbea..d30fc0031 100644 --- a/udev/udevadm-info.c +++ b/udev/udevadm-info.c @@ -60,7 +60,7 @@ static void print_all_attributes(struct udev_device *device, const char *key) 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); @@ -130,23 +130,26 @@ static int print_device_chain(struct udev_device *device) 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); @@ -159,7 +162,6 @@ static void print_record(struct udev_device *device) printf("E: %s=%s\n", udev_list_entry_get_name(list_entry), udev_list_entry_get_value(list_entry)); - printf("\n"); } @@ -217,17 +219,17 @@ int udevadm_info(struct udev *udev, int argc, char *argv[]) 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' }, {} }; @@ -341,7 +343,7 @@ int udevadm_info(struct udev *udev, int argc, char *argv[]) break; } fprintf(stderr, "unknown query type\n"); - rc = 2; + rc = 3; goto exit; case 'r': if (action == ACTION_NONE) @@ -407,9 +409,16 @@ int udevadm_info(struct udev *udev, int argc, char *argv[]) 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: @@ -450,14 +459,14 @@ int udevadm_info(struct udev *udev, int argc, char *argv[]) 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));