[dev] Renaming folders with sub-folders...

Marc Jauvin marc at register4less.com
Wed Feb 25 13:10:39 PST 2004


The line number is now 509 with CVS HEAD...

--marc

Gary Windham <windhamg at email.arizona.edu> wrote:

> Quoting Michael M Slusarz <slusarz at bigworm.colorado.edu>:
>
>> Quoting Gary Windham <windhamg at email.arizona.edu>:
>>
>>> Quoting Michael M Slusarz <slusarz at bigworm.colorado.edu>:
>>>
>>>> Quoting Gary Windham <windhamg at email.arizona.edu>:
>>>>
>>>>> I confirmed this behavior, using Cyrus IMAP 2.1.14.  Reloading 
>>>>> the folder list
>>>>> resulted in the original "test" folder disappearing, so this 
>>>>> appears to be a
>>>>> cache issue.
>>>>
>>>> Try what I just committed.
>>>
>>> Works for me...except for a couple of weird edge conditions.  I almost
>>> hesitate
>>> to mention them, but they're just too weird.
>>>
>>> If I have a folder hierarchy a/<anything>, where the top-level folder is
>>> *literally* called "a", then the folder rename operation fails.  If the
>>> top-level folder is called "b", or "x", or "aa", "cucumber", or *anything*
>>> else, then the rename succeeds.
>>
>> That is strange - can't replicate that here.  Chuck's post possibly explains
>> this one though...
>>
>>> The second condition is if I have a folder hierarchy "test1/test1", then
>>> renaming the top-level folder to "test2" results in the subfolder being
>>> renamed
>>> to "test2" as well.  That is, "test1/test1" becomes "test2/test2".
>>
>> Can't replicate this, using courier-imap 2.2.0 (i.e., test0/test0,
>> selecting the
>> base test0, changing the name test1, results in a tree of test1/test0).
>
> OK, I traced down the cause of both these problems, but I am puzzled 
> as to why
> you weren't able to replicate them.
>
> Line 519 in imp/lib/Folder.php (inside function rename()) reads:
>
>    $folder_new = str_replace($old, $new, $folder_old);
>
> Since $folder_old, is going to be a fully-qualified folder path (with
> the server
> prefix), it's easy to see how the above str_replace() will munge the
> new folder
> name for the following case:
>
> $old = 'a';
> $new = 'x';
> $folder_old = '{inbox.email.arizona.edu:143/imap/notls}a';
>
> After the above call to str_replace(), $folder_new becomes
> 'inbox.emxil.xrizonx.edu:143/imxp/notls}x'.  imap_renamemailbox() 
> subsequently
> barfs. :)
>
> The other case (test1/test1 => test2/test2) also appears to be caused by this
> same call to str_replace().  The variables in this case are:
>
> $old = 'test1';
> $new = 'test2';
> $folder_old = '{inbox.email.arizona.edu:143/imap/notls}test1/test1';
>
> $folder_new becomes '{inbox.email.arizona.edu:143/imap/notls}test2/test2';
>
> Thanks,
> --Gary
> --
> Gary Windham
> Systems Programmer, Principal
> The University of Arizona, CCIT
>
> --
> Horde developers mailing list - Join the hunt: http://horde.org/bounties/
> Frequently Asked Questions: http://horde.org/faq/
> To unsubscribe, mail: dev-unsubscribe at lists.horde.org



--
Marc Jauvin
http://register4less.com
450-441-5458



More information about the dev mailing list