From 20a336eecde297a8c933ac26c320d95ff6c04305 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 24 Feb 2012 20:10:56 +0000 Subject: [PATCH 01/29] Monotone-Parent: 4820885b1e556f6d0177021967d8b07cb1154aff Monotone-Revision: b85ba9f2eec26821837bb7890dcb3fd9f82c2eb5 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-02-24T20:10:56 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 7 + SoObjects/Mailer/SOGoMailFolder.m | 248 +++++++++++++++++++----------- 2 files changed, 169 insertions(+), 86 deletions(-) diff --git a/ChangeLog b/ChangeLog index a8a6c3580..b07384f68 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2012-02-24 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailFolder.m: ensure the imap connection is + available before performing certain operations, otherwise return + an exception. This only applies on methods that return an + exception, others were left untouched. + 2012-02-23 Wolfgang Sourdeau * OpenChange/MAPIStoreMailContext.m diff --git a/SoObjects/Mailer/SOGoMailFolder.m b/SoObjects/Mailer/SOGoMailFolder.m index 87cece7d8..886a9b032 100644 --- a/SoObjects/Mailer/SOGoMailFolder.m +++ b/SoObjects/Mailer/SOGoMailFolder.m @@ -279,32 +279,38 @@ static NSString *defaultUserID = @"anyone"; { [self imap4URL]; - [self imap4Connection]; - client = [imap4 client]; + if ([self imap4Connection]) + { + client = [imap4 client]; - inbox = [[self mailAccountFolder] inboxFolderInContext: context]; - [client select: [inbox absoluteImap4Name]]; + inbox = [[self mailAccountFolder] inboxFolderInContext: context]; + [client select: [inbox absoluteImap4Name]]; - path = [[imap4URL path] stringByDeletingLastPathComponent]; - if (![path hasSuffix: @"/"]) - path = [path stringByAppendingString: @"/"]; - destURL = [[NSURL alloc] initWithScheme: [imap4URL scheme] - host: [imap4URL host] - path: [NSString stringWithFormat: @"%@%@", - path, newName]]; - [destURL autorelease]; - error = [imap4 moveMailboxAtURL: imap4URL - toURL: destURL]; - if (!error) - { - // We unsubscribe to the old one, and subscribe back to the new one - if ([[[context activeUser] userDefaults] - mailShowSubscribedFoldersOnly]) - { - [client subscribe: [destURL path]]; - [client unsubscribe: [imap4URL path]]; - } - } + path = [[imap4URL path] stringByDeletingLastPathComponent]; + if (![path hasSuffix: @"/"]) + path = [path stringByAppendingString: @"/"]; + destURL = [[NSURL alloc] initWithScheme: [imap4URL scheme] + host: [imap4URL host] + path: [NSString stringWithFormat: @"%@%@", + path, newName]]; + [destURL autorelease]; + error = [imap4 moveMailboxAtURL: imap4URL + toURL: destURL]; + if (!error) + { + // We unsubscribe to the old one, and subscribe back to the new one + if ([[[context activeUser] userDefaults] + mailShowSubscribedFoldersOnly]) + { + [client subscribe: [destURL path]]; + [client unsubscribe: [imap4URL path]]; + } + } + } + else + error = [NSException exceptionWithName: @"SOGoMailException" + reason: @"IMAP connection is invalid" + userInfo: nil]; } else error = [NSException exceptionWithName: @"SOGoMailException" @@ -390,33 +396,41 @@ static NSString *defaultUserID = @"anyone"; error = (NSException *) trashFolder; else { - client = [[self imap4Connection] client]; - [imap4 selectFolder: [self imap4URL]]; - folderName = [imap4 imap4FolderNameForURL: [trashFolder imap4URL]]; - b = YES; + if ([self imap4Connection]) + { + error = nil; + client = [imap4 client]; + [imap4 selectFolder: [self imap4URL]]; + folderName = [imap4 imap4FolderNameForURL: [trashFolder imap4URL]]; + b = YES; - // If we are deleting messages within the Trash folder itself, we - // do not, of course, try to move messages to the Trash folder. - if ([folderName isEqualToString: [self relativeImap4Name]]) - { - *withTrash = NO; - } - else - { - // If our Trash folder doesn't exist when we try to copy messages - // to it, we create it. - result = [[client status: folderName flags: [NSArray arrayWithObject: @"UIDVALIDITY"]] - objectForKey: @"result"]; + // If we are deleting messages within the Trash folder itself, we + // do not, of course, try to move messages to the Trash folder. + if ([folderName isEqualToString: [self relativeImap4Name]]) + { + *withTrash = NO; + } + else + { + // If our Trash folder doesn't exist when we try to copy messages + // to it, we create it. + result = [[client status: folderName flags: [NSArray arrayWithObject: @"UIDVALIDITY"]] + objectForKey: @"result"]; - if (![result boolValue]) - [[self imap4Connection] createMailbox: folderName - atURL: [[self mailAccountFolder] imap4URL]]; + if (![result boolValue]) + [imap4 createMailbox: folderName + atURL: [[self mailAccountFolder] imap4URL]]; - result = [[client copyUids: uids toFolder: folderName] - objectForKey: @"result"]; + result = [[client copyUids: uids toFolder: folderName] + objectForKey: @"result"]; - b = [result boolValue]; + b = [result boolValue]; + } } + else + error = [NSException exceptionWithName: @"SOGoMailException" + reason: @"IMAP connection is invalid" + userInfo: nil]; } } else @@ -602,23 +616,32 @@ static NSString *defaultUserID = @"anyone"; } client = [[self imap4Connection] client]; - [imap4 selectFolder: [self imap4URL]]; + if (client) + { + [imap4 selectFolder: [self imap4URL]]; - // We make sure the destination IMAP folder exist, if not, we create it. - result = [[client status: imapDestinationFolder - flags: [NSArray arrayWithObject: @"UIDVALIDITY"]] - objectForKey: @"result"]; - if (![result boolValue]) - result = [[self imap4Connection] createMailbox: imapDestinationFolder - atURL: [[self mailAccountFolder] imap4URL]]; - if (!result || [result boolValue]) - result = [client copyUids: uids toFolder: imapDestinationFolder]; + // We make sure the destination IMAP folder exist, if not, we create it. + result = [[client status: imapDestinationFolder + flags: [NSArray arrayWithObject: @"UIDVALIDITY"]] + objectForKey: @"result"]; + if (![result boolValue]) + result = [[self imap4Connection] createMailbox: imapDestinationFolder + atURL: [[self mailAccountFolder] imap4URL]]; + if (!result || [result boolValue]) + result = [client copyUids: uids toFolder: imapDestinationFolder]; - if ([[result valueForKey: @"result"] boolValue]) - result = nil; + if ([[result valueForKey: @"result"] boolValue]) + result = nil; + else + result = [NSException exceptionWithHTTPStatus: 500 + reason: [[[result objectForKey: @"RawResponse"] + objectForKey: @"ResponseResult"] + objectForKey: @"description"]]; + } else - result = [NSException exceptionWithHTTPStatus: 500 - reason: [[[result objectForKey: @"RawResponse"] objectForKey: @"ResponseResult"] objectForKey: @"description"]]; + result = [NSException exceptionWithName: @"SOGoMailException" + reason: @"IMAP connection is invalid" + userInfo: nil]; } else result = [NSException exceptionWithHTTPStatus: 500 @@ -639,18 +662,24 @@ static NSString *defaultUserID = @"anyone"; NGImap4Client *client; client = [[self imap4Connection] client]; - - result = [self copyUIDs: uids toFolder: destinationFolder inContext: localContext]; - if (![result isNotNull]) + if (client) { - result = [client storeFlags: [NSArray arrayWithObject: @"Deleted"] - forUIDs: uids addOrRemove: YES]; - if ([[result valueForKey: @"result"] boolValue]) - { - [self markForExpunge]; - result = nil; - } + result = [self copyUIDs: uids toFolder: destinationFolder inContext: localContext]; + if (![result isNotNull]) + { + result = [client storeFlags: [NSArray arrayWithObject: @"Deleted"] + forUIDs: uids addOrRemove: YES]; + if ([[result valueForKey: @"result"] boolValue]) + { + [self markForExpunge]; + result = nil; + } + } } + else + result = [NSException exceptionWithName: @"SOGoMailException" + reason: @"IMAP connection is invalid" + userInfo: nil]; return result; } @@ -734,7 +763,15 @@ static NSString *defaultUserID = @"anyone"; - (NSException *) expunge { - return [[self imap4Connection] expungeAtURL: [self imap4URL]]; + NSException *error; + + if ([self imap4Connection]) + error = [imap4 expungeAtURL: [self imap4URL]]; + else + error = [NSException exceptionWithName: @"SOGoMailException" + reason: @"IMAP connection is invalid" + userInfo: nil]; + return error; } - (void) markForExpunge @@ -790,8 +827,17 @@ static NSString *defaultUserID = @"anyone"; - (NSException *) addFlagsToAllMessages: (id) _f { - return [[self imap4Connection] addFlags:_f - toAllMessagesInURL: [self imap4URL]]; + NSException *error; + + if ([self imap4Connection]) + error = [imap4 addFlags:_f + toAllMessagesInURL: [self imap4URL]]; + else + error = [NSException exceptionWithName: @"SOGoMailException" + reason: @"IMAP connection is invalid" + userInfo: nil]; + + return error; } /* name lookup */ @@ -860,7 +906,16 @@ static NSString *defaultUserID = @"anyone"; - (NSException *) davCreateCollection: (NSString *) _name inContext: (id) _ctx { - return [[self imap4Connection] createMailbox:_name atURL:[self imap4URL]]; + NSException *error; + + if ([self imap4Connection]) + error = [imap4 createMailbox:_name atURL:[self imap4URL]]; + else + error = [NSException exceptionWithName: @"SOGoMailException" + reason: @"IMAP connection is invalid" + userInfo: nil]; + + return error; } - (BOOL) exists @@ -873,29 +928,43 @@ static NSString *defaultUserID = @"anyone"; NSException *error; BOOL rc; - [self imap4Connection]; - error = [imap4 createMailbox: [self relativeImap4Name] - atURL: [container imap4URL]]; - if (error) - rc = NO; - else + if ([self imap4Connection]) { - [[imap4 client] subscribe: [self absoluteImap4Name]]; - rc = YES; + error = [imap4 createMailbox: [self relativeImap4Name] + atURL: [container imap4URL]]; + if (error) + rc = NO; + else + { + [[imap4 client] subscribe: [self absoluteImap4Name]]; + rc = YES; + } } + else + rc = NO; return rc; } - (NSException *) delete { - return [[self imap4Connection] deleteMailboxAtURL:[self imap4URL]]; + NSException *error; + + if ([self imap4Connection]) + error = [imap4 deleteMailboxAtURL: [self imap4URL]]; + else + error = [NSException exceptionWithName: @"SOGoMailException" + reason: @"IMAP connection is invalid" + userInfo: nil]; + + return error; } - (NSException *) davMoveToTargetObject: (id) _target newName: (NSString *) _name inContext: (id)_ctx { + NSException *error; NSURL *destImapURL; if ([_name length] == 0) { /* target already exists! */ @@ -920,9 +989,16 @@ static NSString *defaultUserID = @"anyone"; [self logWithFormat:@"TODO: should move collection as '%@' to: %@", [[self imap4URL] absoluteString], [destImapURL absoluteString]]; - - return [[self imap4Connection] moveMailboxAtURL:[self imap4URL] - toURL:destImapURL]; + + if ([self imap4Connection]) + error = [imap4 moveMailboxAtURL: [self imap4URL] + toURL: destImapURL]; + else + error = [NSException exceptionWithName: @"SOGoMailException" + reason: @"IMAP connection is invalid" + userInfo: nil]; + + return error; } - (NSException *) davCopyToTargetObject: (id) _target From d5964f3fdd77b233d0e9bab7256eb55e1fb6f1e7 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Mon, 27 Feb 2012 18:43:42 +0000 Subject: [PATCH 02/29] Monotone-Parent: 4a7c44a79feb3e8d5e76eb15e2e3fbe5c2dcf7fa Monotone-Revision: edfc795ccfa7cf0b564762207d8377e9a1d4e650 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-02-27T18:43:42 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 6 ++++++ OpenChange/MAPIStoreUserContext.m | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index b07384f68..45c78dfc2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2012-02-27 Wolfgang Sourdeau + + * OpenChange/MAPIStoreUserContext.m (-rootFolders:): + -[NGImap4Connection enableExtensions:] now takes an array of + strings rather than a single string argument. + 2012-02-24 Wolfgang Sourdeau * SoObjects/Mailer/SOGoMailFolder.m: ensure the imap connection is diff --git a/OpenChange/MAPIStoreUserContext.m b/OpenChange/MAPIStoreUserContext.m index 222f1d560..53f20d37c 100644 --- a/OpenChange/MAPIStoreUserContext.m +++ b/OpenChange/MAPIStoreUserContext.m @@ -188,7 +188,7 @@ static NSMapTable *contextsTable = nil; [rootFolders setObject: currentFolder forKey: @"mail"]; [[currentFolder imap4Connection] - enableExtension: @"QRESYNC"]; + enableExtensions: [NSArray arrayWithObject: @"QRESYNC"]]; } return rootFolders; From 1f78824b4de907b1ab6510b81fbe46340c79ecdd Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 28 Feb 2012 22:26:09 +0000 Subject: [PATCH 03/29] Monotone-Parent: edfc795ccfa7cf0b564762207d8377e9a1d4e650 Monotone-Revision: 09639e12aa5fbdcbeebb63070f77940c49f0aabd Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-02-28T22:26:09 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 5 +++++ OpenChange/gen-property-selectors.py | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 45c78dfc2..062361edc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-02-28 Wolfgang Sourdeau + + * OpenChange/gen-property-selectors.py: bannedProps is now an + array instead of a dict of "True" values. + 2012-02-27 Wolfgang Sourdeau * OpenChange/MAPIStoreUserContext.m (-rootFolders:): diff --git a/OpenChange/gen-property-selectors.py b/OpenChange/gen-property-selectors.py index abf2fb283..845fd4bab 100755 --- a/OpenChange/gen-property-selectors.py +++ b/OpenChange/gen-property-selectors.py @@ -106,15 +106,15 @@ extern const enum MAPITAGS MAPIStoreSupportedProperties[]; # hack: some properties have multiple and incompatible types. Sometimes those # props are not related at all... -bannedProps = { "PrBodyHtml": True, "PrFavAutosubfolders": True, - "PrAttachDataObj": True, "PrAclTable": True, - "PrAclData": True, "PrRulesTable": True, "PrRulesData": True, - "PrDisableWinsock": True, "PrHierarchyServer": True, - "PrOfflineAddrbookEntryid": True, - "PrShorttermEntryidFromObject": True, - "PrNormalMessageSizeExtended": True, - "PrAssocMessageSizeExtended": True, - "PrMessageSizeExtended": True } +bannedProps = [ "PrBodyHtml", "PrFavAutosubfolders", + "PrAttachDataObj", "PrAclTable", + "PrAclData", "PrRulesTable", "PrRulesData", + "PrDisableWinsock", "PrHierarchyServer", + "PrOfflineAddrbookEntryid", + "PrShorttermEntryidFromObject", + "PrNormalMessageSizeExtended", + "PrAssocMessageSizeExtended", + "PrMessageSizeExtended" ] def ParseExchangeH(names, lines): state = 0 @@ -151,7 +151,7 @@ def ParseExchangeHDefinition(names, line): propName = GenExchangeHName(stripped[0:eqIdx]) if not propName.endswith("Error") and not propName.endswith("Unicode") \ and not propName.startswith("PrProfile") \ - and not bannedProps.has_key(propName): + and propName not in bannedProps: intIdx = stripped.find("(int", eqIdx) valueIdx = stripped.find("0x", intIdx + 1) endIdx = stripped.find(")", valueIdx) From 351d3c72e8a2d569bc6cb047ac18c1e69023a50a Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 29 Feb 2012 04:15:32 +0000 Subject: [PATCH 04/29] Monotone-Parent: 09639e12aa5fbdcbeebb63070f77940c49f0aabd Monotone-Revision: 918d650595c58f2ee59ce861c37907edceb28aa7 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-02-29T04:15:32 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 1 + OpenChange/gen-property-selectors.py | 13 +++++-------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 062361edc..57dd97a78 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ * OpenChange/gen-property-selectors.py: bannedProps is now an array instead of a dict of "True" values. + Added "PrOabContainerGuid" to bannedProps. 2012-02-27 Wolfgang Sourdeau diff --git a/OpenChange/gen-property-selectors.py b/OpenChange/gen-property-selectors.py index 845fd4bab..cd638b351 100755 --- a/OpenChange/gen-property-selectors.py +++ b/OpenChange/gen-property-selectors.py @@ -106,15 +106,12 @@ extern const enum MAPITAGS MAPIStoreSupportedProperties[]; # hack: some properties have multiple and incompatible types. Sometimes those # props are not related at all... -bannedProps = [ "PrBodyHtml", "PrFavAutosubfolders", - "PrAttachDataObj", "PrAclTable", - "PrAclData", "PrRulesTable", "PrRulesData", +bannedProps = [ "PrBodyHtml", "PrFavAutosubfolders", "PrAttachDataObj", + "PrAclTable", "PrAclData", "PrRulesTable", "PrRulesData", "PrDisableWinsock", "PrHierarchyServer", - "PrOfflineAddrbookEntryid", - "PrShorttermEntryidFromObject", - "PrNormalMessageSizeExtended", - "PrAssocMessageSizeExtended", - "PrMessageSizeExtended" ] + "PrOfflineAddrbookEntryid", "PrShorttermEntryidFromObject", + "PrNormalMessageSizeExtended", "PrAssocMessageSizeExtended", + "PrMessageSizeExtended", "PrOabContainerGuid" ] def ParseExchangeH(names, lines): state = 0 From bf2a6636c1e1149c2d8b7296146f1a15f13bc4c3 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 29 Feb 2012 04:15:42 +0000 Subject: [PATCH 05/29] Monotone-Parent: 918d650595c58f2ee59ce861c37907edceb28aa7 Monotone-Revision: 06454d6f51cf228398d63d36b7e74eaac7080cc2 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-02-29T04:15:42 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 6 ++++++ OpenChange/MAPIStoreMailFolder.m | 14 +++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 57dd97a78..644f8492e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2012-02-28 Wolfgang Sourdeau + * OpenChange/MAPIStoreMailFolder.m + (-moveCopyMessagesWithMIDs:andCount:fromFolder:withMIDs:andChangeKeys:wantCopy:): + we sync the version cache with the folder in order to update the + target message change keys, which was causing versioning issues + with Outlook 2010. + * OpenChange/gen-property-selectors.py: bannedProps is now an array instead of a dict of "True" values. Added "PrOabContainerGuid" to bannedProps. diff --git a/OpenChange/MAPIStoreMailFolder.m b/OpenChange/MAPIStoreMailFolder.m index 3aefb8931..592674ee5 100644 --- a/OpenChange/MAPIStoreMailFolder.m +++ b/OpenChange/MAPIStoreMailFolder.m @@ -902,7 +902,7 @@ _parseCOPYUID (NSString *line, NSArray **destUIDsP) { NGImap4Connection *connection; NGImap4Client *client; - NSString *sourceFolderName, *targetFolderName, *messageURL, *v; + NSString *sourceFolderName, *targetFolderName, *messageURL, *messageKey, *v; NSMutableArray *uids, *oldMessageURLs; NSNumber *uid; NSArray *destUIDs; @@ -910,6 +910,7 @@ _parseCOPYUID (NSString *line, NSArray **destUIDsP) NSDictionary *result; NSUInteger count; NSArray *a; + NSData *changeKey; if (![sourceFolder isKindOfClass: [MAPIStoreMailFolder class]]) return [super moveCopyMessagesWithMIDs: srcMids andCount: midCount @@ -989,6 +990,17 @@ _parseCOPYUID (NSString *line, NSArray **destUIDsP) [mapping registerURL: messageURL withID: targetMids[count]]; } + /* Update the change keys */ + [self synchroniseCache]; + for (count = 0; count < midCount; count++) + { + changeKey = [NSData dataWithBinary: targetChangeKeys[count]]; + messageKey = [NSString stringWithFormat: @"%@.eml", + [destUIDs objectAtIndex: count]]; + [self setChangeKey: changeKey + forMessageWithKey: messageKey]; + } + [self postNotificationsForMoveCopyMessagesWithMIDs: srcMids andMessageURLs: oldMessageURLs andCount: midCount From f687f1958dc2a9acc08561a045cb8361ee8608cc Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 1 Mar 2012 21:28:44 +0000 Subject: [PATCH 06/29] Monotone-Parent: ef75cd511cd1ba19bc7897bde4a1822bc3ea723e Monotone-Revision: d8fc3d2ee86a0b0a254a0235e85dc2c9a2b938d7 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-01T21:28:44 Monotone-Branch: ca.inverse.sogo --- Version | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Version b/Version index bf09603b5..09503ebca 100644 --- a/Version +++ b/Version @@ -2,6 +2,6 @@ # This file is included by library makefiles to set the version information # of the executable. -MAJOR_VERSION=1 -MINOR_VERSION=3 -SUBMINOR_VERSION=13 +MAJOR_VERSION=2 +MINOR_VERSION=0 +SUBMINOR_VERSION=0 From 260263b6ec97bfc06cef5ba50bbd4db7f47f979a Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 2 Mar 2012 14:41:15 +0000 Subject: [PATCH 07/29] Monotone-Parent: 7172e18d32de3bd2bb4232516383f7087889d442 Monotone-Revision: 4d7bcac9e677fe169f33c5d75187e05adbfeb918 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-02T14:41:15 Monotone-Branch: ca.inverse.sogo --- SoObjects/SOGo/GNUmakefile.preamble | 1 + 1 file changed, 1 insertion(+) diff --git a/SoObjects/SOGo/GNUmakefile.preamble b/SoObjects/SOGo/GNUmakefile.preamble index ee71f35ab..b65dfd362 100644 --- a/SoObjects/SOGo/GNUmakefile.preamble +++ b/SoObjects/SOGo/GNUmakefile.preamble @@ -13,6 +13,7 @@ ADDITIONAL_CPPFLAGS += \ -DSOGO_LIBDIR="\"$(SOGO_LIBDIR)\"" SOGo_LIBRARIES_DEPEND_UPON += \ + -Wl,--no-as-needed \ -L../../OGoContentStore/$(GNUSTEP_OBJ_DIR)/ -lOGoContentStore \ -L../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ \ -lmemcached \ From 3eed4c28a3bbe867a6afb89b6c6b9c581aca61f5 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 2 Mar 2012 20:11:05 +0000 Subject: [PATCH 08/29] Monotone-Parent: 4d7bcac9e677fe169f33c5d75187e05adbfeb918 Monotone-Revision: e5be024d92916be1586d601d50ed79f354eda2c7 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-02T20:11:05 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 6 ++++ OpenChange/gen-property-selectors.py | 54 +++++++++++++++++----------- 2 files changed, 39 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7bd90a8f0..45d962298 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2012-03-02 Wolfgang Sourdeau + + * OpenChange/gen-property-selectors.py: adapted for new getters + name, based on new property names. Added all new clashing + properties to bannedProps. + 2012-03-01 Wolfgang Sourdeau * SoObjects/SOGo/LDAPSource.m (_convertRecordToLDAPAttributes): diff --git a/OpenChange/gen-property-selectors.py b/OpenChange/gen-property-selectors.py index cd638b351..919bcad92 100755 --- a/OpenChange/gen-property-selectors.py +++ b/OpenChange/gen-property-selectors.py @@ -106,12 +106,32 @@ extern const enum MAPITAGS MAPIStoreSupportedProperties[]; # hack: some properties have multiple and incompatible types. Sometimes those # props are not related at all... -bannedProps = [ "PrBodyHtml", "PrFavAutosubfolders", "PrAttachDataObj", - "PrAclTable", "PrAclData", "PrRulesTable", "PrRulesData", - "PrDisableWinsock", "PrHierarchyServer", - "PrOfflineAddrbookEntryid", "PrShorttermEntryidFromObject", - "PrNormalMessageSizeExtended", "PrAssocMessageSizeExtended", - "PrMessageSizeExtended", "PrOabContainerGuid" ] +bannedProps = [ "PidTagBodyHtml", "PidTagFavAutosubfolders", + "PidTagAttachDataObj", "PidTagAclTable", "PidTagAclData", + "PidTagRulesTable", "PidTagRulesData", "PidTagDisableWinsock", + "PidTagHierarchyServer", "PidTagOfflineAddrbookEntryid", + "PidTagShorttermEntryidFromObject", + "PidTagNormalMessageSizeExtended", + "PidTagAssocMessageSizeExtended", "PidTagMessageSizeExtended", + "PidTagOabContainerGuid", + "PidTagOfflineAddressBookMessageClass", "PidTagScriptData", + "PidTagOfflineAddressBookTruncatedProperties", + "PidTagOfflineAddressBookContainerGuid", + "PidTagOfflineAddressBookDistinguishedName", + "PidTagOfflineAddressBookShaHash", + "PidTagSenderTelephoneNumber", "PidTagGatewayNeedsToRefresh", + "PidTagWlinkType", "PidTagWlinkFlags", + "PidTagWlinkGroupClsid", "PidTagWlinkGroupName", + "PidTagWlinkGroupHeaderID", + "PidTagScheduleInfoDelegatorWantsCopy", "PidTagWlinkOrdinal", + "PidTagWlinkSection", "PidTagWlinkCalendarColor", + "PidTagWlinkAddressBookEID", "PidTagWlinkFolderType", + "PidTagScheduleInfoDelegateNames", + "PidTagScheduleInfoDelegateEntryIds", + "PidTagBusiness2TelephoneNumbers", + "PidTagHome2TelephoneNumbers", + "PidTagAttachDataObject" + ] def ParseExchangeH(names, lines): state = 0 @@ -132,23 +152,15 @@ def ParseExchangeH(names, lines): ParseExchangeHDefinition(names, stripped) x = x + 1 -def GenExchangeHName(startname): - parts = startname.split("_") - newParts = [] - for part in parts: - newParts.append("%s%s" % (part[0].upper(), part[1:].lower())) - - return "".join(newParts) - def ParseExchangeHDefinition(names, line): stripped = line.strip() eqIdx = stripped.find("=") if eqIdx == -1: raise Exception, "line does not contain a '='" - propName = GenExchangeHName(stripped[0:eqIdx]) - if not propName.endswith("Error") and not propName.endswith("Unicode") \ - and not propName.startswith("PrProfile") \ - and propName not in bannedProps: + + propName = stripped[0:eqIdx] + if not propName.endswith("_Error") and not propName.endswith("_string8") \ + and propName not in bannedProps: intIdx = stripped.find("(int", eqIdx) valueIdx = stripped.find("0x", intIdx + 1) endIdx = stripped.find(")", valueIdx) @@ -169,9 +181,9 @@ def ParseMapistoreNameIDHDefinition(names, line): raise Exception, "line does not contain a 'Pid'" valueIdx = stripped.find("0x") propName = stripped[pidIdx:valueIdx].strip() - value = int(stripped[valueIdx:], 16) - - names[propName] = value + if not propName.startswith("PidLidUnknown") and propName not in bannedProps: + value = int(stripped[valueIdx:], 16) + names[propName] = value def FindHFile(filename): found = None From 65b25f5a75178e12b7f0ae79108b4851709948ad Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 2 Mar 2012 20:43:00 +0000 Subject: [PATCH 09/29] Monotone-Parent: e5be024d92916be1586d601d50ed79f354eda2c7 Monotone-Revision: 1e532558ba17916d33138e4c65d283faf4d0e929 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-02T20:43:00 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 3 +++ OpenChange/NSArray+MAPIStore.h | 6 +++--- OpenChange/NSArray+MAPIStore.m | 10 +++++----- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 45d962298..a4cc1fac1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2012-03-02 Wolfgang Sourdeau + * OpenChange/NSArray+MAPIStore.[hm]: updated to new name of + handled structs. + * OpenChange/gen-property-selectors.py: adapted for new getters name, based on new property names. Added all new clashing properties to bannedProps. diff --git a/OpenChange/NSArray+MAPIStore.h b/OpenChange/NSArray+MAPIStore.h index 06e43f184..6bcf5f01d 100644 --- a/OpenChange/NSArray+MAPIStore.h +++ b/OpenChange/NSArray+MAPIStore.h @@ -29,7 +29,7 @@ /* mapi structs */ + (id) arrayFromMAPIMVLong: (const struct mapi_MV_LONG_STRUCT *) mvLong; -+ (id) arrayFromMAPIMVUnicode: (const struct mapi_SPLSTRArrayW *) mvUnicode; ++ (id) arrayFromMAPIMVUnicode: (const struct mapi_SLPSTRArrayW *) mvUnicode; + (id) arrayFromMAPIMVString: (const struct mapi_SLPSTRArray *) mvString; + (id) arrayFromMAPIMVBinary: (const struct mapi_SBinaryArray *) mvBinary; + (id) arrayFromMAPIMVGuid: (const struct mapi_SGuidArray *) mvGuid; @@ -39,8 +39,8 @@ - (struct LongArray_r *) asMVLongInMemCtx: (void *) memCtx; + (id) arrayFromMVI8: (const struct I8Array_r *) mvI8; + (id) arrayFromMVString: (const struct StringArray_r *) mvString; -+ (id) arrayFromMVUnicode: (const struct WStringArray_r *) mvUnicode; -- (struct WStringArray_r *) asMVUnicodeInMemCtx: (void *) memCtx; ++ (id) arrayFromMVUnicode: (const struct StringArrayW_r *) mvUnicode; +- (struct StringArrayW_r *) asMVUnicodeInMemCtx: (void *) memCtx; + (id) arrayFromMVBinary: (const struct BinaryArray_r *) mvBinary; - (struct BinaryArray_r *) asMVBinaryInMemCtx: (void *) memCtx; + (id) arrayFromMVGuid: (const struct FlatUIDArray_r *) mvGuid; diff --git a/OpenChange/NSArray+MAPIStore.m b/OpenChange/NSArray+MAPIStore.m index 6587154f9..1192ce124 100644 --- a/OpenChange/NSArray+MAPIStore.m +++ b/OpenChange/NSArray+MAPIStore.m @@ -52,7 +52,7 @@ return mvResult; } -+ (id) arrayFromMAPIMVUnicode: (struct mapi_SPLSTRArrayW *) mvUnicode ++ (id) arrayFromMAPIMVUnicode: (struct mapi_SLPSTRArrayW *) mvUnicode { NSUInteger count; NSString *subObject; @@ -185,7 +185,7 @@ return mvResult; } -+ (id) arrayFromMVUnicode: (const struct WStringArray_r *) mvUnicode ++ (id) arrayFromMVUnicode: (const struct StringArrayW_r *) mvUnicode { NSUInteger count; NSString *subObject; @@ -201,14 +201,14 @@ return mvResult; } -- (struct WStringArray_r *) asMVUnicodeInMemCtx: (void *) memCtx +- (struct StringArrayW_r *) asMVUnicodeInMemCtx: (void *) memCtx { - struct WStringArray_r *list; + struct StringArrayW_r *list; NSInteger count, max; max = [self count]; - list = talloc_zero (memCtx, struct WStringArray_r); + list = talloc_zero (memCtx, struct StringArrayW_r); list->cValues = max; list->lppszW = talloc_array (list, const char *, max); From c4292714b50e8bf6a3c8109493c42834b3ef0478 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 2 Mar 2012 20:44:24 +0000 Subject: [PATCH 10/29] Monotone-Parent: 1e532558ba17916d33138e4c65d283faf4d0e929 Monotone-Revision: 3d21b0780b7affb529a020d89dcbf84325264c7d Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-02T20:44:24 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 22 ++ OpenChange/MAPIStoreAppointmentWrapper.h | 36 +-- OpenChange/MAPIStoreAppointmentWrapper.m | 48 ++-- OpenChange/MAPIStoreAttachment.m | 12 +- OpenChange/MAPIStoreCalendarAttachment.m | 12 +- OpenChange/MAPIStoreCalendarMessage.m | 146 +++++------ OpenChange/MAPIStoreContactsAttachment.m | 68 ++--- OpenChange/MAPIStoreContactsMessage.m | 190 +++++++------- OpenChange/MAPIStoreFAIMessage.m | 4 +- OpenChange/MAPIStoreFSMessageTable.m | 2 +- OpenChange/MAPIStoreFolder.m | 65 +++-- OpenChange/MAPIStoreFolderTable.m | 2 +- OpenChange/MAPIStoreGCSFolder.m | 2 +- OpenChange/MAPIStoreGCSMessage.m | 16 +- OpenChange/MAPIStoreGCSMessageTable.m | 2 +- OpenChange/MAPIStoreMailAttachment.m | 42 +-- OpenChange/MAPIStoreMailFolder.m | 10 +- OpenChange/MAPIStoreMailMessage.h | 20 +- OpenChange/MAPIStoreMailMessage.m | 321 +++++++++++------------ OpenChange/MAPIStoreMailMessageTable.m | 6 +- OpenChange/MAPIStoreMessage.m | 169 ++++++------ OpenChange/MAPIStoreNotesMessage.m | 14 +- OpenChange/MAPIStoreObject.h | 30 +-- OpenChange/MAPIStoreObject.m | 18 +- OpenChange/MAPIStorePermissionsTable.m | 16 +- OpenChange/MAPIStoreTasksMessage.m | 32 +-- OpenChange/MAPIStoreVolatileMessage.m | 8 +- 27 files changed, 666 insertions(+), 647 deletions(-) diff --git a/ChangeLog b/ChangeLog index a4cc1fac1..9b3b25dae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,27 @@ 2012-03-02 Wolfgang Sourdeau + * OpenChange/MAPIStoreAppointmentWrapper.m,, + OpenChange/MAPIStoreAttachment.m, + OpenChange/MAPIStoreCalendarAttachment.m, + OpenChange/MAPIStoreCalendarMessage.m, + OpenChange/MAPIStoreContactsAttachment.m, + OpenChange/MAPIStoreContactsMessage.m, + OpenChange/MAPIStoreFAIMessage.m, + OpenChange/MAPIStoreFSMessageTable.m, + OpenChange/MAPIStoreFolder.m, OpenChange/MAPIStoreFolderTable.m, + OpenChange/MAPIStoreGCSFolder.m, OpenChange/MAPIStoreGCSMessage.m, + OpenChange/MAPIStoreGCSMessageTable.m, + OpenChange/MAPIStoreMailAttachment.m, + OpenChange/MAPIStoreMailFolder.m, + OpenChange/MAPIStoreMailMessage.m, + OpenChange/MAPIStoreMailMessageTable.m, + OpenChange/MAPIStoreMessage.m, OpenChange/MAPIStoreNotesMessage.m, + OpenChange/MAPIStoreObject.m, + OpenChange/MAPIStorePermissionsTable.m, + OpenChange/MAPIStoreTasksMessage.m, + OpenChange/MAPIStoreVolatileMessage.m: updated name of getters to + reflect the new nomenclature. + * OpenChange/NSArray+MAPIStore.[hm]: updated to new name of handled structs. diff --git a/OpenChange/MAPIStoreAppointmentWrapper.h b/OpenChange/MAPIStoreAppointmentWrapper.h index fa1cb8f20..7f68e82e0 100644 --- a/OpenChange/MAPIStoreAppointmentWrapper.h +++ b/OpenChange/MAPIStoreAppointmentWrapper.h @@ -69,33 +69,33 @@ extern NSTimeZone *utcTZ; - (void) fillMessageData: (struct mapistore_message *) dataPtr inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrSenderEmailAddress: (void **) data +- (int) getPidTagSenderEmailAddress: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrSenderAddrtype: (void **) data +- (int) getPidTagSenderAddressType: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrSenderName: (void **) data +- (int) getPidTagSenderName: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrSenderEntryid: (void **) data +- (int) getPidTagSenderEntryId: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrReceivedByAddrtype: (void **) data +- (int) getPidTagReceivedByAddressType: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrReceivedByEmailAddress: (void **) data +- (int) getPidTagReceivedByEmailAddress: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrReceivedByName: (void **) data +- (int) getPidTagReceivedByName: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrReceivedByEntryid: (void **) data +- (int) getPidTagReceivedByEntryId: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrIconIndex: (void **) data +- (int) getPidTagIconIndex: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrOwnerApptId: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx; +- (int) getPidTagOwnerAppointmentId: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx; - (int) getPidLidMeetingType: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrMessageClass: (void **) data +- (int) getPidTagMessageClass: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrStartDate: (void **) data +- (int) getPidTagStartDate: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; - (int) getPidLidAppointmentStateFlags: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; @@ -106,7 +106,7 @@ extern NSTimeZone *utcTZ; inMemCtx: (TALLOC_CTX *) memCtx; - (int) getPidLidCommonStart: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrEndDate: (void **) data +- (int) getPidTagEndDate: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; - (int) getPidLidAppointmentEndWhole: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; @@ -120,17 +120,17 @@ extern NSTimeZone *utcTZ; inMemCtx: (TALLOC_CTX *) memCtx; - (int) getPidLidIndentedBusyStatus: (void **) data // TODO inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrSubject: (void **) data // SUMMARY +- (int) getPidTagSubject: (void **) data // SUMMARY inMemCtx: (TALLOC_CTX *) memCtx; - (int) getPidLidLocation: (void **) data // LOCATION inMemCtx: (TALLOC_CTX *) memCtx; - (int) getPidLidPrivate: (void **) data // private (bool), should depend on CLASS and permissions inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrSensitivity: (void **) data // not implemented, depends on CLASS +- (int) getPidTagSensitivity: (void **) data // not implemented, depends on CLASS inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrImportance: (void **) data +- (int) getPidTagImportance: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrBody: (void **) data +- (int) getPidTagBody: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; - (int) getPidLidIsRecurring: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; diff --git a/OpenChange/MAPIStoreAppointmentWrapper.m b/OpenChange/MAPIStoreAppointmentWrapper.m index 947e2119b..808acfe2b 100644 --- a/OpenChange/MAPIStoreAppointmentWrapper.m +++ b/OpenChange/MAPIStoreAppointmentWrapper.m @@ -436,7 +436,7 @@ static NSCharacterSet *hexCharacterSet = nil; } } -- (int) getPrIconIndex: (void **) data // TODO +- (int) getPidTagIconIndex: (void **) data // TODO inMemCtx: (TALLOC_CTX *) memCtx { uint32_t longValue; @@ -502,8 +502,8 @@ static NSCharacterSet *hexCharacterSet = nil; return MAPISTORE_SUCCESS; } -- (int) getPrOwnerApptId: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagOwnerAppointmentId: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { int rc; const char *utf8UID; @@ -581,7 +581,7 @@ static NSCharacterSet *hexCharacterSet = nil; return rc; } -- (int) getPrMessageClass: (void **) data +- (int) getPidTagMessageClass: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { const char *className; @@ -634,7 +634,7 @@ static NSCharacterSet *hexCharacterSet = nil; return [self getYes: data inMemCtx: memCtx]; } -- (int) getPrStartDate: (void **) data +- (int) getPidTagStartDate: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { NSCalendarDate *dateValue; @@ -716,7 +716,7 @@ static NSCharacterSet *hexCharacterSet = nil; - (int) getPidLidAppointmentStartWhole: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrStartDate: data inMemCtx: memCtx]; + return [self getPidTagStartDate: data inMemCtx: memCtx]; } - (int) getPidLidCommonStart: (void **) data @@ -797,7 +797,7 @@ static NSCharacterSet *hexCharacterSet = nil; return rc; } -- (int) _getEntryid: (void **) data +- (int) _getEntryId: (void **) data forICalPerson: (iCalPerson *) person inMemCtx: (TALLOC_CTX *) memCtx { @@ -820,7 +820,7 @@ static NSCharacterSet *hexCharacterSet = nil; } /* sender (organizer) */ -- (int) getPrSenderEmailAddress: (void **) data +- (int) getPidTagSenderEmailAddress: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { return [self _getEmailAddress: data @@ -828,7 +828,7 @@ static NSCharacterSet *hexCharacterSet = nil; inMemCtx: memCtx]; } -- (int) getPrSenderAddrtype: (void **) data +- (int) getPidTagSenderAddressType: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { return [self _getAddrType: data @@ -836,7 +836,7 @@ static NSCharacterSet *hexCharacterSet = nil; inMemCtx: memCtx]; } -- (int) getPrSenderName: (void **) data +- (int) getPidTagSenderName: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { return [self _getName: data @@ -844,16 +844,16 @@ static NSCharacterSet *hexCharacterSet = nil; inMemCtx: memCtx]; } -- (int) getPrSenderEntryid: (void **) data +- (int) getPidTagSenderEntryId: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { - return [self _getEntryid: data + return [self _getEntryId: data forICalPerson: [event organizer] inMemCtx: memCtx]; } /* attendee */ -- (int) getPrReceivedByEmailAddress: (void **) data +- (int) getPidTagReceivedByEmailAddress: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { return [self _getEmailAddress: data @@ -861,7 +861,7 @@ static NSCharacterSet *hexCharacterSet = nil; inMemCtx: memCtx]; } -- (int) getPrReceivedByAddrtype: (void **) data +- (int) getPidTagReceivedByAddressType: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { return [self _getAddrType: data @@ -869,7 +869,7 @@ static NSCharacterSet *hexCharacterSet = nil; inMemCtx: memCtx]; } -- (int) getPrReceivedByName: (void **) data +- (int) getPidTagReceivedByName: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { return [self _getName: data @@ -877,16 +877,16 @@ static NSCharacterSet *hexCharacterSet = nil; inMemCtx: memCtx]; } -- (int) getPrReceivedByEntryid: (void **) data +- (int) getPidTagReceivedByEntryId: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { - return [self _getEntryid: data + return [self _getEntryId: data forICalPerson: [event userAsAttendee: user] inMemCtx: memCtx]; } /* /attendee */ -- (int) getPrEndDate: (void **) data +- (int) getPidTagEndDate: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { NSCalendarDate *dateValue; @@ -911,7 +911,7 @@ static NSCharacterSet *hexCharacterSet = nil; - (int) getPidLidAppointmentEndWhole: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrEndDate: data inMemCtx: memCtx]; + return [self getPidTagEndDate: data inMemCtx: memCtx]; } - (int) getPidLidCommonEnd: (void **) data @@ -960,7 +960,7 @@ static NSCharacterSet *hexCharacterSet = nil; return [self getPidLidBusyStatus: data inMemCtx: memCtx]; } -- (int) getPrSubject: (void **) data // SUMMARY +- (int) getPidTagSubject: (void **) data // SUMMARY inMemCtx: (TALLOC_CTX *) memCtx { *data = [[event summary] asUnicodeInMemCtx: memCtx]; @@ -1013,14 +1013,14 @@ static NSCharacterSet *hexCharacterSet = nil; return [self getNo: data inMemCtx: memCtx]; } -- (int) getPrSensitivity: (void **) data // not implemented, depends on CLASS +- (int) getPidTagSensitivity: (void **) data // not implemented, depends on CLASS inMemCtx: (TALLOC_CTX *) memCtx { // normal = 0, personal?? = 1, private = 2, confidential = 3 return [self getLongZero: data inMemCtx: memCtx]; } -- (int) getPrImportance: (void **) data +- (int) getPidTagImportance: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { uint32_t v; @@ -1036,7 +1036,7 @@ static NSCharacterSet *hexCharacterSet = nil; return MAPISTORE_SUCCESS; } -- (int) getPrBody: (void **) data +- (int) getPidTagBody: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { int rc = MAPISTORE_SUCCESS; @@ -1397,7 +1397,7 @@ _fillAppointmentRecurrencePattern (struct AppointmentRecurrencePattern *arp, [self _setupAlarm]; return (alarm - ? [self getPrStartDate: data inMemCtx: memCtx] + ? [self getPidTagStartDate: data inMemCtx: memCtx] : MAPISTORE_ERR_NOT_FOUND); } diff --git a/OpenChange/MAPIStoreAttachment.m b/OpenChange/MAPIStoreAttachment.m index ca9076ad0..9b17f9e03 100644 --- a/OpenChange/MAPIStoreAttachment.m +++ b/OpenChange/MAPIStoreAttachment.m @@ -65,24 +65,24 @@ return mimeAttachTag; } -- (int) getPrMid: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMid: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongLongValue (memCtx, [container objectId]); return MAPISTORE_SUCCESS; } -- (int) getPrAttachNum: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttachNumber: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongValue (memCtx, aid); return MAPISTORE_SUCCESS; } -- (int) getPrRenderingPosition: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagRenderingPosition: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongValue (memCtx, 0xffffffff); diff --git a/OpenChange/MAPIStoreCalendarAttachment.m b/OpenChange/MAPIStoreCalendarAttachment.m index 5bfce054b..63aa68df8 100644 --- a/OpenChange/MAPIStoreCalendarAttachment.m +++ b/OpenChange/MAPIStoreCalendarAttachment.m @@ -34,24 +34,24 @@ @implementation MAPIStoreCalendarAttachment -- (int) getPrAttachmentHidden: (void **) data - inMemCtx: (TALLOC_CTX *) localMemCtx +- (int) getPidTagAttachmentHidden: (void **) data + inMemCtx: (TALLOC_CTX *) localMemCtx { *data = MAPIBoolValue (localMemCtx, YES); return MAPISTORE_SUCCESS; } -- (int) getPrAttachmentFlags: (void **) data - inMemCtx: (TALLOC_CTX *) localMemCtx +- (int) getPidTagAttachmentFlags: (void **) data + inMemCtx: (TALLOC_CTX *) localMemCtx { *data = MAPILongValue (localMemCtx, 0x00000002); /* afException */ return MAPISTORE_SUCCESS; } -- (int) getPrAttachmMethod: (void **) data - inMemCtx: (TALLOC_CTX *) localMemCtx +- (int) getPidTagAttachMethod: (void **) data + inMemCtx: (TALLOC_CTX *) localMemCtx { *data = MAPILongValue (localMemCtx, 0x00000005); /* afEmbeddedMessage */ diff --git a/OpenChange/MAPIStoreCalendarMessage.m b/OpenChange/MAPIStoreCalendarMessage.m index 5c491bf5e..4578c01d8 100644 --- a/OpenChange/MAPIStoreCalendarMessage.m +++ b/OpenChange/MAPIStoreCalendarMessage.m @@ -126,10 +126,10 @@ } /* getters */ -- (int) getPrIconIndex: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagIconIndex: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [[self appointmentWrapper] getPrIconIndex: data inMemCtx: memCtx]; + return [[self appointmentWrapper] getPidTagIconIndex: data inMemCtx: memCtx]; } - (int) getPidLidFInvited: (void **) data @@ -138,24 +138,24 @@ return [self getYes: data inMemCtx: memCtx]; } -- (int) getPrMessageClass: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMessageClass: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = talloc_strdup (memCtx, "IPM.Appointment"); return MAPISTORE_SUCCESS; } -- (int) getPrOwnerApptId: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagOwnerAppointmentId: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [[self appointmentWrapper] getPrOwnerApptId: data inMemCtx: memCtx]; + return [[self appointmentWrapper] getPidTagOwnerAppointmentId: data inMemCtx: memCtx]; } -- (int) getPrStartDate: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagStartDate: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [[self appointmentWrapper] getPrStartDate: data inMemCtx: memCtx]; + return [[self appointmentWrapper] getPidTagStartDate: data inMemCtx: memCtx]; } - (int) getPidLidAppointmentStateFlags: (void **) data @@ -183,10 +183,10 @@ return [[self appointmentWrapper] getPidLidCommonStart: data inMemCtx: memCtx]; } -- (int) getPrEndDate: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagEndDate: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [[self appointmentWrapper] getPrEndDate: data inMemCtx: memCtx]; + return [[self appointmentWrapper] getPidTagEndDate: data inMemCtx: memCtx]; } - (int) getPidLidAppointmentEndWhole: (void **) data @@ -220,10 +220,10 @@ return [[self appointmentWrapper] getPidLidBusyStatus: data inMemCtx: memCtx]; } -- (int) getPrSubject: (void **) data // SUMMARY - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSubject: (void **) data // SUMMARY + inMemCtx: (TALLOC_CTX *) memCtx { - return [[self appointmentWrapper] getPrSubject: data inMemCtx: memCtx]; + return [[self appointmentWrapper] getPidTagSubject: data inMemCtx: memCtx]; } - (int) getPidLidLocation: (void **) data // LOCATION @@ -238,22 +238,22 @@ return [[self appointmentWrapper] getPidLidPrivate: data inMemCtx: memCtx]; } -- (int) getPrSensitivity: (void **) data // not implemented, depends on CLASS - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSensitivity: (void **) data // not implemented, depends on CLASS + inMemCtx: (TALLOC_CTX *) memCtx { - return [[self appointmentWrapper] getPrSensitivity: data inMemCtx: memCtx]; + return [[self appointmentWrapper] getPidTagSensitivity: data inMemCtx: memCtx]; } -- (int) getPrImportance: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagImportance: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [[self appointmentWrapper] getPrImportance: data inMemCtx: memCtx]; + return [[self appointmentWrapper] getPidTagImportance: data inMemCtx: memCtx]; } -- (int) getPrBody: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagBody: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [[self appointmentWrapper] getPrBody: data inMemCtx: memCtx]; + return [[self appointmentWrapper] getPidTagBody: data inMemCtx: memCtx]; } - (int) getPidLidIsRecurring: (void **) data @@ -289,7 +289,7 @@ inMemCtx: memCtx]; } -- (int) getPrProcessed: (void **) data inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagProcessed: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { return [self getYes: data inMemCtx: memCtx]; } @@ -324,114 +324,114 @@ } /* sender */ -- (int) getPrSenderEmailAddress: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSenderEmailAddress: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [[self appointmentWrapper] getPrSenderEmailAddress: data - inMemCtx: memCtx]; + return [[self appointmentWrapper] getPidTagSenderEmailAddress: data + inMemCtx: memCtx]; } -- (int) getPrSenderAddrtype: (void **) data +- (int) getPidTagSenderAddressType: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + return [[self appointmentWrapper] getPidTagSenderAddressType: data + inMemCtx: memCtx]; +} + +- (int) getPidTagSenderName: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { - return [[self appointmentWrapper] getPrSenderAddrtype: data + return [[self appointmentWrapper] getPidTagSenderName: data inMemCtx: memCtx]; } -- (int) getPrSenderName: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSenderEntryId: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { - return [[self appointmentWrapper] getPrSenderName: data - inMemCtx: memCtx]; -} - -- (int) getPrSenderEntryid: (void **) data inMemCtx: (TALLOC_CTX *) memCtx -{ - return [[self appointmentWrapper] getPrSenderEntryid: data - inMemCtx: memCtx]; + return [[self appointmentWrapper] getPidTagSenderEntryId: data + inMemCtx: memCtx]; } /* sender representing */ -- (int) getPrSentRepresentingEmailAddress: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSentRepresentingEmailAddress: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrSenderEmailAddress: data inMemCtx: memCtx]; + return [self getPidTagSenderEmailAddress: data inMemCtx: memCtx]; } -- (int) getPrSentRepresentingAddrtype: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSentRepresentingAddressType: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getSMTPAddrType: data inMemCtx: memCtx]; } -- (int) getPrSentRepresentingName: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSentRepresentingName: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrSenderName: data inMemCtx: memCtx]; + return [self getPidTagSenderName: data inMemCtx: memCtx]; } -- (int) getPrSentRepresentingEntryid: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSentRepresentingEntryId: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrSenderEntryid: data inMemCtx: memCtx]; + return [self getPidTagSenderEntryId: data inMemCtx: memCtx]; } /* attendee */ -// - (int) getPrReceivedByAddrtype: (void **) data +// - (int) getPidTagReceivedByAddressType: (void **) data // inMemCtx: (TALLOC_CTX *) memCtx // { -// return [[self appointmentWrapper] getPrReceivedByAddrtype: data +// return [[self appointmentWrapper] getPidTagReceivedByAddressType: data // inMemCtx: memCtx]; // } -// - (int) getPrReceivedByEmailAddress: (void **) data +// - (int) getPidTagReceivedByEmailAddress: (void **) data // inMemCtx: (TALLOC_CTX *) memCtx // { -// return [[self appointmentWrapper] getPrReceivedByEmailAddress: data +// return [[self appointmentWrapper] getPidTagReceivedByEmailAddress: data // inMemCtx: memCtx]; // } -// - (int) getPrReceivedByName: (void **) data +// - (int) getPidTagReceivedByName: (void **) data // inMemCtx: (TALLOC_CTX *) memCtx // { -// return [[self appointmentWrapper] getPrReceivedByName: data +// return [[self appointmentWrapper] getPidTagReceivedByName: data // inMemCtx: memCtx]; // } -// - (int) getPrReceivedByEntryid: (void **) data +// - (int) getPidTagReceivedByEntryId: (void **) data // inMemCtx: (TALLOC_CTX *) memCtx // { -// return [[self appointmentWrapper] getPrReceivedByEntryid: data +// return [[self appointmentWrapper] getPidTagReceivedByEntryId: data // inMemCtx: memCtx]; // } // /* attendee representing */ -// - (int) getPrRcvdRepresentingEmailAddress: (void **) data +// - (int) getPidTagReceivedRepresentingEmailAddress: (void **) data // inMemCtx: (TALLOC_CTX *) memCtx // { -// return [self getPrReceivedByEmailAddress: data inMemCtx: memCtx]; +// return [self getPidTagReceivedByEmailAddress: data inMemCtx: memCtx]; // } -// - (int) getPrRcvdRepresentingAddrtype: (void **) data +// - (int) getPidTagReceivedRepresentingAddressType: (void **) data // inMemCtx: (TALLOC_CTX *) memCtx // { // return [self getSMTPAddrType: data inMemCtx: memCtx]; // } -// - (int) getPrRcvdRepresentingName: (void **) data +// - (int) getPidTagReceivedRepresentingName: (void **) data // inMemCtx: (TALLOC_CTX *) memCtx // { -// return [self getPrReceivedByName: data inMemCtx: memCtx]; +// return [self getPidTagReceivedByName: data inMemCtx: memCtx]; // } -// - (int) getPrRcvdRepresentingEntryid: (void **) data +// - (int) getPidTagReceivedRepresentingEntryId: (void **) data // inMemCtx: (TALLOC_CTX *) memCtx // { -// return [self getPrReceivedByEntryid: data inMemCtx: memCtx]; +// return [self getPidTagReceivedByEntryId: data inMemCtx: memCtx]; // } -- (int) getPrResponseRequested: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagResponseRequested: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getYes: data inMemCtx: memCtx]; } @@ -916,7 +916,7 @@ { dict = [activeUser primaryIdentity]; sentBy = [NSString stringWithFormat: @"mailto:%@", - [dict objectForKey: @"email"]]; + [dict objectForKey: @"email"]]; [person setSentBy: sentBy]; } [newEvent setOrganizer: person]; @@ -1000,7 +1000,7 @@ value = [properties objectForKey: MAPIPropertyKey (PR_CHANGE_KEY)]; if (value) [(MAPIStoreCalendarFolder *) container - setChangeKey: value forMessageWithKey: [self nameInContainer]]; + setChangeKey: value forMessageWithKey: [self nameInContainer]]; } - (id) lookupAttachment: (NSString *) childKey diff --git a/OpenChange/MAPIStoreContactsAttachment.m b/OpenChange/MAPIStoreContactsAttachment.m index 99cb65538..6a9afe86a 100644 --- a/OpenChange/MAPIStoreContactsAttachment.m +++ b/OpenChange/MAPIStoreContactsAttachment.m @@ -94,52 +94,52 @@ extern NSTimeZone *utcTZ; return [container lastModificationTime]; } -- (int) getPrAttachEncoding: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; +- (int) getPidTagAttachEncoding: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; { *data = [[NSData data] asBinaryInMemCtx: memCtx]; return MAPISTORE_SUCCESS; } -- (int) getPrAttachFlags: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx -{ - return [self getLongZero: data inMemCtx: memCtx]; -} - -- (int) getPrAttachmentFlags: (void **) data +- (int) getPidTagAttachFlags: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { return [self getLongZero: data inMemCtx: memCtx]; } -- (int) getPrAttachmentHidden: (void **) data inMemCtx: (TALLOC_CTX *) memCtx -{ - return [self getNo: data inMemCtx: memCtx]; -} - -- (int) getPrAttachmentLinkid: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttachmentFlags: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getLongZero: data inMemCtx: memCtx]; } -- (int) getPrAttachMethod: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttachmentHidden: (void **) data inMemCtx: (TALLOC_CTX *) memCtx +{ + return [self getNo: data inMemCtx: memCtx]; +} + +- (int) getPidTagAttachmentLinkId: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + return [self getLongZero: data inMemCtx: memCtx]; +} + +- (int) getPidTagAttachMethod: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongValue (memCtx, 0x00000001); return MAPISTORE_SUCCESS; } -- (int) getPrAttachmentContactphoto: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttachmentContactPhoto: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getYes: data inMemCtx: memCtx]; } -- (int) getPrAttachDataBin: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttachDataBinary: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { if (!photoData) ASSIGN (photoData, @@ -150,8 +150,8 @@ extern NSTimeZone *utcTZ; return MAPISTORE_SUCCESS; } -- (int) getPrAttachSize: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttachSize: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { if (!photoData) ASSIGN (photoData, @@ -162,16 +162,16 @@ extern NSTimeZone *utcTZ; return MAPISTORE_SUCCESS; } -- (int) getPrAttachExtension: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttachExtension: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = [[self fileExtension] asUnicodeInMemCtx: memCtx]; return MAPISTORE_SUCCESS; } -- (int) getPrAttachLongFilename: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttachLongFilename: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSString *filename; @@ -183,17 +183,17 @@ extern NSTimeZone *utcTZ; return MAPISTORE_SUCCESS; } -- (int) getPrAttachFilename: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttachFilename: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrAttachLongFilename: data - inMemCtx: memCtx]; + return [self getPidTagAttachLongFilename: data + inMemCtx: memCtx]; } -- (int) getPrDisplayName: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagDisplayName: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrAttachLongFilename: data inMemCtx: memCtx]; + return [self getPidTagAttachLongFilename: data inMemCtx: memCtx]; } @end diff --git a/OpenChange/MAPIStoreContactsMessage.m b/OpenChange/MAPIStoreContactsMessage.m index 3ef9e4c66..d1bdebadc 100644 --- a/OpenChange/MAPIStoreContactsMessage.m +++ b/OpenChange/MAPIStoreContactsMessage.m @@ -85,7 +85,7 @@ CardElement *element; elements = [card childrenWithTag: tag - andAttribute: @"type" havingValue: type]; + andAttribute: @"type" havingValue: type]; if ([elements count] > 0) element = [elements objectAtIndex: 0]; else @@ -100,8 +100,8 @@ return element; } -- (int) getPrIconIndex: (void **) data // TODO - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagIconIndex: (void **) data // TODO + inMemCtx: (TALLOC_CTX *) memCtx { /* see http://msdn.microsoft.com/en-us/library/cc815472.aspx */ *data = MAPILongValue (memCtx, 0x00000200); @@ -109,15 +109,15 @@ return MAPISTORE_SUCCESS; } -- (int) getPrMessageClass: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMessageClass: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = talloc_strdup (memCtx, "IPM.Contact"); return MAPISTORE_SUCCESS; } -// - (int) getPrOabName: (void **) data +// - (int) getPidTagOfflineAddressBookName: (void **) data // inMemCtx: (TALLOC_CTX *) memCtx // { // *data = talloc_strdup (memCtx, "PR_OAB_NAME_UNICODE"); @@ -125,7 +125,7 @@ // return MAPISTORE_SUCCESS; // } -// - (int) getPrOabLangid: (void **) data +// - (int) getPidTagOfflineAddressBookLanguageId: (void **) data // inMemCtx: (TALLOC_CTX *) memCtx // { // /* see http://msdn.microsoft.com/en-us/goglobal/bb895996.asxp */ @@ -136,8 +136,8 @@ // } -- (int) getPrTitle: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagTitle: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSString *stringValue; @@ -147,8 +147,8 @@ return MAPISTORE_SUCCESS; } -- (int) getPrCompanyName: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagCompanyName: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { CardElement *org; @@ -159,8 +159,8 @@ return MAPISTORE_SUCCESS; } -- (int) getPrDepartmentName: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagDepartmentName: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { CardElement *org; @@ -171,24 +171,24 @@ return MAPISTORE_SUCCESS; } -- (int) getPrSendInternetEncoding: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSendInternetEncoding: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongValue (memCtx, 0x00065001); return MAPISTORE_SUCCESS; } -- (int) getPrSubject: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSubject: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrDisplayName: data inMemCtx: memCtx]; + return [self getPidTagDisplayName: data inMemCtx: memCtx]; } - (int) getPidLidFileUnder: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrDisplayName: data inMemCtx: memCtx]; + return [self getPidTagDisplayName: data inMemCtx: memCtx]; } - (int) getPidLidFileUnderId: (void **) data @@ -231,14 +231,14 @@ return MAPISTORE_SUCCESS; } -- (int) getPrAccount: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAccount: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getPidLidEmail1EmailAddress: data inMemCtx: memCtx]; } -- (int) getPrContactEmailAddresses: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagContactEmailAddresses: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSString *stringValue; @@ -251,8 +251,8 @@ return MAPISTORE_SUCCESS; } -- (int) getPrEmsAbTargetAddress: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagEmsAbTargetAddress: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSString *stringValue; @@ -263,8 +263,8 @@ return MAPISTORE_SUCCESS; } -- (int) getPrSearchKey: (void **) data // TODO - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSearchKey: (void **) data // TODO + inMemCtx: (TALLOC_CTX *) memCtx { NSString *stringValue; @@ -275,8 +275,8 @@ return MAPISTORE_SUCCESS; } -- (int) getPrMailPermission: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMailPermission: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getYes: data inMemCtx: memCtx]; } @@ -321,8 +321,8 @@ return [self getPidLidEmail2EmailAddress: data inMemCtx: memCtx]; } -- (int) getPrBody: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagBody: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { int rc = MAPISTORE_SUCCESS; NSString *stringValue; @@ -372,57 +372,57 @@ return MAPISTORE_SUCCESS; } -- (int) getPrOfficeTelephoneNumber: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagBusinessTelephoneNumber: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"tel" ofType: @"work" excluding: @"fax" atPos: 0 inData: data inMemCtx: memCtx]; } -- (int) getPrHomeTelephoneNumber: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagHomeTelephoneNumber: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"tel" ofType: @"home" excluding: @"fax" atPos: 0 inData: data inMemCtx: memCtx]; } -- (int) getPrMobileTelephoneNumber: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMobileTelephoneNumber: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"tel" ofType: @"cell" excluding: nil atPos: 0 inData: data inMemCtx: memCtx]; } -- (int) getPrPagerTelephoneNumber: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagPagerTelephoneNumber: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"tel" ofType: @"pager" excluding: nil atPos: 0 inData: data inMemCtx: memCtx]; } -- (int) getPrPrimaryTelephoneNumber: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagPrimaryTelephoneNumber: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"tel" ofType: @"pref" excluding: nil atPos: 0 inData: data inMemCtx: memCtx]; } -- (int) getPrBusinessFaxNumber: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagBusinessFaxNumber: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"tel" ofType: @"fax" excluding: nil atPos: 0 inData: data inMemCtx: memCtx]; } -- (int) getPrBusinessHomePage: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagBusinessHomePage: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"url" ofType: @"work" excluding: nil atPos: 0 inData: data inMemCtx: memCtx]; } -- (int) getPrPersonalHomePage: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagPersonalHomePage: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"url" ofType: @"home" excluding: nil atPos: 0 inData: data inMemCtx: memCtx]; @@ -491,50 +491,50 @@ // // getters when no address is selected as the Mailing Address // -- (int) getPrPostalAddress: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagPostalAddress: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"label" ofType: @"pref" excluding: nil atPos: 0 inData: data inMemCtx: memCtx]; } -- (int) getPrPostOfficeBox: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagPostOfficeBox: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"adr" ofType: @"pref" excluding: nil atPos: 0 inData: data inMemCtx: memCtx]; } -- (int) getPrStreetAddress: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagStreetAddress: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"adr" ofType: @"pref" excluding: nil atPos: 2 inData: data inMemCtx: memCtx]; } -- (int) getPrLocality: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagLocality: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"adr" ofType: @"pref" excluding: nil atPos: 3 inData: data inMemCtx: memCtx]; } -- (int) getPrStateOrProvince: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagStateOrProvince: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"adr" ofType: @"pref" excluding: nil atPos: 4 inData: data inMemCtx: memCtx]; } -- (int) getPrPostalCode: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagPostalCode: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"adr" ofType: @"pref" excluding: nil atPos: 5 inData: data inMemCtx: memCtx]; } -- (int) getPrCountry: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagCountry: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"adr" ofType: @"pref" excluding: nil atPos: 6 inData: data inMemCtx: memCtx]; @@ -550,42 +550,42 @@ atPos: 0 inData: data inMemCtx: memCtx]; } -- (int) getPrHomeAddressPostOfficeBox: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagHomeAddressPostOfficeBox: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"adr" ofType: @"home" excluding: nil atPos: 0 inData: data inMemCtx: memCtx]; } -- (int) getPrHomeAddressStreet: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagHomeAddressStreet: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"adr" ofType: @"home" excluding: nil atPos: 2 inData: data inMemCtx: memCtx]; } -- (int) getPrHomeAddressCity: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagHomeAddressCity: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"adr" ofType: @"home" excluding: nil atPos: 3 inData: data inMemCtx: memCtx]; } -- (int) getPrHomeAddressStateOrProvince: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagHomeAddressStateOrProvince: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"adr" ofType: @"home" excluding: nil atPos: 4 inData: data inMemCtx: memCtx]; } -- (int) getPrHomeAddressPostalCode: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagHomeAddressPostalCode: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"adr" ofType: @"home" excluding: nil atPos: 5 inData: data inMemCtx: memCtx]; } -- (int) getPrHomeAddressCountry: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagHomeAddressCountry: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getElement: @"adr" ofType: @"home" excluding: nil atPos: 6 inData: data inMemCtx: memCtx]; @@ -646,8 +646,8 @@ // // // -- (int) getPrNickname: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagNickname: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSString *stringValue; @@ -657,8 +657,8 @@ return MAPISTORE_SUCCESS; } -- (int) getPrBirthday: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagBirthday: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSCalendarDate *dateValue; NSString *stringValue; @@ -681,8 +681,8 @@ // // Decomposed fullname getters // -- (int) getPrSurname: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSurname: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSString *stringValue; @@ -694,8 +694,8 @@ return MAPISTORE_SUCCESS; } -- (int) getPrGivenName: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagGivenName: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSString *stringValue; @@ -707,8 +707,8 @@ return MAPISTORE_SUCCESS; } -- (int) getPrMiddleName: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMiddleName: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSString *stringValue; @@ -720,8 +720,8 @@ return MAPISTORE_SUCCESS; } -- (int) getPrDisplayNamePrefix: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagDisplayNamePrefix: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSString *stringValue; @@ -733,8 +733,8 @@ return MAPISTORE_SUCCESS; } -- (int) getPrGeneration: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagGeneration: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSString *stringValue; @@ -746,8 +746,8 @@ return MAPISTORE_SUCCESS; } -- (int) getPrSensitivity: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSensitivity: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getLongZero: data inMemCtx: memCtx]; } @@ -808,7 +808,7 @@ } - (void) _updatePhotoInVCard: (NGVCard *) card - fromProperties: (NSDictionary *) attachmentProps +fromProperties: (NSDictionary *) attachmentProps { NSString *photoExt, *photoType, *content; CardElement *photo; @@ -886,10 +886,10 @@ // Decomposed fullname [newCard setNWithFamily: [properties objectForKey: MAPIPropertyKey(PR_SURNAME_UNICODE)] - given: [properties objectForKey: MAPIPropertyKey(PR_GIVEN_NAME_UNICODE)] - additional: [properties objectForKey: MAPIPropertyKey(PR_MIDDLE_NAME_UNICODE)] - prefixes: [properties objectForKey: MAPIPropertyKey(PR_DISPLAY_NAME_PREFIX_UNICODE)] - suffixes: [properties objectForKey: MAPIPropertyKey(PR_GENERATION_UNICODE)]]; + given: [properties objectForKey: MAPIPropertyKey(PR_GIVEN_NAME_UNICODE)] + additional: [properties objectForKey: MAPIPropertyKey(PR_MIDDLE_NAME_UNICODE)] + prefixes: [properties objectForKey: MAPIPropertyKey(PR_DISPLAY_NAME_PREFIX_UNICODE)] + suffixes: [properties objectForKey: MAPIPropertyKey(PR_GENERATION_UNICODE)]]; // // display name @@ -1161,7 +1161,7 @@ value = [properties objectForKey: MAPIPropertyKey (PR_CHANGE_KEY)]; if (value) [(MAPIStoreContactsFolder *) container - setChangeKey: value forMessageWithKey: [self nameInContainer]]; + setChangeKey: value forMessageWithKey: [self nameInContainer]]; } @end diff --git a/OpenChange/MAPIStoreFAIMessage.m b/OpenChange/MAPIStoreFAIMessage.m index b8fe33988..81a9dfb9c 100644 --- a/OpenChange/MAPIStoreFAIMessage.m +++ b/OpenChange/MAPIStoreFAIMessage.m @@ -42,8 +42,8 @@ andType: MAPISTORE_FAI_TABLE]; } -- (int) getPrAssociated: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAssociated: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getYes: data inMemCtx: memCtx]; } diff --git a/OpenChange/MAPIStoreFSMessageTable.m b/OpenChange/MAPIStoreFSMessageTable.m index 5a2e9f961..7c8504c67 100644 --- a/OpenChange/MAPIStoreFSMessageTable.m +++ b/OpenChange/MAPIStoreFSMessageTable.m @@ -59,7 +59,7 @@ static Class MAPIStoreFSMessageK = Nil; NSNumber *version; uint64_t cVersion; - if ((uint32_t) res->ulPropTag == PR_CHANGE_NUM) + if ((uint32_t) res->ulPropTag == PidTagChangeNumber) { value = NSObjectFromMAPISPropValue (&res->lpProp); cVersion = exchange_globcnt ([value unsignedLongLongValue] >> 16); diff --git a/OpenChange/MAPIStoreFolder.m b/OpenChange/MAPIStoreFolder.m index 8c10feb07..71dc2f97d 100644 --- a/OpenChange/MAPIStoreFolder.m +++ b/OpenChange/MAPIStoreFolder.m @@ -56,7 +56,6 @@ #include #include #include -#include #include Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMessageTableK, MAPIStoreFolderTableK; @@ -167,16 +166,16 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe uint64_t cn; props = [propsMessage properties]; - value = [props objectForKey: MAPIPropertyKey (PR_CHANGE_NUM)]; + value = [props objectForKey: MAPIPropertyKey (PidTagChangeNumber)]; if (value) cn = [value unsignedLongLongValue]; else { - [self logWithFormat: @"no value for PR_CHANGE_NUM, adding one now"]; + [self logWithFormat: @"no value for PidTagChangeNumber, adding one now"]; cn = [[self context] getNewChangeNumber]; value = [NSNumber numberWithUnsignedLongLong: cn]; props = [NSDictionary dictionaryWithObject: value - forKey: MAPIPropertyKey (PR_CHANGE_NUM)]; + forKey: MAPIPropertyKey (PidTagChangeNumber)]; [propsMessage appendProperties: props]; [propsMessage save]; } @@ -372,7 +371,7 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe } else [NSException raise: @"MAPIStoreIOException" - format: @"unable to fetch created folder"]; + format: @"unable to fetch created folder"]; } } } @@ -1107,16 +1106,16 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe folderKeys = nil; } -- (int) getPrParentFid: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagParentFolderId: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongLongValue (memCtx, [container objectId]); return MAPISTORE_SUCCESS; } -- (int) getPrFid: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagFolderId: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongLongValue (memCtx, [self objectId]); @@ -1133,8 +1132,8 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe 0x00000010 Create Contents Table 0x00000020 Create Associated Contents Table */ -- (int) getPrAccess: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAccess: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { uint32_t access = 0; SOGoUser *ownerUser; @@ -1168,74 +1167,74 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe 0x00000000 Read-Only 0x00000001 Modify */ -- (int) getPrAccessLevel: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAccessLevel: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongValue (memCtx, 0x01); return MAPISTORE_SUCCESS; } -- (int) getPrAttrHidden: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttributeHidden: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getNo: data inMemCtx: memCtx]; } -- (int) getPrAttrSystem: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttributeSystem: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getNo: data inMemCtx: memCtx]; } -- (int) getPrAttrReadOnly: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttributeReadOnly: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getNo: data inMemCtx: memCtx]; } -- (int) getPrSubfolders: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSubfolders: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPIBoolValue (memCtx, [folderKeys count] > 0); return MAPISTORE_SUCCESS; } -- (int) getPrFolderChildCount: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagFolderChildCount: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongValue (memCtx, [[self folderKeys] count]); return MAPISTORE_SUCCESS; } -- (int) getPrContentCount: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagContentCount: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongValue (memCtx, [[self messageKeys] count]); return MAPISTORE_SUCCESS; } -- (int) getPrContentUnread: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagContentUnreadCount: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongValue (memCtx, 0); return MAPISTORE_SUCCESS; } -- (int) getPrAssocContentCount: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAssociatedContentCount: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongValue (memCtx, [[self faiMessageKeys] count]); return MAPISTORE_SUCCESS; } -- (int) getPrDeletedCountTotal: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagDeletedCountTotal: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { /* TODO */ *data = MAPILongValue (memCtx, 0); @@ -1243,8 +1242,8 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe return MAPISTORE_SUCCESS; } -- (int) getPrLocalCommitTimeMax: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagLocalCommitTimeMax: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = [[self lastMessageModificationTime] asFileTimeInMemCtx: memCtx]; diff --git a/OpenChange/MAPIStoreFolderTable.m b/OpenChange/MAPIStoreFolderTable.m index 1deb68998..c0beed517 100644 --- a/OpenChange/MAPIStoreFolderTable.m +++ b/OpenChange/MAPIStoreFolderTable.m @@ -95,7 +95,7 @@ /* HACK: we cheat here as we current have no mechanism for searching folders based on PR_CHANGE_NUM, which is used by the oxcfxics mechanism... */ - case PR_CHANGE_NUM: + case PidTagChangeNumber: rc = MAPIRestrictionStateAlwaysTrue; break; default: diff --git a/OpenChange/MAPIStoreGCSFolder.m b/OpenChange/MAPIStoreGCSFolder.m index ce4f4c2b1..398a22ffc 100644 --- a/OpenChange/MAPIStoreGCSFolder.m +++ b/OpenChange/MAPIStoreGCSFolder.m @@ -127,7 +127,7 @@ [sogoObject renameTo: newDisplayName]; } -- (int) getPrDisplayName: (void **) data +- (int) getPidTagDisplayName: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { NSString *displayName; diff --git a/OpenChange/MAPIStoreGCSMessage.m b/OpenChange/MAPIStoreGCSMessage.m index bb636f02d..78fe155f5 100644 --- a/OpenChange/MAPIStoreGCSMessage.m +++ b/OpenChange/MAPIStoreGCSMessage.m @@ -51,8 +51,8 @@ return [sogoObject lastModified]; } -- (int) getPrAccess: (void **) data // TODO - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAccess: (void **) data // TODO + inMemCtx: (TALLOC_CTX *) memCtx { MAPIStoreContext *context; WOContext *woContext; @@ -88,8 +88,8 @@ return MAPISTORE_SUCCESS; } -- (int) getPrAccessLevel: (void **) data // TODO - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAccessLevel: (void **) data // TODO + inMemCtx: (TALLOC_CTX *) memCtx { MAPIStoreContext *context; MAPIStoreUserContext *userContext; @@ -117,8 +117,8 @@ return MAPISTORE_SUCCESS; } -- (int) getPrChangeKey: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagChangeKey: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { int rc = MAPISTORE_SUCCESS; NSData *changeKey; @@ -145,8 +145,8 @@ return rc; } -- (int) getPrPredecessorChangeList: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagPredecessorChangeList: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { int rc = MAPISTORE_SUCCESS; NSData *changeList; diff --git a/OpenChange/MAPIStoreGCSMessageTable.m b/OpenChange/MAPIStoreGCSMessageTable.m index 45589fcc9..ef1d907eb 100644 --- a/OpenChange/MAPIStoreGCSMessageTable.m +++ b/OpenChange/MAPIStoreGCSMessageTable.m @@ -86,7 +86,7 @@ MAPIRestrictionState rc; TALLOC_CTX *memCtx = NULL; - if (res->ulPropTag == PR_CHANGE_NUM) + if (res->ulPropTag == PidTagChangeNumber) { value = NSObjectFromMAPISPropValue (&res->lpProp); lastModified = [(MAPIStoreGCSFolder *) diff --git a/OpenChange/MAPIStoreMailAttachment.m b/OpenChange/MAPIStoreMailAttachment.m index 2a7babc00..7b9641548 100644 --- a/OpenChange/MAPIStoreMailAttachment.m +++ b/OpenChange/MAPIStoreMailAttachment.m @@ -68,24 +68,24 @@ ASSIGN (bodyInfo, newBodyInfo); } -- (int) getPrAttachMethod: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttachMethod: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongValue (memCtx, 0x00000001); // afByValue return MAPISTORE_SUCCESS; } -- (int) getPrAttachTag: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttachTag: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = [[self mimeAttachTag] asBinaryInMemCtx: memCtx]; return MAPISTORE_SUCCESS; } -- (int) getPrAttachSize: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttachSize: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { uint32_t longValue; @@ -95,8 +95,8 @@ return MAPISTORE_SUCCESS; } -- (int) getPrRecordKey: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagRecordKey: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { static char recordBytes[] = {0xd9, 0xd8, 0x11, 0xa3, 0xe2, 0x90, 0x18, 0x41, 0x9e, 0x04, 0x58, 0x46, 0x9d, 0x6d, 0x1b, @@ -125,16 +125,16 @@ return fileName; } -- (int) getPrAttachLongFilename: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttachLongFilename: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = [[self _fileName] asUnicodeInMemCtx: memCtx]; return MAPISTORE_SUCCESS; } -- (int) getPrAttachFilename: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttachFilename: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSString *fileName, *baseName, *ext; @@ -153,7 +153,7 @@ return MAPISTORE_SUCCESS; } -- (int) getPrDisplayName: (void **) data +- (int) getPidTagDisplayName: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { *data = [[bodyInfo objectForKey: @"description"] @@ -162,8 +162,8 @@ return MAPISTORE_SUCCESS; } -- (int) getPrAttachContentId: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttachContentId: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = [[bodyInfo objectForKey: @"bodyId"] asUnicodeInMemCtx: memCtx]; @@ -171,21 +171,21 @@ return MAPISTORE_SUCCESS; } -- (int) getPrAttachMimeTag: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttachMimeTag: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSString *mimeTag; mimeTag = [NSString stringWithFormat: @"%@/%@", - [bodyInfo objectForKey: @"type"], - [bodyInfo objectForKey: @"subtype"]]; + [bodyInfo objectForKey: @"type"], + [bodyInfo objectForKey: @"subtype"]]; *data = [[mimeTag lowercaseString] asUnicodeInMemCtx: memCtx]; return MAPISTORE_SUCCESS; } -- (int) getPrAttachDataBin: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAttachDataBinary: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = [[sogoObject fetchBLOBWithPeek: YES] asBinaryInMemCtx: memCtx]; diff --git a/OpenChange/MAPIStoreMailFolder.m b/OpenChange/MAPIStoreMailFolder.m index 592674ee5..23c55ec97 100644 --- a/OpenChange/MAPIStoreMailFolder.m +++ b/OpenChange/MAPIStoreMailFolder.m @@ -201,8 +201,8 @@ static Class SOGoMailFolderK, MAPIStoreOutboxFolderK; return (rc == MAPISTORE_SUCCESS) ? [super deleteFolder] : rc; } -- (int) getPrContentUnread: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagContentUnreadCount: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { EOQualifier *searchQualifier; uint32_t longValue; @@ -217,7 +217,7 @@ static Class SOGoMailFolderK, MAPIStoreOutboxFolderK; return MAPISTORE_SUCCESS; } -- (int) getPrContainerClass: (void **) data +- (int) getPidTagContainerClass: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { *data = [@"IPF.Note" asUnicodeInMemCtx: memCtx]; @@ -225,7 +225,7 @@ static Class SOGoMailFolderK, MAPIStoreOutboxFolderK; return MAPISTORE_SUCCESS; } -- (int) getPrMessageClass: (void **) data +- (int) getPidTagMessageClass: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { *data = [@"IPM.Note" asUnicodeInMemCtx: memCtx]; @@ -1097,7 +1097,7 @@ _parseCOPYUID (NSString *line, NSArray **destUIDsP) @implementation MAPIStoreOutboxFolder -- (int) getPrDisplayName: (void **) data +- (int) getPidTagDisplayName: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { *data = [@"Outbox" asUnicodeInMemCtx: memCtx]; diff --git a/OpenChange/MAPIStoreMailMessage.h b/OpenChange/MAPIStoreMailMessage.h index 675f7e970..378d8e490 100644 --- a/OpenChange/MAPIStoreMailMessage.h +++ b/OpenChange/MAPIStoreMailMessage.h @@ -48,26 +48,26 @@ - (NSString *) subject; -- (int) getPrIconIndex: (void **) data +- (int) getPidTagIconIndex: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrFlagStatus: (void **) data +- (int) getPidTagFlagStatus: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrMessageFlags: (void **) data +- (int) getPidTagMessageFlags: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrFollowupIcon: (void **) data +- (int) getPidTagFollowupIcon: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrImportance: (void **) data +- (int) getPidTagImportance: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrReceivedByEmailAddress: (void **) data +- (int) getPidTagReceivedByEmailAddress: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrSenderEmailAddress: (void **) data +- (int) getPidTagSenderEmailAddress: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrDisplayTo: (void **) data +- (int) getPidTagDisplayTo: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrDisplayCc: (void **) data +- (int) getPidTagDisplayCc: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrDisplayBcc: (void **) data +- (int) getPidTagDisplayBcc: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; @end diff --git a/OpenChange/MAPIStoreMailMessage.m b/OpenChange/MAPIStoreMailMessage.m index 00130d20c..aa0469774 100644 --- a/OpenChange/MAPIStoreMailMessage.m +++ b/OpenChange/MAPIStoreMailMessage.m @@ -58,7 +58,6 @@ #include #include #include -#include @class iCalCalendar, iCalEvent; @@ -294,8 +293,8 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) return appointmentWrapper; } -- (int) getPrChangeKey: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagChangeKey: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { int rc = MAPISTORE_SUCCESS; NSData *changeKey; @@ -330,8 +329,8 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) return rc; } -- (int) getPrPredecessorChangeList: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagPredecessorChangeList: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { int rc = MAPISTORE_SUCCESS; NSData *changeList; @@ -341,14 +340,14 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) else { changeList = [(MAPIStoreMailFolder *)[self container] - predecessorChangeListForMessageWithKey: [self nameInContainer]]; + predecessorChangeListForMessageWithKey: [self nameInContainer]]; if (!changeList) { [self warnWithFormat: @"attempting to get predecessor change list" @" by synchronising folder..."]; [(MAPIStoreMailFolder *) container synchroniseCache]; changeList = [(MAPIStoreMailFolder *)[self container] - predecessorChangeListForMessageWithKey: [self nameInContainer]]; + predecessorChangeListForMessageWithKey: [self nameInContainer]]; if (changeList) [self logWithFormat: @"got one"]; else @@ -373,14 +372,14 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) if (uid) { changeNumber = [(MAPIStoreMailFolder *) container - changeNumberForMessageUID: uid]; + changeNumberForMessageUID: uid]; if (!changeNumber) { [self warnWithFormat: @"attempting to get change number" @" by synchronising folder..."]; [(MAPIStoreMailFolder *) container synchroniseCache]; changeNumber = [(MAPIStoreMailFolder *) container - changeNumberForMessageUID: uid]; + changeNumberForMessageUID: uid]; if (changeNumber) [self logWithFormat: @"got one"]; else @@ -397,8 +396,8 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) return version; } -- (int) getPrIconIndex: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagIconIndex: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { uint32_t longValue; @@ -406,7 +405,7 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) [self _fetchHeaderData]; if (mailIsEvent) - [[self _appointmentWrapper] getPrIconIndex: data inMemCtx: memCtx]; + [[self _appointmentWrapper] getPidTagIconIndex: data inMemCtx: memCtx]; else { /* see http://msdn.microsoft.com/en-us/library/cc815472.aspx */ @@ -448,8 +447,8 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) return MAPISTORE_SUCCESS; } -- (int) getPrSubject: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSubject: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSString *stringValue; @@ -461,8 +460,8 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) return MAPISTORE_SUCCESS; } -- (int) getPrSubjectPrefix: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSubjectPrefix: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSString *subject; NSUInteger colIdx; @@ -472,7 +471,7 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) colIdx = [subject rangeOfString: @":"].location; if (colIdx != NSNotFound && colIdx < 4) stringValue = [NSString stringWithFormat: @"%@: ", - [subject substringToIndex: colIdx]]; + [subject substringToIndex: colIdx]]; else stringValue = @""; *data = [stringValue asUnicodeInMemCtx: memCtx]; @@ -480,8 +479,8 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) return MAPISTORE_SUCCESS; } -- (int) getPrNormalizedSubject: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagNormalizedSubject: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSString *subject; NSUInteger colIdx; @@ -507,15 +506,15 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) return [self getYes: data inMemCtx: memCtx]; } -- (int) getPrMessageClass: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMessageClass: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { if (!headerSetup) [self _fetchHeaderData]; if (mailIsEvent) - [[self _appointmentWrapper] getPrMessageClass: data - inMemCtx: memCtx]; + [[self _appointmentWrapper] getPidTagMessageClass: data + inMemCtx: memCtx]; else *data = talloc_strdup (memCtx, "IPM.Note"); @@ -523,7 +522,7 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) } /* Note: this applies to regular mails... */ -// - (int) getPrReplyRequested: (void **) data // TODO +// - (int) getPidTagReplyRequested: (void **) data // TODO // inMemCtx: (TALLOC_CTX *) memCtx // { // if (!headerSetup) @@ -535,8 +534,8 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) // } /* ... while this applies to invitations. */ -- (int) getPrResponseRequested: (void **) data // TODO - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagResponseRequested: (void **) data // TODO + inMemCtx: (TALLOC_CTX *) memCtx { if (!headerSetup) [self _fetchHeaderData]; @@ -546,32 +545,32 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) : MAPISTORE_ERR_NOT_FOUND); } -- (int) getPrLatestDeliveryTime: (void **) data // DOUBT - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagLatestDeliveryTime: (void **) data // DOUBT + inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrCreationTime: data inMemCtx: memCtx]; + return [self getPidTagCreationTime: data inMemCtx: memCtx]; } -- (int) getPrOriginalSubmitTime: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagOriginalSubmitTime: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrCreationTime: data inMemCtx: memCtx]; + return [self getPidTagCreationTime: data inMemCtx: memCtx]; } -- (int) getPrClientSubmitTime: (void **) data +- (int) getPidTagClientSubmitTime: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + return [self getPidTagCreationTime: data inMemCtx: memCtx]; +} + +- (int) getPidTagMessageDeliveryTime: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + return [self getPidTagCreationTime: data inMemCtx: memCtx]; +} + +- (int) getPidTagMessageFlags: (void **) data // TODO inMemCtx: (TALLOC_CTX *) memCtx -{ - return [self getPrCreationTime: data inMemCtx: memCtx]; -} - -- (int) getPrMessageDeliveryTime: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx -{ - return [self getPrCreationTime: data inMemCtx: memCtx]; -} - -- (int) getPrMessageFlags: (void **) data // TODO - inMemCtx: (TALLOC_CTX *) memCtx { NSDictionary *coreInfos; NSArray *flags; @@ -594,8 +593,8 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) return MAPISTORE_SUCCESS; } -- (int) getPrFlagStatus: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagFlagStatus: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSDictionary *coreInfos; NSArray *flags; @@ -614,8 +613,8 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) return MAPISTORE_SUCCESS; } -- (int) getPrFollowupIcon: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagFollowupIcon: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSDictionary *coreInfos; NSArray *flags; @@ -634,38 +633,38 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) return MAPISTORE_SUCCESS; } -- (int) getPrSensitivity: (void **) data // TODO - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSensitivity: (void **) data // TODO + inMemCtx: (TALLOC_CTX *) memCtx { return [self getLongZero: data inMemCtx: memCtx]; } -- (int) getPrOriginalSensitivity: (void **) data // TODO - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagOriginalSensitivity: (void **) data // TODO + inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrSensitivity: data inMemCtx: memCtx]; + return [self getPidTagSensitivity: data inMemCtx: memCtx]; } -- (int) getPrSentRepresentingAddrtype: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSentRepresentingAddressType: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getSMTPAddrType: data inMemCtx: memCtx]; } -- (int) getPrRcvdRepresentingAddrtype: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagReceivedRepresentingAddressType: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getSMTPAddrType: data inMemCtx: memCtx]; } -- (int) getPrReceivedByAddrtype: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagReceivedByAddressType: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getSMTPAddrType: data inMemCtx: memCtx]; } -- (int) getPrSenderAddrtype: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSenderAddressType: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getSMTPAddrType: data inMemCtx: memCtx]; } @@ -762,111 +761,111 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) return rc; } -- (int) getPrSenderEmailAddress: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSenderEmailAddress: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getEmailAddressFromEmail: [sogoObject from] inData: data inMemCtx: memCtx]; } -- (int) getPrSenderName: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSenderName: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getCNFromEmail: [sogoObject from] inData: data inMemCtx: memCtx]; } -- (int) getPrSenderEntryid: (void **) data inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSenderEntryId: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { return [self _getEntryIdFromEmail: [sogoObject from] inData: data inMemCtx: memCtx]; } -- (int) getPrOriginalAuthorName: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx -{ - return [self getPrSenderEmailAddress: data inMemCtx: memCtx]; -} - -- (int) getPrSentRepresentingEmailAddress: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx -{ - return [self getPrSenderEmailAddress: data inMemCtx: memCtx]; -} - -- (int) getPrSentRepresentingName: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx -{ - return [self getPrSenderName: data inMemCtx: memCtx]; -} - -- (int) getPrSentRepresentingEntryid: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx -{ - return [self getPrSenderEntryid: data inMemCtx: memCtx]; -} - -- (int) getPrReceivedByEmailAddress: (void **) data +- (int) getPidTagOriginalAuthorName: (void **) data inMemCtx: (TALLOC_CTX *) memCtx +{ + return [self getPidTagSenderEmailAddress: data inMemCtx: memCtx]; +} + +- (int) getPidTagSentRepresentingEmailAddress: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + return [self getPidTagSenderEmailAddress: data inMemCtx: memCtx]; +} + +- (int) getPidTagSentRepresentingName: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + return [self getPidTagSenderName: data inMemCtx: memCtx]; +} + +- (int) getPidTagSentRepresentingEntryId: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + return [self getPidTagSenderEntryId: data inMemCtx: memCtx]; +} + +- (int) getPidTagReceivedByEmailAddress: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getEmailAddressFromEmail: [sogoObject to] inData: data inMemCtx: memCtx]; } -- (int) getPrReceivedByName: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagReceivedByName: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getCNFromEmail: [sogoObject to] inData: data inMemCtx: memCtx]; } -- (int) getPrReceivedByEntryid: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagReceivedByEntryId: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self _getEntryIdFromEmail: [sogoObject to] inData: data inMemCtx: memCtx]; } -- (int) getPrRcvdRepresentingName: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx -{ - return [self getPrReceivedByName: data inMemCtx: memCtx]; -} - -- (int) getPrRcvdRepresentingEmailAddress: (void **) data +- (int) getPidTagReceivedRepresentingName: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrReceivedByEmailAddress: data inMemCtx: memCtx]; + return [self getPidTagReceivedByName: data inMemCtx: memCtx]; } -- (int) getPrRcvdRepresentingEntryid: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagReceivedRepresentingEmailAddress: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrReceivedByEntryid: data inMemCtx: memCtx]; + return [self getPidTagReceivedByEmailAddress: data inMemCtx: memCtx]; } -- (int) getPrDisplayTo: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagReceivedRepresentingEntryId: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + return [self getPidTagReceivedByEntryId: data inMemCtx: memCtx]; +} + +- (int) getPidTagDisplayTo: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = [[sogoObject to] asUnicodeInMemCtx: memCtx]; return MAPISTORE_SUCCESS; } -- (int) getPrOriginalDisplayTo: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagOriginalDisplayTo: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrDisplayTo: data inMemCtx: memCtx]; + return [self getPidTagDisplayTo: data inMemCtx: memCtx]; } -- (int) getPrDisplayCc: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagDisplayCc: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSString *stringValue; @@ -879,22 +878,22 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) return MAPISTORE_SUCCESS; } -- (int) getPrOriginalDisplayCc: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagOriginalDisplayCc: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrDisplayCc: data inMemCtx: memCtx]; + return [self getPidTagDisplayCc: data inMemCtx: memCtx]; } -- (int) getPrDisplayBcc: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagDisplayBcc: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getEmptyString: data inMemCtx: memCtx]; } -- (int) getPrOriginalDisplayBcc: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagOriginalDisplayBcc: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrDisplayBcc: data inMemCtx: memCtx]; + return [self getPidTagDisplayBcc: data inMemCtx: memCtx]; } - (int) getPidNameContentType: (void **) data @@ -905,8 +904,8 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) return MAPISTORE_SUCCESS; } -- (int) getPrImportance: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagImportance: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { uint32_t v; NSString *s; @@ -924,24 +923,24 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) return MAPISTORE_SUCCESS; } -- (int) getPrInternetCpid: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagInternetCodepage: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { /* ref: - http://msdn.microsoft.com/en-us/library/dd317756%28v=vs.85%29.aspx + http://msdn.microsoft.com/en-us/library/dd317756%28v=vs.85%29.aspx - minimal list that should be handled: - us-ascii: 20127 - iso-8859-1: 28591 - iso-8859-15: 28605 - utf-8: 65001 */ + minimal list that should be handled: + us-ascii: 20127 + iso-8859-1: 28591 + iso-8859-15: 28605 + utf-8: 65001 */ *data = MAPILongValue(memCtx, 65001); return MAPISTORE_SUCCESS; } -- (int) getPrBody: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagBody: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSString *stringValue; int rc = MAPISTORE_SUCCESS; @@ -955,8 +954,8 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) *data = [stringValue asUnicodeInMemCtx: memCtx]; } else if (mailIsEvent) - rc = [[self _appointmentWrapper] getPrBody: data - inMemCtx: memCtx]; + rc = [[self _appointmentWrapper] getPidTagBody: data + inMemCtx: memCtx]; else { *data = NULL; @@ -966,8 +965,8 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) return rc; } -- (int) getPrHtml: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagHtml: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { int rc = MAPISTORE_SUCCESS; @@ -985,36 +984,36 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) return rc; } -- (int) getPrRtfCompressed: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagRtfCompressed: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = NULL; return MAPISTORE_ERR_NOT_FOUND; } -- (int) getPrRtfInSync: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagRtfInSync: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getNo: data inMemCtx: memCtx]; } -- (int) getPrInternetMessageId: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagInternetMessageId: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = [[sogoObject messageId] asUnicodeInMemCtx: memCtx]; return MAPISTORE_SUCCESS; } -- (int) getPrReadReceiptRequested: (void **) data // TODO - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagReadReceiptRequested: (void **) data // TODO + inMemCtx: (TALLOC_CTX *) memCtx { return [self getNo: data inMemCtx: memCtx]; } -- (int) getPrDeleteAfterSubmit: (void **) data // TODO - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagDeleteAfterSubmit: (void **) data // TODO + inMemCtx: (TALLOC_CTX *) memCtx { return [self getNo: data inMemCtx: memCtx]; } @@ -1065,7 +1064,7 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) : MAPISTORE_ERR_NOT_FOUND); } -- (int) getPrProcessed: (void **) data inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagProcessed: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { int rc; @@ -1104,8 +1103,8 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) : [self getNo: data inMemCtx: memCtx]); } -- (int) getPrMsgEditorFormat: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMessageEditorFormat: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { uint32_t format; @@ -1149,14 +1148,14 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) } /* event getters */ -- (int) getPrStartDate: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagStartDate: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { if (!headerSetup) [self _fetchHeaderData]; return (mailIsEvent - ? [[self _appointmentWrapper] getPrStartDate: data inMemCtx: memCtx] + ? [[self _appointmentWrapper] getPidTagStartDate: data inMemCtx: memCtx] : MAPISTORE_ERR_NOT_FOUND); } @@ -1200,14 +1199,14 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) : MAPISTORE_ERR_NOT_FOUND); } -- (int) getPrEndDate: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagEndDate: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { if (!headerSetup) [self _fetchHeaderData]; return (mailIsEvent - ? [[self _appointmentWrapper] getPrEndDate: data inMemCtx: memCtx] + ? [[self _appointmentWrapper] getPidTagEndDate: data inMemCtx: memCtx] : MAPISTORE_ERR_NOT_FOUND); } @@ -1319,15 +1318,15 @@ _compareBodyKeysByPriority (id entry1, id entry2, void *data) : MAPISTORE_ERR_NOT_FOUND); } -- (int) getPrOwnerApptId: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagOwnerAppointmentId: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { if (!headerSetup) [self _fetchHeaderData]; return (mailIsEvent - ? [[self _appointmentWrapper] getPrOwnerApptId: data - inMemCtx: memCtx] + ? [[self _appointmentWrapper] getPidTagOwnerAppointmentId: data + inMemCtx: memCtx] : MAPISTORE_ERR_NOT_FOUND); } diff --git a/OpenChange/MAPIStoreMailMessageTable.m b/OpenChange/MAPIStoreMailMessageTable.m index 72133a210..62dc406fd 100644 --- a/OpenChange/MAPIStoreMailMessageTable.m +++ b/OpenChange/MAPIStoreMailMessageTable.m @@ -149,11 +149,11 @@ static Class MAPIStoreMailMessageK, NSDataK, NSStringK; rc = MAPIRestrictionStateAlwaysFalse; break; - case PR_CONVERSATION_KEY: + case PidTagConversationKey: rc = MAPIRestrictionStateAlwaysFalse; break; - case PR_CHANGE_NUM: + case PidTagChangeNumber: { modseq = [(MAPIStoreMailFolder *) container modseqFromMessageChangeNumber: value]; @@ -205,7 +205,7 @@ static Class MAPIStoreMailMessageK, NSDataK, NSStringK; else rc = MAPIRestrictionStateAlwaysFalse; break; - case PR_CONVERSATION_KEY: + case PidTagConversationKey: rc = MAPIRestrictionStateAlwaysFalse; break; default: diff --git a/OpenChange/MAPIStoreMessage.m b/OpenChange/MAPIStoreMessage.m index 7e7a61b2e..2bc1dedaa 100644 --- a/OpenChange/MAPIStoreMessage.m +++ b/OpenChange/MAPIStoreMessage.m @@ -53,7 +53,6 @@ #include #include #include -#include static NSString *resourcesDir = nil; @@ -164,16 +163,16 @@ rtf2html (NSData *compressedRTF) // __FUNCTION__, __LINE__]; msgData = talloc_zero (memCtx, struct mapistore_message); - - if ([self getPrSubjectPrefix: &propValue - inMemCtx: msgData] == MAPISTORE_SUCCESS + + if ([self getPidTagSubjectPrefix: &propValue + inMemCtx: msgData] == MAPISTORE_SUCCESS && propValue) msgData->subject_prefix = propValue; else msgData->subject_prefix = ""; - if ([self getPrNormalizedSubject: &propValue - inMemCtx: msgData] == MAPISTORE_SUCCESS + if ([self getPidTagNormalizedSubject: &propValue + inMemCtx: msgData] == MAPISTORE_SUCCESS && propValue) msgData->normalized_subject = propValue; else @@ -421,8 +420,8 @@ rtf2html (NSData *compressedRTF) - (NSArray *) activeContainerMessageTables { return [[MAPIStoreActiveTables activeTables] - activeTablesForFMID: [container objectId] - andType: MAPISTORE_MESSAGE_TABLE]; + activeTablesForFMID: [container objectId] + andType: MAPISTORE_MESSAGE_TABLE]; } - (enum mapistore_error) saveMessage @@ -517,8 +516,8 @@ rtf2html (NSData *compressedRTF) } /* getters */ -- (int) getPrInstId: (void **) data // TODO: DOUBT - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagInstID: (void **) data // TODO: DOUBT + inMemCtx: (TALLOC_CTX *) memCtx { /* we return a unique id based on the key */ *data = MAPILongLongValue (memCtx, [[sogoObject nameInContainer] hash]); @@ -526,22 +525,22 @@ rtf2html (NSData *compressedRTF) return MAPISTORE_SUCCESS; } -- (int) getPrInstanceNum: (void **) data // TODO: DOUBT - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagInstanceNum: (void **) data // TODO: DOUBT + inMemCtx: (TALLOC_CTX *) memCtx { return [self getLongZero: data inMemCtx: memCtx]; } -- (int) getPrRowType: (void **) data // TODO: DOUBT - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagRowType: (void **) data // TODO: DOUBT + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongValue (memCtx, TBL_LEAF_ROW); return MAPISTORE_SUCCESS; } -- (int) getPrDepth: (void **) data // TODO: DOUBT - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagDepth: (void **) data // TODO: DOUBT + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongLongValue (memCtx, 0); @@ -558,8 +557,8 @@ rtf2html (NSData *compressedRTF) 0x00000010 Create Contents Table 0x00000020 Create Associated Contents Table */ -- (int) getPrAccess: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAccess: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { uint32_t access = 0; BOOL userIsOwner; @@ -587,8 +586,8 @@ rtf2html (NSData *compressedRTF) 0x00000000 Read-Only 0x00000001 Modify */ -- (int) getPrAccessLevel: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAccessLevel: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { uint32_t access = 0; BOOL userIsOwner; @@ -645,40 +644,40 @@ rtf2html (NSData *compressedRTF) return MAPISTORE_SUCCESS; } -- (int) getPrFid: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagFolderId: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongLongValue (memCtx, [container objectId]); return MAPISTORE_SUCCESS; } -- (int) getPrMid: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMid: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongLongValue (memCtx, [self objectId]); return MAPISTORE_SUCCESS; } -- (int) getPrMessageLocaleId: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMessageLocaleId: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongValue (memCtx, 0x0409); return MAPISTORE_SUCCESS; } -- (int) getPrMessageFlags: (void **) data // TODO - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMessageFlags: (void **) data // TODO + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongValue (memCtx, MSGFLAG_FROMME | MSGFLAG_READ | MSGFLAG_UNMODIFIED); return MAPISTORE_SUCCESS; } -- (int) getPrMessageSize: (void **) data // TODO - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMessageSize: (void **) data // TODO + inMemCtx: (TALLOC_CTX *) memCtx { /* TODO: choose another name in SOGo for that method */ *data = MAPILongValue (memCtx, [[sogoObject davContentLength] intValue]); @@ -686,99 +685,99 @@ rtf2html (NSData *compressedRTF) return MAPISTORE_SUCCESS; } -- (int) getPrMsgStatus: (void **) data // TODO - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMessageStatus: (void **) data // TODO + inMemCtx: (TALLOC_CTX *) memCtx { return [self getLongZero: data inMemCtx: memCtx]; } -- (int) getPrImportance: (void **) data // TODO -> subclass? - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagImportance: (void **) data // TODO -> subclass? + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongValue (memCtx, 1); return MAPISTORE_SUCCESS; } -- (int) getPrPriority: (void **) data // TODO -> subclass? - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagPriority: (void **) data // TODO -> subclass? + inMemCtx: (TALLOC_CTX *) memCtx { return [self getLongZero: data inMemCtx: memCtx]; } -- (int) getPrSensitivity: (void **) data // TODO -> subclass in calendar +- (int) getPidTagSensitivity: (void **) data // TODO -> subclass in calendar + inMemCtx: (TALLOC_CTX *) memCtx +{ + return [self getLongZero: data inMemCtx: memCtx]; +} + +- (int) getPidTagSubject: (void **) data inMemCtx: (TALLOC_CTX *) memCtx -{ - return [self getLongZero: data inMemCtx: memCtx]; -} - -- (int) getPrSubject: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx { [self subclassResponsibility: _cmd]; return MAPISTORE_ERR_NOT_FOUND; } -- (int) getPrNormalizedSubject: (void **) data +- (int) getPidTagNormalizedSubject: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + return [self getPidTagSubject: data inMemCtx: memCtx]; +} + +- (int) getPidTagOriginalSubject: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + return [self getPidTagNormalizedSubject: data inMemCtx: memCtx]; +} + +- (int) getPidTagConversationTopic: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + return [self getPidTagNormalizedSubject: data inMemCtx: memCtx]; +} + +- (int) getPidTagSubjectPrefix: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrSubject: data inMemCtx: memCtx]; + return [self getEmptyString: data inMemCtx: memCtx]; } -- (int) getPrOriginalSubject: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx -{ - return [self getPrNormalizedSubject: data inMemCtx: memCtx]; -} - -- (int) getPrConversationTopic: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx -{ - return [self getPrNormalizedSubject: data inMemCtx: memCtx]; -} - -- (int) getPrSubjectPrefix: (void **) data +- (int) getPidTagDisplayTo: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { return [self getEmptyString: data inMemCtx: memCtx]; } -- (int) getPrDisplayTo: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagDisplayCc: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getEmptyString: data inMemCtx: memCtx]; } -- (int) getPrDisplayCc: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagDisplayBcc: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getEmptyString: data inMemCtx: memCtx]; } -- (int) getPrDisplayBcc: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx -{ - return [self getEmptyString: data inMemCtx: memCtx]; -} - -// - (int) getPrOriginalDisplayTo: (void **) data +// - (int) getPidTagOriginalDisplayTo: (void **) data // { -// return [self getPrDisplayTo: data]; +// return [self getPidTagDisplayTo: data]; // } -// - (int) getPrOriginalDisplayCc: (void **) data +// - (int) getPidTagOriginalDisplayCc: (void **) data // { -// return [self getPrDisplayCc: data]; +// return [self getPidTagDisplayCc: data]; // } -// - (int) getPrOriginalDisplayBcc: (void **) data +// - (int) getPidTagOriginalDisplayBcc: (void **) data // { -// return [self getPrDisplayBcc: data]; +// return [self getPidTagDisplayBcc: data]; // } -- (int) getPrLastModifierName: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagLastModifierName: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSURL *contextUrl; @@ -788,22 +787,22 @@ rtf2html (NSData *compressedRTF) return MAPISTORE_SUCCESS; } -- (int) getPrMessageClass: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMessageClass: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { [self subclassResponsibility: _cmd]; return MAPISTORE_ERR_NOT_FOUND; } -- (int) getPrOrigMessageClass: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagOriginalMessageClass: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrMessageClass: data inMemCtx: memCtx]; + return [self getPidTagMessageClass: data inMemCtx: memCtx]; } -- (int) getPrHasattach: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagHasAttachments: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPIBoolValue (memCtx, [[self attachmentKeys] count] > 0); @@ -811,8 +810,8 @@ rtf2html (NSData *compressedRTF) return MAPISTORE_SUCCESS; } -- (int) getPrAssociated: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagAssociated: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getNo: data inMemCtx: memCtx];; } diff --git a/OpenChange/MAPIStoreNotesMessage.m b/OpenChange/MAPIStoreNotesMessage.m index 3933c167e..d59d9a2f8 100644 --- a/OpenChange/MAPIStoreNotesMessage.m +++ b/OpenChange/MAPIStoreNotesMessage.m @@ -32,8 +32,8 @@ @implementation MAPIStoreNotesMessage -- (int) getPrIconIndex: (void **) data // TODO - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagIconIndex: (void **) data // TODO + inMemCtx: (TALLOC_CTX *) memCtx { /* see http://msdn.microsoft.com/en-us/library/cc815472.aspx */ // *longValue = 0x00000300 for blue @@ -46,23 +46,23 @@ return MAPISTORE_SUCCESS; } -- (int) getPrMessageClass: (void **) data inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMessageClass: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { *data = [@"IPM.StickyNote" asUnicodeInMemCtx: memCtx]; return MAPISTORE_SUCCESS; } -- (int) getPrSubject: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSubject: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { id value; int rc; value = [[sogoObject properties] - objectForKey: MAPIPropertyKey (PR_NORMALIZED_SUBJECT_UNICODE)]; + objectForKey: MAPIPropertyKey (PidTagNormalizedSubject)]; if (value) - rc = [value getValue: data forTag: PR_NORMALIZED_SUBJECT_UNICODE + rc = [value getValue: data forTag: PidTagNormalizedSubject inMemCtx: memCtx]; else rc = MAPISTORE_ERR_NOT_FOUND; diff --git a/OpenChange/MAPIStoreObject.h b/OpenChange/MAPIStoreObject.h index 31e21fee9..773e806ac 100644 --- a/OpenChange/MAPIStoreObject.h +++ b/OpenChange/MAPIStoreObject.h @@ -107,22 +107,22 @@ inMemCtx: (TALLOC_CTX *) memCtx; /* implemented getters */ -- (int) getPrDisplayName: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrSearchKey: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrGenerateExchangeViews: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrParentSourceKey: (void **) data +- (int) getPidTagDisplayName: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrSourceKey: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrChangeKey: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrCreationTime: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx; -- (int) getPrLastModificationTime: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx; +- (int) getPidTagSearchKey: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx; +- (int) getPidTagGenerateExchangeViews: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx; +- (int) getPidTagParentSourceKey: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx; +- (int) getPidTagSourceKey: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx; +- (int) getPidTagChangeKey: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx; +- (int) getPidTagCreationTime: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx; +- (int) getPidTagLastModificationTime: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx; /* subclasses */ - (uint64_t) objectVersion; diff --git a/OpenChange/MAPIStoreObject.m b/OpenChange/MAPIStoreObject.m index c9d71d1ef..c0649c7a3 100644 --- a/OpenChange/MAPIStoreObject.m +++ b/OpenChange/MAPIStoreObject.m @@ -294,7 +294,7 @@ static Class NSExceptionK, MAPIStoreFolderK; } /* getters */ -- (int) getPrDisplayName: (void **) data +- (int) getPidTagDisplayName: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { *data = [[sogoObject displayName] asUnicodeInMemCtx: memCtx]; @@ -302,7 +302,7 @@ static Class NSExceptionK, MAPIStoreFolderK; return MAPISTORE_SUCCESS; } -- (int) getPrSearchKey: (void **) data +- (int) getPidTagSearchKey: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { NSString *stringValue; @@ -314,20 +314,20 @@ static Class NSExceptionK, MAPIStoreFolderK; return MAPISTORE_SUCCESS; } -- (int) getPrGenerateExchangeViews: (void **) data +- (int) getPidTagGenerateExchangeViews: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { return [self getNo: data inMemCtx: memCtx]; } -- (int) getPrParentSourceKey: (void **) data +- (int) getPidTagParentSourceKey: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { return [self getReplicaKey: data fromGlobCnt: [container objectId] >> 16 inMemCtx: memCtx]; } -- (int) getPrSourceKey: (void **) data +- (int) getPidTagSourceKey: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { return [self getReplicaKey: data fromGlobCnt: [self objectId] >> 16 @@ -341,7 +341,7 @@ static Class NSExceptionK, MAPIStoreFolderK; return ULLONG_MAX; } -- (int) getPrChangeKey: (void **) data +- (int) getPidTagChangeKey: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { int rc; @@ -357,7 +357,7 @@ static Class NSExceptionK, MAPIStoreFolderK; return rc; } -- (int) getPrChangeNum: (void **) data +- (int) getPidTagChangeNumber: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { int rc; @@ -376,7 +376,7 @@ static Class NSExceptionK, MAPIStoreFolderK; return rc; } -- (int) getPrCreationTime: (void **) data +- (int) getPidTagCreationTime: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { *data = [[self creationTime] asFileTimeInMemCtx: memCtx]; @@ -384,7 +384,7 @@ static Class NSExceptionK, MAPIStoreFolderK; return MAPISTORE_SUCCESS; } -- (int) getPrLastModificationTime: (void **) data +- (int) getPidTagLastModificationTime: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { *data = [[self lastModificationTime] asFileTimeInMemCtx: memCtx]; diff --git a/OpenChange/MAPIStorePermissionsTable.m b/OpenChange/MAPIStorePermissionsTable.m index 6247d8694..cde8edc82 100644 --- a/OpenChange/MAPIStorePermissionsTable.m +++ b/OpenChange/MAPIStorePermissionsTable.m @@ -84,16 +84,16 @@ return memberId; } -- (int) getPrMemberId: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMemberId: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = MAPILongLongValue (memCtx, memberId); return MAPISTORE_SUCCESS; } -- (int) getPrEntryid: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagEntryId: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSData *entryId; struct mapistore_connection_info *connInfo; @@ -110,8 +110,8 @@ return MAPISTORE_SUCCESS; } -- (int) getPrMemberName: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMemberName: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { NSString *displayName; @@ -127,8 +127,8 @@ return MAPISTORE_SUCCESS; } -- (int) getPrMemberRights: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMemberRights: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { uint32_t rights; NSArray *roles; diff --git a/OpenChange/MAPIStoreTasksMessage.m b/OpenChange/MAPIStoreTasksMessage.m index 81c2a9ba9..28d690b74 100644 --- a/OpenChange/MAPIStoreTasksMessage.m +++ b/OpenChange/MAPIStoreTasksMessage.m @@ -66,8 +66,8 @@ @implementation MAPIStoreTasksMessage -- (int) getPrIconIndex: (void **) data // TODO - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagIconIndex: (void **) data // TODO + inMemCtx: (TALLOC_CTX *) memCtx { /* see http://msdn.microsoft.com/en-us/library/cc815472.aspx */ // Unassigned recurring task 0x00000501 @@ -81,16 +81,16 @@ return MAPISTORE_SUCCESS; } -- (int) getPrMessageClass: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMessageClass: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { *data = talloc_strdup(memCtx, "IPM.Task"); return MAPISTORE_SUCCESS; } -- (int) getPrSubject: (void **) data // SUMMARY - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSubject: (void **) data // SUMMARY + inMemCtx: (TALLOC_CTX *) memCtx { iCalToDo *task; @@ -100,8 +100,8 @@ return MAPISTORE_SUCCESS; } -- (int) getPrImportance: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagImportance: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { uint32_t v; iCalToDo *task; @@ -201,8 +201,8 @@ return [self getLongZero: data inMemCtx: memCtx]; } -- (int) getPrHasattach: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagHasAttachments: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { return [self getNo: data inMemCtx: memCtx]; } @@ -242,22 +242,22 @@ } -- (int) getPrMessageDeliveryTime: (void **) data - inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMessageDeliveryTime: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrLastModificationTime: data inMemCtx: memCtx]; + return [self getPidTagLastModificationTime: data inMemCtx: memCtx]; } - (int) getClientSubmitTime: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrLastModificationTime: data inMemCtx: memCtx]; + return [self getPidTagLastModificationTime: data inMemCtx: memCtx]; } - (int) getLocalCommitTime: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { - return [self getPrLastModificationTime: data inMemCtx: memCtx]; + return [self getPidTagLastModificationTime: data inMemCtx: memCtx]; } - (int) getPidLidTaskStatus: (void **) data // status @@ -466,7 +466,7 @@ value = [properties objectForKey: MAPIPropertyKey (PR_CHANGE_KEY)]; if (value) [(MAPIStoreTasksFolder *) container - setChangeKey: value forMessageWithKey: [self nameInContainer]]; + setChangeKey: value forMessageWithKey: [self nameInContainer]]; } @end diff --git a/OpenChange/MAPIStoreVolatileMessage.m b/OpenChange/MAPIStoreVolatileMessage.m index 8bfc3b578..b248ef12a 100644 --- a/OpenChange/MAPIStoreVolatileMessage.m +++ b/OpenChange/MAPIStoreVolatileMessage.m @@ -121,21 +121,21 @@ Class NSNumberK; return rc; } -- (int) getPrSubject: (void **) data inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagSubject: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { /* if we get here, it means that the properties file didn't contain a relevant value */ return [self getEmptyString: data inMemCtx: memCtx]; } -- (int) getPrMessageClass: (void **) data inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagMessageClass: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { *data = [@"IPM.Note" asUnicodeInMemCtx: memCtx]; return MAPISTORE_SUCCESS; } -- (int) getPrChangeKey: (void **) data inMemCtx: (TALLOC_CTX *) memCtx +- (int) getPidTagChangeKey: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { NSData *changeKey; int rc; @@ -148,7 +148,7 @@ Class NSNumberK; rc = MAPISTORE_SUCCESS; } else - rc = [super getPrChangeKey: data inMemCtx: memCtx]; + rc = [super getPidTagChangeKey: data inMemCtx: memCtx]; return rc; } From 0e5c4a2164da82b17d4bfd3691d8b00d0f460ec2 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 8 Mar 2012 15:19:57 +0000 Subject: [PATCH 11/29] Monotone-Parent: 950ec4b3237bbed086e9876da2e597c7e074531a Monotone-Revision: eb71a06a7fed1f1f665417f71984df862cf53c12 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-08T15:19:57 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 5 +++++ OpenChange/MAPIStoreTypes.m | 2 ++ 2 files changed, 7 insertions(+) diff --git a/ChangeLog b/ChangeLog index a1bba5dc7..c2bcf304f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-03-08 Wolfgang Sourdeau + + * OpenChange/MAPIStoreTypes.m (NSObjectFromMAPISPropValue) + (NSObjectFromSPropValue): treat PT_ERROR just as PT_LONG. + 2012-03-06 Wolfgang Sourdeau * SoObjects/Mailer/SOGoMailFolder.m diff --git a/OpenChange/MAPIStoreTypes.m b/OpenChange/MAPIStoreTypes.m index 980431d1b..56665d0fb 100644 --- a/OpenChange/MAPIStoreTypes.m +++ b/OpenChange/MAPIStoreTypes.m @@ -96,6 +96,7 @@ NSObjectFromMAPISPropValue (const struct mapi_SPropValue *value) result = [NSNumber numberWithUnsignedShort: value->value.i]; break; case PT_LONG: + case PT_ERROR: result = [NSNumber numberWithUnsignedLong: value->value.l]; break; case PT_I8: @@ -175,6 +176,7 @@ NSObjectFromSPropValue (const struct SPropValue *value) result = [NSNumber numberWithShort: value->value.i]; break; case PT_LONG: + case PT_ERROR: result = [NSNumber numberWithLong: value->value.l]; break; case PT_I8: From 06013c4920671dcf5f1e60ebc4dbed387d6a4342 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 8 Mar 2012 15:23:34 +0000 Subject: [PATCH 12/29] Monotone-Parent: eb71a06a7fed1f1f665417f71984df862cf53c12 Monotone-Revision: bb133434e9e283747d7758877c0c8dcd50346b55 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-08T15:23:34 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 3 +++ OpenChange/MAPIStoreFolder.m | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index c2bcf304f..c4dab2402 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2012-03-08 Wolfgang Sourdeau + * OpenChange/MAPIStoreFolder.m (-getPidTagSubFolders:inMemCtx:): + invoke [self folderKeys] rather than the corresponding ivar. + * OpenChange/MAPIStoreTypes.m (NSObjectFromMAPISPropValue) (NSObjectFromSPropValue): treat PT_ERROR just as PT_LONG. diff --git a/OpenChange/MAPIStoreFolder.m b/OpenChange/MAPIStoreFolder.m index 71dc2f97d..a0c75d3ae 100644 --- a/OpenChange/MAPIStoreFolder.m +++ b/OpenChange/MAPIStoreFolder.m @@ -1196,7 +1196,7 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe - (int) getPidTagSubfolders: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { - *data = MAPIBoolValue (memCtx, [folderKeys count] > 0); + *data = MAPIBoolValue (memCtx, [[self folderKeys] count] > 0); return MAPISTORE_SUCCESS; } From a29aa9091389affb35236df9e234afe2f216f8dd Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 8 Mar 2012 15:24:23 +0000 Subject: [PATCH 13/29] Monotone-Parent: bb133434e9e283747d7758877c0c8dcd50346b55 Monotone-Revision: 4ea252c6500eb31c2c96a411c6338ecc5e71eef0 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-08T15:24:23 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 4 ++++ OpenChange/MAPIStoreGCSFolder.m | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index c4dab2402..185609f88 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2012-03-08 Wolfgang Sourdeau + * OpenChange/MAPIStoreGCSFolder.m (-synchroniseCache): ensure that + any record that are marked as updated are removed from the record + cache of the corresponding SOGoGCSFolder instance. + * OpenChange/MAPIStoreFolder.m (-getPidTagSubFolders:inMemCtx:): invoke [self folderKeys] rather than the corresponding ivar. diff --git a/OpenChange/MAPIStoreGCSFolder.m b/OpenChange/MAPIStoreGCSFolder.m index 398a22ffc..3c41b7f1b 100644 --- a/OpenChange/MAPIStoreGCSFolder.m +++ b/OpenChange/MAPIStoreGCSFolder.m @@ -288,7 +288,8 @@ BOOL rc = YES, foundChange = NO; uint64_t newChangeNum; NSData *changeKey; - NSNumber *ti, *changeNumber, *lastModificationDate, *cName, *cVersion, *cLastModified; + NSString *cName; + NSNumber *ti, *changeNumber, *lastModificationDate, *cVersion, *cLastModified; EOFetchSpecification *fs; EOQualifier *searchQualifier, *fetchQualifier; NSUInteger count, max; @@ -367,6 +368,8 @@ cVersion = [result objectForKey: @"c_version"]; cLastModified = [result objectForKey: @"c_lastmodified"]; + [sogoObject removeChildRecordWithName: cName]; + messageEntry = [messages objectForKey: cName]; if (!messageEntry) { From 13eab744771577a954e2d9b956c63bfb3f892e19 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 9 Mar 2012 02:07:31 +0000 Subject: [PATCH 14/29] Monotone-Parent: 4ea252c6500eb31c2c96a411c6338ecc5e71eef0 Monotone-Revision: abafefa4d1fdf7e9a4cc6b7d33dfe22f822d54d3 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-09T02:07:31 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 6 ++++++ OpenChange/MAPIStoreContext.m | 14 +++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 185609f88..22aa07ae0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2012-03-08 Wolfgang Sourdeau + * OpenChange/MAPIStoreContext.m (-getRootFolder:inMemCtx:): do not + store the looked up folders when they are not descendants of + SOGoObject. Return MAPISTORE_ERR_NOT_FOUND when the looked up + folder is owner by the current user and MAPISTORE_ERR_DENIED + otherwise. + * OpenChange/MAPIStoreGCSFolder.m (-synchroniseCache): ensure that any record that are marked as updated are removed from the record cache of the corresponding SOGoGCSFolder instance. diff --git a/OpenChange/MAPIStoreContext.m b/OpenChange/MAPIStoreContext.m index 81da9d4c6..17907e93b 100644 --- a/OpenChange/MAPIStoreContext.m +++ b/OpenChange/MAPIStoreContext.m @@ -67,7 +67,7 @@ /* sogo://username:password@{contacts,calendar,tasks,journal,notes,mail}/dossier/id */ -static Class NSExceptionK, MAPIStoreFallbackContextK; +static Class NSExceptionK, MAPIStoreFallbackContextK, SOGoObjectK; static NSMutableDictionary *contextClassMapping; @@ -79,6 +79,7 @@ static NSMutableDictionary *contextClassMapping; NSString *moduleName; NSExceptionK = [NSException class]; + SOGoObjectK = [SOGoObject class]; contextClassMapping = [NSMutableDictionary new]; classes = GSObjCAllSubclassesOfClass (self); @@ -441,10 +442,11 @@ static inline NSURL *CompleteURLFromMapistoreURI (const char *uri) = [currentFolder lookupName: [pathComponents objectAtIndex: count] inContext: woContext acquire: NO]; - if ([currentFolder isKindOfClass: NSExceptionK]) - currentFolder = nil; - else + if ([currentFolder isKindOfClass: SOGoObjectK]) /* class common to all + SOGo folder types */ [containersBag addObject: currentFolder]; + else + currentFolder = nil; } if (currentFolder) @@ -457,8 +459,10 @@ static inline NSURL *CompleteURLFromMapistoreURI (const char *uri) *folderPtr = baseFolder; rc = MAPISTORE_SUCCESS; } - else + else if ([[userContext sogoUser] isEqual: activeUser]) rc = MAPISTORE_ERR_NOT_FOUND; + else + rc = MAPISTORE_ERR_DENIED; return rc; } From 16ad5263bf6fd3f279fd8139b35ad7c6c5342876 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 9 Mar 2012 02:08:57 +0000 Subject: [PATCH 15/29] Monotone-Parent: abafefa4d1fdf7e9a4cc6b7d33dfe22f822d54d3 Monotone-Revision: 5a4402259608afb9ee27063b6a308479a1a073fb Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-09T02:08:57 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 3 ++ OpenChange/MAPIStoreFSFolder.m | 3 +- OpenChange/MAPIStoreFolder.h | 6 +-- OpenChange/MAPIStoreFolder.m | 75 ++++++++++++++++++---------------- 4 files changed, 48 insertions(+), 39 deletions(-) diff --git a/ChangeLog b/ChangeLog index 22aa07ae0..3657c6585 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2012-03-08 Wolfgang Sourdeau + * OpenChange/MAPIStoreFolder.m: commented out key cache ivars + (temporarily). + * OpenChange/MAPIStoreContext.m (-getRootFolder:inMemCtx:): do not store the looked up folders when they are not descendants of SOGoObject. Return MAPISTORE_ERR_NOT_FOUND when the looked up diff --git a/OpenChange/MAPIStoreFSFolder.m b/OpenChange/MAPIStoreFSFolder.m index 145781383..7ac725979 100644 --- a/OpenChange/MAPIStoreFSFolder.m +++ b/OpenChange/MAPIStoreFSFolder.m @@ -163,8 +163,9 @@ static NSString *MAPIStoreRightFolderContact = @"RightsFolderContact"; NSUInteger count, max; NSDate *date, *fileDate; MAPIStoreFSMessage *msg; + NSArray *messageKeys; - [self messageKeys]; + messageKeys = [self messageKeys]; date = [NSCalendarDate date]; [self logWithFormat: @"current date: %@", date]; diff --git a/OpenChange/MAPIStoreFolder.h b/OpenChange/MAPIStoreFolder.h index b327e8d6d..41b3bdd61 100644 --- a/OpenChange/MAPIStoreFolder.h +++ b/OpenChange/MAPIStoreFolder.h @@ -46,9 +46,9 @@ @interface MAPIStoreFolder : MAPIStoreObject { MAPIStoreContext *context; - NSArray *messageKeys; - NSArray *faiMessageKeys; - NSArray *folderKeys; + // NSArray *messageKeys; + // NSArray *faiMessageKeys; + // NSArray *folderKeys; SOGoMAPIFSFolder *faiFolder; SOGoMAPIFSFolder *propsFolder; diff --git a/OpenChange/MAPIStoreFolder.m b/OpenChange/MAPIStoreFolder.m index a0c75d3ae..664094048 100644 --- a/OpenChange/MAPIStoreFolder.m +++ b/OpenChange/MAPIStoreFolder.m @@ -75,9 +75,9 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe { if ((self = [super init])) { - messageKeys = nil; - faiMessageKeys = nil; - folderKeys = nil; + // messageKeys = nil; + // faiMessageKeys = nil; + // folderKeys = nil; faiFolder = nil; context = nil; @@ -141,11 +141,11 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe - (void) dealloc { + // [messageKeys release]; + // [faiMessageKeys release]; + // [folderKeys release]; [propsMessage release]; [propsFolder release]; - [messageKeys release]; - [faiMessageKeys release]; - [folderKeys release]; [faiFolder release]; [context release]; @@ -261,8 +261,7 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe if (messageKey) { - [self faiMessageKeys]; - if ([faiMessageKeys containsObject: messageKey]) + if ([[self faiMessageKeys] containsObject: messageKey]) { msgObject = [faiFolder lookupName: messageKey inContext: nil @@ -1003,14 +1002,16 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe - (NSArray *) messageKeys { - if (!messageKeys) - { - messageKeys = [self messageKeysMatchingQualifier: nil - andSortOrderings: nil]; - [messageKeys retain]; - } + return [self messageKeysMatchingQualifier: nil + andSortOrderings: nil]; + // if (!messageKeys) + // { + // messageKeys = [self messageKeysMatchingQualifier: nil + // andSortOrderings: nil]; + // [messageKeys retain]; + // } - return messageKeys; + // return messageKeys; } - (MAPIStoreFAIMessageTable *) faiMessageTable @@ -1028,14 +1029,16 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe - (NSArray *) faiMessageKeys { - if (!faiMessageKeys) - { - faiMessageKeys = [self faiMessageKeysMatchingQualifier: nil - andSortOrderings: nil]; - [faiMessageKeys retain]; - } + return [self faiMessageKeysMatchingQualifier: nil + andSortOrderings: nil]; + // if (!faiMessageKeys) + // { + // faiMessageKeys = [self faiMessageKeysMatchingQualifier: nil + // andSortOrderings: nil]; + // [faiMessageKeys retain]; + // } - return faiMessageKeys; + // return faiMessageKeys; } - (MAPIStoreFolderTable *) folderTable @@ -1045,14 +1048,16 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe - (NSArray *) folderKeys { - if (!folderKeys) - { - folderKeys = [self folderKeysMatchingQualifier: nil - andSortOrderings: nil]; - [folderKeys retain]; - } + return [self folderKeysMatchingQualifier: nil + andSortOrderings: nil]; + // if (!folderKeys) + // { + // folderKeys = [self folderKeysMatchingQualifier: nil + // andSortOrderings: nil]; + // [folderKeys retain]; + // } - return folderKeys; + // return folderKeys; } - (NSArray *) folderKeysMatchingQualifier: (EOQualifier *) qualifier @@ -1098,12 +1103,12 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe [self _cleanupTableCaches: MAPISTORE_MESSAGE_TABLE]; [self _cleanupTableCaches: MAPISTORE_FAI_TABLE]; [self _cleanupTableCaches: MAPISTORE_FOLDER_TABLE]; - [faiMessageKeys release]; - faiMessageKeys = nil; - [messageKeys release]; - messageKeys = nil; - [folderKeys release]; - folderKeys = nil; + // [faiMessageKeys release]; + // faiMessageKeys = nil; + // [messageKeys release]; + // messageKeys = nil; + // [folderKeys release]; + // folderKeys = nil; } - (int) getPidTagParentFolderId: (void **) data From f9e6fc7f22ff52521f46cb1c0262380a767d46a1 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 9 Mar 2012 22:12:07 +0000 Subject: [PATCH 16/29] Monotone-Parent: 40431eed7cc9565c65c5967de069938c678f2cbc Monotone-Revision: cfce0b87149956dcb7797ebaeafd5c803f73f50b Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-09T22:12:07 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 5 +++++ OpenChange/MAPIStoreFolder.m | 25 ++++++++++++++++++------- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index dc3385cdc..f3434f485 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2012-03-09 Wolfgang Sourdeau + * OpenChange/MAPIStoreFolder.m + (-getTable:andRowCount:tableType:andHandleId:): if the current + user is not the owner of the folder, the permissions table cannot + be open and MAPISTORE_ERR_DENIED is now returned. + * SoObjects/Contacts/NGVCard+SOGo.m (_setupEmailFieldsInLDIFRecord:): the value of card elements were not properly extracted when no email field were of type "home" or diff --git a/OpenChange/MAPIStoreFolder.m b/OpenChange/MAPIStoreFolder.m index 664094048..4ce08728d 100644 --- a/OpenChange/MAPIStoreFolder.m +++ b/OpenChange/MAPIStoreFolder.m @@ -949,6 +949,7 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe { int rc = MAPISTORE_SUCCESS; MAPIStoreTable *table; + SOGoUser *ownerUser; if (tableType == MAPISTORE_MESSAGE_TABLE) table = [self messageTable]; @@ -957,21 +958,31 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe else if (tableType == MAPISTORE_FOLDER_TABLE) table = [self folderTable]; else if (tableType == MAPISTORE_PERMISSIONS_TABLE) - table = [self permissionsTable]; + { + ownerUser = [[self userContext] sogoUser]; + if ([[context activeUser] isEqual: ownerUser]) + table = [self permissionsTable]; + else + rc = MAPISTORE_ERR_DENIED; + } else { table = nil; [NSException raise: @"MAPIStoreIOException" format: @"unsupported table type: %d", tableType]; } - if (table) + + if (rc == MAPISTORE_SUCCESS) { - [table setHandleId: handleId]; - *tablePtr = table; - *countPtr = [[table childKeys] count]; + if (table) + { + [table setHandleId: handleId]; + *tablePtr = table; + *countPtr = [[table childKeys] count]; + } + else + rc = MAPISTORE_ERR_NOT_FOUND; } - else - rc = MAPISTORE_ERR_NOT_FOUND; return rc; } From dda2e525517cde8e3caf7baf6d4cfec56ad45f0e Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 9 Mar 2012 22:18:45 +0000 Subject: [PATCH 17/29] Monotone-Parent: cfce0b87149956dcb7797ebaeafd5c803f73f50b Monotone-Revision: 5e1d3b05e4ac96fabc257b4fb753b7c7439c8337 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-09T22:18:45 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 4 ++++ SoObjects/Mailer/SOGoMailFolder.m | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/ChangeLog b/ChangeLog index f3434f485..876e5e7e6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2012-03-09 Wolfgang Sourdeau + * SoObjects/Mailer/SOGoMailFolder.m (-renameTo:): reset the + imap4URL to nil and change the nameInContainer after a successful + operation. + * OpenChange/MAPIStoreFolder.m (-getTable:andRowCount:tableType:andHandleId:): if the current user is not the owner of the folder, the permissions table cannot diff --git a/SoObjects/Mailer/SOGoMailFolder.m b/SoObjects/Mailer/SOGoMailFolder.m index 1ba3109da..7c975e34f 100644 --- a/SoObjects/Mailer/SOGoMailFolder.m +++ b/SoObjects/Mailer/SOGoMailFolder.m @@ -298,6 +298,10 @@ static NSString *defaultUserID = @"anyone"; toURL: destURL]; if (!error) { + ASSIGN (imap4URL, nil); + ASSIGN (nameInContainer, + ([NSString stringWithFormat: @"folder%@", [newName asCSSIdentifier]])); + // We unsubscribe to the old one, and subscribe back to the new one if ([[[context activeUser] userDefaults] mailShowSubscribedFoldersOnly]) From e01985e910eef4753e3bc8de82381a01d68c37f7 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Sat, 10 Mar 2012 04:44:31 +0000 Subject: [PATCH 18/29] Monotone-Parent: 5e1d3b05e4ac96fabc257b4fb753b7c7439c8337 Monotone-Revision: facc7e6b6f1dbd15663b7472ae5447106a067e21 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-10T04:44:31 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 4 ++ OpenChange/MAPIStoreMailVolatileMessage.m | 63 ++++++++++++----------- 2 files changed, 38 insertions(+), 29 deletions(-) diff --git a/ChangeLog b/ChangeLog index 876e5e7e6..f24dbf222 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2012-03-09 Wolfgang Sourdeau + * OpenChange/MAPIStoreMailVolatileMessage.m (-submitWithFlags:): + skip any message that is not of class "IPM.Note", in order to + avoid sending invitations or responses. + * SoObjects/Mailer/SOGoMailFolder.m (-renameTo:): reset the imap4URL to nil and change the nameInContainer after a successful operation. diff --git a/OpenChange/MAPIStoreMailVolatileMessage.m b/OpenChange/MAPIStoreMailVolatileMessage.m index a8e06b92c..2d5a937e5 100644 --- a/OpenChange/MAPIStoreMailVolatileMessage.m +++ b/OpenChange/MAPIStoreMailVolatileMessage.m @@ -774,50 +774,55 @@ MakeMessageBody (NSDictionary *mailProperties, NSDictionary *attachmentParts, NSData *messageData; NSMutableArray *recipientEmails; NSArray *list; - NSString *recId; + NSString *recId, *from, *msgClass; NSUInteger count; - struct mapistore_connection_info *connInfo; SOGoUser *activeUser; - NSString *from; // SOGoMailFolder *sentFolder; SOGoDomainDefaults *dd; NSException *error; MAPIStoreMapping *mapping; - /* send mail */ - - messageData = [self _generateMailDataWithBcc: NO]; - mailProperties = [sogoObject properties]; - recipientEmails = [NSMutableArray arrayWithCapacity: 32]; - recipients = [mailProperties objectForKey: @"recipients"]; - for (count = 0; count < 3; count++) + msgClass = [mailProperties objectForKey: MAPIPropertyKey (PidTagMessageClass)]; + if ([msgClass isEqualToString: @"IPM.Note"]) /* we skip invitation replies */ { - recId = recTypes[count]; - list = [recipients objectForKey: recId]; - [recipientEmails - addObjectsFromArray: [list objectsForKey: @"email" - notFoundMarker: nil]]; - } + /* send mail */ - connInfo = [[self context] connectionInfo]; - activeUser = [SOGoUser userWithLogin: [NSString stringWithUTF8String: connInfo->username]]; + messageData = [self _generateMailDataWithBcc: NO]; + + mailProperties = [sogoObject properties]; + recipientEmails = [NSMutableArray arrayWithCapacity: 32]; + recipients = [mailProperties objectForKey: @"recipients"]; + for (count = 0; count < 3; count++) + { + recId = recTypes[count]; + list = [recipients objectForKey: recId]; + [recipientEmails + addObjectsFromArray: [list objectsForKey: @"email" + notFoundMarker: nil]]; + } - [self logWithFormat: @"recipients: %@", recipientEmails]; - dd = [activeUser domainDefaults]; - from = [[activeUser allEmails] objectAtIndex: 0]; - error = [[SOGoMailer mailerWithDomainDefaults: dd] + activeUser = [[self context] activeUser]; + + [self logWithFormat: @"recipients: %@", recipientEmails]; + dd = [activeUser domainDefaults]; + from = [[activeUser allEmails] objectAtIndex: 0]; + error = [[SOGoMailer mailerWithDomainDefaults: dd] sendMailData: messageData toRecipients: recipientEmails sender: from]; - if (error) - [self logWithFormat: @"an error occurred: '%@'", error]; + if (error) + [self logWithFormat: @"an error occurred: '%@'", error]; - mapping = [self mapping]; - [mapping unregisterURLWithID: [self objectId]]; - [self setIsNew: NO]; - [properties removeAllObjects]; - [[self container] cleanupCaches]; + mapping = [self mapping]; + [mapping unregisterURLWithID: [self objectId]]; + [self setIsNew: NO]; + [properties removeAllObjects]; + [[self container] cleanupCaches]; + } + else + [self logWithFormat: @"skipping submit of message with class '%@'", + msgClass]; return MAPISTORE_SUCCESS; } From c529220318e8fb4f2be8b12dfc322a74a2f11288 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Mon, 12 Mar 2012 00:06:06 +0000 Subject: [PATCH 19/29] Monotone-Parent: d7f21bcf753320694e98ee257a3fd00d2ea4f4ad Monotone-Revision: e5b39af7159de417e83ca1ca334d629ee570f716 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-12T00:06:06 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 17 + OpenChange/MAPIStoreCalendarMessage.m | 643 ++++++++++++++------------ 2 files changed, 373 insertions(+), 287 deletions(-) diff --git a/ChangeLog b/ChangeLog index f24dbf222..c2092be4a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2012-03-11 Wolfgang Sourdeau + + * OpenChange/MAPIStoreCalendarMessage.m + (-getPidLidAppointmentMessageClass:inMemCtx:): returns "IPM.Appointment". + (-getPidLidSideEffects:inMemCtx:): returns the value specified in + OXOCAL, section 2.2.2.2. + (_fixupAppointmentObjectWithUID:): renamed method and made more + generic, in order to handle the case where the response record has + already been deleted. + (-save): handle organizer and attendees more in compliance with + the spec, in order to avoid ending up with an empty event when an + invitation is being replied to. Of course, the documentation + happened to be inexact with regardes to the value of + "PidTagRecipientTrackStatus", which can be 5 even though the user + replied with another value... Also, lowered the priority of + SOGo-specific hacks for setting the organizer. + 2012-03-09 Wolfgang Sourdeau * OpenChange/MAPIStoreMailVolatileMessage.m (-submitWithFlags:): diff --git a/OpenChange/MAPIStoreCalendarMessage.m b/OpenChange/MAPIStoreCalendarMessage.m index 4578c01d8..bd299eb35 100644 --- a/OpenChange/MAPIStoreCalendarMessage.m +++ b/OpenChange/MAPIStoreCalendarMessage.m @@ -146,6 +146,14 @@ return MAPISTORE_SUCCESS; } +- (int) getPidLidAppointmentMessageClass: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + *data = talloc_strdup (memCtx, "IPM.Appointment"); + + return MAPISTORE_SUCCESS; +} + - (int) getPidTagOwnerAppointmentId: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { @@ -226,6 +234,16 @@ return [[self appointmentWrapper] getPidTagSubject: data inMemCtx: memCtx]; } +- (int) getPidLidSideEffects: (void **) data // TODO + inMemCtx: (TALLOC_CTX *) memCtx +{ + *data = MAPILongValue (memCtx, + seOpenToDelete | seOpenToCopy | seOpenToMove + | seCoerceToInbox | seOpenForCtxMenu); + + return MAPISTORE_SUCCESS; +} + - (int) getPidLidLocation: (void **) data // LOCATION inMemCtx: (TALLOC_CTX *) memCtx { @@ -542,43 +560,50 @@ return uid; } -- (void) _fixupEventWithExistingUID +- (void) _fixupAppointmentObjectWithUID: (NSString *) uid { - NSString *uid, *existingCName, *existingURL; + NSString *cname, *url; MAPIStoreMapping *mapping; uint64_t objectId; - SOGoAppointmentObject *existingObject; + SOGoAppointmentFolder *folder; + SOGoAppointmentObject *newObject; WOContext *woContext; - uid = [self _uidFromGlobalObjectId]; - existingCName = [[container sogoObject] resourceNameForEventUID: uid]; - if (existingCName) + cname = [[container sogoObject] resourceNameForEventUID: uid]; + if (cname) + isNew = NO; + else + cname = [NSString stringWithFormat: @"%@.ics", uid]; + + mapping = [self mapping]; + + url = [NSString stringWithFormat: @"%@%@", [container url], cname]; + folder = [container sogoObject]; + /* reinstantiate the old sogo object and attach it to self */ + woContext = [[self userContext] woContext]; + if (isNew) + newObject = [SOGoAppointmentObject objectWithName: cname + inContainer: folder]; + else { - mapping = [self mapping]; - /* dissociate the object url from the old object's id */ - existingURL = [NSString stringWithFormat: @"%@%@", - [container url], existingCName]; - objectId = [mapping idFromURL: existingURL]; + objectId = [mapping idFromURL: url]; [mapping unregisterURLWithID: objectId]; - - /* dissociate the object url associated with this object, as we want to - discard it */ - objectId = [self objectId]; - [mapping unregisterURLWithID: objectId]; - - /* associate the object url with this object id */ - [mapping registerURL: existingURL withID: objectId]; - - /* reinstantiate the old sogo object and attach it to self */ - woContext = [[self userContext] woContext]; - existingObject = [[container sogoObject] lookupName: existingCName - inContext: woContext - acquire: NO]; - [existingObject setContext: woContext]; - ASSIGN (sogoObject, existingObject); - isNew = NO; + newObject = [folder lookupName: cname + inContext: woContext + acquire: NO]; } + + /* dissociate the object url associated with this object, as we want to + discard it */ + objectId = [self objectId]; + [mapping unregisterURLWithID: objectId]; + + /* associate the new object url with this object id */ + [mapping registerURL: url withID: objectId]; + + [newObject setContext: woContext]; + ASSIGN (sogoObject, newObject); } - (void) _setupAlarmDataInEvent: (iCalEvent *) newEvent @@ -657,9 +682,9 @@ iCalDateTime *start, *end; iCalTimeZone *tz; NSCalendarDate *now; - NSString *content, *tzName, *priority; + NSString *uid, *content, *tzName, *priority, *newParticipationStatus = nil; iCalEvent *newEvent; - iCalPerson *userPerson; + // iCalPerson *userPerson; NSUInteger responseStatus = 0; NSInteger tzOffset; SOGoUser *activeUser, *ownerUser; @@ -667,12 +692,18 @@ if (isNew) { - /* Hack required because of what's explained in oxocal 3.1.4.7.1: - basically, Outlook creates a copy of the event and then removes the - old instance. We perform a trickery to avoid performing those - operations in the backend, in a way that enables us to recover the - initial instance and act solely on it. */ - [self _fixupEventWithExistingUID]; + uid = [self _uidFromGlobalObjectId]; + if (uid) + { + /* Hack required because of what's explained in oxocal 3.1.4.7.1: + basically, Outlook creates a copy of the event and then removes the + old instance. We perform a trickery to avoid performing those + operations in the backend, in a way that enables us to recover the + initial instance and act solely on it. */ + [self _fixupAppointmentObjectWithUID: uid]; + } + else + uid = [SOGoObject globallyUniqueObjectId]; } [self logWithFormat: @"-save, event props:"]; @@ -686,286 +717,225 @@ newEvent = [sogoObject component: YES secure: NO]; vCalendar = [newEvent parent]; [vCalendar setProdID: @"-//Inverse inc.//OpenChange+SOGo//EN"]; - content = [vCalendar versitString]; [newEvent setCreated: now]; + [newEvent setUid: uid]; + content = [vCalendar versitString]; } vCalendar = [iCalCalendar parseSingleFromSource: content]; newEvent = [[vCalendar events] objectAtIndex: 0]; - - ownerUser = [[self userContext] sogoUser]; - userPerson = [newEvent userAsAttendee: ownerUser]; [newEvent setTimeStampAsDate: now]; + [newEvent setLastModified: now]; - if (userPerson) + // summary + value = [properties + objectForKey: MAPIPropertyKey (PR_NORMALIZED_SUBJECT_UNICODE)]; + if (value) + [newEvent setSummary: value]; + + // Location + value = [properties objectForKey: MAPIPropertyKey (PidLidLocation)]; + if (value) + [newEvent setLocation: value]; + + isAllDay = [newEvent isAllDay]; + value = [properties + objectForKey: MAPIPropertyKey (PidLidAppointmentSubType)]; + if (value) + isAllDay = [value boolValue]; + if (!isAllDay) { - // iCalPersonPartStat newPartStat; - NSString *newPartStat; - - value - = [properties objectForKey: MAPIPropertyKey (PidLidResponseStatus)]; - if (value) - responseStatus = [value unsignedLongValue]; - - /* FIXME: we should provide a data converter between OL partstats and - SOGo */ - switch (responseStatus) + tzName = [[self ownerTimeZone] name]; + tz = [iCalTimeZone timeZoneForName: tzName]; + [vCalendar addTimeZone: tz]; + } + + // start + value = [properties objectForKey: MAPIPropertyKey (PR_START_DATE)]; + if (!value) + value = [properties + objectForKey: MAPIPropertyKey (PidLidAppointmentStartWhole)]; + if (value) + { + start = (iCalDateTime *) [newEvent uniqueChildWithTag: @"dtstart"]; + if (isAllDay) { - case 0x02: /* respTentative */ - // newPartStat = iCalPersonPartStatTentative; - newPartStat = @"TENTATIVE"; - break; - case 0x03: /* respAccepted */ - // newPartStat = iCalPersonPartStatAccepted; - newPartStat = @"ACCEPTED"; - break; - case 0x04: /* respDeclined */ - // newPartStat = iCalPersonPartStatDeclined; - newPartStat = @"DECLINED"; - break; - default: - newPartStat = nil; + tzOffset = [[value timeZone] secondsFromGMTForDate: value]; + value = [value dateByAddingYears: 0 months: 0 days: 0 + hours: 0 minutes: 0 + seconds: -tzOffset]; + [start setTimeZone: nil]; + [start setDate: value]; } - - if (newPartStat // != iCalPersonPartStatUndefined - ) + else { - // iCalPerson *participant; + [start setTimeZone: tz]; + [start setDateTime: value]; + } + } - // participant = [newEvent userAsAttendee: ownerUser]; - // [participant setParticipationStatus: newPartStat]; - // [sogoObject saveComponent: newEvent]; + /* end */ + value = [properties objectForKey: MAPIPropertyKey (PR_END_DATE)]; + if (!value) + value = [properties objectForKey: MAPIPropertyKey (PidLidAppointmentEndWhole)]; + if (value) + { + end = (iCalDateTime *) [newEvent uniqueChildWithTag: @"dtend"]; + if (isAllDay) + { + tzOffset = [[value timeZone] secondsFromGMTForDate: value]; + value = [value dateByAddingYears: 0 months: 0 days: 0 + hours: 0 minutes: 0 + seconds: -tzOffset]; + [end setTimeZone: nil]; + [end setDate: value]; + } + else + { + [end setTimeZone: tz]; + [end setDateTime: value]; + } + } - [sogoObject changeParticipationStatus: newPartStat - withDelegate: nil]; - // [[self context] tearDownRequest]; + /* priority */ + value = [properties objectForKey: MAPIPropertyKey(PR_IMPORTANCE)]; + if (value) + { + switch ([value intValue]) + { + case 0: // IMPORTANCE_LOW + priority = @"9"; + break; + case 2: // IMPORTANCE_HIGH + priority = @"1"; + break; + default: // IMPORTANCE_NORMAL + priority = @"5"; } } else + priority = @"0"; // None + [newEvent setPriority: priority]; + + /* show time as free/busy/tentative/out of office. Possible values are: + 0x00000000 - olFree + 0x00000001 - olTentative + 0x00000002 - olBusy + 0x00000003 - olOutOfOffice */ + value = [properties objectForKey: MAPIPropertyKey(PidLidBusyStatus)]; + if (value) { - [newEvent setLastModified: now]; - - // summary - value = [properties - objectForKey: MAPIPropertyKey (PR_NORMALIZED_SUBJECT_UNICODE)]; - if (value) - [newEvent setSummary: value]; - - // Location - value = [properties objectForKey: MAPIPropertyKey (PidLidLocation)]; - if (value) - [newEvent setLocation: value]; - - isAllDay = [newEvent isAllDay]; - value = [properties - objectForKey: MAPIPropertyKey (PidLidAppointmentSubType)]; - if (value) - isAllDay = [value boolValue]; - if (!isAllDay) + switch ([value intValue]) { - tzName = [[self ownerTimeZone] name]; - tz = [iCalTimeZone timeZoneForName: tzName]; - [vCalendar addTimeZone: tz]; + case 0: + [newEvent setTransparency: @"TRANSPARENT"]; + break; + case 1: + case 2: + case 3: + default: + [newEvent setTransparency: @"OPAQUE"]; } + } - // start - value = [properties objectForKey: MAPIPropertyKey (PR_START_DATE)]; - if (!value) - value = [properties - objectForKey: MAPIPropertyKey (PidLidAppointmentStartWhole)]; + /* Comment */ + value = [properties objectForKey: MAPIPropertyKey (PR_BODY_UNICODE)]; + if (!value) + { + value = [properties objectForKey: MAPIPropertyKey (PR_HTML)]; if (value) { - start = (iCalDateTime *) [newEvent uniqueChildWithTag: @"dtstart"]; - if (isAllDay) - { - tzOffset = [[value timeZone] secondsFromGMTForDate: value]; - value = [value dateByAddingYears: 0 months: 0 days: 0 - hours: 0 minutes: 0 - seconds: -tzOffset]; - [start setTimeZone: nil]; - [start setDate: value]; - } - else - { - [start setTimeZone: tz]; - [start setDateTime: value]; - } + value = [[NSString alloc] initWithData: value + encoding: NSUTF8StringEncoding]; + [value autorelease]; + value = [value htmlToText]; } - - /* end */ - value = [properties objectForKey: MAPIPropertyKey (PR_END_DATE)]; - if (!value) - value = [properties objectForKey: MAPIPropertyKey (PidLidAppointmentEndWhole)]; - if (value) - { - end = (iCalDateTime *) [newEvent uniqueChildWithTag: @"dtend"]; - if (isAllDay) - { - tzOffset = [[value timeZone] secondsFromGMTForDate: value]; - value = [value dateByAddingYears: 0 months: 0 days: 0 - hours: 0 minutes: 0 - seconds: -tzOffset]; - [end setTimeZone: nil]; - [end setDate: value]; - } - else - { - [end setTimeZone: tz]; - [end setDateTime: value]; - } - } - - /* priority */ - value = [properties objectForKey: MAPIPropertyKey(PR_IMPORTANCE)]; - if (value) - { - switch ([value intValue]) - { - case 0: // IMPORTANCE_LOW - priority = @"9"; - break; - case 2: // IMPORTANCE_HIGH - priority = @"1"; - break; - default: // IMPORTANCE_NORMAL - priority = @"5"; - } - } - else - priority = @"0"; // None - [newEvent setPriority: priority]; - - /* show time as free/busy/tentative/out of office. Possible values are: - 0x00000000 - olFree - 0x00000001 - olTentative - 0x00000002 - olBusy - 0x00000003 - olOutOfOffice */ - value = [properties objectForKey: MAPIPropertyKey(PidLidBusyStatus)]; - if (value) - { - switch ([value intValue]) - { - case 0: - [newEvent setTransparency: @"TRANSPARENT"]; - break; - case 1: - case 2: - case 3: - default: - [newEvent setTransparency: @"OPAQUE"]; - } - } - - /* Comment */ - value = [properties objectForKey: MAPIPropertyKey (PR_BODY_UNICODE)]; - if (!value) - { - value = [properties objectForKey: MAPIPropertyKey (PR_HTML)]; - if (value) - { - value = [[NSString alloc] initWithData: value - encoding: NSUTF8StringEncoding]; - [value autorelease]; - value = [value htmlToText]; - } - } - if (value && [value length] == 0) - value = nil; - [newEvent setComment: value]; + } + if (value && [value length] == 0) + value = nil; + [newEvent setComment: value]; - /* recurrence */ - value = [properties + /* recurrence */ + value = [properties objectForKey: MAPIPropertyKey (PidLidAppointmentRecur)]; + if (value) + [self _setupRecurrenceInCalendar: vCalendar + withEvent: newEvent + fromData: value]; + + [newEvent setOrganizer: nil]; + [newEvent removeAllAttendees]; + + /* alarm */ + [self _setupAlarmDataInEvent: newEvent]; + + if ([[properties objectForKey: MAPIPropertyKey (PidLidAppointmentStateFlags)] intValue] + != 0) + { + // Organizer + value = [properties objectForKey: @"recipients"]; if (value) - [self _setupRecurrenceInCalendar: vCalendar - withEvent: newEvent - fromData: value]; - - [newEvent setOrganizer: nil]; - [newEvent removeAllAttendees]; - - /* alarm */ - [self _setupAlarmDataInEvent: newEvent]; - - if ([[properties objectForKey: MAPIPropertyKey (PidLidAppointmentStateFlags)] intValue] - != 0) { - // Organizer - value = [properties objectForKey: @"recipients"]; - if (value) - { - NSArray *recipients; - NSDictionary *dict; - NSString *orgEmail, *sentBy, *attEmail; - iCalPerson *person; - iCalPersonPartStat newPartStat; - NSNumber *flags, *trackStatus; - int i, effective; + NSArray *recipients; + NSDictionary *dict; + NSString *orgEmail, *sentBy, *attEmail; + iCalPerson *person; + iCalPersonPartStat newPartStat; + NSNumber *flags, *trackStatus; + int i, effective; + BOOL organizerIsSet = NO; - /* We must set the organizer preliminarily here because, unlike what - the doc states, Outlook does not always pass the real organizer - in the recipients list. */ - dict = [ownerUser primaryIdentity]; + recipients = [value objectForKey: @"to"]; + effective = 0; + for (i = 0; i < [recipients count]; i++) + { + dict = [recipients objectAtIndex: i]; person = [iCalPerson new]; [person setCn: [dict objectForKey: @"fullName"]]; - orgEmail = [dict objectForKey: @"email"]; - [person setEmail: orgEmail]; - - activeUser = [[self context] activeUser]; - if (![activeUser isEqual: ownerUser]) + attEmail = [dict objectForKey: @"email"]; + [person setEmail: attEmail]; + + flags = [dict objectForKey: MAPIPropertyKey (PR_RECIPIENT_FLAGS)]; + if (!flags) { - dict = [activeUser primaryIdentity]; - sentBy = [NSString stringWithFormat: @"mailto:%@", - [dict objectForKey: @"email"]]; - [person setSentBy: sentBy]; + [self logWithFormat: + @"no recipient flags specified: skipping recipient"]; + continue; } - [newEvent setOrganizer: person]; - [person release]; - recipients = [value objectForKey: @"to"]; - effective = 0; - for (i = 0; i < [recipients count]; i++) + if (([flags unsignedIntValue] & 0x0002)) /* recipOrganizer */ { - dict = [recipients objectAtIndex: i]; + [newEvent setOrganizer: person]; + organizerIsSet = YES; + [self logWithFormat: @"organizer set via recipient flags"]; + } + else + { + BOOL isOrganizer = NO; - flags = [dict objectForKey: MAPIPropertyKey (PR_RECIPIENT_FLAGS)]; - if (!flags) + // /* Work-around: it happens that Outlook still passes the + // organizer as a recipient, maybe because of a feature + // documented in a pre-mesozoic PDF still buried in a + // cavern... In that case we remove it, and we keep the + // number of effective recipients in "effective". If the + // total is 0, we remove the "ORGANIZER" too. */ + // if ([attEmail isEqualToString: orgEmail]) + // { + // [self logWithFormat: + // @"avoiding setting organizer as recipient"]; + // continue; + // } + + trackStatus = [dict objectForKey: MAPIPropertyKey (PidTagRecipientTrackStatus)]; + if (trackStatus) { - [self logWithFormat: - @"no recipient flags specified: skipping recipient"]; - continue; - } - - person = [iCalPerson new]; - [person setCn: [dict objectForKey: @"fullName"]]; - attEmail = [dict objectForKey: @"email"]; - [person setEmail: attEmail]; - - if (([flags unsignedIntValue] & 0x0002)) /* recipOrganizer */ - [newEvent setOrganizer: person]; - else - { - /* Work-around: it happens that Outlook still passes the - organizer as a recipient, maybe because of a feature - documented in a pre-mesozoic PDF still buried in a - cavern... In that case we remove it, and we keep the - number of effective recipients in "effective". If the - total is 0, we remove the "ORGANIZER" too. */ - if ([attEmail isEqualToString: orgEmail]) - { - [self logWithFormat: - @"avoiding setting organizer as recipient"]; - continue; - } - - trackStatus - = [dict - objectForKey: MAPIPropertyKey (PR_RECIPIENT_TRACKSTATUS)]; - /* FIXME: we should provide a data converter between OL partstats and SOGo */ switch ([trackStatus unsignedIntValue]) { + case 0x01: /* respOrganized */ + isOrganizer = YES; + break; case 0x02: /* respTentative */ newPartStat = iCalPersonPartStatTentative; break; @@ -979,23 +949,122 @@ newPartStat = iCalPersonPartStatNeedsAction; } - [person setParticipationStatus: newPartStat]; - [person setRsvp: @"TRUE"]; - [person setRole: @"REQ-PARTICIPANT"]; - [newEvent addToAttendees: person]; - effective++; + if (isOrganizer) + { + [newEvent setOrganizer: person]; + organizerIsSet = YES; + [self logWithFormat: @"organizer set via track status"]; + } + else + { + [person setParticipationStatus: newPartStat]; + [person setRsvp: @"TRUE"]; + [person setRole: @"REQ-PARTICIPANT"]; + [newEvent addToAttendees: person]; + effective++; + } } - - [person release]; + else + [self errorWithFormat: @"skipped recipient due" + @" to missing track status"]; } - if (effective == 0) /* See work-around above */ - [newEvent setOrganizer: nil]; + [person release]; + } + + if (effective == 0) /* See work-around above */ + [newEvent setOrganizer: nil]; + else + { + ownerUser = [[self userContext] sogoUser]; + if (organizerIsSet) + { + /* We must reset the participation status to the value + obtained from PidLidResponseStatus as the value in + PidTagRecipientTrackStatus is not correct. Note (hack): + the method used here requires that the user directory + from LDAP and Samba matches perfectly. This can be solved + more appropriately by making use of the sender + properties... */ + person = [newEvent userAsAttendee: ownerUser]; + if (person) + { + value + = [properties objectForKey: MAPIPropertyKey (PidLidResponseStatus)]; + if (value) + responseStatus = [value unsignedLongValue]; + + /* FIXME: we should provide a data converter between OL partstats and + SOGo */ + switch (responseStatus) + { + case 0x02: /* respTentative */ + newPartStat = iCalPersonPartStatTentative; + break; + case 0x03: /* respAccepted */ + newPartStat = iCalPersonPartStatAccepted; + break; + case 0x04: /* respDeclined */ + newPartStat = iCalPersonPartStatDeclined; + break; + default: + newPartStat = iCalPersonPartStatNeedsAction; + } + [person setParticipationStatus: newPartStat]; + newParticipationStatus = [person partStatWithDefault]; + + // if (newPartStat // != iCalPersonPartStatUndefined + // ) + // { + // // iCalPerson *participant; + + // // participant = [newEvent userAsAttendee: ownerUser]; + // // [participant setParticipationStatus: newPartStat]; + // // [sogoObject saveComponent: newEvent]; + + // [sogoObject changeParticipationStatus: newPartStat + // withDelegate: nil]; + // // [[self context] tearDownRequest]; + // } + // // }1005 + + // // else + // // { + } + } + else + { + [self errorWithFormat: @"organizer was not set although a" + @" recipient list was specified"]; + /* We must set the organizer preliminarily here because, unlike what + the doc states, Outlook does not always pass the real organizer + in the recipients list. */ + dict = [ownerUser primaryIdentity]; + person = [iCalPerson new]; + [person setCn: [dict objectForKey: @"fullName"]]; + orgEmail = [dict objectForKey: @"email"]; + [person setEmail: orgEmail]; + + activeUser = [[self context] activeUser]; + if (![activeUser isEqual: ownerUser]) + { + dict = [activeUser primaryIdentity]; + sentBy = [NSString stringWithFormat: @"mailto:%@", + [dict objectForKey: @"email"]]; + [person setSentBy: sentBy]; + } + [newEvent setOrganizer: person]; + [person release]; + } } } - - [sogoObject saveComponent: newEvent]; } + + [sogoObject saveComponent: newEvent]; + if (newParticipationStatus) + [sogoObject changeParticipationStatus: newParticipationStatus + withDelegate: nil]; + [(MAPIStoreCalendarFolder *) container synchroniseCache]; value = [properties objectForKey: MAPIPropertyKey (PR_CHANGE_KEY)]; if (value) From d4b80cbc6aacfb09b9e75cb234c513c1025738a5 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Mon, 12 Mar 2012 05:55:26 +0000 Subject: [PATCH 20/29] Monotone-Parent: e5b39af7159de417e83ca1ca334d629ee570f716 Monotone-Revision: 14df382f39f38461d724751dad6ea4e1e8ee57c7 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-12T05:55:26 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 6 ++++++ OpenChange/MAPIStoreTypes.h | 2 ++ OpenChange/MAPIStoreTypes.m | 28 ++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/ChangeLog b/ChangeLog index c2092be4a..3daeb5160 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2012-03-12 Wolfgang Sourdeau + + * OpenChange/MAPIStoreTypes.m (MAPICNCompare): new function that + returns an NSComparisonResult for two change numbers (reverse + format). + 2012-03-11 Wolfgang Sourdeau * OpenChange/MAPIStoreCalendarMessage.m diff --git a/OpenChange/MAPIStoreTypes.h b/OpenChange/MAPIStoreTypes.h index 53fb50272..c630b1e15 100644 --- a/OpenChange/MAPIStoreTypes.h +++ b/OpenChange/MAPIStoreTypes.h @@ -42,6 +42,8 @@ id NSObjectFromSPropValue (const struct SPropValue *); id NSObjectFromMAPISPropValue (const struct mapi_SPropValue *); id NSObjectFromValuePointer (enum MAPITAGS, const void *); +NSComparisonResult MAPICNCompare (uint64_t cn1, uint64_t cn2); + static inline NSNumber * MAPIPropertyKey (enum MAPITAGS propTag) { diff --git a/OpenChange/MAPIStoreTypes.m b/OpenChange/MAPIStoreTypes.m index 56665d0fb..01cd461ea 100644 --- a/OpenChange/MAPIStoreTypes.m +++ b/OpenChange/MAPIStoreTypes.m @@ -270,6 +270,34 @@ NSObjectFromValuePointer (enum MAPITAGS propTag, const void *data) return result; } +static uint64_t +_reverseCN (uint64_t cn) +{ + return ((cn & 0x00000000000000ffL) << 56 + | (cn & 0x000000000000ff00L) << 40 + | (cn & 0x0000000000ff0000L) << 24 + | (cn & 0x00000000ff000000L) << 8 + | (cn & 0x000000ff00000000L) >> 8 + | (cn & 0x0000ff0000000000L) >> 24 + | (cn & 0x00ff000000000000L) >> 40 + | (cn & 0xff00000000000000L) >> 56); +} + +NSComparisonResult +MAPICNCompare (uint64_t cn1, uint64_t cn2) +{ + NSComparisonResult result; + + if (cn1 == cn2) + result = NSOrderedSame; + else if (_reverseCN (cn1) < _reverseCN (cn2)) + result = NSOrderedAscending; + else + result = NSOrderedDescending; + + return result; +} + void MAPIStoreDumpMessageProperties (NSDictionary *properties) { From 1e51850d6eeab5c1683f9b0db2a81136c6d9c7ef Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Mon, 12 Mar 2012 05:56:32 +0000 Subject: [PATCH 21/29] Monotone-Parent: 14df382f39f38461d724751dad6ea4e1e8ee57c7 Monotone-Revision: f192e1f1ce3ef4fc536470409d175d3bc7cb4bad Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-12T05:56:32 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 5 +++++ OpenChange/MAPIStoreGCSMessage.m | 12 ++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3daeb5160..adc55a73b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2012-03-12 Wolfgang Sourdeau + * OpenChange/MAPIStoreGCSMessage.m + (-getPidTagPredecessorChangeList:inMemCtx:): when the list is + missing, request a synchronisation from the container as the + message might now have been synchronised yet... + * OpenChange/MAPIStoreTypes.m (MAPICNCompare): new function that returns an NSComparisonResult for two change numbers (reverse format). diff --git a/OpenChange/MAPIStoreGCSMessage.m b/OpenChange/MAPIStoreGCSMessage.m index 78fe155f5..4d7ea0c07 100644 --- a/OpenChange/MAPIStoreGCSMessage.m +++ b/OpenChange/MAPIStoreGCSMessage.m @@ -150,13 +150,21 @@ { int rc = MAPISTORE_SUCCESS; NSData *changeList; + MAPIStoreGCSFolder *parentFolder; if (isNew) rc = MAPISTORE_ERR_NOT_FOUND; else { - changeList = [(MAPIStoreGCSFolder *)[self container] - predecessorChangeListForMessageWithKey: [self nameInContainer]]; + parentFolder = (MAPIStoreGCSFolder *)[self container]; + changeList = [parentFolder + predecessorChangeListForMessageWithKey: [self nameInContainer]]; + if (!changeList) + { + [parentFolder synchroniseCache]; + changeList = [parentFolder + predecessorChangeListForMessageWithKey: [self nameInContainer]]; + } if (!changeList) abort (); *data = [changeList asBinaryInMemCtx: memCtx]; From e8917905b841b46798a16d80d0c236088d30a8d1 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Mon, 12 Mar 2012 05:57:15 +0000 Subject: [PATCH 22/29] Monotone-Parent: f192e1f1ce3ef4fc536470409d175d3bc7cb4bad Monotone-Revision: 75575dc685de1258c4ba450e53c12e11c7954b71 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-12T05:57:15 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 4 ++++ OpenChange/MAPIStoreFolder.m | 11 +++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index adc55a73b..8d62d80a1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2012-03-12 Wolfgang Sourdeau + * OpenChange/MAPIStoreFolder.m + (-getPidTagLocalCommitTimeMax:inMemCtx:): returns + MAPISTORE_ERR_NOT_FOUND if the resulting date is nil. + * OpenChange/MAPIStoreGCSMessage.m (-getPidTagPredecessorChangeList:inMemCtx:): when the list is missing, request a synchronisation from the container as the diff --git a/OpenChange/MAPIStoreFolder.m b/OpenChange/MAPIStoreFolder.m index 4ce08728d..1fed249d2 100644 --- a/OpenChange/MAPIStoreFolder.m +++ b/OpenChange/MAPIStoreFolder.m @@ -1261,9 +1261,16 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe - (int) getPidTagLocalCommitTimeMax: (void **) data inMemCtx: (TALLOC_CTX *) memCtx { - *data = [[self lastMessageModificationTime] asFileTimeInMemCtx: memCtx]; + int rc = MAPISTORE_SUCCESS; + NSDate *date; - return MAPISTORE_SUCCESS; + date = [self lastMessageModificationTime]; + if (date) + *data = [date asFileTimeInMemCtx: memCtx]; + else + rc = MAPISTORE_ERR_NOT_FOUND; + + return rc; } - (int) getProperty: (void **) data From 98bf3201e70f20ed3d69a46ab6f2e5af6953d9d8 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Mon, 12 Mar 2012 06:03:56 +0000 Subject: [PATCH 23/29] Monotone-Parent: 75575dc685de1258c4ba450e53c12e11c7954b71 Monotone-Revision: 28a24e19c42fd0a497caf994e8b2f88fc7432164 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-12T06:03:56 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 20 ++++ OpenChange/MAPIStoreCalendarFolder.m | 12 +-- OpenChange/MAPIStoreContactsFolder.m | 13 +-- OpenChange/MAPIStoreGCSFolder.h | 6 +- OpenChange/MAPIStoreGCSFolder.m | 143 +++++++++++++++++---------- OpenChange/MAPIStoreTasksFolder.m | 12 +-- 6 files changed, 122 insertions(+), 84 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8d62d80a1..a53adaf2f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,25 @@ 2012-03-12 Wolfgang Sourdeau + * OpenChange/MAPIStoreGCSFolder.m (-componentQualifier): now + provided by the parent class itself. + (-contentComponentQualifier): new method that returns a qualifier + that translated to "c_content like '%BEGIN:XXX%'". This is a hack + to work-around the fact that calendar folders may content both + vevent and vtodo and that c_component, being part of the quick + table, is no longer available when a record is deleted. + (-synchroniseCache): update version values for deleted records + too, by taking into account the fact that their c_version value + might still be 0. Make use of contentComponentQualifier above. + Remove the modified records from the SOGoGCSFolder cache. + (-getDeletedKeysFromChangeNumber:andCN:inTableType:): wander the + list of deleted records and no longer increase the change number, + as this is now done from "synchroniseCache". Also, handle the case + were deleted records might already have been reported by comparing + their change number to the one provided as parameter. The + resulting change number is now guaranteed to be the highest one. + (-component): new subclassable method that returns a string + matching the folder's handled component. + * OpenChange/MAPIStoreFolder.m (-getPidTagLocalCommitTimeMax:inMemCtx:): returns MAPISTORE_ERR_NOT_FOUND if the resulting date is nil. diff --git a/OpenChange/MAPIStoreCalendarFolder.m b/OpenChange/MAPIStoreCalendarFolder.m index f2ec0a4dd..7b40d9735 100644 --- a/OpenChange/MAPIStoreCalendarFolder.m +++ b/OpenChange/MAPIStoreCalendarFolder.m @@ -49,17 +49,9 @@ return [MAPIStoreCalendarMessageTable tableForContainer: self]; } -- (EOQualifier *) componentQualifier +- (NSString *) component { - static EOQualifier *componentQualifier = nil; - - if (!componentQualifier) - componentQualifier - = [[EOKeyValueQualifier alloc] initWithKey: @"c_component" - operatorSelector: EOQualifierOperatorEqual - value: @"vevent"]; - - return componentQualifier; + return @"vevent"; } - (MAPIStoreMessage *) createMessage diff --git a/OpenChange/MAPIStoreContactsFolder.m b/OpenChange/MAPIStoreContactsFolder.m index 6485a3af8..49c26df90 100644 --- a/OpenChange/MAPIStoreContactsFolder.m +++ b/OpenChange/MAPIStoreContactsFolder.m @@ -45,18 +45,9 @@ return [MAPIStoreContactsMessageTable tableForContainer: self]; } -- (EOQualifier *) componentQualifier +- (NSString *) component { - static EOQualifier *componentQualifier = nil; - - /* TODO: we need to support vlist as well */ - if (!componentQualifier) - componentQualifier - = [[EOKeyValueQualifier alloc] initWithKey: @"c_component" - operatorSelector: EOQualifierOperatorEqual - value: @"vcard"]; - - return componentQualifier; + return @"vcard"; } - (MAPIStoreMessage *) createMessage diff --git a/OpenChange/MAPIStoreGCSFolder.h b/OpenChange/MAPIStoreGCSFolder.h index 91ec334fd..d87c9c63c 100644 --- a/OpenChange/MAPIStoreGCSFolder.h +++ b/OpenChange/MAPIStoreGCSFolder.h @@ -36,6 +36,7 @@ { SOGoMAPIFSMessage *versionsMessage; NSArray *activeUserRoles; + EOQualifier *componentQualifier; } /* synchronisation */ @@ -50,9 +51,12 @@ - (NSArray *) activeUserRoles; +- (EOQualifier *) componentQualifier; +- (EOQualifier *) contentComponentQualifier; + /* subclasses */ - (EOQualifier *) aclQualifier; -- (EOQualifier *) componentQualifier; +- (NSString *) component; @end diff --git a/OpenChange/MAPIStoreGCSFolder.m b/OpenChange/MAPIStoreGCSFolder.m index 3c41b7f1b..6a4298b2b 100644 --- a/OpenChange/MAPIStoreGCSFolder.m +++ b/OpenChange/MAPIStoreGCSFolder.m @@ -48,8 +48,15 @@ #include #include +static Class NSNumberK; + @implementation MAPIStoreGCSFolder ++ (void) initialize +{ + NSNumberK = [NSNumber class]; +} + - (id) initWithSOGoObject: (id) newSOGoObject inContainer: (MAPIStoreObject *) newContainer { @@ -72,6 +79,7 @@ { [versionsMessage release]; [activeUserRoles release]; + [componentQualifier release]; [super dealloc]; } @@ -207,17 +215,15 @@ - (NSDate *) lastMessageModificationTime { + NSDate *value; NSNumber *ti; - NSDate *value = nil; ti = [[versionsMessage properties] - objectForKey: @"SyncLastSynchronisationDate"]; + objectForKey: @"SyncLastModificationDate"]; if (ti) value = [NSDate dateWithTimeIntervalSince1970: [ti doubleValue]]; else - value = [NSDate date]; - - [self logWithFormat: @"lastMessageModificationTime: %@", value]; + value = nil; return value; } @@ -283,13 +289,41 @@ [changeList setObject: globCnt forKey: guid]; } +- (EOQualifier *) componentQualifier +{ + if (!componentQualifier) + componentQualifier + = [[EOKeyValueQualifier alloc] initWithKey: @"c_component" + operatorSelector: EOQualifierOperatorEqual + value: [self component]]; + + return componentQualifier; +} + +- (EOQualifier *) contentComponentQualifier +{ + EOQualifier *contentComponentQualifier; + NSString *likeString; + + likeString = [NSString stringWithFormat: @"%%BEGIN:%@%%", + [[self component] uppercaseString]]; + contentComponentQualifier = [[EOKeyValueQualifier alloc] + initWithKey: @"c_content" + operatorSelector: EOQualifierOperatorLike + value: likeString]; + [contentComponentQualifier autorelease]; + + return contentComponentQualifier; +} + - (BOOL) synchroniseCache { BOOL rc = YES, foundChange = NO; uint64_t newChangeNum; NSData *changeKey; NSString *cName; - NSNumber *ti, *changeNumber, *lastModificationDate, *cVersion, *cLastModified; + NSNumber *ti, *changeNumber, *lastModificationDate, *cVersion, + *cLastModified, *cDeleted; EOFetchSpecification *fs; EOQualifier *searchQualifier, *fetchQualifier; NSUInteger count, max; @@ -304,7 +338,7 @@ if (!fields) fields = [[NSArray alloc] initWithObjects: @"c_name", @"c_version", @"c_lastmodified", - nil]; + @"c_deleted", nil]; if (!sortOrdering) { @@ -313,26 +347,7 @@ [sortOrdering retain]; } - now = [NSCalendarDate date]; - - currentProperties = [[versionsMessage properties] mutableCopy]; - if (!currentProperties) - currentProperties = [NSMutableDictionary new]; - [currentProperties autorelease]; - messages = [currentProperties objectForKey: @"Messages"]; - if (!messages) - { - messages = [NSMutableDictionary new]; - [currentProperties setObject: messages forKey: @"Messages"]; - [messages release]; - } - mapping = [currentProperties objectForKey: @"VersionMapping"]; - if (!mapping) - { - mapping = [NSMutableDictionary new]; - [currentProperties setObject: mapping forKey: @"VersionMapping"]; - [mapping release]; - } + currentProperties = [versionsMessage properties]; lastModificationDate = [currentProperties objectForKey: @"SyncLastModificationDate"]; if (lastModificationDate) @@ -342,8 +357,9 @@ operatorSelector: EOQualifierOperatorGreaterThanOrEqualTo value: lastModificationDate]; fetchQualifier = [[EOAndQualifier alloc] - initWithQualifiers: - searchQualifier, [self componentQualifier], nil]; + initWithQualifiers: searchQualifier, + [self contentComponentQualifier], + nil]; [fetchQualifier autorelease]; [searchQualifier release]; } @@ -355,21 +371,40 @@ fetchSpecificationWithEntityName: [ocsFolder folderName] qualifier: fetchQualifier sortOrderings: [NSArray arrayWithObject: sortOrdering]]; - fetchResults = [ocsFolder fetchFields: fields fetchSpecification: fs]; + fetchResults = [ocsFolder fetchFields: fields + fetchSpecification: fs + ignoreDeleted: NO]; max = [fetchResults count]; if (max > 0) { + messages = [currentProperties objectForKey: @"Messages"]; + if (!messages) + { + messages = [NSMutableDictionary new]; + [currentProperties setObject: messages forKey: @"Messages"]; + [messages release]; + } + mapping = [currentProperties objectForKey: @"VersionMapping"]; + if (!mapping) + { + mapping = [NSMutableDictionary new]; + [currentProperties setObject: mapping forKey: @"VersionMapping"]; + [mapping release]; + } + ldb_transaction_start([[self context] connectionInfo]->oc_ctx); for (count = 0; count < max; count++) { result = [fetchResults objectAtIndex: count]; cName = [result objectForKey: @"c_name"]; - cVersion = [result objectForKey: @"c_version"]; + cDeleted = [result objectForKey: @"c_deleted"]; + if ([cDeleted isKindOfClass: NSNumberK] && [cDeleted intValue]) + cVersion = [NSNumber numberWithInt: -1]; + else + cVersion = [result objectForKey: @"c_version"]; cLastModified = [result objectForKey: @"c_lastmodified"]; - [sogoObject removeChildRecordWithName: cName]; - messageEntry = [messages objectForKey: cName]; if (!messageEntry) { @@ -377,9 +412,12 @@ [messages setObject: messageEntry forKey: cName]; [messageEntry release]; } + if (![[messageEntry objectForKey: @"c_version"] isEqual: cVersion]) { + [sogoObject removeChildRecordWithName: cName]; + foundChange = YES; newChangeNum = [[self context] getNewChangeNumber]; @@ -405,6 +443,7 @@ if (foundChange) { + now = [NSCalendarDate date]; ti = [NSNumber numberWithDouble: [now timeIntervalSince1970]]; [currentProperties setObject: ti forKey: @"SyncLastSynchronisationDate"]; @@ -529,9 +568,9 @@ NSArray *deletedKeys, *deletedCNames, *records; NSNumber *changeNumNbr, *lastModified; NSString *cName; - NSDictionary *versionProperties; - NSMutableDictionary *messages, *mapping; - uint64_t newChangeNum = 0; + NSDictionary *versionProperties, *messageEntry; + NSMutableDictionary *messages; + uint64_t maxChangeNum = changeNum, currentChangeNum; EOAndQualifier *fetchQualifier; EOKeyValueQualifier *cDeletedQualifier, *cLastModifiedQualifier; EOFetchSpecification *fs; @@ -576,28 +615,28 @@ ignoreDeleted: NO]; deletedCNames = [records objectsForKey: @"c_name" notFoundMarker: nil]; max = [deletedCNames count]; - if (max > 0) + for (count = 0; count < max; count++) { - mapping = [versionProperties objectForKey: @"VersionsMapping"]; - for (count = 0; count < max; count++) + cName = [deletedCNames objectAtIndex: count]; + [sogoObject removeChildRecordWithName: cName]; + messageEntry = [messages objectForKey: cName]; + if (messageEntry) { - cName = [deletedCNames objectAtIndex: count]; - if ([messages objectForKey: cName]) + currentChangeNum + = [[messageEntry objectForKey: @"version"] + unsignedLongLongValue]; + if (MAPICNCompare (changeNum, currentChangeNum) + == NSOrderedAscending) { - [messages removeObjectForKey: cName]; [(NSMutableArray *) deletedKeys addObject: cName]; - newChangeNum = [[self context] getNewChangeNumber]; + if (MAPICNCompare (maxChangeNum, currentChangeNum) + == NSOrderedAscending) + maxChangeNum = currentChangeNum; } } - if (newChangeNum) - { - changeNumNbr - = [NSNumber numberWithUnsignedLongLong: newChangeNum]; - [mapping setObject: lastModified forKey: changeNumNbr]; - *cnNbr = changeNumNbr; - [versionsMessage save]; - } } + if (maxChangeNum != changeNum) + *cnNbr = [NSNumber numberWithUnsignedLongLong: maxChangeNum]; } } else @@ -642,7 +681,7 @@ return nil; } -- (EOQualifier *) componentQualifier +- (NSString *) component { [self subclassResponsibility: _cmd]; diff --git a/OpenChange/MAPIStoreTasksFolder.m b/OpenChange/MAPIStoreTasksFolder.m index 323bdf6e8..888daf2a8 100644 --- a/OpenChange/MAPIStoreTasksFolder.m +++ b/OpenChange/MAPIStoreTasksFolder.m @@ -48,17 +48,9 @@ return [MAPIStoreTasksMessageTable tableForContainer: self]; } -- (EOQualifier *) componentQualifier +- (NSString *) component { - static EOQualifier *componentQualifier = nil; - - if (!componentQualifier) - componentQualifier - = [[EOKeyValueQualifier alloc] initWithKey: @"c_component" - operatorSelector: EOQualifierOperatorEqual - value: @"vtodo"]; - - return componentQualifier; + return @"vtodo"; } - (MAPIStoreMessage *) createMessage From b26046aadec377f3a64371ec94ede5932ae6d62e Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Mon, 12 Mar 2012 07:12:28 +0000 Subject: [PATCH 24/29] Monotone-Parent: 28a24e19c42fd0a497caf994e8b2f88fc7432164 Monotone-Revision: b4877f2729cab76fd5d38a99c8de852adf2573f1 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-12T07:12:28 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 3 +++ OpenChange/MAPIStoreTypes.m | 16 ++++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index a53adaf2f..22a41f97e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2012-03-12 Wolfgang Sourdeau + * OpenChange/MAPIStoreTypes.m (_reverseCN): fixed used of ull + constants on 32 bit platforms. + * OpenChange/MAPIStoreGCSFolder.m (-componentQualifier): now provided by the parent class itself. (-contentComponentQualifier): new method that returns a qualifier diff --git a/OpenChange/MAPIStoreTypes.m b/OpenChange/MAPIStoreTypes.m index 01cd461ea..24dbac860 100644 --- a/OpenChange/MAPIStoreTypes.m +++ b/OpenChange/MAPIStoreTypes.m @@ -273,14 +273,14 @@ NSObjectFromValuePointer (enum MAPITAGS propTag, const void *data) static uint64_t _reverseCN (uint64_t cn) { - return ((cn & 0x00000000000000ffL) << 56 - | (cn & 0x000000000000ff00L) << 40 - | (cn & 0x0000000000ff0000L) << 24 - | (cn & 0x00000000ff000000L) << 8 - | (cn & 0x000000ff00000000L) >> 8 - | (cn & 0x0000ff0000000000L) >> 24 - | (cn & 0x00ff000000000000L) >> 40 - | (cn & 0xff00000000000000L) >> 56); + return ((cn & UINT64_C (0x00000000000000ff)) << 56 + | (cn & UINT64_C (0x000000000000ff00)) << 40 + | (cn & UINT64_C (0x0000000000ff0000)) << 24 + | (cn & UINT64_C (0x00000000ff000000)) << 8 + | (cn & UINT64_C (0x000000ff00000000)) >> 8 + | (cn & UINT64_C (0x0000ff0000000000)) >> 24 + | (cn & UINT64_C (0x00ff000000000000)) >> 40 + | (cn & UINT64_C (0xff00000000000000)) >> 56); } NSComparisonResult From 5855c961c2284b73921397e2b7c8cd4a2b0f09f7 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Mon, 12 Mar 2012 08:20:22 +0000 Subject: [PATCH 25/29] Monotone-Parent: b4877f2729cab76fd5d38a99c8de852adf2573f1 Monotone-Revision: 8564a65896abd2a99c1994b8cfdec195d21899ae Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-12T08:20:22 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 4 ++++ OpenChange/MAPIStoreGCSFolder.m | 2 ++ 2 files changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index 22a41f97e..1ff575d84 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2012-03-12 Wolfgang Sourdeau + * OpenChange/MAPIStoreGCSFolder.m (-lastMessageModificationTime): + force a synchronisation from here to ensure that the cache is + up-to-date. + * OpenChange/MAPIStoreTypes.m (_reverseCN): fixed used of ull constants on 32 bit platforms. diff --git a/OpenChange/MAPIStoreGCSFolder.m b/OpenChange/MAPIStoreGCSFolder.m index 6a4298b2b..b27e0a24f 100644 --- a/OpenChange/MAPIStoreGCSFolder.m +++ b/OpenChange/MAPIStoreGCSFolder.m @@ -218,6 +218,8 @@ static Class NSNumberK; NSDate *value; NSNumber *ti; + [self synchroniseCache]; + ti = [[versionsMessage properties] objectForKey: @"SyncLastModificationDate"]; if (ti) From f88428070db6a6c736291739270a3993adab4ac2 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 13 Mar 2012 18:06:23 +0000 Subject: [PATCH 26/29] Monotone-Parent: 8564a65896abd2a99c1994b8cfdec195d21899ae Monotone-Revision: ed021b28eea3d4534571b9dbb75aef3e915f0afd Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-13T18:06:23 Monotone-Branch: ca.inverse.sogo --- OpenChange/gen-property-selectors.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenChange/gen-property-selectors.py b/OpenChange/gen-property-selectors.py index 919bcad92..0a496db39 100755 --- a/OpenChange/gen-property-selectors.py +++ b/OpenChange/gen-property-selectors.py @@ -130,7 +130,7 @@ bannedProps = [ "PidTagBodyHtml", "PidTagFavAutosubfolders", "PidTagScheduleInfoDelegateEntryIds", "PidTagBusiness2TelephoneNumbers", "PidTagHome2TelephoneNumbers", - "PidTagAttachDataObject" + "PidTagAttachDataObject", "PidTagShorttermEntryIdFromObject", ] def ParseExchangeH(names, lines): From 3965719bc230bb986089252df9f5d45e1502083b Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 13 Mar 2012 20:41:21 +0000 Subject: [PATCH 27/29] Monotone-Parent: ed021b28eea3d4534571b9dbb75aef3e915f0afd Monotone-Revision: 963f8aef47900b44cad8c81119ac151b6fc74c3a Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-13T20:41:21 Monotone-Branch: ca.inverse.sogo --- OpenChange/unrtf-0.21.2.diff | 61 +++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/OpenChange/unrtf-0.21.2.diff b/OpenChange/unrtf-0.21.2.diff index 2cf49e698..466c2d16a 100644 --- a/OpenChange/unrtf-0.21.2.diff +++ b/OpenChange/unrtf-0.21.2.diff @@ -1,6 +1,6 @@ diff -durpN unrtf-0.21.2.old/outputs/html.conf unrtf-0.21.2/outputs/html.conf --- unrtf-0.21.2.old/outputs/html.conf 2010-08-15 08:44:09.000000000 -0400 -+++ unrtf-0.21.2/outputs/html.conf 2011-11-09 15:53:21.802783775 -0500 ++++ unrtf-0.21.2/outputs/html.conf 2012-03-13 16:38:53.295941363 -0400 @@ -5,7 +5,7 @@ comment_end --> @@ -10,9 +10,18 @@ diff -durpN unrtf-0.21.2.old/outputs/html.conf unrtf-0.21.2/outputs/html.conf #Second test of comments +@@ -67,7 +67,7 @@ align_right_end + + + forced_space +-   ++   + line_break +
+ diff -durpN unrtf-0.21.2.old/src/attr.c unrtf-0.21.2/src/attr.c --- unrtf-0.21.2.old/src/attr.c 2010-07-03 22:30:58.000000000 -0400 -+++ unrtf-0.21.2/src/attr.c 2011-12-01 10:14:45.282855488 -0500 ++++ unrtf-0.21.2/src/attr.c 2012-03-13 16:38:41.323940752 -0400 @@ -1,23 +1,23 @@ /*============================================================================= - GNU UnRTF, a command-line program to convert RTF documents to other formats. @@ -1265,7 +1274,7 @@ diff -durpN unrtf-0.21.2.old/src/attr.c unrtf-0.21.2/src/attr.c - diff -durpN unrtf-0.21.2.old/src/attr.h unrtf-0.21.2/src/attr.h --- unrtf-0.21.2.old/src/attr.h 2010-07-03 22:30:58.000000000 -0400 -+++ unrtf-0.21.2/src/attr.h 2011-11-09 15:53:21.806783776 -0500 ++++ unrtf-0.21.2/src/attr.h 2012-03-13 16:38:41.323940752 -0400 @@ -1,23 +1,23 @@ /*============================================================================= - GNU UnRTF, a command-line program to convert RTF documents to other formats. @@ -1415,7 +1424,7 @@ diff -durpN unrtf-0.21.2.old/src/attr.h unrtf-0.21.2/src/attr.h +#endif /* ATTR_H */ diff -durpN unrtf-0.21.2.old/src/convert.c unrtf-0.21.2/src/convert.c --- unrtf-0.21.2.old/src/convert.c 2011-06-07 08:00:23.000000000 -0400 -+++ unrtf-0.21.2/src/convert.c 2011-12-01 10:32:16.958862025 -0500 ++++ unrtf-0.21.2/src/convert.c 2012-03-13 16:38:41.327940973 -0400 @@ -1,24 +1,24 @@ /*=========================================================================== @@ -7111,7 +7120,7 @@ diff -durpN unrtf-0.21.2.old/src/convert.c unrtf-0.21.2/src/convert.c } diff -durpN unrtf-0.21.2.old/src/convert.h unrtf-0.21.2/src/convert.h --- unrtf-0.21.2.old/src/convert.h 2010-07-03 22:30:58.000000000 -0400 -+++ unrtf-0.21.2/src/convert.h 2011-11-09 15:53:21.810783765 -0500 ++++ unrtf-0.21.2/src/convert.h 2012-03-13 16:38:41.327940973 -0400 @@ -36,18 +36,135 @@ #ifndef _CONVERT @@ -7255,7 +7264,7 @@ diff -durpN unrtf-0.21.2.old/src/convert.h unrtf-0.21.2/src/convert.h diff -durpN unrtf-0.21.2.old/src/defs.h unrtf-0.21.2/src/defs.h --- unrtf-0.21.2.old/src/defs.h 2010-07-03 22:30:58.000000000 -0400 -+++ unrtf-0.21.2/src/defs.h 2011-11-09 15:53:21.810783765 -0500 ++++ unrtf-0.21.2/src/defs.h 2012-03-13 16:38:41.327940973 -0400 @@ -64,9 +64,6 @@ #define SKIP_ONE_WORD 2 #endif @@ -7275,7 +7284,7 @@ diff -durpN unrtf-0.21.2.old/src/defs.h unrtf-0.21.2/src/defs.h +#define DEFAULT_OUTPUT "html" diff -durpN unrtf-0.21.2.old/src/error.c unrtf-0.21.2/src/error.c --- unrtf-0.21.2.old/src/error.c 2010-07-03 22:30:58.000000000 -0400 -+++ unrtf-0.21.2/src/error.c 2011-11-09 15:53:21.810783765 -0500 ++++ unrtf-0.21.2/src/error.c 2012-03-13 16:38:41.327940973 -0400 @@ -51,27 +51,11 @@ #include #endif @@ -7320,7 +7329,7 @@ diff -durpN unrtf-0.21.2.old/src/error.c unrtf-0.21.2/src/error.c #endif diff -durpN unrtf-0.21.2.old/src/error.h unrtf-0.21.2/src/error.h --- unrtf-0.21.2.old/src/error.h 2010-07-03 22:30:58.000000000 -0400 -+++ unrtf-0.21.2/src/error.h 2011-11-09 15:53:21.810783765 -0500 ++++ unrtf-0.21.2/src/error.h 2012-03-13 16:38:41.327940973 -0400 @@ -37,9 +37,10 @@ #define CHECK_MALLOC_SUCCESS(XX) { if ((XX)==NULL) { fprintf (stderr, "internal error: cannot allocate memory in %s at %d\n", __FILE__, __LINE__); exit (1); }} @@ -7335,7 +7344,7 @@ diff -durpN unrtf-0.21.2.old/src/error.h unrtf-0.21.2/src/error.h diff -durpN unrtf-0.21.2.old/src/hash.c unrtf-0.21.2/src/hash.c --- unrtf-0.21.2.old/src/hash.c 2010-07-03 22:30:58.000000000 -0400 -+++ unrtf-0.21.2/src/hash.c 2011-11-09 15:53:21.810783765 -0500 ++++ unrtf-0.21.2/src/hash.c 2012-03-13 16:38:41.327940973 -0400 @@ -53,24 +53,16 @@ #include #endif @@ -7540,7 +7549,7 @@ diff -durpN unrtf-0.21.2.old/src/hash.c unrtf-0.21.2/src/hash.c +} diff -durpN unrtf-0.21.2.old/src/hash.h unrtf-0.21.2/src/hash.h --- unrtf-0.21.2.old/src/hash.h 2010-07-03 22:30:58.000000000 -0400 -+++ unrtf-0.21.2/src/hash.h 2011-11-09 15:53:21.810783765 -0500 ++++ unrtf-0.21.2/src/hash.h 2012-03-13 16:38:41.327940973 -0400 @@ -32,11 +32,15 @@ * 16 Dec 07, daved@physiol.usyd.edu.au: updated to GPL v3 *--------------------------------------------------------------------*/ @@ -7564,7 +7573,7 @@ diff -durpN unrtf-0.21.2.old/src/hash.h unrtf-0.21.2/src/hash.h +#endif /* HASH_H */ diff -durpN unrtf-0.21.2.old/src/main.c unrtf-0.21.2/src/main.c --- unrtf-0.21.2.old/src/main.c 2010-07-03 22:30:58.000000000 -0400 -+++ unrtf-0.21.2/src/main.c 2011-11-09 15:53:21.810783765 -0500 ++++ unrtf-0.21.2/src/main.c 2012-03-13 16:38:41.327940973 -0400 @@ -1,23 +1,23 @@ /*============================================================================= - GNU UnRTF, a command-line program to convert RTF documents to other formats. @@ -7986,7 +7995,7 @@ diff -durpN unrtf-0.21.2.old/src/main.c unrtf-0.21.2/src/main.c - diff -durpN unrtf-0.21.2.old/src/main.h unrtf-0.21.2/src/main.h --- unrtf-0.21.2.old/src/main.h 2010-07-03 22:30:58.000000000 -0400 -+++ unrtf-0.21.2/src/main.h 2011-11-09 15:53:21.810783765 -0500 ++++ unrtf-0.21.2/src/main.h 2012-03-13 16:38:41.327940973 -0400 @@ -35,21 +35,8 @@ * 17 Jan 10, daved@physiol.usyd.edu.au: change CONFIG_DIR to drop outputs/ *--------------------------------------------------------------------*/ @@ -8012,7 +8021,7 @@ diff -durpN unrtf-0.21.2.old/src/main.h unrtf-0.21.2/src/main.h +#define USAGE "unrtf [--version] [--verbose] [--help] [--nopict|-n] [--noremap] [--html] [--text] [--vt] [--latex] [--rtf] [-P config_search_path] [-t )] " diff -durpN unrtf-0.21.2.old/src/Makefile.am unrtf-0.21.2/src/Makefile.am --- unrtf-0.21.2.old/src/Makefile.am 2010-07-03 22:30:58.000000000 -0400 -+++ unrtf-0.21.2/src/Makefile.am 2011-11-09 15:53:21.810783765 -0500 ++++ unrtf-0.21.2/src/Makefile.am 2012-03-13 16:38:41.327940973 -0400 @@ -13,7 +13,6 @@ unrtf_SOURCES = attr.c attr.h \ malloc.c malloc.h \ output.c output.h \ @@ -8023,7 +8032,7 @@ diff -durpN unrtf-0.21.2.old/src/Makefile.am unrtf-0.21.2/src/Makefile.am util.c util.h \ diff -durpN unrtf-0.21.2.old/src/malloc.c unrtf-0.21.2/src/malloc.c --- unrtf-0.21.2.old/src/malloc.c 2010-07-09 01:13:05.000000000 -0400 -+++ unrtf-0.21.2/src/malloc.c 2011-12-01 10:36:18.514864760 -0500 ++++ unrtf-0.21.2/src/malloc.c 2012-03-13 16:38:41.327940973 -0400 @@ -135,19 +135,19 @@ total_malloced (void) { *=======================================================================*/ @@ -8063,7 +8072,7 @@ diff -durpN unrtf-0.21.2.old/src/malloc.c unrtf-0.21.2/src/malloc.c } diff -durpN unrtf-0.21.2.old/src/malloc.h unrtf-0.21.2/src/malloc.h --- unrtf-0.21.2.old/src/malloc.h 2010-07-03 22:30:58.000000000 -0400 -+++ unrtf-0.21.2/src/malloc.h 2011-11-09 15:53:21.810783765 -0500 ++++ unrtf-0.21.2/src/malloc.h 2012-03-13 16:38:41.327940973 -0400 @@ -32,9 +32,10 @@ * 09 Nov 08, arkadiusz.firus@gmail.com: added my_realloc *--------------------------------------------------------------------*/ @@ -8079,7 +8088,7 @@ diff -durpN unrtf-0.21.2.old/src/malloc.h unrtf-0.21.2/src/malloc.h +extern char * my_strdup (struct ConversionContext *, char*); diff -durpN unrtf-0.21.2.old/src/my_iconv.c unrtf-0.21.2/src/my_iconv.c --- unrtf-0.21.2.old/src/my_iconv.c 2010-08-16 00:12:43.000000000 -0400 -+++ unrtf-0.21.2/src/my_iconv.c 2011-11-09 15:53:21.814783744 -0500 ++++ unrtf-0.21.2/src/my_iconv.c 2012-03-13 16:38:41.327940973 -0400 @@ -12,154 +12,133 @@ #include #include @@ -8321,7 +8330,7 @@ diff -durpN unrtf-0.21.2.old/src/my_iconv.c unrtf-0.21.2/src/my_iconv.c diff -durpN unrtf-0.21.2.old/src/my_iconv.h unrtf-0.21.2/src/my_iconv.h --- unrtf-0.21.2.old/src/my_iconv.h 2010-07-03 22:30:58.000000000 -0400 -+++ unrtf-0.21.2/src/my_iconv.h 2011-11-09 15:53:21.814783744 -0500 ++++ unrtf-0.21.2/src/my_iconv.h 2012-03-13 16:38:41.327940973 -0400 @@ -5,6 +5,9 @@ * Purpose: my_conv definitions *--------------------------------------------------------------------*/ @@ -8351,7 +8360,7 @@ diff -durpN unrtf-0.21.2.old/src/my_iconv.h unrtf-0.21.2/src/my_iconv.h +#endif /* _MY_ICONV */ diff -durpN unrtf-0.21.2.old/src/output.c unrtf-0.21.2/src/output.c --- unrtf-0.21.2.old/src/output.c 2011-06-07 08:04:38.000000000 -0400 -+++ unrtf-0.21.2/src/output.c 2011-12-01 10:30:41.598861702 -0500 ++++ unrtf-0.21.2/src/output.c 2012-03-13 16:38:41.327940973 -0400 @@ -1,23 +1,23 @@ /*============================================================================= - GNU UnRTF, a command-line program to convert RTF documents to other formats. @@ -9535,7 +9544,7 @@ diff -durpN unrtf-0.21.2.old/src/output.c unrtf-0.21.2/src/output.c - diff -durpN unrtf-0.21.2.old/src/output.h unrtf-0.21.2/src/output.h --- unrtf-0.21.2.old/src/output.h 2010-08-11 21:09:02.000000000 -0400 -+++ unrtf-0.21.2/src/output.h 2011-11-09 15:53:21.814783744 -0500 ++++ unrtf-0.21.2/src/output.h 2012-03-13 16:38:41.327940973 -0400 @@ -44,227 +44,228 @@ typedef Collection Aliases; @@ -9923,7 +9932,7 @@ diff -durpN unrtf-0.21.2.old/src/output.h unrtf-0.21.2/src/output.h - diff -durpN unrtf-0.21.2.old/src/parse.c unrtf-0.21.2/src/parse.c --- unrtf-0.21.2.old/src/parse.c 2010-07-03 22:30:58.000000000 -0400 -+++ unrtf-0.21.2/src/parse.c 2011-12-01 10:27:41.486860883 -0500 ++++ unrtf-0.21.2/src/parse.c 2012-03-13 16:38:41.327940973 -0400 @@ -1,23 +1,23 @@ /*============================================================================= - GNU UnRTF, a command-line program to convert RTF documents to other formats. @@ -10597,7 +10606,7 @@ diff -durpN unrtf-0.21.2.old/src/parse.c unrtf-0.21.2/src/parse.c } diff -durpN unrtf-0.21.2.old/src/parse.h unrtf-0.21.2/src/parse.h --- unrtf-0.21.2.old/src/parse.h 2010-07-03 22:30:58.000000000 -0400 -+++ unrtf-0.21.2/src/parse.h 2011-11-09 15:53:21.814783744 -0500 ++++ unrtf-0.21.2/src/parse.h 2012-03-13 16:38:41.327940973 -0400 @@ -38,8 +38,6 @@ #include "word.h" #endif @@ -10690,7 +10699,7 @@ diff -durpN unrtf-0.21.2.old/src/path.h unrtf-0.21.2/src/path.h -void show_dirs(); diff -durpN unrtf-0.21.2.old/src/unrtf.h unrtf-0.21.2/src/unrtf.h --- unrtf-0.21.2.old/src/unrtf.h 1969-12-31 19:00:00.000000000 -0500 -+++ unrtf-0.21.2/src/unrtf.h 2011-11-09 15:53:21.814783744 -0500 ++++ unrtf-0.21.2/src/unrtf.h 2012-03-13 16:38:41.327940973 -0400 @@ -0,0 +1,55 @@ +/*=========================================================================== + GNU UnRTF, a command-line program to convert RTF documents to other formats. @@ -10749,7 +10758,7 @@ diff -durpN unrtf-0.21.2.old/src/unrtf.h unrtf-0.21.2/src/unrtf.h +#endif /* UNRTF_H */ diff -durpN unrtf-0.21.2.old/src/user.c unrtf-0.21.2/src/user.c --- unrtf-0.21.2.old/src/user.c 2011-06-07 08:08:17.000000000 -0400 -+++ unrtf-0.21.2/src/user.c 2011-12-01 09:59:46.215667415 -0500 ++++ unrtf-0.21.2/src/user.c 2012-03-13 16:38:41.327940973 -0400 @@ -7,7 +7,7 @@ *---------------------------------------------------------------------- * Changes: @@ -11179,7 +11188,7 @@ diff -durpN unrtf-0.21.2.old/src/user.c unrtf-0.21.2/src/user.c diff -durpN unrtf-0.21.2.old/src/user.h unrtf-0.21.2/src/user.h --- unrtf-0.21.2.old/src/user.h 2010-07-03 22:30:58.000000000 -0400 -+++ unrtf-0.21.2/src/user.h 2011-11-09 15:53:21.814783744 -0500 ++++ unrtf-0.21.2/src/user.h 2012-03-13 16:38:41.327940973 -0400 @@ -151,9 +151,10 @@ #ifndef _USER @@ -11195,7 +11204,7 @@ diff -durpN unrtf-0.21.2.old/src/user.h unrtf-0.21.2/src/user.h #endif diff -durpN unrtf-0.21.2.old/src/word.c unrtf-0.21.2/src/word.c --- unrtf-0.21.2.old/src/word.c 2010-07-03 22:30:58.000000000 -0400 -+++ unrtf-0.21.2/src/word.c 2011-12-01 10:15:34.590855632 -0500 ++++ unrtf-0.21.2/src/word.c 2012-03-13 16:38:41.327940973 -0400 @@ -1,23 +1,23 @@ /*============================================================================= - GNU UnRTF, a command-line program to convert RTF documents to other formats. @@ -11520,7 +11529,7 @@ diff -durpN unrtf-0.21.2.old/src/word.c unrtf-0.21.2/src/word.c diff -durpN unrtf-0.21.2.old/src/word.h unrtf-0.21.2/src/word.h --- unrtf-0.21.2.old/src/word.h 2010-07-03 22:30:58.000000000 -0400 -+++ unrtf-0.21.2/src/word.h 2011-11-09 15:53:21.814783744 -0500 ++++ unrtf-0.21.2/src/word.h 2012-03-13 16:38:41.327940973 -0400 @@ -41,14 +41,15 @@ typedef struct _w { struct _w * child; } Word; From 67e5fbb45d87161202253bb2aa3d7f6725f71791 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 13 Mar 2012 21:16:12 +0000 Subject: [PATCH 28/29] Monotone-Parent: 963f8aef47900b44cad8c81119ac151b6fc74c3a Monotone-Revision: e1a25e44c867d0cebafca83f2e8a1655f81674e6 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-13T21:16:12 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 11 +++++ OpenChange/MAPIStoreFolder.m | 78 ++++++++++++++++++++++++------------ 2 files changed, 63 insertions(+), 26 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1ff575d84..42ba7cbb0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2012-03-13 Wolfgang Sourdeau + + * OpenChange/MAPIStoreFolder.m + (_modifyPermissionEntryForUser:withRoles:isAddition:withACLFolder:): + skip any modification when user is nil. + (_usernameFromEntryId:): when the bytes array is nil or is empty, + we return a nil username. + (-modifyPermissions:withCount:andFlags:): ignore the presence of + certain fields but not others depending on the requested + modification. + 2012-03-12 Wolfgang Sourdeau * OpenChange/MAPIStoreGCSFolder.m (-lastMessageModificationTime): diff --git a/OpenChange/MAPIStoreFolder.m b/OpenChange/MAPIStoreFolder.m index 1fed249d2..9565288fe 100644 --- a/OpenChange/MAPIStoreFolder.m +++ b/OpenChange/MAPIStoreFolder.m @@ -768,9 +768,14 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe isAddition: (BOOL) isAddition withACLFolder: (SOGoFolder *) aclFolder { - if (isAddition) - [aclFolder addUserInAcls: user]; - [aclFolder setRoles: roles forUser: user]; + if (user) + { + if (isAddition) + [aclFolder addUserInAcls: user]; + [aclFolder setRoles: roles forUser: user]; + } + else + [self logWithFormat: @"user is nil, keeping intended entry intact"]; } - (void) setupVersionsMessage @@ -1412,20 +1417,25 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe NSString *username; struct ldb_context *samCtx; - bin32.cb = bin->cb; - bin32.lpb = bin->lpb; - - entryId = get_AddressBookEntryId (NULL, &bin32); - if (entryId) + if (bin && bin->cb) { - samCtx = [[self context] connectionInfo]->sam_ctx; - username = MAPIStoreSamDBUserAttribute (samCtx, @"legacyExchangeDN", - [NSString stringWithUTF8String: entryId->X500DN], - @"sAMAccountName"); + bin32.cb = bin->cb; + bin32.lpb = bin->lpb; + + entryId = get_AddressBookEntryId (NULL, &bin32); + if (entryId) + { + samCtx = [[self context] connectionInfo]->sam_ctx; + username = MAPIStoreSamDBUserAttribute (samCtx, @"legacyExchangeDN", + [NSString stringWithUTF8String: entryId->X500DN], + @"sAMAccountName"); + } + else + username = nil; + talloc_free (entryId); } else username = nil; - talloc_free (entryId); return username; } @@ -1437,12 +1447,19 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe NSUInteger count, max; MAPIStorePermissionEntry *entry; - max = [entries count]; - for (count = 0; !username && count < max; count++) + if (memberId == 0) + username = [[self aclFolder] defaultUserID]; + else if (memberId == ULLONG_MAX) + username = @"anonymous"; + else { - entry = [entries objectAtIndex: count]; - if ([entry memberId] == memberId) - username = [entry userId]; + max = [entries count]; + for (count = 0; !username && count < max; count++) + { + entry = [entries objectAtIndex: count]; + if ([entry memberId] == memberId) + username = [entry userId]; + } } return username; @@ -1472,7 +1489,7 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe NSString *permissionUser; NSArray *entries; NSArray *permissionRoles; - BOOL reset, isAdd; + BOOL reset, isAdd = NO, isDelete = NO, isModify = NO; SOGoFolder *aclFolder; aclFolder = [self aclFolder]; @@ -1490,7 +1507,13 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe permissionUser = nil; permissionRoles = nil; - isAdd = (currentPermission->PermissionDataFlags == ROW_ADD); + if (currentPermission->PermissionDataFlags == ROW_ADD) + isAdd = YES; + else if (currentPermission->PermissionDataFlags == ROW_MODIFY) + isModify = YES; + else + isDelete = YES; + for (propCount = 0; propCount < currentPermission->lpProps.cValues; propCount++) @@ -1499,16 +1522,19 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe switch (mapiValue->ulPropTag) { case PR_ENTRYID: - permissionUser - = [self _usernameFromEntryId: &mapiValue->value.bin]; + if (isAdd) + permissionUser + = [self _usernameFromEntryId: &mapiValue->value.bin]; break; case PR_MEMBER_ID: - permissionUser = [self _usernameFromMemberId: mapiValue->value.d - inEntries: entries]; + if (isModify || isDelete) + permissionUser = [self _usernameFromMemberId: mapiValue->value.d + inEntries: entries]; break; case PR_MEMBER_RIGHTS: - permissionRoles = [self - rolesForExchangeRights: mapiValue->value.l]; + if (isAdd || isModify) + permissionRoles + = [self rolesForExchangeRights: mapiValue->value.l]; break; default: if (mapiValue->ulPropTag != PR_MEMBER_NAME) From 7518c994e24469f4d70431f90637e9ae1043fc3e Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 13 Mar 2012 21:16:48 +0000 Subject: [PATCH 29/29] Monotone-Parent: e1a25e44c867d0cebafca83f2e8a1655f81674e6 Monotone-Revision: f9b18d8316354c8b95dc483c13880095f07294eb Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-03-13T21:16:48 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 3 +++ OpenChange/MAPIStoreCalendarFolder.m | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/ChangeLog b/ChangeLog index 42ba7cbb0..43d3f3334 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2012-03-13 Wolfgang Sourdeau + * OpenChange/MAPIStoreCalendarFolder.m + (-getPidTagDefaultPostMessageClass:inMemCtx:): new getter. + * OpenChange/MAPIStoreFolder.m (_modifyPermissionEntryForUser:withRoles:isAddition:withACLFolder:): skip any modification when user is nil. diff --git a/OpenChange/MAPIStoreCalendarFolder.m b/OpenChange/MAPIStoreCalendarFolder.m index 7b40d9735..f50b0358c 100644 --- a/OpenChange/MAPIStoreCalendarFolder.m +++ b/OpenChange/MAPIStoreCalendarFolder.m @@ -35,9 +35,11 @@ #import "MAPIStoreCalendarContext.h" #import "MAPIStoreCalendarMessage.h" #import "MAPIStoreCalendarMessageTable.h" +#import "NSString+MAPIStore.h" #import "MAPIStoreCalendarFolder.h" +#include #include #include @@ -162,4 +164,13 @@ [(SOGoAppointmentFolder *) sogoObject aclSQLListingFilter]]; } +- (int) getPidTagDefaultPostMessageClass: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + *data = [@"IPM.Appointment" asUnicodeInMemCtx: memCtx]; + + return MAPISTORE_SUCCESS; +} + + @end