From d64c7164d72a03da3e3acbdd97740e2100418bc8 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 3 Feb 2012 15:05:19 +0000 Subject: [PATCH] Monotone-Parent: 425bfc2f774ffc6abc9a76908ac1b2fcf7d6ad14 Monotone-Revision: 82a617e3ad7bb1a96e181c9d1c240bc2c89de7f7 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-02-03T15:05:19 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 4 ++++ OpenChange/MAPIStoreFSFolder.m | 12 ++++++------ OpenChange/MAPIStoreFolder.h | 5 +++-- OpenChange/MAPIStoreFolder.m | 13 ++++++------- OpenChange/MAPIStoreMailFolder.m | 16 +++++++++++----- 5 files changed, 30 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3a3077043..3e1e4651e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2012-02-03 Wolfgang Sourdeau + * OpenChange/MAPIStoreFolder.m (-createFolder:withFID:andKey:): + modified method to return a enum mapistore_error, in order to + better determine of the failures that occur. + * OpenChange/MAPIStoreMailFolder.m (-deleteFolder): overriden method. * SoObjects/Mailer/SOGoMailFolder.m (-exists): new method that diff --git a/OpenChange/MAPIStoreFSFolder.m b/OpenChange/MAPIStoreFSFolder.m index 684ab5a7b..145781383 100644 --- a/OpenChange/MAPIStoreFSFolder.m +++ b/OpenChange/MAPIStoreFSFolder.m @@ -42,9 +42,7 @@ #undef DEBUG #include -// #include -// #include -// #include +#include static Class EOKeyValueQualifierK; @@ -75,8 +73,9 @@ static NSString *MAPIStoreRightFolderContact = @"RightsFolderContact"; return [MAPIStoreFSFolderTable tableForContainer: self]; } -- (NSString *) createFolder: (struct SRow *) aRow - withFID: (uint64_t) newFID +- (enum mapistore_error) createFolder: (struct SRow *) aRow + withFID: (uint64_t) newFID + andKey: (NSString **) newKeyP { NSString *newKey, *urlString; NSURL *childURL; @@ -89,8 +88,9 @@ static NSString *MAPIStoreRightFolderContact = @"RightsFolderContact"; childFolder = [SOGoMAPIFSFolder folderWithURL: childURL andTableType: MAPISTORE_MESSAGE_TABLE]; [childFolder ensureDirectory]; + *newKeyP = newKey; - return newKey; + return MAPISTORE_SUCCESS; } - (MAPIStoreMessage *) createMessage diff --git a/OpenChange/MAPIStoreFolder.h b/OpenChange/MAPIStoreFolder.h index 178bb36fd..b327e8d6d 100644 --- a/OpenChange/MAPIStoreFolder.h +++ b/OpenChange/MAPIStoreFolder.h @@ -145,8 +145,9 @@ andCN: (NSNumber **) cnNbr inTableType: (enum mapistore_table_type) tableType; -- (NSString *) createFolder: (struct SRow *) aRow - withFID: (uint64_t) newFID; +- (enum mapistore_error) createFolder: (struct SRow *) aRow + withFID: (uint64_t) newFID + andKey: (NSString **) newKeyP; - (NSCalendarDate *) lastMessageModificationTime; diff --git a/OpenChange/MAPIStoreFolder.m b/OpenChange/MAPIStoreFolder.m index 20670225d..912c766a6 100644 --- a/OpenChange/MAPIStoreFolder.m +++ b/OpenChange/MAPIStoreFolder.m @@ -354,8 +354,8 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe rc = MAPISTORE_ERR_EXIST; else { - folderKey = [self createFolder: aRow withFID: fid]; - if (folderKey) + rc = [self createFolder: aRow withFID: fid andKey: &folderKey]; + if (rc == MAPISTORE_SUCCESS) { [self cleanupCaches]; baseURL = [self url]; @@ -374,8 +374,6 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe [NSException raise: @"MAPIStoreIOException" format: @"unable to fetch created folder"]; } - else - rc = MAPISTORE_ERROR; } } else @@ -1299,12 +1297,13 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe return newMessage; } -- (NSString *) createFolder: (struct SRow *) aRow - withFID: (uint64_t) newFID +- (enum mapistore_error) createFolder: (struct SRow *) aRow + withFID: (uint64_t) newFID + andKey: (NSString **) newKeyP { [self errorWithFormat: @"new folders cannot be created in this context"]; - return nil; + return MAPISTORE_ERR_DENIED; } /* helpers */ diff --git a/OpenChange/MAPIStoreMailFolder.m b/OpenChange/MAPIStoreMailFolder.m index a5e3483bd..cd5c40371 100644 --- a/OpenChange/MAPIStoreMailFolder.m +++ b/OpenChange/MAPIStoreMailFolder.m @@ -127,9 +127,11 @@ static Class SOGoMailFolderK; return [MAPIStoreMailMessageTable tableForContainer: self]; } -- (NSString *) createFolder: (struct SRow *) aRow - withFID: (uint64_t) newFID +- (enum mapistore_error) createFolder: (struct SRow *) aRow + withFID: (uint64_t) newFID + andKey: (NSString **) newKeyP { + enum mapistore_error rc; NSString *folderName, *nameInContainer; SOGoMailFolder *newFolder; int i; @@ -151,11 +153,15 @@ static Class SOGoMailFolderK; [folderName asCSSIdentifier]]; newFolder = [SOGoMailFolderK objectWithName: nameInContainer inContainer: sogoObject]; - if (![newFolder create]) - nameInContainer = nil; + if ([newFolder create]) + *newKeyP = nameInContainer; + else if ([newFolder exists]) + rc = MAPISTORE_ERR_EXIST; + else + rc = MAPISTORE_ERR_DENIED; } - return nameInContainer; + return rc; } - (int) deleteFolder