1
0
forked from drath/libratbag

tools: factor out the opening of the dev node

And fixes on a fly a missing unref to udev when udev_device_from_path()
fails.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
This commit is contained in:
Benjamin Tissoires
2015-08-19 13:42:02 -04:00
parent 5bd973a1f1
commit a357766dbb

View File

@@ -179,6 +179,29 @@ button_type_to_str(enum ratbag_button_type type)
return str;
}
static struct ratbag_device *
ratbag_cmd_open_device(struct ratbag *ratbag, const char *path)
{
struct ratbag_device *device;
struct udev *udev;
struct udev_device *udev_device;
udev = udev_new();
udev_device = udev_device_from_path(udev, path);
if (!udev_device) {
udev_unref(udev);
return NULL;
}
device = ratbag_device_new_from_udev_device(ratbag, udev_device);
udev_device_unref(udev_device);
udev_unref(udev);
return device;
}
static int
ratbag_cmd_info(struct ratbag *ratbag, uint32_t flags, int argc, char **argv)
{
@@ -189,8 +212,6 @@ ratbag_cmd_info(struct ratbag *ratbag, uint32_t flags, int argc, char **argv)
int num_profiles, num_buttons;
int i, b;
int rc = 1;
struct udev *udev;
struct udev_device *udev_device;
if (argc != 1) {
usage();
@@ -199,12 +220,7 @@ ratbag_cmd_info(struct ratbag *ratbag, uint32_t flags, int argc, char **argv)
path = argv[0];
udev = udev_new();
udev_device = udev_device_from_path(udev, path);
if (!udev_device)
return 1;
device = ratbag_device_new_from_udev_device(ratbag, udev_device);
device = ratbag_cmd_open_device(ratbag, path);
if (!device) {
error("Looks like '%s' is not supported\n", path);
goto out;
@@ -265,8 +281,6 @@ ratbag_cmd_info(struct ratbag *ratbag, uint32_t flags, int argc, char **argv)
rc = 0;
out:
udev_device_unref(udev_device);
udev_unref(udev);
return rc;
}