fix for 58691 problem with cyrus imap hierarchy delimiters, sr=mscott

This commit is contained in:
bienvenu%netscape.com 2000-11-16 21:44:59 +00:00
Родитель 93d007ea97
Коммит 9187d9d53d
2 изменённых файлов: 7 добавлений и 3 удалений

Просмотреть файл

@ -891,6 +891,7 @@ nsImapIncomingServer::CloseCachedConnections()
// nsIImapServerSink impl
NS_IMETHODIMP nsImapIncomingServer::PossibleImapMailbox(const char *folderPath, PRUnichar hierarchyDelimiter, PRInt32 boxFlags)
{
// folderPath is in canonical format, i.e., hierarchy separator has been replaced with '/'
nsresult rv;
PRBool found = PR_FALSE;
PRBool haveParent = PR_FALSE;
@ -923,7 +924,7 @@ NS_IMETHODIMP nsImapIncomingServer::PossibleImapMailbox(const char *folderPath,
uri.Assign(serverUri);
PRInt32 leafPos = folderName.RFindChar(hierarchyDelimiter);
PRInt32 leafPos = folderName.RFindChar('/');
nsCAutoString parentName(folderName);
nsCAutoString parentUri(uri);
@ -1014,7 +1015,10 @@ NS_IMETHODIMP nsImapIncomingServer::PossibleImapMailbox(const char *folderPath,
imapFolder->SetBoxFlags(boxFlags);
imapFolder->SetExplicitlyVerify(explicitlyVerify);
imapFolder->GetOnlineName(getter_Copies(onlineName));
if (! ((const char*) onlineName) || nsCRT::strlen((const char *) onlineName) == 0
// online name needs to use the correct hierarchy delimiter (I think...)
// or the canonical path - one or the other, but be consistent.
dupFolderPath.ReplaceChar('/', hierarchyDelimiter);
if (! ((const char*) onlineName) || nsCRT::strlen((const char *) onlineName) == 0
|| nsCRT::strcmp((const char *) onlineName, dupFolderPath))
imapFolder->SetOnlineName(dupFolderPath);
if (NS_SUCCEEDED(CreatePRUnicharStringFromUTF7(folderName, getter_Copies(unicodeName))))

Просмотреть файл

@ -570,7 +570,7 @@ NS_IMETHODIMP nsImapMailFolder::CreateClientSubfolderInfo(const char *folderName
nsAutoString leafName; leafName.AssignWithConversion(folderName);
nsAutoString folderNameStr;
nsAutoString parentName = leafName;
PRInt32 folderStart = leafName.FindChar(hierarchyDelimiter);
PRInt32 folderStart = leafName.FindChar('/');
if (folderStart > 0)
{
NS_WITH_SERVICE(nsIRDFService, rdf, kRDFServiceCID, &rv);