/* Single exit point for leaving vifm, performs only minimum common * deinitialization steps. */ static void _gnuc_noreturn vifm_leave(int exit_code, int cquit) { vim_write_dir(cquit ? "" : flist_get_dir(curr_view)); if(cquit && exit_code == EXIT_SUCCESS) { exit_code = EXIT_FAILURE; } term_title_update(NULL); vifm_exit(exit_code); }
static void _gnuc_noreturn shutdown_nicely(int sig, const char descr[]) { LOG_FUNC_ENTER; endwin(); term_title_update(NULL); fuse_unmount_all(); write_info_file(); fprintf(stdout, "Vifm killed by signal: %d (%s).\n", sig, descr); /* Alternatively we could do this sequence: * signal(sig, SIG_DFL); * raise(sig); * but only on *nix systems. */ _Exit(EXIT_FAILURE); }