From f98c77432bf2488434423eabd21c5226e242c4db Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Tue, 8 Jul 2014 20:21:51 -0400 Subject: [PATCH] exit toxic properly on ^C --- src/toxic.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/toxic.c b/src/toxic.c index 1843d47..c148573 100644 --- a/src/toxic.c +++ b/src/toxic.c @@ -78,12 +78,12 @@ struct arg_opts { } arg_opts; struct _Winthread Winthread; - struct user_settings *user_settings = NULL; -static void ignore_SIGINT(int sig) +static bool sig_exit_toxic = false; +static void catch_SIGINT(int sig) { - return; + sig_exit_toxic = true; } static void flag_window_resize(int sig) @@ -565,7 +565,7 @@ int main(int argc, char *argv[]) /* Make sure all written files are read/writeable only by the current user. */ umask(S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); - signal(SIGINT, ignore_SIGINT); + signal(SIGINT, catch_SIGINT); config_err = create_user_config_dir(user_config_dir); @@ -652,6 +652,9 @@ int main(int argc, char *argv[]) last_save = cur_time; } + if (sig_exit_toxic) + exit_toxic_success(m); + usleep(40000); }