aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/shared-folder/ChangeLog10
-rw-r--r--plugins/shared-folder/share-folder-common.c27
2 files changed, 31 insertions, 6 deletions
diff --git a/plugins/shared-folder/ChangeLog b/plugins/shared-folder/ChangeLog
index 49b341606f..71c065f7ce 100644
--- a/plugins/shared-folder/ChangeLog
+++ b/plugins/shared-folder/ChangeLog
@@ -1,3 +1,13 @@
+2005-03-28 Vivek Jain <jvivek@novell.com>
+
+ **Fixes #73198
+ * share-folder-common.c :
+ (org_gnome_shared_folder_factory):
+ (create_folder__created) : pass the full name in get_conatiner_id
+ (get_container_id) : break the full name and start looking for the
+ name from the top most parent. This will give proper container id
+ even in the case of the duplicate names at different hierarchies
+
2005-03-10 Vivek Jain <jvivek@novell.com>
**Fixes #73201
diff --git a/plugins/shared-folder/share-folder-common.c b/plugins/shared-folder/share-folder-common.c
index fe749e6c8f..69a8049043 100644
--- a/plugins/shared-folder/share-folder-common.c
+++ b/plugins/shared-folder/share-folder-common.c
@@ -164,7 +164,7 @@ create_folder__created (struct _mail_msg *mm)
if(E_IS_GW_CONNECTION (ccnc)) {
(ssi->sf)->cnc = ccnc;
- (ssi->sf)->container_id = g_strdup (get_container_id ((ssi->sf)->cnc, m->name));
+ (ssi->sf)->container_id = get_container_id ((ssi->sf)->cnc, m->full_name);
share_folder(ssi->sf);
}
@@ -379,7 +379,7 @@ org_gnome_shared_folder_factory (EPlugin *ep, EConfigHookItemFactoryData *hook_d
else
sub = folder_name;
- /* This is kind of bad..but we don't have types for all these folders.*/
+ /* This is kind of bad..but we don't have types for all these folders.*/
if ( !( strcmp (sub, "Mailbox") && strcmp (sub, "Calendar") && strcmp (sub, "Contacts") && strcmp (sub, "Documents") && strcmp (sub, "Authored") && strcmp (sub, "Default Library") && strcmp (sub, "Work In Progress") && strcmp (sub, "Cabinet") && strcmp (sub, "Sent Items") && strcmp (sub, "Trash") && strcmp (sub, "Checklist"))) {
g_free (folderuri);
@@ -391,7 +391,7 @@ org_gnome_shared_folder_factory (EPlugin *ep, EConfigHookItemFactoryData *hook_d
cnc = get_cnc (store);
if (E_IS_GW_CONNECTION (cnc))
- id = get_container_id (cnc, sub);
+ id = get_container_id (cnc, folder_name);
else
g_warning("Could not Connnect\n");
@@ -456,7 +456,17 @@ get_container_id(EGwConnection *cnc, gchar *fname)
{
GList *container_list = NULL;
gchar *id = NULL;
- const char *name;
+ gchar *name;
+ gchar **names;
+ int i = 0, parts = 0;
+
+ names = g_strsplit (fname, "/", -1);
+ if(names){
+ while (names [parts])
+ parts++;
+ fname = names[i];
+ }
+
/* get list of containers */
if (e_gw_connection_get_container_list (cnc, "folders", &(container_list)) == E_GW_CONNECTION_STATUS_OK) {
GList *container = NULL;
@@ -468,12 +478,17 @@ get_container_id(EGwConnection *cnc, gchar *fname)
id = g_strdup (e_gw_container_get_id (container->data));
break;
} else if (!strcmp (name, fname)) {
- id = g_strdup (e_gw_container_get_id (container->data));
- break;
+ if (i == parts - 1) {
+ id = g_strdup (e_gw_container_get_id (container->data));
+ break;
+ } else
+ fname = names[++i];
}
g_free (name);
}
e_gw_connection_free_container_list (container_list);
+ if (names)
+ g_strfreev(names);
}
return id;
}