aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-tools.c
diff options
context:
space:
mode:
Diffstat (limited to 'mail/mail-tools.c')
-rw-r--r--mail/mail-tools.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/mail/mail-tools.c b/mail/mail-tools.c
index 994879953b..abec85f86c 100644
--- a/mail/mail-tools.c
+++ b/mail/mail-tools.c
@@ -62,23 +62,27 @@ mail_tool_get_folder_from_urlname (const gchar *url, const gchar *name,
return folder;
}
-const gchar *
+char *
mail_tool_get_folder_name (CamelFolder *folder)
{
const char *name = camel_folder_get_full_name (folder);
- char *path;
-
+ char *path, *pend;
+
/* This is a kludge. */
-
- if (strcmp (name, "//mbox") && strcmp (name, "//mh"))
- return name;
-
+ if (strcmp (name, "mbox") && strcmp (name, "mh") && strcmp (name, "maildir"))
+ return g_strdup (name);
+
/* For mbox/mh, return the parent store's final path component. */
- path = CAMEL_SERVICE (folder->parent_store)->url->path;
- if (strchr (path, '/'))
- return strrchr (path, '/') + 1;
- else
- return path;
+ path = g_strdup (CAMEL_SERVICE (folder->parent_store)->url->path);
+ pend = path + strlen (path) - 1;
+ if (*pend == '/')
+ *pend = '\0';
+
+ pend = path;
+ path = g_strdup (g_basename (path));
+ g_free (pend);
+
+ return path;
}
gchar *