#include "sd-messages.h"
#include "bus-util.h"
+#include "fd-util.h"
#include "io-util.h"
#include "libudev-util.h"
#include "string-util.h"
#include "strv.h"
#include "time-util.h"
#include "udev-ctrl.h"
+#include "udev-util.h"
#include "udevadm.h"
#include "unit-def.h"
#include "util.h"
}
int settle_main(int argc, char *argv[], void *userdata) {
- _cleanup_(udev_queue_unrefp) struct udev_queue *queue = NULL;
+ _cleanup_close_ int fd = -1;
usec_t deadline;
- int r, fd;
+ int r;
r = parse_argv(argc, argv);
if (r <= 0)
}
}
- queue = udev_queue_new(NULL);
- if (!queue)
- return log_error_errno(errno, "Failed to get udev queue: %m");
-
- fd = udev_queue_get_fd(queue);
+ fd = udev_queue_init();
if (fd < 0) {
log_debug_errno(fd, "Queue is empty, nothing to watch: %m");
return 0;
return 0;
/* exit if queue is empty */
- if (udev_queue_get_queue_is_empty(queue))
+ r = udev_queue_is_empty();
+ if (r < 0)
+ return log_error_errno(r, "Failed to check queue is empty: %m");
+ if (r > 0)
return 0;
if (now(CLOCK_MONOTONIC) >= deadline)
if (r < 0)
return r;
if (r & POLLIN) {
- r = udev_queue_flush(queue);
+ r = flush_fd(fd);
if (r < 0)
return log_error_errno(r, "Failed to flush queue: %m");
}