summaryrefslogtreecommitdiffstats
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/main.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/main.c b/src/main.c
index 401fb2d..7288332 100644
--- a/src/main.c
+++ b/src/main.c
@@ -3,10 +3,20 @@
#include <math.h>
#include <libwebsockets.h>
#include <assert.h>
+#include <signal.h>
#include <lib.c>
#include <ui.c>
#include <api.c>
+int dc_interrupted;
+void dc_signal (int i) {
+ dc_interrupted++;
+ return;
+}
int main (int argc, char * argv[]) {
+ if (DC_JSON_PATHS_LENGTH != sizeof(dc_json_paths)/sizeof(dc_json_paths[0]) || DC_JSON_PATHS_LENGTH > 255) {
+ fprintf(stderr, "json paths enum: %d, array: %d (255 is max, must be same)\n", DC_JSON_PATHS_LENGTH, sizeof(dc_json_paths)/sizeof(dc_json_paths[0]));
+ return 1;
+ }
struct dc_program * p = dc_program_init();
struct dc_client * client = dc_client_init();
lws_set_log_level(0xFF /* all message types */, NULL /* not change output location - cerr */);
@@ -18,9 +28,10 @@ int main (int argc, char * argv[]) {
.client = client
};
dc_api_i(i);
- while (1)
+ signal(SIGINT, dc_signal);
+ while (!dc_interrupted)
i = dc_api_o(i);
/* dc_ui(argc, argv); */
- dc_program_free(p);
+ dc_program_free(p, DC_UNSET);
return 0;
}