+ result = udev_handle_dev_action(dev, action);
+
+ udev_device_unref(dev);
+ return result;
+
+fail:
+ udev_device_unref(dev);
+ return -1;
+}
+
+static void udev_log_fn(struct udev __attribute__((unused)) *udev,
+ int __attribute__((unused)) priority, const char *file, int line,
+ const char *fn, const char *format, va_list args)
+{
+ pb_log("libudev: %s %s:%d: ", fn, file, line);
+ vfprintf(pb_log_get_stream(), format, args);
+}
+
+struct pb_udev *udev_init(struct waitset *waitset,
+ struct device_handler *handler)
+{
+ int result;
+ struct pb_udev *udev = talloc(NULL, struct pb_udev);
+