summaryrefslogtreecommitdiff
path: root/rcm-server-udev.c
diff options
context:
space:
mode:
Diffstat (limited to 'rcm-server-udev.c')
-rw-r--r--rcm-server-udev.c137
1 files changed, 68 insertions, 69 deletions
diff --git a/rcm-server-udev.c b/rcm-server-udev.c
index 77fb403..fec809d 100644
--- a/rcm-server-udev.c
+++ b/rcm-server-udev.c
@@ -16,57 +16,57 @@
#include "rcm-server-udev.h"
void
-device_free(struct device *device)
+rc_device_free(struct rc_device *rcdev)
{
- if (!device)
+ if (!rcdev)
return;
- list_del(&device->list);
- lirc_close(device);
- evdev_close(device);
+ list_del(&rcdev->list);
+ lirc_close(rcdev);
+ evdev_close(rcdev);
- free(device->path);
- free(device->input_name);
- free(device->driver_name);
- free(device->keymap_name);
- free(device->dev_name);
+ free(rcdev->path);
+ free(rcdev->input_name);
+ free(rcdev->driver_name);
+ free(rcdev->keymap_name);
+ free(rcdev->dev_name);
- while (!list_empty(&device->keymaps)) {
- struct keymap *keymap = list_first_entry(&device->keymaps, typeof(*keymap), list);
+ while (!list_empty(&rcdev->keymaps)) {
+ struct keymap *keymap = list_first_entry(&rcdev->keymaps, typeof(*keymap), list);
list_del(&keymap->list);
free(keymap->name);
free(keymap);
}
- free(device);
+ free(rcdev);
}
static void
-device_remove(struct manager *mgr, struct udev_device *udev)
+udev_device_remove(struct manager *mgr, struct udev_device *udev)
{
const char *name;
- struct device *device;
+ struct rc_device *rcdev;
name = udev_device_get_sysname(udev);
printf("Asked to remove device %s\n", name);
- list_for_each_entry(device, &mgr->devices, list) {
- if (strcmp(device->name, name))
+ list_for_each_entry(rcdev, &mgr->rc_devs, list) {
+ if (strcmp(rcdev->name, name))
continue;
- sd_bus_emit_object_removed(mgr->bus, device->path);
- device_free(device);
- mgr->num_devices--;
+ sd_bus_emit_object_removed(mgr->bus, rcdev->path);
+ rc_device_free(rcdev);
+ mgr->num_rc_devs--;
break;
}
}
static void
-device_add(struct manager *mgr, struct udev_device *udev)
+udev_device_add(struct manager *mgr, struct udev_device *udev)
{
const char *name;
const char *str;
char *path;
- struct device *device;
+ struct rc_device *rcdev;
struct udev_enumerate *enumerate;
struct udev_list_entry *devices, *dev_list_entry;
int r;
@@ -77,29 +77,28 @@ device_add(struct manager *mgr, struct udev_device *udev)
return;
}
- device = malloc(sizeof(*device));
- if (!device) {
+ rcdev = malloc(sizeof(*rcdev));
+ if (!rcdev) {
fprintf(stderr, "malloc failed: %m\n");
free(path);
return;
}
- list_init(&device->keymaps);
- device->mgr = mgr;
- device->path = path;
- device->name = device->path + strlen("/org/gnome/RemoteControlManager/");
- device->evdev_fd = -1;
- device->lirc_fd = -1;
- device->error = NULL;
- device->input_name = NULL;
- device->driver_name = NULL;
- device->keymap_name = NULL;
- device->dev_name = NULL;
-
- if (keymaps_load(device) < 0) {
+ list_init(&rcdev->keymaps);
+ rcdev->mgr = mgr;
+ rcdev->path = path;
+ rcdev->name = rcdev->path + strlen("/org/gnome/RemoteControlManager/");
+ rcdev->evdev_fd = -1;
+ rcdev->lirc_fd = -1;
+ rcdev->error = NULL;
+ rcdev->input_name = NULL;
+ rcdev->driver_name = NULL;
+ rcdev->keymap_name = NULL;
+ rcdev->dev_name = NULL;
+
+ if (keymaps_load(rcdev) < 0) {
fprintf(stderr, "failed to load keymaps: %m\n");
- free(path);
- free(device);
+ rc_device_free(rcdev);
return;
}
@@ -141,18 +140,18 @@ device_add(struct manager *mgr, struct udev_device *udev)
}
if (!strcmp(subsys, "input")) {
- r = evdev_setup(device, devnode);
+ r = evdev_setup(rcdev, devnode);
if (r < 0) {
printf("Failed to setup evdev: %s\n", devnode);
- device->error = "Error: Failed to setup evdev";
+ rcdev->error = "Error: Failed to setup evdev";
goto next;
}
} else if (!strcmp(subsys, "lirc")) {
- r = lirc_setup(device, devnode);
+ r = lirc_setup(rcdev, devnode);
if (r < 0) {
printf("Failed to setup lirc: %s\n", devnode);
- device->error = "Error: Failed to setup lirc";
+ rcdev->error = "Error: Failed to setup lirc";
goto next;
}
@@ -175,11 +174,11 @@ next:
for (token = strtok(tmp, "\n"); token; token = strtok(NULL, "\n")) {
if (!strncmp(token, "DRV_NAME=", strlen("DRV_NAME=")))
- device->driver_name = strdup(token + strlen("DRV_NAME="));
+ rcdev->driver_name = strdup(token + strlen("DRV_NAME="));
else if (!strncmp(token, "NAME=", strlen("NAME=")))
- device->keymap_name = strdup(token + strlen("NAME="));
+ rcdev->keymap_name = strdup(token + strlen("NAME="));
else if (!strncmp(token, "DEVNAME=", strlen("DEVNAME=")))
- device->dev_name = strdup(token + strlen("DEVNAME="));
+ rcdev->dev_name = strdup(token + strlen("DEVNAME="));
else if (!strncmp(token, "MAJOR=", strlen("MAJOR=")))
continue;
else if (!strncmp(token, "MINOR=", strlen("MINOR=")))
@@ -195,19 +194,19 @@ next:
printf("\tSubsystem : %s\n", udev_device_get_subsystem(udev));
printf("\tDevtype : %s\n", udev_device_get_devtype(udev));
printf("\tAction : %s\n", udev_device_get_action(udev));
- printf("\tName : %s\n", device->name);
- printf("\tInput name: %s\n", device->input_name);
- printf("\tDriver : %s\n", device->driver_name);
- printf("\tKernel map: %s\n", device->keymap_name);
- printf("\tDev name : %s\n", device->dev_name);
- printf("\tevdev fd : %i\n", device->evdev_fd);
- printf("\tLIRC fd : %i\n", device->lirc_fd);
- printf("\tDBUS path : %s\n", device->path);
+ printf("\tName : %s\n", rcdev->name);
+ printf("\tInput name: %s\n", rcdev->input_name);
+ printf("\tDriver : %s\n", rcdev->driver_name);
+ printf("\tKernel map: %s\n", rcdev->keymap_name);
+ printf("\tDev name : %s\n", rcdev->dev_name);
+ printf("\tevdev fd : %i\n", rcdev->evdev_fd);
+ printf("\tLIRC fd : %i\n", rcdev->lirc_fd);
+ printf("\tDBUS path : %s\n", rcdev->path);
printf("\tProtocols : %s\n",
udev_device_get_sysattr_value(udev, "protocols"));
- list_add(&device->list, &mgr->devices);
- mgr->num_devices++;
+ list_add(&rcdev->list, &mgr->rc_devs);
+ mgr->num_rc_devs++;
sd_bus_emit_object_added(mgr->bus, path);
}
@@ -216,7 +215,7 @@ static int
udev_read(sd_event_source *s, int fd, uint32_t revents, void *userdata)
{
struct manager *mgr = userdata;
- struct udev_device *dev;
+ struct udev_device *udev_dev;
if (revents & EPOLLHUP) {
fprintf(stderr, "udev connection closed!\n");
@@ -228,13 +227,13 @@ udev_read(sd_event_source *s, int fd, uint32_t revents, void *userdata)
return 0;
}
- while ((dev = udev_monitor_receive_device(mgr->udev_mon))) {
- printf("Read device: %s\n", udev_device_get_syspath(dev));
- if (!strcmp(udev_device_get_action(dev), "add"))
- device_add(mgr, dev);
- else if (!strcmp(udev_device_get_action(dev), "remove"))
- device_remove(mgr, dev);
- udev_device_unref(dev);
+ while ((udev_dev = udev_monitor_receive_device(mgr->udev_mon))) {
+ printf("Read device: %s\n", udev_device_get_syspath(udev_dev));
+ if (!strcmp(udev_device_get_action(udev_dev), "add"))
+ udev_device_add(mgr, udev_dev);
+ else if (!strcmp(udev_device_get_action(udev_dev), "remove"))
+ udev_device_remove(mgr, udev_dev);
+ udev_device_unref(udev_dev);
}
return 1;
@@ -245,7 +244,7 @@ udev_setup(struct manager *mgr)
{
struct udev_enumerate *enumerate;
struct udev_list_entry *devices, *dev_list_entry;
- struct udev_device *dev;
+ struct udev_device *udev_dev;
mgr->udev = udev_new();
if (!mgr->udev)
@@ -269,15 +268,15 @@ udev_setup(struct manager *mgr)
continue;
}
- dev = udev_device_new_from_syspath(mgr->udev, path);
- if (!dev) {
+ udev_dev = udev_device_new_from_syspath(mgr->udev, path);
+ if (!udev_dev) {
printf("Failed to create udev device\n");
continue;
}
- device_add(mgr, dev);
+ udev_device_add(mgr, udev_dev);
- udev_device_unref(dev);
+ udev_device_unref(udev_dev);
}
udev_enumerate_unref(enumerate);