aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/main.c b/main.c
new file mode 100644
index 0000000..a66c21c
--- /dev/null
+++ b/main.c
@@ -0,0 +1,35 @@
+#include <signal.h>
+#include <string.h>
+#include <errno.h>
+
+#include "ui-curses.h"
+#include "vis.h"
+
+static Vis *vis;
+
+static void signal_handler(int signum, siginfo_t *siginfo, void *context) {
+ vis_signal_handler(vis, signum, siginfo, context);
+}
+
+int main(int argc, char *argv[]) {
+
+ vis = vis_new(ui_curses_new());
+
+ /* install signal handlers etc. */
+ struct sigaction sa;
+ memset(&sa, 0, sizeof sa);
+ sa.sa_flags = SA_SIGINFO;
+ sa.sa_sigaction = signal_handler;
+ if (sigaction(SIGBUS, &sa, NULL) || sigaction(SIGINT, &sa, NULL))
+ vis_die(vis, "sigaction: %s", strerror(errno));
+
+ sigset_t blockset;
+ sigemptyset(&blockset);
+ sigaddset(&blockset, SIGWINCH);
+ sigprocmask(SIG_BLOCK, &blockset, NULL);
+ signal(SIGPIPE, SIG_IGN);
+
+ vis_run(vis, argc, argv);
+ vis_free(vis);
+ return 0;
+}