aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--camel/ChangeLog9
-rw-r--r--camel/camel-store.c13
-rw-r--r--camel/camel-vee-store.c10
3 files changed, 29 insertions, 3 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog
index 59c97b3a78..cc37be2f76 100644
--- a/camel/ChangeLog
+++ b/camel/ChangeLog
@@ -1,3 +1,12 @@
+2001-10-29 <NotZed@Ximian.com>
+
+ * camel-vee-store.c (build_info): Fix the 'is this a matching
+ subfolder or subfolder'' logic to match camel-store
+ get_subfolders'.
+
+ * camel-store.c (get_subfolders): Fix the 'is this a matching
+ folder or subfolder' logic.
+
2001-10-28 <NotZed@Ximian.com>
* providers/local/camel-local-store.c (rename_folder): Changed to
diff --git a/camel/camel-store.c b/camel/camel-store.c
index a8c6b79bf0..d98df75d55 100644
--- a/camel/camel-store.c
+++ b/camel/camel-store.c
@@ -383,8 +383,17 @@ struct _get_info {
static void
get_subfolders(char *key, CamelFolder *folder, struct _get_info *info)
{
- /* If this is a subfolder of the one to be renamed, we need to get it, AND lock it */
- if (strncmp(folder->full_name, info->old, strlen(info->old)) == 0) {
+ int oldlen, namelen;
+
+ namelen = strlen(folder->full_name);
+ oldlen = strlen(info->old);
+
+ if ((namelen == oldlen &&
+ strcmp(folder->full_name, info->old) == 0)
+ || ((namelen > oldlen)
+ && strncmp(folder->full_name, info->old, oldlen) == 0
+ && folder->full_name[oldlen] == info->store->dir_sep)) {
+
d(printf("Found subfolder of '%s' == '%s'\n", info->old, folder->full_name));
camel_object_ref((CamelObject *)folder);
g_ptr_array_add(info->folders, folder);
diff --git a/camel/camel-vee-store.c b/camel/camel-vee-store.c
index 72bde97413..e909671e36 100644
--- a/camel/camel-vee-store.c
+++ b/camel/camel-vee-store.c
@@ -167,11 +167,19 @@ static void
build_info(char *name, CamelVeeFolder *folder, struct _build_info *data)
{
CamelFolderInfo *info;
+ int toplen, namelen;
+
+ namelen = strlen(name);
+ toplen = strlen(data->top);
/* check we have to include this one */
if (data->top) {
if (data->flags & CAMEL_STORE_FOLDER_INFO_RECURSIVE) {
- if (strncmp(name, data->top, strlen(data->top) != 0))
+ if (!((namelen == toplen &&
+ strcmp(name, data->top) == 0)
+ || ((namelen > toplen)
+ && strncmp(name, data->top, toplen) == 0
+ && name[toplen] == '/')))
return;
} else {
if (strcmp(name, data->top))