diff options
-rw-r--r-- | mail/ChangeLog | 10 | ||||
-rw-r--r-- | mail/evolution-mbox-importer.c | 222 | ||||
-rw-r--r-- | mail/evolution-mbox-importer.h | 35 | ||||
-rw-r--r-- | mail/evolution-outlook-importer.c | 289 | ||||
-rw-r--r-- | mail/evolution-outlook-importer.h | 35 | ||||
-rw-r--r-- | mail/mail-folder-cache.c | 11 |
6 files changed, 14 insertions, 588 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index c4321aed28..7bf2b76102 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,13 @@ +2001-10-11 Dan Winship <danw@ximian.com> + + * mail-folder-cache.c (update_1folder): No longer need to pass + folder display name to storage update_folder methods. + (setup_folder, free_folder_info): Meaning we no longer need to + keep track of it. + + * evolution-outlook-importer.[ch], evolution-mbox-importer.[ch]: + These copies are cruft. The real ones are in importers/. + 2001-10-11 Jeffrey Stedfast <fejj@ximian.com> * component-factory.c (free_storage): Make sure the diff --git a/mail/evolution-mbox-importer.c b/mail/evolution-mbox-importer.c deleted file mode 100644 index 0e18fb6732..0000000000 --- a/mail/evolution-mbox-importer.c +++ /dev/null @@ -1,222 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* evolution-mbox-importer.c - * - * Authors: Iain Holmes <iain@ximian.com> - * - * Copyright (C) 2001 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include "evolution-mbox-importer.h" - -#include <stdio.h> - -#include <importer/evolution-importer.h> -#include <importer/GNOME_Evolution_Importer.h> - -#include "mail-importer.h" -#include "mail-tools.h" - -#include <camel/camel.h> - -typedef struct { - MailImporter importer; /* Parent */ - - char *filename; - int num; - CamelMimeParser *mp; -} MboxImporter; - - -/* EvolutionImporter methods */ - -static void -process_item_fn (EvolutionImporter *eimporter, - CORBA_Object listener, - void *closure, - CORBA_Environment *ev) -{ - MboxImporter *mbi = (MboxImporter *) closure; - MailImporter *importer = (MailImporter *) mbi; - gboolean done = FALSE; - CamelException *ex; - - ex = camel_exception_new (); - - if (camel_mime_parser_step (mbi->mp, 0, 0) == HSCAN_FROM) { - /* Import the next message */ - CamelMimeMessage *msg; - CamelMessageInfo *info; - - msg = camel_mime_message_new (); - if (camel_mime_part_construct_from_parser (CAMEL_MIME_PART (msg), mbi->mp) == -1) { - g_warning ("Failed message %d", mbi->num); - camel_object_unref (CAMEL_OBJECT (msg)); - done = TRUE; - } - - /* write the mesg */ - info = g_new0 (CamelMessageInfo, 1); - camel_folder_append_message (importer->folder, msg, info, ex); - g_free (info); - camel_object_unref (CAMEL_OBJECT (msg)); - if (camel_exception_is_set (ex)) { - g_warning ("Failed message %d", mbi->num); - done = TRUE; - } - - if (!done) { - mbi->num++; - - /* skip over the FROM_END state */ - camel_mime_parser_step (mbi->mp, 0, 0); - } - } else { - /* all messages have now been imported */ - camel_folder_sync (importer->folder, FALSE, ex); - camel_folder_thaw (importer->folder); - importer->frozen = FALSE; - done = TRUE; - } - - camel_exception_free (ex); - GNOME_Evolution_ImporterListener_notifyResult (listener, - GNOME_Evolution_ImporterListener_OK, - !done, ev); - return; -} - -static gboolean -support_format_fn (EvolutionImporter *importer, - const char *filename, - void *closure) -{ - char signature[6]; - gboolean ret = FALSE; - int fd, n; - - fd = open (filename, O_RDONLY); - if (fd == -1) - return FALSE; - - n = read (fd, signature, 5); - if (n > 0) { - signature[n] = '\0'; - if (!g_strncasecmp (signature, "From ", 5)) - ret = TRUE; - } - - close (fd); - - return ret; -} - -static void -importer_destroy_cb (GtkObject *object, - MboxImporter *mbi) -{ - MailImporter *importer; - - importer = (MailImporter *) mbi; - if (importer->frozen) { - CamelException *ex; - - ex = camel_exception_new (); - camel_folder_sync (importer->folder, FALSE, ex); - camel_exception_free (ex); - - camel_folder_thaw (importer->folder); - } - - if (importer->folder) - camel_object_unref (CAMEL_OBJECT (importer->folder)); - - g_free (mbi->filename); - if (mbi->mp) - camel_object_unref (CAMEL_OBJECT (mbi->mp)); - - g_free (mbi); -} - -static gboolean -load_file_fn (EvolutionImporter *eimporter, - const char *filename, - void *closure) -{ - MboxImporter *mbi; - MailImporter *importer; - int fd; - - mbi = (MboxImporter *) closure; - importer = (MailImporter *) mbi; - - mbi->filename = g_strdup (filename); - - fd = open (filename, O_RDONLY); - if (fd == -1) { - g_warning ("Cannot open file"); - return FALSE; - } - - mbi->mp = camel_mime_parser_new (); - camel_mime_parser_scan_from (mbi->mp, TRUE); - if (camel_mime_parser_init_with_fd (mbi->mp, fd) == -1) { - g_warning ("Unable to process spool folder"); - goto fail; - } - - importer->mstream = NULL; - importer->folder = mail_tool_get_local_inbox (NULL); - - if (importer->folder == NULL) { - g_print ("Bad folder\n"); - goto fail; - } - - camel_folder_freeze (importer->folder); - importer->frozen = TRUE; - - g_warning ("Okay, so everything is now ready to import that mbox file!"); - - return TRUE; - - fail: - camel_object_unref (CAMEL_OBJECT (mbi->mp)); - mbi->mp = NULL; - - return FALSE; -} - -BonoboObject * -mbox_factory_fn (BonoboGenericFactory *_factory, - void *closure) -{ - EvolutionImporter *importer; - MboxImporter *mbox; - - mbox = g_new0 (MboxImporter, 1); - importer = evolution_importer_new (support_format_fn, load_file_fn, - process_item_fn, NULL, mbox); - gtk_signal_connect (GTK_OBJECT (importer), "destroy", - GTK_SIGNAL_FUNC (importer_destroy_cb), mbox); - - return BONOBO_OBJECT (importer); -} diff --git a/mail/evolution-mbox-importer.h b/mail/evolution-mbox-importer.h deleted file mode 100644 index 20b56b81eb..0000000000 --- a/mail/evolution-mbox-importer.h +++ /dev/null @@ -1,35 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* evolution-mbox-importer.h - * - * Authors: Iain Holmes <iain@ximian.com> - * - * Copyright (C) 2001 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef _EVOLUTION_MBOX_IMPORTER_H_ -#define _EVOLUTION_MBOX_IMPORTER_H_ - -#include <bonobo/bonobo-object.h> -#include <bonobo/bonobo-generic-factory.h> - -#define MBOX_FACTORY_IID "OAFIID:GNOME_Evolution_Mail_Mbox_ImporterFactory" - -BonoboObject *mbox_factory_fn (BonoboGenericFactory *_factory, - void *closure); - -#endif diff --git a/mail/evolution-outlook-importer.c b/mail/evolution-outlook-importer.c deleted file mode 100644 index 5ab83ba609..0000000000 --- a/mail/evolution-outlook-importer.c +++ /dev/null @@ -1,289 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* evolution-outlook-importer.c - * - * Authors: Iain Holmes <iain@ximian.com> - * - * Copyright (C) 2001 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <stdio.h> - -#include <importer/evolution-importer.h> -#include <importer/GNOME_Evolution_Importer.h> - -#include <camel/camel-exception.h> - -#include "evolution-outlook-importer.h" - -#include "mail-importer.h" -#include "mail-tools.h" - -#include <camel/camel-exception.h> - -extern char *evolution_dir; -typedef struct { - MailImporter importer; - - char *filename; - gboolean oe4; /* Is file OE4 or not? */ - FILE *handle; - long pos; - off_t size; - - gboolean busy; -} OutlookImporter; - -struct oe_msg_segmentheader { - int self; - int increase; - int include; - int next; - int usenet; -}; - -typedef struct oe_msg_segmentheader oe_msg_segmentheader; - - -/* EvolutionImporter methods */ - -/* Based on code from liboe 0.92 (STABLE) - Copyright (C) 2000 Stephan B. Nedregård (stephan@micropop.com) - Modified 2001 Iain Holmes <iain@ximian.com> - Copyright (C) 2001 Ximian, Inc. */ - -static void -process_item_fn (EvolutionImporter *eimporter, - CORBA_Object listener, - void *closure, - CORBA_Environment *ev) -{ - OutlookImporter *oli = (OutlookImporter *) closure; - MailImporter *importer = (MailImporter *) oli; - oe_msg_segmentheader *header; - gboolean more = TRUE; - char *cb, *sfull, *s; - long end_pos = 0; - int i; - - if (oli->busy == TRUE) { - GNOME_Evolution_ImporterListener_notifyResult (listener, - GNOME_Evolution_ImporterListener_BUSY, - more, ev); - return; - } - - oli->busy = TRUE; - header = g_new (oe_msg_segmentheader, 1); - fread (header, 16, 1, oli->handle); - - /* Write a From line */ - mail_importer_add_line (importer, - "From evolution-outlook-importer", FALSE); - end_pos = oli->pos + header->include; - if (end_pos >= oli->size) { - end_pos = oli->size; - more = FALSE; - } - - oli->pos += 4; - - cb = g_new (char, 4); - sfull = g_new (char, 65536); - s = sfull; - - while (oli->pos < end_pos) { - fread (cb, 1, 4, oli->handle); - for (i = 0; i < 4; i++, oli->pos++) { - if (*(cb + i ) != 0x0d) { - *s++ = *(cb + i); - - if (*(cb + i) == 0x0a) { - *s = '\0'; - mail_importer_add_line (importer, - sfull, FALSE); - s = sfull; - } - } - } - } - - if (s != sfull) { - *s = '\0'; - mail_importer_add_line (importer, sfull, FALSE); - s = sfull; - } - - mail_importer_add_line (importer, "\n", TRUE); - - oli->pos = end_pos; - fseek (oli->handle, oli->pos, SEEK_SET); - - g_free (header); - g_free (sfull); - g_free (cb); - - GNOME_Evolution_ImporterListener_notifyResult (listener, - GNOME_Evolution_ImporterListener_OK, - more, ev); - if (more == FALSE) { - CamelException *ex; - - ex = camel_exception_new (); - camel_folder_thaw (importer->folder); - camel_folder_sync (importer->folder, FALSE, ex); - camel_exception_free (ex); - fclose (oli->handle); - oli->handle = NULL; - } - - oli->busy = FALSE; - return; -} - - -/* EvolutionImporterFactory methods */ - -static gboolean -support_format_fn (EvolutionImporter *importer, - const char *filename, - void *closure) -{ - FILE *handle; - int signature[4]; - - /* Outlook Express sniffer. - Taken from liboe 0.92 (STABLE) - Copyright (C) 2000 Stephan B. Nedregård (stephan@micropop.com) */ - - handle = fopen (filename, "rb"); - if (handle == NULL) - return FALSE; /* Can't open file: Can't support it :) */ - - /* SIGNATURE */ - fread (&signature, 16, 1, handle); - if ((signature[0]!=0xFE12ADCF) || /* OE 5 & OE 5 BETA SIGNATURE */ - (signature[1]!=0x6F74FDC5) || - (signature[2]!=0x11D1E366) || - (signature[3]!=0xC0004E9A)) { - if ((signature[0]==0x36464D4A) && - (signature[1]==0x00010003)) /* OE4 SIGNATURE */ { - fclose (handle); - return TRUE; /* OE 4 */ - } - fclose (handle); - return FALSE; /* Not Outlook 4 or 5 */ - } - - fclose (handle); - return FALSE; /* Can't handle OE 5 yet */ -} - -static void -importer_destroy_cb (GtkObject *object, - OutlookImporter *oli) -{ - MailImporter *importer; - - importer = (MailImporter *) oli; - if (importer->folder) - camel_object_unref (CAMEL_OBJECT (importer->folder)); - - g_free (oli->filename); - if (oli->handle) - fclose (oli->handle); - - g_free (oli); -} - -static gboolean -load_file_fn (EvolutionImporter *eimporter, - const char *filename, - void *closure) -{ - OutlookImporter *oli; - MailImporter *importer; - struct stat buf; - long pos = 0x54; - - oli = (OutlookImporter *) closure; - importer = (MailImporter *) oli; - - oli->filename = g_strdup (filename); - /* Will return TRUE if oe4 format */ - oli->oe4 = support_format_fn (NULL, filename, NULL); - if (oli->oe4 == FALSE) { - g_warning ("Not OE4 format"); - return FALSE; - } - - oli->handle = fopen (filename, "rb"); - if (oli->handle == NULL) { - g_warning ("Cannot open the file"); - return FALSE; - } - - /* Get size of file */ - if (stat (filename, &buf) == -1) { - g_warning ("Cannot stat file"); - return FALSE; - } - - oli->size = buf.st_size; - - /* Set the fposition to the begining */ - fseek (oli->handle, pos, SEEK_SET); - oli->pos = pos; - - importer->mstream = NULL; - - importer->folder = mail_tool_get_local_inbox (NULL); - - if (importer->folder == NULL){ - g_warning ("Bad folder"); - return FALSE; - } - - camel_folder_freeze (importer->folder); - oli->busy = FALSE; - return TRUE; -} - -BonoboObject * -outlook_factory_fn (BonoboGenericFactory *_factory, - void *closure) -{ - EvolutionImporter *importer; - OutlookImporter *oli; - - oli = g_new0 (OutlookImporter, 1); - - importer = evolution_importer_new (support_format_fn, load_file_fn, - process_item_fn, NULL, oli); - gtk_signal_connect (GTK_OBJECT (importer), "destroy", - GTK_SIGNAL_FUNC (importer_destroy_cb), oli); - - return BONOBO_OBJECT (importer); -} - - - diff --git a/mail/evolution-outlook-importer.h b/mail/evolution-outlook-importer.h deleted file mode 100644 index 75515d2972..0000000000 --- a/mail/evolution-outlook-importer.h +++ /dev/null @@ -1,35 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* evolution-outlook-importer.h - * - * Authors: Iain Holmes <iain@ximian.com> - * - * Copyright (C) 2001 Ximian, Inc. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#ifndef _EVOLUTION_OUTLOOK_IMPORTER_H_ -#define _EVOLUTION_OUTLOOK_IMPORTER_H_ - -#include <bonobo/bonobo-object.h> -#include <bonobo/bonobo-generic-factory.h> - -#define OUTLOOK_FACTORY_IID "OAFIID:GNOME_Evolution_Mail_Outlook_ImporterFactory" - -BonoboObject *outlook_factory_fn (BonoboGenericFactory *_factory, - void *closure); - -#endif diff --git a/mail/mail-folder-cache.c b/mail/mail-folder-cache.c index 44bb972c31..9cad33c02e 100644 --- a/mail/mail-folder-cache.c +++ b/mail/mail-folder-cache.c @@ -55,7 +55,6 @@ struct _folder_info { struct _store_info *store_info; /* 'parent' link */ char *path; /* shell path */ - char *name; /* shell display name? */ char *full_name; /* full name of folder/folderinfo */ char *uri; /* uri of folder */ @@ -129,11 +128,11 @@ update_1folder(struct _folder_info *mfi, CamelFolderInfo *info) if (si->storage == NULL) { d(printf("Updating existing (local) folder: %s (%d unread) folder=%p\n", mfi->path, unread, folder)); CORBA_exception_init(&ev); - GNOME_Evolution_Storage_updateFolder(si->corba_storage, mfi->path, mfi->name, unread, &ev); + GNOME_Evolution_Storage_updateFolder(si->corba_storage, mfi->path, unread, &ev); CORBA_exception_free(&ev); } else { d(printf("Updating existing folder: %s (%d unread)\n", mfi->path, unread)); - evolution_storage_update_folder(si->storage, mfi->path, mfi->name, unread); + evolution_storage_update_folder(si->storage, mfi->path, unread); } } @@ -154,7 +153,6 @@ setup_folder(CamelFolderInfo *fi, struct _store_info *si) d(printf("Adding new folder: %s (%s) %d unread\n", fi->path, fi->url, fi->unread_message_count)); mfi = g_malloc0(sizeof(*mfi)); mfi->path = g_strdup(fi->path); - mfi->name = g_strdup(fi->name); mfi->full_name = g_strdup(fi->full_name); mfi->uri = g_strdup(fi->url); mfi->store_info = si; @@ -168,8 +166,8 @@ setup_folder(CamelFolderInfo *fi, struct _store_info *si) int unread = (fi->unread_message_count==-1)?0:fi->unread_message_count; type = (strncmp(fi->url, "vtrash:", 7)==0)?"vtrash":"mail"; - evolution_storage_new_folder(si->storage, mfi->path, mfi->name, type, - fi->url, mfi->name, unread); + evolution_storage_new_folder(si->storage, mfi->path, fi->name, type, + fi->url, fi->name, unread); } if (strstr(fi->url, ";noselect") == NULL) @@ -321,7 +319,6 @@ static void free_folder_info(char *path, struct _folder_info *info, void *data) { g_free(info->path); - g_free(info->name); g_free(info->full_name); g_free(info->uri); } |