X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udevinfo.c;h=fc45f7565d192e778173b15bc9d293c69ce62dd8;hb=225cb03bd851adc6d269b13bdf2b1bfded2b96b9;hp=f36f240f0a710971723a453b927d4ae9f4ae568d;hpb=019d6669076f52994cca199fbbae6eefbb96aeb8;p=elogind.git diff --git a/udevinfo.c b/udevinfo.c index f36f240f0..fc45f7565 100644 --- a/udevinfo.c +++ b/udevinfo.c @@ -31,21 +31,6 @@ #include "udev.h" - -#ifdef USE_LOG -void log_message (int priority, const char *format, ...) -{ - va_list args; - - if (priority > udev_log_priority) - return; - - va_start(args, format); - vsyslog(priority, format, args); - va_end(args); -} -#endif - static void print_all_attributes(const char *devpath, const char *key) { char path[PATH_SIZE]; @@ -67,6 +52,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 +67,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 +83,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); } } @@ -216,7 +206,7 @@ out: return rc; } -int main(int argc, char *argv[], char *envp[]) +int udevinfo(int argc, char *argv[], char *envp[]) { int option; struct udevice *udev; @@ -265,7 +255,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 +268,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 +276,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; @@ -333,7 +321,7 @@ int main(int argc, char *argv[], char *envp[]) printf("udevinfo, version %s\n", UDEV_VERSION); goto exit; case 'h': - printf("Usage: udevinfo OPTIONS\n" + printf("Usage: udevadm info OPTIONS\n" " --query= query database for the specified value:\n" " name name of device node\n" " symlink pointing to node\n" @@ -385,15 +373,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 +400,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 +411,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; }