added some more infos about default to and feature requests to claws readme
[claws.git] / src / main.c
index 8c91b73b601b9ec3aaee5cce8e80fb3f9d0bd331..e4f384548362575c44c7b88eac8edfed950cccfe 100644 (file)
 #include "gtkutils.h"
 
 #if USE_GPGME
-#include "rfc2015.h"
-#endif /* USE_GPGME */
+#  include "rfc2015.h"
+#endif
+#if USE_SSL
+#  include "ssl.h"
+#endif
+
+#include "version.h"
 
 gchar *prog_version;
 gchar *startup_dir;
@@ -139,10 +144,12 @@ int main(int argc, char *argv[])
        bindtextdomain(PACKAGE, LOCALEDIR);
        textdomain(PACKAGE);
 
+       parse_cmd_opt(argc, 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"));
@@ -154,6 +161,12 @@ 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 */
        userrc = g_strconcat(get_home_dir(), G_DIR_SEPARATOR_S, ".gtkrc",
                             NULL);
@@ -176,8 +189,6 @@ int main(int argc, char *argv[])
        prog_version = PROG_VERSION;
        startup_dir = g_get_current_dir();
 
-       parse_cmd_opt(argc, argv);
-
        CHDIR_RETURN_VAL_IF_FAIL(get_home_dir(), 1);
 
        /* check and create unix domain socket */
@@ -194,6 +205,13 @@ int main(int argc, char *argv[])
        MAKE_DIR_IF_NOT_EXIST(get_news_cache_dir());
        MAKE_DIR_IF_NOT_EXIST(get_mime_tmp_dir());
 
+       if (is_file_exist(RC_DIR G_DIR_SEPARATOR_S "sylpheed.log")) {
+               if (rename(RC_DIR G_DIR_SEPARATOR_S "sylpheed.log",
+                          RC_DIR G_DIR_SEPARATOR_S "sylpheed.log.bak") < 0)
+                       FILE_OP_ERROR("sylpheed.log", "rename");
+       }
+       set_log_file(RC_DIR G_DIR_SEPARATOR_S "sylpheed.log");
+
        if (is_file_exist(RC_DIR G_DIR_SEPARATOR_S "assortrc") &&
            !is_file_exist(RC_DIR G_DIR_SEPARATOR_S "filterrc")) {
                if (rename(RC_DIR G_DIR_SEPARATOR_S "assortrc",
@@ -202,7 +220,7 @@ int main(int argc, char *argv[])
                                      "rename");
        }
 
-       srandom((gint)time(NULL));
+       prefs_common_read_config();
 
 #if USE_GPGME
        if (gpgme_check_engine()) {  /* Also does some gpgme init */
@@ -210,27 +228,27 @@ int main(int argc, char *argv[])
                debug_print("gpgme_engine_version:\n%s\n",
                            gpgme_get_engine_info());
 
-               if (prefs_common.gpgme_warning) {
-                       AlertValue v = alertpanel_message_with_disable
+               if (prefs_common.gpg_warning) {
+                       AlertValue val;
+
+                       val = alertpanel_message_with_disable
                                (_("Warning"),
                                 _("GnuPG is not installed properly.\n"
                                   "OpenPGP support disabled."));
-                       if (v & G_ALERTDISABLE) {
-                               prefs_common.gpgme_warning = FALSE;
-                               prefs_common_save_config();
-                       }
+                       if (val & G_ALERTDISABLE)
+                               prefs_common.gpg_warning = FALSE;
                }
        }
        gpgme_register_idle(idle_function_for_gpgme);
 #endif
 
-       prefs_common_read_config();
        prefs_common_save_config();
        prefs_filter_read_config();
        prefs_filter_write_config();
        prefs_display_header_read_config();
        prefs_display_header_write_config();
-       prefs_scoring_read_config();
+       prefs_filtering_read_config();
+       addressbook_read_file();
 
        gtkut_widget_init();
 
@@ -247,10 +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)
@@ -266,7 +296,13 @@ int main(int argc, char *argv[])
        /* ignore SIGPIPE signal for preventing sudden death of program */
        signal(SIGPIPE, SIG_IGN);
 
+       gdk_threads_enter();
        gtk_main();
+       gdk_threads_leave();
+
+#if USE_PSPELL       
+       gtkpspell_finished(gtkpspellconfig);
+#endif
 
        return 0;
 }
@@ -298,7 +334,8 @@ static void parse_cmd_opt(int argc, char *argv[])
                        puts("Sylpheed version " VERSION);
                        exit(0);
                } else if (!strncmp(argv[i], "--help", 6)) {
-                       g_print(_("Usage: %s [OPTION]...\n"), g_get_prgname());
+                       g_print(_("Usage: %s [OPTION]...\n"),
+                               g_basename(argv[0]));
 
                        puts(_("  --compose [address]    open composition window"));
                        puts(_("  --receive              receive new messages"));
@@ -344,6 +381,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);
 
@@ -365,12 +404,18 @@ void app_will_exit(GtkWidget *widget, gpointer data)
        /* delete temporary files */
        remove_all_files(get_mime_tmp_dir());
 
+       close_log_file();
+
        /* delete unix domain socket */
        gdk_input_remove(lock_socket_tag);
        fd_close(lock_socket);
        filename = get_socket_name();
        unlink(filename);
 
+#if USE_SSL
+       ssl_done();
+#endif
+
        gtk_main_quit();
 }
 
@@ -441,7 +486,7 @@ static void lock_socket_input_cb(gpointer data,
        gchar buf[BUFFSIZE];
 
        sock = fd_accept(source);
-       fd_read(sock, buf, sizeof(buf));
+       fd_gets(sock, buf, sizeof(buf));
        fd_close(sock);
 
        if (!strncmp(buf, "popup", 5)){
@@ -471,4 +516,3 @@ static void open_compose_new_with_recipient(const gchar *address)
        else
                compose_new(NULL);
 }
-