svn commit: r280366 - user/jceel/soc2014_evdev/contrib/libevdev/tools

Jakub Wojciech Klama jceel at FreeBSD.org
Mon Mar 23 12:50:37 UTC 2015


Author: jceel
Date: Mon Mar 23 12:50:35 2015
New Revision: 280366
URL: https://svnweb.freebsd.org/changeset/base/280366

Log:
  Further FreeBSD adaptation. Use pselect() instead of non-standard signalfd()
  and argv[0] instead of program_invocation_short_name.

Modified:
  user/jceel/soc2014_evdev/contrib/libevdev/tools/touchpad-edge-detector.c

Modified: user/jceel/soc2014_evdev/contrib/libevdev/tools/touchpad-edge-detector.c
==============================================================================
--- user/jceel/soc2014_evdev/contrib/libevdev/tools/touchpad-edge-detector.c	Mon Mar 23 12:48:42 2015	(r280365)
+++ user/jceel/soc2014_evdev/contrib/libevdev/tools/touchpad-edge-detector.c	Mon Mar 23 12:50:35 2015	(r280366)
@@ -26,7 +26,7 @@
 #endif
 
 #include <libevdev/libevdev.h>
-#include <sys/signalfd.h>
+#include <sys/select.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <limits.h>
@@ -42,8 +42,8 @@
 #define max(a, b) (((a) > (b)) ? (a) : (b))
 
 static int
-usage(void) {
-	printf("Usage: %s /dev/input/event0\n", program_invocation_short_name);
+usage(const char *name) {
+	printf("Usage: %s /dev/input/event0\n", name);
 	printf("\n");
 	printf("This tool reads the touchpad events from the kernel and calculates\n "
 	       "the minimum and maximum for the x and y coordinates, respectively.\n");
@@ -99,24 +99,23 @@ handle_event(struct dimensions *d, const
 
 static int
 mainloop(struct libevdev *dev, struct dimensions *dim) {
-	struct pollfd fds[2];
+	fd_set fds;
 	sigset_t mask;
+	int ev_fd = libevdev_get_fd(dev);
 
-	fds[0].fd = libevdev_get_fd(dev);
-	fds[0].events = POLLIN;
+	FD_ZERO(&fds);
+	FD_SET(ev_fd, &fds);
 
 	sigemptyset(&mask);
 	sigaddset(&mask, SIGINT);
-	fds[1].fd = signalfd(-1, &mask, SFD_NONBLOCK);
-	fds[1].events = POLLIN;
 
 	sigprocmask(SIG_BLOCK, &mask, NULL);
 
-	while (poll(fds, 2, -1)) {
+	while (pselect(ev_fd + 1, &fds, NULL, NULL, NULL, &mask)) {
 		struct input_event ev;
 		int rc;
 
-		if (fds[1].revents)
+		if (FD_ISSET(ev_fd, &fds))
 			break;
 
 		do {
@@ -144,11 +143,11 @@ int main (int argc, char **argv) {
 	struct dimensions dim;
 
 	if (argc < 2)
-		return usage();
+		return usage(argv[0]);
 
 	path = argv[1];
 	if (path[0] == '-')
-		return usage();
+		return usage(argv[0]);
 
 	fd = open(path, O_RDONLY|O_NONBLOCK);
 	if (fd < 0) {


More information about the svn-src-user mailing list