#include <getopt.h>
#include <stdlib.h>
#include <signal.h>
+#include <string.h>
#include <waiter/waiter.h>
#include <log/log.h>
{
struct device_handler *handler;
struct discover_server *server;
+ struct waitset *waitset;
struct opts opts;
struct udev *udev;
struct user_event *uev;
- FILE *log;
if (opts_parse(&opts, argc, argv)) {
print_usage();
return EXIT_SUCCESS;
}
- log = fopen(opts.log_file, "a");
- assert(log);
- pb_log_set_stream(log);
+ if (strcmp(opts.log_file, "-")) {
+ FILE *log = fopen(opts.log_file, "a");
+
+ assert(log);
+ pb_log_set_stream(log);
+ } else
+ pb_log_set_stream(stderr);
#if defined(DEBUG)
pb_log_always_flush(1);
signal(SIGINT, sigint_handler);
- server = discover_server_init();
+ waitset = waitset_create(NULL);
+
+ server = discover_server_init(waitset);
if (!server)
return EXIT_FAILURE;
discover_server_set_device_source(server, handler);
- udev = udev_init(handler);
+ udev = udev_init(waitset, handler);
if (!udev)
return EXIT_FAILURE;
- uev = user_event_init(handler);
+ uev = user_event_init(waitset, handler);
if (!uev)
return EXIT_FAILURE;
user_event_trigger(uev);
for (running = 1; running;) {
- if (waiter_poll())
+ if (waiter_poll(waitset))
break;
}
device_handler_destroy(handler);
+ waitset_destroy(waitset);
pb_log("--- end ---\n");