summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2019-03-01 10:27:05 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2019-03-04 04:54:27 +0000
commit1272db297a1d1fd3682ecea3047bd8f16df4303f (patch)
tree82c9ed07a8dd4eafe7a83d693fb35acdb085e12f /tools
parentfa73b3b307a2fc23840bb3823fb0f28b6d450164 (diff)
downloadlibinput-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.c17
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;
}