aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--util-linux/lsusb.c32
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;