diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2019-03-01 10:27:05 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2019-03-04 04:54:27 +0000 |
commit | 1272db297a1d1fd3682ecea3047bd8f16df4303f (patch) | |
tree | 82c9ed07a8dd4eafe7a83d693fb35acdb085e12f /tools | |
parent | fa73b3b307a2fc23840bb3823fb0f28b6d450164 (diff) | |
download | libinput-1272db297a1d1fd3682ecea3047bd8f16df4303f.tar.gz |
tools: record: print a helpful error message when we don't have devices
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/libinput-record.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/tools/libinput-record.c b/tools/libinput-record.c index e52d20d2..e1eacdd3 100644 --- a/tools/libinput-record.c +++ b/tools/libinput-record.c @@ -1841,6 +1841,8 @@ select_device(void) int ndev, selected_device; int rc; char *device_path; + bool has_eaccess; + int available_devices = 0; ndev = scandir("/dev/input", &namelist, is_event_node, versionsort); if (ndev <= 0) @@ -1857,8 +1859,11 @@ select_device(void) "/dev/input/%s", namelist[i]->d_name); fd = open(path, O_RDONLY); - if (fd < 0) + if (fd < 0) { + if (errno == EACCES) + has_eaccess = true; continue; + } rc = libevdev_new_from_fd(fd, &device); close(fd); @@ -1867,12 +1872,21 @@ select_device(void) fprintf(stderr, "%s: %s\n", path, libevdev_get_name(device)); libevdev_free(device); + available_devices++; } for (int i = 0; i < ndev; i++) free(namelist[i]); free(namelist); + if (available_devices == 0) { + fprintf(stderr, "No devices available. "); + if (has_eaccess) + fprintf(stderr, "Please re-run as root."); + fprintf(stderr, "\n"); + return NULL; + } + fprintf(stderr, "Select the device event number: "); rc = scanf("%d", &selected_device); @@ -2425,7 +2439,6 @@ main(int argc, char **argv) path = ndevices <= 0 ? select_device() : safe_strdup(argv[optind++]); if (path == NULL) { - fprintf(stderr, "Invalid device path\n"); goto out; } |