summaryrefslogtreecommitdiff
path: root/rcm-server-evdev.c
diff options
context:
space:
mode:
authorDavid Härdeman <david@hardeman.nu>2017-04-18 22:18:17 +0200
committerDavid Härdeman <david@hardeman.nu>2017-04-18 22:18:17 +0200
commit0c5c949451f6f8f71e4489db19390ba6f931e2af (patch)
treedf5aeaeaf0926a74239d66cb993f317af7f83842 /rcm-server-evdev.c
parent22f81fbe86e2920658948608ef9e87f8c1a03dc2 (diff)
Add a device_free() function
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;
+}
+