my stab at fixing the non MT safety code in the LDAP lookup
[claws.git] / src / main.c
index 798b28aed85d00a110c4af2b852c1c06e2ec9007..6b51ea343713530c75f0e18e3c1cf6fb75be12d4 100644 (file)
 #if USE_GPGME
 #  include "rfc2015.h"
 #endif
+#if USE_SSL
+#  include "ssl.h"
+#endif
+
+#include "version.h"
 
 gchar *prog_version;
 gchar *startup_dir;
@@ -144,7 +149,7 @@ int main(int argc, char *argv[])
        gtk_set_locale();
        gtk_init(&argc, &argv);
 
-#if USE_THREADS
+#if USE_THREADS || USE_LDAP
        g_thread_init(NULL);
        if (!g_thread_supported())
                g_error(_("g_thread is not supported by glib.\n"));
@@ -156,6 +161,10 @@ int main(int argc, char *argv[])
        gtk_widget_push_colormap(gdk_imlib_get_colormap());
 #endif
 
+#if USE_SSL
+       ssl_init();
+#endif
+
        srandom((gint)time(NULL));
 
        /* parse gtkrc files */
@@ -239,6 +248,7 @@ int main(int argc, char *argv[])
        prefs_display_header_read_config();
        prefs_display_header_write_config();
        prefs_filtering_read_config();
+       addressbook_read_file();
 
        gtkut_widget_init();
 
@@ -255,12 +265,22 @@ int main(int argc, char *argv[])
        account_read_config_all();
        account_save_config_all();
 
-       if (folder_read_list() < 0) setup(mainwin);
+       if (folder_read_list() < 0) {
+               setup(mainwin);
+               folder_write_list();
+       }
+       if (!account_get_list()) {
+               account_edit_open();
+               account_add();
+       }
+
        account_set_missing_folder();
        folderview_set(folderview);
 
        prefs_scoring_read_config();
 
+       addressbook_read_file();
+
        inc_autocheck_timer_init(mainwin);
 
        if (cmd.receive_all || prefs_common.chk_on_startup)
@@ -278,6 +298,10 @@ int main(int argc, char *argv[])
 
        gtk_main();
 
+#if USE_PSPELL       
+       gtkpspell_finished(gtkpspellconfig);
+#endif
+
        return 0;
 }
 
@@ -355,6 +379,8 @@ void app_will_exit(GtkWidget *widget, gpointer data)
                manage_window_focus_in(mainwin->window, NULL, NULL);
        }
 
+       inc_autocheck_timer_remove();
+
        if (prefs_common.clean_on_exit)
                main_window_empty_trash(mainwin, prefs_common.ask_on_clean);
 
@@ -384,6 +410,10 @@ void app_will_exit(GtkWidget *widget, gpointer data)
        filename = get_socket_name();
        unlink(filename);
 
+#if USE_SSL
+       ssl_done();
+#endif
+
        gtk_main_quit();
 }