summaryrefslogtreecommitdiff
path: root/rcm-server-lirc.c
diff options
context:
space:
mode:
Diffstat (limited to 'rcm-server-lirc.c')
-rw-r--r--rcm-server-lirc.c28
1 files changed, 17 insertions, 11 deletions
diff --git a/rcm-server-lirc.c b/rcm-server-lirc.c
index e9a82a6..4342cc1 100644
--- a/rcm-server-lirc.c
+++ b/rcm-server-lirc.c
@@ -54,19 +54,11 @@ lirc_read(sd_event_source *s, int fd, uint32_t revents, void *userdata)
return 0;
}
-void
-lirc_close(struct device *device)
-{
- if (device->lirc_fd < 0)
- return;
-
- close(device->lirc_fd);
- device->lirc_fd = -1;
-}
-
int
lirc_setup(struct device *device, const char *path)
{
+ int r;
+
if (!device)
return -EINVAL;
@@ -85,10 +77,24 @@ lirc_setup(struct device *device, const char *path)
device->lirc_fd, EPOLLIN, lirc_read, device) < 0) {
printf("Failed to add event source for lirc device %s: %s\n",
path, strerror(errno));
+ r = -errno;
lirc_close(device);
- return -errno;
+ return r;
}
return 0;
}
+void
+lirc_close(struct device *device)
+{
+ if (!device)
+ return;
+
+ if (device->lirc_fd < 0)
+ return;
+
+ close(device->lirc_fd);
+ device->lirc_fd = -1;
+}
+