diff options
Diffstat (limited to 'rcm-server-lirc.c')
-rw-r--r-- | rcm-server-lirc.c | 28 |
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; +} + |