diff options
-rw-r--r-- | util-linux/lsusb.c | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/util-linux/lsusb.c b/util-linux/lsusb.c index 7c5b6b947..c15b8cac3 100644 --- a/util-linux/lsusb.c +++ b/util-linux/lsusb.c | |||
@@ -15,37 +15,41 @@ static int FAST_FUNC fileAction( | |||
15 | int depth UNUSED_PARAM) | 15 | int depth UNUSED_PARAM) |
16 | { | 16 | { |
17 | parser_t *parser; | 17 | parser_t *parser; |
18 | char *tokens[6]; | 18 | char *tokens[4]; |
19 | char *bus = NULL, *device = NULL; | 19 | char *busnum = NULL, *devnum = NULL; |
20 | int product_vid = 0, product_did = 0; | 20 | int product_vid = 0, product_did = 0; |
21 | |||
22 | char *uevent_filename = concat_path_file(fileName, "/uevent"); | 21 | char *uevent_filename = concat_path_file(fileName, "/uevent"); |
22 | |||
23 | parser = config_open2(uevent_filename, fopen_for_read); | 23 | parser = config_open2(uevent_filename, fopen_for_read); |
24 | free(uevent_filename); | 24 | free(uevent_filename); |
25 | 25 | ||
26 | while (config_read(parser, tokens, 6, 1, "\\/=", PARSE_NORMAL)) { | 26 | while (config_read(parser, tokens, 4, 2, "\\/=", PARSE_NORMAL)) { |
27 | if ((parser->lineno == 1) && strcmp(tokens[0], "DEVTYPE") == 0) { | 27 | if ((parser->lineno == 1) && strcmp(tokens[0], "DEVTYPE") == 0) { |
28 | break; | 28 | break; |
29 | } | 29 | } |
30 | 30 | ||
31 | if (strcmp(tokens[0], "DEVICE") == 0) { | ||
32 | bus = xstrdup(tokens[4]); | ||
33 | device = xstrdup(tokens[5]); | ||
34 | continue; | ||
35 | } | ||
36 | |||
37 | if (strcmp(tokens[0], "PRODUCT") == 0) { | 31 | if (strcmp(tokens[0], "PRODUCT") == 0) { |
38 | product_vid = xstrtou(tokens[1], 16); | 32 | product_vid = xstrtou(tokens[1], 16); |
39 | product_did = xstrtou(tokens[2], 16); | 33 | product_did = xstrtou(tokens[2], 16); |
40 | continue; | 34 | continue; |
41 | } | 35 | } |
36 | |||
37 | if (strcmp(tokens[0], "BUSNUM") == 0) { | ||
38 | busnum = xstrdup(tokens[1]); | ||
39 | continue; | ||
40 | } | ||
41 | |||
42 | if (strcmp(tokens[0], "DEVNUM") == 0) { | ||
43 | devnum = xstrdup(tokens[1]); | ||
44 | continue; | ||
45 | } | ||
42 | } | 46 | } |
43 | config_close(parser); | 47 | config_close(parser); |
44 | 48 | ||
45 | if (bus) { | 49 | if (busnum) { |
46 | printf("Bus %s Device %s: ID %04x:%04x\n", bus, device, product_vid, product_did); | 50 | printf("Bus %s Device %s: ID %04x:%04x\n", busnum, devnum, product_vid, product_did); |
47 | free(bus); | 51 | free(busnum); |
48 | free(device); | 52 | free(devnum); |
49 | } | 53 | } |
50 | 54 | ||
51 | return TRUE; | 55 | return TRUE; |