X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udevinfo.c;h=a2bc0136913070d569a62cf87a77d07181ab8977;hb=e9b647708440d4bff4c250292b72b0c59087e3df;hp=f36f240f0a710971723a453b927d4ae9f4ae568d;hpb=019d6669076f52994cca199fbbae6eefbb96aeb8;p=elogind.git diff --git a/udevinfo.c b/udevinfo.c index f36f240f0..a2bc01369 100644 --- a/udevinfo.c +++ b/udevinfo.c @@ -67,6 +67,9 @@ static void print_all_attributes(const char *devpath, const char *key) if (dent->d_name[0] == '.') continue; + if (strcmp(dent->d_name, "uevent") == 0) + continue; + strlcpy(filename, path, sizeof(filename)); strlcat(filename, "/", sizeof(filename)); strlcat(filename, dent->d_name, sizeof(filename)); @@ -79,6 +82,8 @@ static void print_all_attributes(const char *devpath, const char *key) if (attr_value == NULL) continue; len = strlcpy(value, attr_value, sizeof(value)); + if(len >= sizeof(value)) + len = sizeof(value) - 1; dbg("attr '%s'='%s'(%zi)", dent->d_name, value, len); /* remove trailing newlines */ @@ -93,7 +98,7 @@ static void print_all_attributes(const char *devpath, const char *key) continue; } - replace_untrusted_chars(value); + replace_chars(value, ALLOWED_CHARS_INPUT); printf(" %s{%s}==\"%s\"\n", key, dent->d_name, value); } } @@ -265,7 +270,6 @@ int main(int argc, char *argv[], char *envp[]) goto exit; } - /* get command line options */ while (1) { option = getopt_long(argc, argv, "aen:p:q:rVh", options, NULL); if (option == -1) @@ -279,7 +283,7 @@ int main(int argc, char *argv[], char *envp[]) strlcpy(name, &optarg[strlen(udev_root)+1], sizeof(name)); else strlcpy(name, optarg, sizeof(name)); - dbg("name: %s\n", name); + dbg("name: %s", name); break; case 'p': /* remove /sys if given */ @@ -287,10 +291,9 @@ int main(int argc, char *argv[], char *envp[]) strlcpy(path, &optarg[strlen(sysfs_path)], sizeof(path)); else strlcpy(path, optarg, sizeof(path)); - dbg("path: %s\n", path); + dbg("path: %s", path); break; case 'q': - dbg("udev query: %s\n", optarg); action = ACTION_QUERY; if (strcmp(optarg, "name") == 0) { query = QUERY_NAME; @@ -385,15 +388,14 @@ int main(int argc, char *argv[], char *envp[]) printf("%s\n", udev->name); break; case QUERY_SYMLINK: - if (list_empty(&udev->symlink_list)) - goto exit; - if (root) - list_for_each_entry(name_loop, &udev->symlink_list, node) - printf("%s/%s ", udev_root, name_loop->name); - else - list_for_each_entry(name_loop, &udev->symlink_list, node) - printf("%s ", name_loop->name); - printf("\n"); + list_for_each_entry(name_loop, &udev->symlink_list, node) { + char c = name_loop->node.next != &udev->symlink_list ? ' ' : '\n'; + + if (root) + printf("%s/%s%c", udev_root, name_loop->name, c); + else + printf("%s%c", name_loop->name, c); + } break; case QUERY_PATH: printf("%s\n", udev->dev->devpath); @@ -413,7 +415,7 @@ int main(int argc, char *argv[], char *envp[]) case ACTION_ATTRIBUTE_WALK: if (path[0] != '\0') { if (print_device_chain(path) != 0) { - fprintf(stderr, "device not found\n"); + fprintf(stderr, "no valid sysfs device found\n"); rc = 4; goto exit; } @@ -424,7 +426,7 @@ int main(int argc, char *argv[], char *envp[]) goto exit; } if (print_device_chain(udev->dev->devpath) != 0) { - fprintf(stderr, "device not found\n"); + fprintf(stderr, "no valid sysfs device found\n"); rc = 4; goto exit; }