#include <stdlib.h>
#include <signal.h>
+#include <waiter/waiter.h>
+#include <log/log.h>
+
#include "udev.h"
#include "discover-server.h"
#include "device-handler.h"
-#include "waiter.h"
-#include "log.h"
+
+static int running;
+
+static void sigint_handler(int __attribute__((unused)) signum)
+{
+ running = 0;
+}
int main(void)
{
/* we look for closed sockets when we write, so ignore SIGPIPE */
signal(SIGPIPE, SIG_IGN);
+ signal(SIGINT, sigint_handler);
+
server = discover_server_init();
if (!server)
return EXIT_FAILURE;
discover_server_set_device_source(server, handler);
- udev = udev_init();
+ udev = udev_init(handler);
if (!udev)
return EXIT_FAILURE;
- for (;;) {
+ for (running = 1; running;) {
if (waiter_poll())
- return EXIT_FAILURE;
+ break;
}
+ device_handler_destroy(handler);
+
return EXIT_SUCCESS;
}