
2001-10-12 Chris Toshok <toshok@ximian.com> * main.c (main): call e_passwords_init and e_passwords_shutdown. * mail-session.h: add prototypes for mail_session_{get,add}_password. * mail-session.c (init): empty this out - we use e_passwords instead of a local hashtable. (get_password): use e_passwords_get_password and e_passwords_add_password. (forget_password): use e_passwords_forget_password. (mail_session_remember_password): use e_passwords_remember_password. (mail_session_forget_password): use e_passwords_forget_password. (mail_session_get_password): new function, use e_passwords_get_password. (mail_session_add_password): same, use e_passwords_add_password. (mail_session_forget_passwords): use e_passwords_forget_passwords. * mail-config.c (mail_config_write_on_exit): fix this up so it works as desired with the e_passwords stuff. svn path=/trunk/; revision=13640
157 lines
2.9 KiB
C
157 lines
2.9 KiB
C
/*
|
|
* 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 <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 void
|
|
segv_redirect (int sig)
|
|
{
|
|
if (pthread_self () == mail_gui_thread)
|
|
gnome_segv_handler (sig);
|
|
else {
|
|
pthread_kill (mail_gui_thread, sig);
|
|
pthread_exit (NULL);
|
|
}
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
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.");
|
|
}
|
|
|
|
#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 ();
|
|
|
|
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;
|
|
}
|
|
|
|
GDK_THREADS_ENTER ();
|
|
bonobo_main ();
|
|
|
|
mail_msg_cleanup();
|
|
|
|
GDK_THREADS_LEAVE ();
|
|
|
|
mail_config_write_on_exit ();
|
|
|
|
e_passwords_shutdown ();
|
|
|
|
return 0;
|
|
}
|