Automatically set gtk-auto-mnemonics on Win32; fixes bug #3179
[claws.git] / src / main.c
index 131c807f65d10d5554686b928912584bad6dc2fc..37b26d5ccaade9fca3d265b8865000f5eb75ff2a 100644 (file)
@@ -49,6 +49,7 @@
 #include <sys/file.h>
 #endif
 
+#include "file_checker.h"
 #include "wizard.h"
 #ifdef HAVE_STARTUP_NOTIFICATION
 # define SN_API_NOT_YET_FROZEN
 #include "menu.h"
 #include "quicksearch.h"
 #include "advsearch.h"
+#include "avatars.h"
 
 #ifdef HAVE_LIBETPAN
 #include "imap-thread.h"
@@ -641,6 +643,8 @@ static void sc_session_manager_connect(MainWindow *mainwin)
                        vals[0].length = strlen(g_get_user_name()?g_get_user_name():"");
                        vals[0].value = g_strdup(g_get_user_name()?g_get_user_name():"");
                        sc_client_set_value (mainwin, SmUserID, SmARRAY8, 1, vals);
+
+                       g_free(vals);
                }
        }
 }
@@ -953,7 +957,7 @@ static void reset_statistics(void)
        session_stats.forwarded = 0;
        session_stats.time_started = time(NULL);
 }
-               
+
 int main(int argc, char *argv[])
 {
 #ifdef HAVE_DBUS_GLIB
@@ -1056,6 +1060,10 @@ int main(int argc, char *argv[])
                        "gtk-theme-name",
                        "MS-Windows",
                        "XProperty");
+       gtk_settings_set_long_property(gtk_settings_get_default(),
+                       "gtk-auto-mnemonics",
+                       TRUE,
+                       "XProperty");
 #endif
 
 #ifdef HAVE_NETWORKMANAGER_SUPPORT
@@ -1277,6 +1285,9 @@ int main(int argc, char *argv[])
 
        mainwin = main_window_create();
 
+       if (!check_file_integrity())
+               exit(1);
+
 #ifdef HAVE_NETWORKMANAGER_SUPPORT
        networkmanager_state_change_cb(nm_proxy,NULL,mainwin);
 #endif
@@ -1399,6 +1410,7 @@ int main(int argc, char *argv[])
 
        claws_register_idle_function(claws_gtk_idle);
 
+       avatars_init();
        prefs_toolbar_init();
 
        num_folder_class = g_list_length(folder_get_list());
@@ -1651,6 +1663,7 @@ static void exit_claws(MainWindow *mainwin)
 
        matcher_done();
        prefs_toolbar_done();
+       avatars_done();
 
 #ifndef USE_NEW_ADDRBOOK
        addressbook_destroy();
@@ -2017,7 +2030,7 @@ static void initial_processing(FolderItem *item, gpointer data)
 
 static gboolean draft_all_messages(void)
 {
-       GList *compose_list = NULL;
+       const GList *compose_list = NULL;
        
        compose_clear_exit_drafts();
        compose_list = compose_get_compose_list();
@@ -2125,11 +2138,13 @@ gboolean claws_is_starting(void)
 gchar *claws_get_socket_name(void)
 {
        static gchar *filename = NULL;
-       const gchar *socket_dir = NULL;
+       gchar *socket_dir = NULL;
        gchar md5sum[33];
 
        if (filename == NULL) {
                struct stat st;
+               gint stat_ok;
+
                socket_dir = g_strdup_printf("%s%cclaws-mail-%d",
                                           g_get_tmp_dir(), G_DIR_SEPARATOR,
 #if HAVE_GETUID
@@ -2137,10 +2152,11 @@ gchar *claws_get_socket_name(void)
 #else
                                           0);
 #endif
-               if (stat(socket_dir, &st) < 0 && errno != ENOENT) {
+               stat_ok = stat(socket_dir, &st);
+               if (stat_ok < 0 && errno != ENOENT) {
                        g_print("Error stat'ing socket_dir %s: %s\n",
                                socket_dir, strerror(errno));
-               } else if (S_ISSOCK(st.st_mode)) {
+               } else if (stat_ok == 0 && S_ISSOCK(st.st_mode)) {
                        /* old versions used a sock in $TMPDIR/claws-mail-$UID */
                        debug_print("Using legacy socket %s\n", socket_dir);
                        filename = g_strdup(socket_dir);
@@ -2156,6 +2172,7 @@ gchar *claws_get_socket_name(void)
 
                filename = g_strdup_printf("%s%c%s", socket_dir, G_DIR_SEPARATOR,
                                           md5sum);
+               g_free(socket_dir);
                debug_print("Using control socket %s\n", filename);
        }
 
@@ -2190,10 +2207,10 @@ static gint prohibit_duplicate_launch(void)
                x_display = g_strdup(g_getenv("DISPLAY"));
 
        if (uxsock < 0) {
+               gint ret;
 #if HAVE_FLOCK
                gchar *socket_lock;
                gint lock_fd;
-               gint ret;
                /* If connect failed, no other process is running.
                 * Unlink the potentially existing socket, then
                 * open it. This has to be done locking a temporary