/*
event.c -- I/O, timeout and signal event handling
- Copyright (C) 2012 Guus Sliepen <guus@tinc-vpn.org>
+ Copyright (C) 2012-2013 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "system.h"
+#include "dropin.h"
#include "event.h"
#include "net.h"
#include "utils.h"
return 0;
}
-static int signal_compare(const signal_t *a, const signal_t *b) {
- return a->signum - b->signum;
-}
-
static splay_tree_t io_tree = {.compare = (splay_compare_t)io_compare};
static splay_tree_t timeout_tree = {.compare = (splay_compare_t)timeout_compare};
-static splay_tree_t signal_tree = {.compare = (splay_compare_t)signal_compare};
void io_add(io_t *io, io_cb_t cb, void *data, int fd, int flags) {
if(io->cb)
}
#ifndef HAVE_MINGW
+static int signal_compare(const signal_t *a, const signal_t *b) {
+ return a->signum - b->signum;
+}
+
static io_t signalio;
static int pipefd[2] = {-1, -1};
+static splay_tree_t signal_tree = {.compare = (splay_compare_t)signal_compare};
static void signal_handler(int signum) {
unsigned char num = signum;
return true;
}
+void event_flush_output(void) {
+ for splay_each(io_t, io, &io_tree)
+ if(FD_ISSET(io->fd, &writefds))
+ io->cb(io->data, IO_WRITE);
+}
+
void event_exit(void) {
running = false;
}