>>>>> "pod" == pod <[EMAIL PROTECTED]> writes:
pod> I'd like to flag a problem we are observing that looks like it is
pod> caused by the listescape-plugin.c. I realize that this plugin is
pod> not part of the standard Dovecot 1.0 distribution but I would
pod> appreciate any insights or suggestions for fixes that anyone is
pod> kind enough to offer.
[...]
Update: my original analysis of this was incorrect. The 'internal'
functions are correctly using 'internal' names, however
maildir_mailbox_list_next() references storage->hierarchy_sep to obtain a
char with which to join together path elements. Under listescape however
storage->hierarchy_sep == '/' so non-existent pathnames are generated.
I've come up with the following workaround but I can't help feeling it is
maybe a little fragile.
Timo: please consider applying this to
<http://dovecot.org/patches/1.0/listescape-plugin.c>
diff -r 70cc4b8884ef src/plugins/listescape/listescape-plugin.c
--- a/src/plugins/listescape/listescape-plugin.c Tue Jul 31 19:42:03
2007 +0100
+++ b/src/plugins/listescape/listescape-plugin.c Fri Aug 31 19:21:05
2007 +0100
@@ -160,10 +160,16 @@ listescape_mailbox_rename(struct mail_st
{
struct listescape_mail_storage *mstorage =
LIST_ESCAPE_CONTEXT(storage);
+ char saved_hierarchy_sep;
+ int ret;
oldname = list_escape(oldname);
newname = list_escape(newname);
- return mstorage->super.mailbox_rename(storage, oldname, newname);
+ saved_hierarchy_sep = storage->hierarchy_sep;
+ storage->hierarchy_sep = REAL_SEP;
+ ret = mstorage->super.mailbox_rename(storage, oldname, newname);
+ storage->hierarchy_sep = saved_hierarchy_sep;
+ return ret;
}
static int listescape_set_subscribed(struct mail_storage *storage,