diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2023-04-04 14:16:21 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2023-04-06 15:56:43 +1000 |
commit | 5c89238803c4fee1b59e749e71554b84f3c88cfa (patch) | |
tree | 614736ac3f6aae1cd415fea08dda1a2c25553558 | |
parent | 0011abd1a3220f443415fe71360fc50ac9d6b77e (diff) | |
download | libwacom-5c89238803c4fee1b59e749e71554b84f3c88cfa.tar.gz |
tools: list the kernel name together with the event node
This changes the YAML output of libwacom-list-local-devices but I'm
assuming no-one uses this anyway. The new output lists the device name
together with the kernel name, e.g.
```
devices:
- name: 'Wacom Intuos Pro M'
bus: 'usb'
vid: '0x056a'
pid: '0x0357'
nodes:
- /dev/input/event21: 'Wacom Intuos Pro M Finger'
- /dev/input/event20: 'Wacom Intuos Pro M Pad'
- /dev/input/event19: 'Wacom Intuos Pro M Pen'
```
This output should make it easier to associate duplicate entries with
their respective event node.
Fixes #558
-rw-r--r-- | tools/list-local-devices.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/tools/list-local-devices.c b/tools/list-local-devices.c index 2f2c043..8920c34 100644 --- a/tools/list-local-devices.c +++ b/tools/list-local-devices.c @@ -90,9 +90,26 @@ tablet_print(gpointer data, gpointer user_data) } static void -print_str(gpointer data, gpointer user_data) +print_devnode(gpointer data, gpointer user_data) { - printf(" - %s\n", (char *)data); + const gchar *devnode = data; + gchar *name = NULL; + gsize size; + GError *error = NULL; + + gchar *basename = g_path_get_basename(devnode); + char *path = g_strdup_printf("/sys/class/input/%s/device/name", basename); + + g_free(basename); + if (g_file_get_contents(path, &name, &size, &error)) { + printf(" - %s: '%.*s'\n", devnode, (int)(size - 1), name); + } else { + fprintf(stderr, "%s\n", error->message); + } + if (error) + g_error_free(error); + g_free(name); + g_free(path); } static void @@ -119,7 +136,7 @@ tablet_print_yaml(gpointer data, gpointer user_data) printf(" vid: '0x%04x'\n", vid); printf(" pid: '0x%04x'\n", pid); printf(" nodes: \n"); - g_list_foreach(d->nodes, print_str, NULL); + g_list_foreach(d->nodes, print_devnode, NULL); } static void |