diff options
Diffstat (limited to 'mail/main.c')
-rw-r--r-- | mail/main.c | 175 |
1 files changed, 0 insertions, 175 deletions
diff --git a/mail/main.c b/mail/main.c deleted file mode 100644 index d6c2e7ffcb..0000000000 --- a/mail/main.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * main.c: The core of the mail component - * - * Author: - * Miguel de Icaza (miguel@ximian.com) - * - * (C) 2000 Ximian, Inc. - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <signal.h> - -#include <libgnome/gnome-defs.h> -#include <libgnome/gnome-sound.h> -#include <libgnomeui/gnome-init.h> -#include <bonobo/bonobo-main.h> -#include <bonobo/bonobo-object-directory.h> -#include <glade/glade.h> -#include <liboaf/liboaf.h> -#include <libgnomevfs/gnome-vfs.h> - -#ifdef GTKHTML_HAVE_GCONF -#include <gconf/gconf.h> -#endif - -#include <gal/widgets/e-gui-utils.h> -#include <gal/widgets/e-cursors.h> -#include <gal/widgets/e-unicode.h> - -#include "e-util/e-passwords.h" - -#include "component-factory.h" -#include "composer/evolution-composer.h" -#include "mail.h" -#include "mail-mt.h" - -/*#define DO_MCHECK*/ - -#ifdef DO_MCHECK -static int blowup(int status) -{ - switch(status) { - case 1: - printf("Double free failure\n"); - break; - case 2: - printf("Memory clobbered before block\n"); - break; - case 3: - printf("Memory clobbered after block\n"); - break; - } - abort(); - return status; -} -#endif - -/* The GNOME SEGV handler will lose if it's not run from the main Gtk - * thread. So if we crash in another thread, redirect the signal. - */ -static void (*gnome_segv_handler) (int); - -static GStaticMutex segv_mutex = G_STATIC_MUTEX_INIT; - -static void -segv_redirect (int sig) -{ - if (pthread_self () == mail_gui_thread) - gnome_segv_handler (sig); - else { - pthread_kill (mail_gui_thread, sig); - /* We can't return from the signal handler or the - * thread may SEGV again. But we can't pthread_exit, - * because then the thread may get cleaned up before - * bug-buddy can get a stack trace. So we block by - * trying to lock a mutex we know is already locked. - */ - g_static_mutex_lock (&segv_mutex); - } -} - -int -main (int argc, char *argv []) -{ - CORBA_ORB orb; - struct sigaction sa, osa; - -#ifdef DO_MCHECK - /* used to make elfence work */ -#if 0 - free (malloc (10)); -#else - /*mtrace();*/ - mcheck(blowup); -#endif -#endif - bindtextdomain (PACKAGE, EVOLUTION_LOCALEDIR); - textdomain (PACKAGE); - - g_thread_init (NULL); - - gnome_init_with_popt_table ("evolution-mail-component", VERSION, - argc, argv, oaf_popt_options, 0, NULL); - - sigaction (SIGSEGV, NULL, &osa); - if (osa.sa_handler != SIG_DFL) { - sa.sa_flags = 0; - sigemptyset (&sa.sa_mask); - sa.sa_handler = segv_redirect; - sigaction (SIGSEGV, &sa, NULL); - sigaction (SIGBUS, &sa, NULL); - sigaction (SIGFPE, &sa, NULL); - gnome_segv_handler = osa.sa_handler; - g_static_mutex_lock (&segv_mutex); - } - - orb = oaf_init (argc, argv); - - if (bonobo_init (orb, CORBA_OBJECT_NIL, - CORBA_OBJECT_NIL) == FALSE) { - g_error ("Mail component could not initialize Bonobo.\n" - "If there was a warning message about the " - "RootPOA, it probably means\nyou compiled " - "Bonobo against GOAD instead of OAF."); - } - - gtk_widget_push_visual (gdk_rgb_get_visual ()); - gtk_widget_push_colormap (gdk_rgb_get_cmap ()); - -#ifdef GTKHTML_HAVE_GCONF - gconf_init (argc, argv, NULL); -#endif - - glade_gnome_init (); - - gnome_vfs_init (); - - e_cursors_init (); - - e_passwords_init ("Mail"); - - mail_config_init (); - mail_msg_init (); - - gnome_sound_init ("localhost"); - - component_factory_init (); - evolution_composer_factory_init (composer_send_cb, - composer_postpone_cb); - - if (gdk_threads_mutex) { - g_mutex_free (gdk_threads_mutex); - gdk_threads_mutex = NULL; - } - - g_print ("Evolution Mail ready and running.\n"); - - GDK_THREADS_ENTER (); - bonobo_main (); - - mail_msg_cleanup(); - - GDK_THREADS_LEAVE (); - - mail_config_write_on_exit (); - - e_passwords_shutdown (); - - gnome_sound_shutdown (); - - return 0; -} |