summaryrefslogtreecommitdiff
path: root/rcm-server-evdev.c
diff options
context:
space:
mode:
Diffstat (limited to 'rcm-server-evdev.c')
-rw-r--r--rcm-server-evdev.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/rcm-server-evdev.c b/rcm-server-evdev.c
index 15ae5ff..e39ef3d 100644
--- a/rcm-server-evdev.c
+++ b/rcm-server-evdev.c
@@ -372,11 +372,24 @@ evdev_setup(struct device *device, const char *path)
device->evdev_fd, EPOLLIN, evdev_read, device) < 0) {
printf("Failed to add event source for evdev device %s: %s\n",
path, strerror(errno));
- close(device->evdev_fd);
- device->evdev_fd = -1;
- return -errno;
+ r = -errno;
+ evdev_close(device);
+ return r;
}
return r;
}
+void
+evdev_close(struct device *device)
+{
+ if (!device)
+ return;
+
+ if (device->evdev_fd < 0)
+ return;
+
+ close(device->evdev_fd);
+ device->evdev_fd = -1;
+}
+