* src/main.c
[claws.git] / src / main.c
index ac5e7f83bba3bb7c2e7e210dcf83b7995734f6a7..937e297ac579ceaf501883de61c13a9982255c53 100644 (file)
 
 #include "version.h"
 
+#include "crash.h"
+
 gchar *prog_version;
 gchar *startup_dir;
+gchar *argv0;
 gboolean debug_mode = FALSE;
 
 static gint lock_socket = -1;
@@ -99,6 +102,8 @@ static struct Cmd {
        GPtrArray *attach_files;
        gboolean status;
        gboolean send;
+       gboolean crash;
+       gchar   *crash_params;
 } cmd;
 
 static void parse_cmd_opt(int argc, char *argv[]);
@@ -152,12 +157,20 @@ int main(int argc, char *argv[])
 
        prog_version = PROG_VERSION;
        startup_dir = g_get_current_dir();
+       argv0 = g_strdup(argv[0]);
 
        parse_cmd_opt(argc, argv);
 
        gtk_set_locale();
        gtk_init(&argc, &argv);
 
+       if (cmd.crash) {
+               crash_main(cmd.crash_params);
+               return 0;
+       }
+
+       crash_install_handlers();
+
 #if USE_THREADS || USE_LDAP
        g_thread_init(NULL);
        if (!g_thread_supported())
@@ -405,7 +418,12 @@ static void parse_cmd_opt(int argc, char *argv[])
                        puts(_("  --version              output version information and exit"));
 
                        exit(1);
+               } else if (!strncmp(argv[i], "--crash", 7)) {
+                       cmd.crash = TRUE;
+                       cmd.crash_params = g_strdup(argv[i + 1]);
+                       i++;
                }
+               
        }
 
        if (cmd.attach_files && cmd.compose == FALSE) {
@@ -444,7 +462,6 @@ static void initial_processing(FolderItem *item, gpointer data)
                              ? item->path 
                              : _("top level folder"));
        debug_print("%s\n", buf);
-       STATUSBAR_PUSH(mainwin, buf);
        g_free(buf);
 
        main_window_cursor_wait(mainwin);