1/*	$NetBSD: signal-test.c,v 1.1.1.3 2021/04/07 02:43:15 christos Exp $	*/
2/*
3 * Compile with:
4 * cc -I/usr/local/include -o signal-test \
5 *   signal-test.c -L/usr/local/lib -levent
6 */
7
8#include <sys/types.h>
9
10#include <event2/event-config.h>
11
12#include <sys/stat.h>
13#ifndef _WIN32
14#include <sys/queue.h>
15#include <unistd.h>
16#include <sys/time.h>
17#else
18#include <winsock2.h>
19#include <windows.h>
20#endif
21#include <signal.h>
22#include <fcntl.h>
23#include <stdlib.h>
24#include <stdio.h>
25#include <string.h>
26#include <errno.h>
27
28#include <event2/event.h>
29
30int called = 0;
31
32static void
33signal_cb(evutil_socket_t fd, short event, void *arg)
34{
35	struct event *signal = arg;
36
37	printf("signal_cb: got signal %d\n", event_get_signal(signal));
38
39	if (called >= 2)
40		event_del(signal);
41
42	called++;
43}
44
45int
46main(int argc, char **argv)
47{
48	struct event *signal_int = NULL;
49	struct event_base* base;
50	int ret = 0;
51#ifdef _WIN32
52	WORD wVersionRequested;
53	WSADATA wsaData;
54
55	wVersionRequested = MAKEWORD(2, 2);
56
57	(void) WSAStartup(wVersionRequested, &wsaData);
58#endif
59
60	/* Initialize the event library */
61	base = event_base_new();
62	if (!base) {
63		ret = 1;
64		goto out;
65	}
66
67	/* Initialize one event */
68	signal_int = evsignal_new(base, SIGINT, signal_cb, event_self_cbarg());
69	if (!signal_int) {
70		ret = 2;
71		goto out;
72	}
73	event_add(signal_int, NULL);
74
75	event_base_dispatch(base);
76
77out:
78	if (signal_int)
79		event_free(signal_int);
80	if (base)
81		event_base_free(base);
82	return ret;
83}
84
85