From: Peter Hutterer Date: Fri, 1 Mar 2019 00:27:05 +0000 (+1000) Subject: tools: record: print a helpful error message when we don't have devices X-Git-Tag: 1.12.901~20 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1272db297a1d1fd3682ecea3047bd8f16df4303f;p=platform%2Fupstream%2Flibinput.git tools: record: print a helpful error message when we don't have devices Signed-off-by: Peter Hutterer --- diff --git a/tools/libinput-record.c b/tools/libinput-record.c index e52d20d..e1eacdd 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; }