inc_autocheck_timer_init(mainwin);
+ /* ignore SIGPIPE signal for preventing sudden death of program */
+#ifdef G_OS_UNIX
+ signal(SIGPIPE, SIG_IGN);
+#endif
if (cmd.online_mode == ONLINE_MODE_OFFLINE) {
main_window_toggle_work_offline(mainwin, TRUE, FALSE);
}
static void save_all_caches(FolderItem *item, gpointer data)
{
- gint free_caches = GPOINTER_TO_INT(data);
if (!item->cache) {
return;
}
if (item->opened)
folder_item_close(item);
- if (free_caches)
- folder_item_free_cache(item, TRUE);
- else
- folder_item_write_cache(item);
+ folder_item_free_cache(item, TRUE);
}
static gboolean sc_exiting = FALSE;
/* save all state before exiting */
folder_write_list();
- folder_func_to_all_folders(save_all_caches, GINT_TO_POINTER(1));
+ folder_func_to_all_folders(save_all_caches, NULL);
main_window_get_size(mainwin);
main_window_get_position(mainwin);
static void quit_signal_handler(int sig)
{
-#ifdef SIGPIPE
- if (sig == SIGPIPE) {
- debug_print("caugth SIGPIPE, maybe X closing!\n");
- signal(SIGPIPE, SIG_IGN); /* ignore following sigpipes */
- folder_write_list();
- folder_func_to_all_folders(save_all_caches, GINT_TO_POINTER(0));
- return;
- }
-#endif
debug_print("Quitting on signal %d\n", sig);
g_timeout_add(0, clean_quit, NULL);
#ifdef SIGHUP
sigaddset(&mask, SIGHUP);
#endif
-#ifdef SIGPIPE
- sigaddset(&mask, SIGPIPE);
-#endif
act.sa_handler = quit_signal_handler;
act.sa_mask = mask;
#ifdef SIGHUP
sigaction(SIGHUP, &act, 0);
#endif
-#ifdef SIGPIPE
- sigaction(SIGPIPE, &act, 0);
-#endif
sigprocmask(SIG_UNBLOCK, &mask, 0);
#endif /* !G_OS_WIN32 */