aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--util-linux/lsusb.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/util-linux/lsusb.c b/util-linux/lsusb.c
index 262c70a1b..0a9e505f4 100644
--- a/util-linux/lsusb.c
+++ b/util-linux/lsusb.c
@@ -24,6 +24,24 @@
24 24
25#include "libbb.h" 25#include "libbb.h"
26 26
27static char * FAST_FUNC add_sysfs_prop(const char *dir, const char *suffix,
28 char *buf, size_t size)
29{
30 char *filename;
31 ssize_t len;
32
33 filename = concat_path_file(dir, suffix);
34 len = open_read_close(filename, buf, size - 1);
35 free(filename);
36
37 if (len < 0)
38 len = 0;
39
40 buf[len] = '\0';
41
42 return trim(buf);
43}
44
27static int FAST_FUNC fileAction(struct recursive_state *state UNUSED_PARAM, 45static int FAST_FUNC fileAction(struct recursive_state *state UNUSED_PARAM,
28 const char *fileName, 46 const char *fileName,
29 struct stat *statbuf UNUSED_PARAM) 47 struct stat *statbuf UNUSED_PARAM)
@@ -61,7 +79,15 @@ static int FAST_FUNC fileAction(struct recursive_state *state UNUSED_PARAM,
61 config_close(parser); 79 config_close(parser);
62 80
63 if (busnum) { 81 if (busnum) {
64 printf("Bus %s Device %s: ID %04x:%04x\n", busnum, devnum, product_vid, product_did); 82 char name[256], *p;
83
84 p = add_sysfs_prop(fileName, "/manufacturer", name, sizeof(name) - 1);
85 if (p != name)
86 p = stpcpy(p, " ");
87 add_sysfs_prop(fileName, "/product", p, name + sizeof(name) - p);
88
89 printf("Bus %s Device %s: ID %04x:%04x %s\n", busnum, devnum,
90 product_vid, product_did, name);
65 free(busnum); 91 free(busnum);
66 free(devnum); 92 free(devnum);
67 } 93 }