summaryrefslogtreecommitdiff
path: root/libmailutils/mailbox/fsfolder.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmailutils/mailbox/fsfolder.c')
-rw-r--r--libmailutils/mailbox/fsfolder.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/libmailutils/mailbox/fsfolder.c b/libmailutils/mailbox/fsfolder.c
index 805aea626..0b3e59a4a 100644
--- a/libmailutils/mailbox/fsfolder.c
+++ b/libmailutils/mailbox/fsfolder.c
@@ -146,7 +146,7 @@ _fsfolder_close (mu_folder_t folder MU_ARG_UNUSED)
static int
_fsfolder_rename (mu_folder_t folder, const char *oldpath,
- const char *newpath)
+ const char *newpath)
{
struct _mu_fsfolder *fsfolder = folder->data;
if (oldpath && newpath)
@@ -188,6 +188,7 @@ struct folder_scan_data
mu_folder_t folder;
char *dirname;
size_t dirlen;
+ size_t prefix_len;
size_t errcnt;
};
@@ -376,7 +377,7 @@ list_helper (struct mu_folder_scanner *scn,
}
else
{
- resp->name = fname;
+ resp->name = strdup (fname + data->prefix_len + 1);
resp->depth = depth;
resp->separator = '/';
resp->type = type;
@@ -458,6 +459,9 @@ _fsfolder_list (mu_folder_t folder, struct mu_folder_scanner *scn)
sdata.folder = folder;
sdata.dirname = get_pathname (fsfolder->dirname, scn->refname);
sdata.dirlen = strlen (sdata.dirname);
+ sdata.prefix_len = strlen (fsfolder->dirname);
+ if (sdata.prefix_len > 0 && fsfolder->dirname[sdata.prefix_len-1] == '/')
+ sdata.prefix_len--;
sdata.errcnt = 0;
list_helper (scn, &sdata, &iroot, sdata.dirname, 0);
free (sdata.dirname);

Return to:

Send suggestions and report system problems to the System administrator.