diff options
-rw-r--r-- | mail/ChangeLog | 12 | ||||
-rw-r--r-- | mail/mail-local.c | 42 | ||||
-rw-r--r-- | mail/mail-local.h | 1 | ||||
-rw-r--r-- | mail/mail-tools.c | 15 |
4 files changed, 64 insertions, 6 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index 93dbd157e9..20159c30ba 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,15 @@ +2000-08-11 Not Zed <NotZed@HelixCode.com> + + * mail-tools.c (mail_tool_get_local_inbox_url): Properly handle + different local file formats. The folder isn't always mbox. + (mail_tool_do_movemail): Movemail always uses an mbox format + however. + (mail_tool_get_local_movemail_url): What is the mbox url, it is + always the same type, mbox. + (mail_tool_fetch_mail_into_searchable): Same here. + + * mail-local.c (mail_local_map_uri): Map a local uri to the real uri. + 2000-08-10 Christopher James Lahey <clahey@helixcode.com> * folder-browser-factory.c, message-list.c, message-thread.c, diff --git a/mail/mail-local.c b/mail/mail-local.c index 02f856b769..883d10926c 100644 --- a/mail/mail-local.c +++ b/mail/mail-local.c @@ -132,6 +132,41 @@ save_metainfo(struct _local_meta *meta) return ret; } +/* maps a local uri to the real type */ +char * +mail_local_map_uri(const char *uri) +{ + CamelURL *url; + char *metapath; + char *storename; + struct _local_meta *meta; + CamelException *ex; + + if (strncmp(uri, "file:", 5)) { + g_warning("Trying to map non-local uri: %s", uri); + return g_strdup(uri); + } + + ex = camel_exception_new(); + url = camel_url_new(uri, ex); + if (camel_exception_is_set(ex)) { + camel_exception_free(ex); + return g_strdup(uri); + } + camel_exception_free(ex); + + metapath = g_strdup_printf("%s/local-metadata.xml", url->path); + meta = load_metainfo(metapath); + g_free(metapath); + + /* change file: to format: */ + camel_url_set_protocol(url, meta->format); + storename = camel_url_to_string(url, TRUE); + camel_url_free(url); + + return storename; +} + CamelFolder * mail_tool_local_uri_to_folder(const char *uri, CamelException *ex) { @@ -341,6 +376,7 @@ do_reconfigure_folder(gpointer in_data, gpointer op_data, CamelException *ex) goto cleanup; } + update_progress("Copying messages", 0.0); mail_tool_move_folder_contents (fromfolder, tofolder, FALSE, ex); printf("delete old mbox ...\n"); @@ -373,10 +409,8 @@ do_reconfigure_folder(gpointer in_data, gpointer op_data, CamelException *ex) camel_object_unref (CAMEL_OBJECT (fromstore)); if (tostore) camel_object_unref (CAMEL_OBJECT (tostore)); - if (fromurl) - g_free(fromurl); - if (tourl) - g_free(tourl); + g_free(fromurl); + g_free(tourl); if (url) camel_url_free (url); } diff --git a/mail/mail-local.h b/mail/mail-local.h index 331832cfc8..c5892d29d9 100644 --- a/mail/mail-local.h +++ b/mail/mail-local.h @@ -32,5 +32,6 @@ /* mail-local.c */ CamelFolder *mail_tool_local_uri_to_folder(const char *uri, CamelException *ex); void local_reconfigure_folder(FolderBrowser *fb); +char *mail_local_map_uri(const char *uri); #endif diff --git a/mail/mail-tools.c b/mail/mail-tools.c index de4be18a07..dba9a60d3c 100644 --- a/mail/mail-tools.c +++ b/mail/mail-tools.c @@ -120,6 +120,17 @@ mail_tool_get_folder_from_urlname (const gchar *url, const gchar *name, gchar * mail_tool_get_local_inbox_url (void) { + char *uri, *new; + + uri = g_strdup_printf("file://%s/local/Inbox", evolution_dir); + new = mail_local_map_uri(uri); + g_free(uri); + return new; +} + +gchar * +mail_tool_get_local_movemail_url (void) +{ return g_strdup_printf ("mbox://%s/local/Inbox", evolution_dir); } @@ -164,7 +175,7 @@ mail_tool_do_movemail (const gchar *source_url, CamelException *ex) /* Set up our destination. */ - dest_url = mail_tool_get_local_inbox_url(); + dest_url = mail_tool_get_local_movemail_url(); dest_path = mail_tool_get_local_movemail_path(); /* Create a new movemail mailbox file of 0 size */ @@ -447,7 +458,7 @@ mail_tool_fetch_mail_into_searchable (const char *source_url, gboolean keep_on_s * so that the folder browser can search it. */ gchar *url; - url = mail_tool_get_local_inbox_url(); + url = mail_tool_get_local_movemail_url(); search_folder = mail_tool_get_folder_from_urlname (url, "movemail", TRUE, ex); g_free (url); if (camel_exception_is_set (ex)) |