diff --git a/src/core/core.c b/src/core/core.c index 5bb7f23e..0446052b 100644 --- a/src/core/core.c +++ b/src/core/core.c @@ -66,7 +66,7 @@ void wcwidth_wrapper_deinit(void); int irssi_gui; int irssi_init_finished; -int reload_config; +int sighup_received; time_t client_start_time; static char *irssi_dir, *irssi_config_file; @@ -83,14 +83,9 @@ const char *get_irssi_config(void) return irssi_config_file; } -static void sig_reload_config(int signo) +static void sig_hup(int signo) { - reload_config = TRUE; -} - -static void sig_quit_on_hup(int signo) -{ - signal_emit("gui exit", 0); + sighup_received = TRUE; } static void read_settings(void) @@ -107,16 +102,13 @@ static void read_settings(void) const char *ignores; struct sigaction act; int n; - int quit_on_hup; ignores = settings_get_str("ignore_signals"); sigemptyset (&act.sa_mask); act.sa_flags = 0; - quit_on_hup = settings_get_bool("quit_on_hup"); - - act.sa_handler = quit_on_hup ? sig_quit_on_hup : sig_reload_config; + act.sa_handler = sig_hup; sigaction(SIGHUP, &act, NULL); for (n = 0; n < sizeof(signals)/sizeof(signals[0]); n++) { diff --git a/src/core/core.h b/src/core/core.h index 6c6c7b61..3c544753 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -13,7 +13,7 @@ extern int irssi_gui; extern int irssi_init_finished; /* TRUE after "irssi init finished" signal is sent */ -extern int reload_config; /* TRUE after received SIGHUP. */ +extern int sighup_received; /* TRUE after received SIGHUP. */ extern time_t client_start_time; void core_preinit(const char *path); diff --git a/src/fe-text/irssi.c b/src/fe-text/irssi.c index ca784bba..c3ded0b9 100644 --- a/src/fe-text/irssi.c +++ b/src/fe-text/irssi.c @@ -339,10 +339,15 @@ int main(int argc, char **argv) /* Does the same as g_main_run(main_loop), except we can call our dirty-checker after each iteration */ while (!quitting) { - if (reload_config) { - /* SIGHUP received, do /RELOAD */ - reload_config = FALSE; - signal_emit("command reload", 1, ""); + if (sighup_received) { + sighup_received = FALSE; + + if (settings_get_bool("quit_on_hup")) { + signal_emit("gui exit", 0); + } + else { + signal_emit("command reload", 1, ""); + } } dirty_check();