summaryrefslogtreecommitdiffstats
path: root/tests/test-cache-mngr.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-cache-mngr.c')
-rw-r--r--tests/test-cache-mngr.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/tests/test-cache-mngr.c b/tests/test-cache-mngr.c
index 4d70e31..9a3da2d 100644
--- a/tests/test-cache-mngr.c
+++ b/tests/test-cache-mngr.c
@@ -1,4 +1,7 @@
#include "../src/utils.h"
+#include <signal.h>
+
+static int quit = 0;
static void change_cb(struct nl_cache *cache, struct nl_object *obj,
int action)
@@ -18,12 +21,19 @@ static void change_cb(struct nl_cache *cache, struct nl_object *obj,
nl_object_dump(obj, &dp);
}
+static void sigint(int arg)
+{
+ quit = 1;
+}
+
int main(int argc, char *argv[])
{
struct nl_cache_mngr *mngr;
struct nl_cache *lc, *nc, *ac, *rc;
struct nl_handle *handle;
+ signal(SIGINT, sigint);
+
nltool_init(argc, argv);
handle = nltool_alloc_handle();
@@ -58,9 +68,9 @@ int main(int argc, char *argv[])
return -1;
}
- for (;;) {
+ while (!quit) {
int err = nl_cache_mngr_poll(mngr, 5000);
- if (err < 0) {
+ if (err < 0 && err != -EINTR) {
nl_perror("nl_cache_mngr_poll()");
return -1;
}
@@ -68,6 +78,7 @@ int main(int argc, char *argv[])
}
nl_cache_mngr_free(mngr);
+ nl_handle_destroy(handle);
return 0;
}