"pod" == pod
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,