aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--camel/ChangeLog8
-rw-r--r--camel/camel-store.c39
-rw-r--r--camel/camel-store.h9
-rw-r--r--camel/camel-vee-store.c3
-rw-r--r--camel/providers/imap/camel-imap-store.c40
-rw-r--r--camel/providers/imapp/camel-imapp-store.c1
-rw-r--r--camel/providers/local/camel-local-folder.c1
-rw-r--r--camel/providers/local/camel-local-store.c1
-rw-r--r--camel/providers/local/camel-maildir-store.c1
-rw-r--r--camel/providers/local/camel-mbox-store.c3
-rw-r--r--camel/providers/local/camel-mh-store.c1
-rw-r--r--camel/providers/local/camel-spool-store.c4
-rw-r--r--camel/providers/nntp/camel-nntp-store.c23
13 files changed, 36 insertions, 98 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog
index b2ddb7e148..89e2fbd073 100644
--- a/camel/ChangeLog
+++ b/camel/ChangeLog
@@ -1,3 +1,11 @@
+2004-05-25 Not Zed <NotZed@Ximian.com>
+
+ * camel-store.c (camel_folder_info_build_path): removed.
+
+ * camel-store.h (CamelFolderInfo): removed 'path', fixed all
+ callers.
+ (struct _CamelStore): removed 'dir_sep' fixed all uses.
+
2004-05-25 Sivaiah Nallagatla <snallagatla@novell.com>
* providers/groupwise/camel-gw-listener.c (add_addressbook_sources)
diff --git a/camel/camel-store.c b/camel/camel-store.c
index 861edeced4..042e9509da 100644
--- a/camel/camel-store.c
+++ b/camel/camel-store.c
@@ -138,8 +138,6 @@ camel_store_init (void *o)
/* set vtrash and vjunk on by default */
store->flags = CAMEL_STORE_VTRASH | CAMEL_STORE_VJUNK;
- store->dir_sep = '/';
-
store->priv = g_malloc0 (sizeof (*store->priv));
store->priv->folder_lock = e_mutex_new (E_MUTEX_REC);
}
@@ -459,7 +457,7 @@ camel_store_rename_folder (CamelStore *store, const char *old_namein, const char
strcmp(folder->full_name, old_name) == 0)
|| ((namelen > oldlen)
&& strncmp(folder->full_name, old_name, oldlen) == 0
- && folder->full_name[oldlen] == store->dir_sep)) {
+ && folder->full_name[oldlen] == '/')) {
d(printf("Found subfolder of '%s' == '%s'\n", old_name, folder->full_name));
CAMEL_FOLDER_LOCK(folder, lock);
} else {
@@ -730,7 +728,6 @@ add_special_info (CamelStore *store, CamelFolderInfo *info, const char *name, co
g_free (vinfo->full_name);
g_free (vinfo->name);
g_free (vinfo->uri);
- g_free (vinfo->path);
} else {
/* There wasn't a Trash/Junk folder so create a new folder entry */
vinfo = g_new0 (CamelFolderInfo, 1);
@@ -751,7 +748,6 @@ add_special_info (CamelStore *store, CamelFolderInfo *info, const char *name, co
vinfo->uri = uri;
if (!unread_count)
vinfo->unread = -1;
- vinfo->path = g_strdup_printf ("/%s", vinfo->full_name);
}
static void
@@ -889,39 +885,11 @@ camel_folder_info_free (CamelFolderInfo *fi)
camel_folder_info_free (fi->child);
g_free (fi->name);
g_free (fi->full_name);
- g_free (fi->path);
g_free (fi->uri);
g_free (fi);
}
}
-/**
- * camel_folder_info_build_path:
- * @fi: folder info
- * @separator: directory separator
- *
- * Sets the folder info path based on the folder's full name and
- * directory separator.
- **/
-void
-camel_folder_info_build_path (CamelFolderInfo *fi, char separator)
-{
- const char *full_name;
- char *p;
-
- full_name = fi->full_name;
- while (*full_name == separator)
- full_name++;
-
- fi->path = g_strdup_printf ("/%s", full_name);
- if (separator != '/') {
- for (p = fi->path; *p; p++) {
- if (*p == separator)
- *p = '/';
- }
- }
-}
-
static int
folder_info_cmp (const void *ap, const void *bp)
{
@@ -997,10 +965,6 @@ camel_folder_info_build (GPtrArray *folders, const char *namespace,
if (*name == separator)
name++;
- /* set the path if it isn't already set */
- if (!fi->path)
- camel_folder_info_build_path (fi, separator);
-
p = strrchr (name, separator);
if (p) {
pname = g_strndup (name, p - name);
@@ -1079,7 +1043,6 @@ static CamelFolderInfo *folder_info_clone_rec(CamelFolderInfo *fi, CamelFolderIn
info->uri = g_strdup(fi->uri);
info->name = g_strdup(fi->name);
info->full_name = g_strdup(fi->full_name);
- info->path = g_strdup(fi->path);
info->unread = fi->unread;
info->flags = fi->flags;
diff --git a/camel/camel-store.h b/camel/camel-store.h
index cc5179c05d..adffedfa31 100644
--- a/camel/camel-store.h
+++ b/camel/camel-store.h
@@ -50,7 +50,6 @@ typedef struct _CamelFolderInfo {
char *uri;
char *name;
char *full_name;
- char *path;
guint32 flags;
guint32 unread;
@@ -102,14 +101,8 @@ struct _CamelStore
CamelObjectBag *folders;
int flags;
-
- /* FIXME: This is a temporary measure until IMAP namespaces are properly implemented,
- after that, all external folder api's will assume a dir separator of '/' */
- /* This is always a copy of IMAP_STORE()->dir_sep, or '/' */
- char dir_sep;
};
-
/* open mode for folder */
#define CAMEL_STORE_FOLDER_CREATE (1<<0)
#define CAMEL_STORE_FOLDER_EXCL (1<<1)
@@ -214,8 +207,6 @@ void camel_store_free_folder_info_nop (CamelStore *store,
CamelFolderInfo *fi);
void camel_folder_info_free (CamelFolderInfo *fi);
-void camel_folder_info_build_path (CamelFolderInfo *fi,
- char separator);
CamelFolderInfo *camel_folder_info_build (GPtrArray *folders,
const char *namespace,
char separator,
diff --git a/camel/camel-vee-store.c b/camel/camel-vee-store.c
index 10321bac00..bb8cf22b2c 100644
--- a/camel/camel-vee-store.c
+++ b/camel/camel-vee-store.c
@@ -149,7 +149,6 @@ change_folder(CamelStore *store, const char *name, guint32 flags, int count)
fi->flags = CAMEL_FOLDER_VIRTUAL;
if (!(flags & CHANGE_DELETE))
fi->flags |= CAMEL_FOLDER_NOCHILDREN;
- camel_folder_info_build_path(fi, '/');
camel_object_trigger_event(store, (flags&CHANGE_DELETE)?"folder_deleted":"folder_created", fi);
camel_folder_info_free(fi);
}
@@ -272,7 +271,6 @@ vee_get_folder_info(CamelStore *store, const char *top, guint32 flags, CamelExce
info->name = g_strdup(((CamelFolder *)folder)->name);
info->unread = camel_folder_get_unread_message_count((CamelFolder *)folder);
info->flags = CAMEL_FOLDER_NOCHILDREN|CAMEL_FOLDER_VIRTUAL;
- camel_folder_info_build_path(info, '/');
g_hash_table_insert(infos_hash, info->full_name, info);
if (res == NULL)
@@ -329,7 +327,6 @@ vee_get_folder_info(CamelStore *store, const char *top, guint32 flags, CamelExce
info->name = g_strdup(_("Unmatched"));
info->unread = -1;
info->flags = CAMEL_FOLDER_NOCHILDREN|CAMEL_FOLDER_NOINFERIORS|CAMEL_FOLDER_SYSTEM|CAMEL_FOLDER_VIRTUAL;
- camel_folder_info_build_path(info, '/');
if (res == NULL)
res = info;
diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c
index ccba426398..9401c559fb 100644
--- a/camel/providers/imap/camel-imap-store.c
+++ b/camel/providers/imap/camel-imap-store.c
@@ -296,7 +296,6 @@ construct (CamelService *service, CamelSession *session,
} else {
imap_store->namespace = g_strdup(is->namespace->full_name);
imap_store->dir_sep = is->namespace->sep;
- store->dir_sep = is->namespace->sep;
}
}
@@ -1011,13 +1010,11 @@ imap_build_folder_info(CamelImapStore *imap_store, const char *folder_name)
url->path = g_strdup_printf ("/%s", folder_name);
fi->uri = camel_url_to_string (url, CAMEL_URL_HIDE_ALL);
camel_url_free(url);
- fi->path = g_strdup_printf("/%s", folder_name);
- name = strrchr (fi->path, '/');
- if (name)
- name++;
+ name = strrchr (fi->full_name, '/');
+ if (name == NULL)
+ name = fi->full_name;
else
- name = fi->path;
-
+ name++;
fi->name = g_strdup (name);
return fi;
@@ -1414,7 +1411,6 @@ imap_connect_online (CamelService *service, CamelException *ex)
sep = imap_parse_string ((const char **) &name, &len);
if (sep) {
store->dir_sep = *sep;
- ((CamelStore *)store)->dir_sep = store->dir_sep;
g_free (sep);
}
}
@@ -1452,7 +1448,6 @@ imap_connect_online (CamelService *service, CamelException *ex)
}
if (!store->dir_sep) {
store->dir_sep = '/'; /* Guess */
- ((CamelStore *)store)->dir_sep = store->dir_sep;
}
}
@@ -1875,7 +1870,7 @@ get_folder_online (CamelStore *store, const char *folder_name, guint32 flags, Ca
if ((parent_name = strrchr (folder_name, '/'))) {
parent_name = g_strndup (folder_name, parent_name - folder_name);
- parent_real = camel_imap_store_summary_path_to_full (imap_store->summary, parent_name, store->dir_sep);
+ parent_real = camel_imap_store_summary_path_to_full (imap_store->summary, parent_name, imap_store->dir_sep);
} else {
parent_real = NULL;
}
@@ -1983,11 +1978,11 @@ get_folder_online (CamelStore *store, const char *folder_name, guint32 flags, Ca
g_free (parent_name);
- folder_real = camel_imap_store_summary_path_to_full(imap_store->summary, folder_name, store->dir_sep);
+ folder_real = camel_imap_store_summary_path_to_full(imap_store->summary, folder_name, imap_store->dir_sep);
response = camel_imap_command (imap_store, NULL, ex, "CREATE %S", folder_real);
if (response) {
- camel_imap_store_summary_add_from_full(imap_store->summary, folder_real, store->dir_sep);
+ camel_imap_store_summary_add_from_full(imap_store->summary, folder_real, imap_store->dir_sep);
camel_imap_response_free (imap_store, response);
@@ -2204,7 +2199,7 @@ rename_folder (CamelStore *store, const char *old_name, const char *new_name_in,
if (store->flags & CAMEL_STORE_SUBSCRIPTIONS)
manage_subscriptions(store, old_name, FALSE);
- new_name = camel_imap_store_summary_path_to_full(imap_store->summary, new_name_in, store->dir_sep);
+ new_name = camel_imap_store_summary_path_to_full(imap_store->summary, new_name_in, imap_store->dir_sep);
response = camel_imap_command (imap_store, NULL, ex, "RENAME %F %S", old_name, new_name);
if (!response) {
@@ -2354,7 +2349,7 @@ create_folder (CamelStore *store, const char *parent_name,
}
/* ok now we can create the folder */
- real_name = camel_imap_store_summary_path_to_full(imap_store->summary, folder_name, store->dir_sep);
+ real_name = camel_imap_store_summary_path_to_full(imap_store->summary, folder_name, imap_store->dir_sep);
full_name = imap_concat (imap_store, parent_real, real_name);
g_free(real_name);
response = camel_imap_command (imap_store, NULL, ex, "CREATE %S", full_name);
@@ -2365,7 +2360,7 @@ create_folder (CamelStore *store, const char *parent_name,
camel_imap_response_free (imap_store, response);
- si = camel_imap_store_summary_add_from_full(imap_store->summary, full_name, store->dir_sep);
+ si = camel_imap_store_summary_add_from_full(imap_store->summary, full_name, imap_store->dir_sep);
camel_store_summary_save((CamelStoreSummary *)imap_store->summary);
fi = imap_build_folder_info(imap_store, camel_store_info_path(imap_store->summary, si));
fi->flags |= CAMEL_FOLDER_NOCHILDREN;
@@ -2395,7 +2390,7 @@ parse_list_response_as_folder_info (CamelImapStore *imap_store,
{
CamelFolderInfo *fi;
int flags;
- char sep, *dir;
+ char sep, *dir, *path;
CamelURL *url;
CamelImapStoreInfo *si;
guint32 newflags;
@@ -2417,8 +2412,7 @@ parse_list_response_as_folder_info (CamelImapStore *imap_store,
fi = g_new0 (CamelFolderInfo, 1);
fi->name = g_strdup(camel_store_info_name(imap_store->summary, si));
- fi->path = g_strdup_printf("/%s", camel_store_info_path(imap_store->summary, si));
- fi->full_name = g_strdup(fi->path+1);
+ fi->full_name = g_strdup(camel_store_info_path(imap_store->summary, si));
if (!g_ascii_strcasecmp(fi->full_name, "inbox"))
flags |= CAMEL_FOLDER_SYSTEM;
/* HACK: some servers report noinferiors for all folders (uw-imapd)
@@ -2429,7 +2423,9 @@ parse_list_response_as_folder_info (CamelImapStore *imap_store,
fi->flags = flags;
url = camel_url_new (imap_store->base_url, NULL);
- camel_url_set_path(url, fi->path);
+ path = alloca(strlen(fi->full_name)+2);
+ sprintf(path, "/%s", fi->full_name);
+ camel_url_set_path(url, path);
if (flags & CAMEL_FOLDER_NOSELECT || fi->name[0] == 0)
camel_url_set_param (url, "noselect", "yes");
@@ -2563,7 +2559,7 @@ get_folders_online (CamelImapStore *imap_store, const char *pattern,
if (si == NULL)
continue;
- if (imap_match_pattern(((CamelStore *)imap_store)->dir_sep, pattern, camel_imap_store_info_full_name(imap_store->summary, si))) {
+ if (imap_match_pattern(imap_store->dir_sep, pattern, camel_imap_store_info_full_name(imap_store->summary, si))) {
if (g_hash_table_lookup(present, camel_store_info_path(imap_store->summary, si)) != NULL) {
if (lsub && (si->flags & CAMEL_STORE_INFO_FOLDER_SUBSCRIBED) == 0) {
si->flags |= CAMEL_STORE_INFO_FOLDER_SUBSCRIBED;
@@ -2831,14 +2827,14 @@ get_folders(CamelStore *store, const char *top, guint32 flags, CamelException *e
i = strlen(top)-1;
name = g_malloc(i+2);
strcpy(name, top);
- while (i>0 && name[i] == store->dir_sep)
+ while (i>0 && name[i] == imap_store->dir_sep)
name[i--] = 0;
} else
name = g_strdup("");
} else {
name = camel_imap_store_summary_full_from_path(imap_store->summary, top);
if (name == NULL)
- name = camel_imap_store_summary_path_to_full(imap_store->summary, top, store->dir_sep);
+ name = camel_imap_store_summary_path_to_full(imap_store->summary, top, imap_store->dir_sep);
}
d(printf("\n\nList '%s' %s\n", name, flags&CAMEL_STORE_FOLDER_INFO_RECURSIVE?"RECURSIVE":"NON-RECURSIVE"));
diff --git a/camel/providers/imapp/camel-imapp-store.c b/camel/providers/imapp/camel-imapp-store.c
index 6ae79cae2e..290d3c0a17 100644
--- a/camel/providers/imapp/camel-imapp-store.c
+++ b/camel/providers/imapp/camel-imapp-store.c
@@ -543,7 +543,6 @@ folders_build_info(CamelURL *base, struct _list_info *li)
fi->uri = camel_url_to_string(base, CAMEL_URL_HIDE_ALL);
fi->name = g_strdup(name);
fi->full_name = full_name;
- fi->path = g_strdup(path);
fi->unread = -1;
fi->total = -1;
fi->flags = li->flags;
diff --git a/camel/providers/local/camel-local-folder.c b/camel/providers/local/camel-local-folder.c
index 2c352c749d..2f5cc53223 100644
--- a/camel/providers/local/camel-local-folder.c
+++ b/camel/providers/local/camel-local-folder.c
@@ -319,7 +319,6 @@ camel_local_folder_construct(CamelLocalFolder *lf, CamelStore *parent_store, con
fi->name = g_strdup (name);
fi->uri = camel_url_to_string (url, 0);
fi->unread = camel_folder_get_unread_message_count(folder);
- camel_folder_info_build_path(fi, '/');
fi->flags = CAMEL_FOLDER_NOCHILDREN;
camel_url_free (url);
diff --git a/camel/providers/local/camel-local-store.c b/camel/providers/local/camel-local-store.c
index 2a154d1556..f39f597f08 100644
--- a/camel/providers/local/camel-local-store.c
+++ b/camel/providers/local/camel-local-store.c
@@ -469,7 +469,6 @@ delete_folder(CamelStore *store, const char *folder_name, CamelException *ex)
fi->uri = g_strdup_printf ("%s:%s#%s", ((CamelService *) store)->url->protocol,
CAMEL_LOCAL_STORE(store)->toplevel_dir, folder_name);
fi->unread = -1;
- camel_folder_info_build_path(fi, '/');
camel_object_trigger_event (store, "folder_deleted", fi);
diff --git a/camel/providers/local/camel-maildir-store.c b/camel/providers/local/camel-maildir-store.c
index 33daf0521e..5a81965ede 100644
--- a/camel/providers/local/camel-maildir-store.c
+++ b/camel/providers/local/camel-maildir-store.c
@@ -232,7 +232,6 @@ static CamelFolderInfo *camel_folder_info_new(const char *url, const char *full,
fi->name = g_strdup(name);
fi->unread = -1;
fi->total = -1;
- camel_folder_info_build_path(fi, '/');
if (!strcmp(full, "."))
fi->flags |= CAMEL_FOLDER_SYSTEM;
diff --git a/camel/providers/local/camel-mbox-store.c b/camel/providers/local/camel-mbox-store.c
index 4893853689..a2bafd4ab0 100644
--- a/camel/providers/local/camel-mbox-store.c
+++ b/camel/providers/local/camel-mbox-store.c
@@ -333,7 +333,6 @@ delete_folder(CamelStore *store, const char *folder_name, CamelException *ex)
fi->name = g_path_get_basename(folder_name);
fi->uri = g_strdup_printf("mbox:%s#%s",((CamelService *) store)->url->path, folder_name);
fi->unread = -1;
- camel_folder_info_build_path(fi, '/');
camel_object_trigger_event(store, "folder_deleted", fi);
@@ -705,7 +704,6 @@ scan_dir(CamelStore *store, CamelURL *url, GHashTable *visited, CamelFolderInfo
fi->uri = camel_url_to_string (url, 0);
fi->name = short_name;
fi->full_name = full_name;
- fi->path = g_strdup_printf("/%s", full_name);
fi->unread = -1;
fi->total = -1;
@@ -815,7 +813,6 @@ get_folder_info(CamelStore *store, const char *top, guint32 flags, CamelExceptio
fi->full_name = g_strdup(top);
fi->unread = -1;
fi->total = -1;
- fi->path = g_strdup_printf("/%s", top);
subdir = g_strdup_printf("%s.sbd", path);
if (stat(subdir, &st) == 0) {
diff --git a/camel/providers/local/camel-mh-store.c b/camel/providers/local/camel-mh-store.c
index 7e57b69766..ee35d8ec25 100644
--- a/camel/providers/local/camel-mh-store.c
+++ b/camel/providers/local/camel-mh-store.c
@@ -350,7 +350,6 @@ folder_info_new (CamelStore *store, CamelURL *url, const char *root, const char
fi->uri = camel_url_to_string (url, 0);
fi->full_name = g_strdup(path);
fi->name = g_strdup(base?base+1:path);
- camel_folder_info_build_path(fi, '/');
fill_fi(store, fi, flags);
d(printf("New folderinfo:\n '%s'\n '%s'\n '%s'\n", fi->full_name, fi->uri, fi->path));
diff --git a/camel/providers/local/camel-spool-store.c b/camel/providers/local/camel-spool-store.c
index 1aa18965ae..96278bf538 100644
--- a/camel/providers/local/camel-spool-store.c
+++ b/camel/providers/local/camel-spool-store.c
@@ -231,7 +231,6 @@ static void free_folder_info (CamelStore *store, CamelFolderInfo *fi)
g_free(fi->uri);
g_free(fi->name);
g_free(fi->full_name);
- g_free(fi->path);
g_free(fi);
}
}
@@ -246,7 +245,6 @@ camel_folder_info_new(const char *url, const char *full, const char *name, int u
fi->full_name = g_strdup(full);
fi->name = g_strdup(name);
fi->unread = unread;
- camel_folder_info_build_path(fi, '/');
d(printf("Adding spoold info: '%s' '%s' '%s' '%s'\n", fi->path, fi->name, fi->full_name, fi->url));
@@ -466,8 +464,6 @@ get_folder_info_mbox(CamelStore *store, const char *top, guint32 flags, CamelExc
camel_object_unref(folder);
} else
fi->unread = -1;
-
- camel_folder_info_build_path(fi, '/');
}
return fi;
diff --git a/camel/providers/nntp/camel-nntp-store.c b/camel/providers/nntp/camel-nntp-store.c
index d43fc13ca9..26e825436b 100644
--- a/camel/providers/nntp/camel-nntp-store.c
+++ b/camel/providers/nntp/camel-nntp-store.c
@@ -390,6 +390,7 @@ nntp_folder_info_from_store_info (CamelNNTPStore *store, gboolean short_notation
CamelURL *base_url = ((CamelService *) store)->url;
CamelFolderInfo *fi = g_malloc0(sizeof(*fi));
CamelURL *url;
+ char *path;
fi->full_name = g_strdup (si->path);
@@ -399,16 +400,9 @@ nntp_folder_info_from_store_info (CamelNNTPStore *store, gboolean short_notation
fi->name = g_strdup (si->path);
fi->unread = -1;
- /* fi->path is the 'canonicalised' path used by the UI (folder-tree). Not
- * as important these days, but folders used to get added to the tree based
- * on its path rather than the structure of the CamelFolderInfo's.
- *
- * must be delimited by '/' which also means that if the user doesn't want
- * a flat list of newsgroups, you'll have to replace '.' with '/' for
- * full_name too. */
- /*camel_folder_info_build_path(fi, '/');*/
- fi->path = g_strdup_printf ("/%s", si->path);
- url = camel_url_new_with_base (base_url, fi->path);
+ path = alloca(strlen(fi->full_name)+2);
+ sprintf(path, "/%s", fi->full_name);
+ url = camel_url_new_with_base (base_url, path);
fi->uri = camel_url_to_string (url, CAMEL_URL_HIDE_ALL);
camel_url_free (url);
@@ -421,7 +415,8 @@ nntp_folder_info_from_name (CamelNNTPStore *store, gboolean short_notation, cons
CamelFolderInfo *fi = g_malloc0(sizeof(*fi));
CamelURL *base_url = ((CamelService *)store)->url;
CamelURL *url;
-
+ char *path;
+
fi->full_name = g_strdup (name);
if (short_notation)
@@ -431,9 +426,9 @@ nntp_folder_info_from_name (CamelNNTPStore *store, gboolean short_notation, cons
fi->unread = -1;
- fi->path = g_strdup_printf ("/%s", name);
-
- url = camel_url_new_with_base (base_url, fi->path);
+ path = alloca(strlen(fi->full_name)+2);
+ sprintf(path, "/%s", fi->full_name);
+ url = camel_url_new_with_base (base_url, path);
fi->uri = camel_url_to_string (url, CAMEL_URL_HIDE_ALL);
camel_url_free (url);