From 6c0bef68bd45c7931cb8b7cb9163959e391a699f Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 9 Feb 2011 22:44:45 +0000 Subject: [PATCH 1/6] Monotone-Parent: 5d2d791e4a2a9e21320b1113d6e1aa60344fd002 Monotone-Revision: 6f77fc45fcd26193f857296861fb5fa0648c1e8e Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-02-09T22:44:45 Monotone-Branch: ca.inverse.sogo --- OpenChange/MAPIStoreMailMessageTable.m | 2 -- 1 file changed, 2 deletions(-) diff --git a/OpenChange/MAPIStoreMailMessageTable.m b/OpenChange/MAPIStoreMailMessageTable.m index cb8c148be..ceaad06df 100644 --- a/OpenChange/MAPIStoreMailMessageTable.m +++ b/OpenChange/MAPIStoreMailMessageTable.m @@ -145,7 +145,6 @@ static EOQualifier *nonDeletedQualifier = nil; [subject substringToIndex: colIdx]]; else stringValue = @""; - [self logWithFormat: @"subject prefix: %@", stringValue]; *data = [stringValue asUnicodeInMemCtx: memCtx]; break; case PR_NORMALIZED_SUBJECT_UNICODE: @@ -159,7 +158,6 @@ static EOQualifier *nonDeletedQualifier = nil; stringValue = subject; if (!stringValue) stringValue = @""; - [self logWithFormat: @"normalized subject: %@", stringValue]; *data = [stringValue asUnicodeInMemCtx: memCtx]; break; From c54b4e1eccc631fbefec8df019a57be380c8f987 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 9 Feb 2011 22:47:51 +0000 Subject: [PATCH 2/6] Monotone-Parent: 6f77fc45fcd26193f857296861fb5fa0648c1e8e Monotone-Revision: 25c0f3afc946800f9e114cf60bf63edd828745e3 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-02-09T22:47:51 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 6 ++++++ OpenChange/MAPIStoreMailMessageTable.m | 7 ------- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 64dd4ce43..33f4e95cb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-02-09 Wolfgang Sourdeau + + * OpenChange/MAPIStoreMailMessageTable.m + (-getChildProperty:forKey:withTag:): removed non-unicode string + proptags. + 2011-02-07 Wolfgang Sourdeau * OpenChange/MAPIStoreNotesMessageTable.m diff --git a/OpenChange/MAPIStoreMailMessageTable.m b/OpenChange/MAPIStoreMailMessageTable.m index ceaad06df..f0c3b63d4 100644 --- a/OpenChange/MAPIStoreMailMessageTable.m +++ b/OpenChange/MAPIStoreMailMessageTable.m @@ -268,11 +268,8 @@ static EOQualifier *nonDeletedQualifier = nil; break; /* TODO: the following are supposed to be display names, separated by a semicolumn */ - case PR_RECEIVED_BY_NAME: case PR_RECEIVED_BY_NAME_UNICODE: - case PR_RCVD_REPRESENTING_NAME: case PR_RCVD_REPRESENTING_NAME_UNICODE: - case PR_DISPLAY_TO: case PR_DISPLAY_TO_UNICODE: case PR_ORIGINAL_DISPLAY_TO_UNICODE: child = [self lookupChild: childKey]; @@ -281,7 +278,6 @@ static EOQualifier *nonDeletedQualifier = nil; stringValue = @""; *data = [stringValue asUnicodeInMemCtx: memCtx]; break; - case PR_DISPLAY_CC: case PR_DISPLAY_CC_UNICODE: case PR_ORIGINAL_DISPLAY_CC_UNICODE: child = [self lookupChild: childKey]; @@ -290,7 +286,6 @@ static EOQualifier *nonDeletedQualifier = nil; stringValue = @""; *data = [stringValue asUnicodeInMemCtx: memCtx]; break; - case PR_DISPLAY_BCC: case PR_DISPLAY_BCC_UNICODE: case PR_ORIGINAL_DISPLAY_BCC_UNICODE: stringValue = @""; @@ -325,7 +320,6 @@ static EOQualifier *nonDeletedQualifier = nil; } break; - case PR_BODY: case PR_BODY_UNICODE: { NSMutableArray *keys; @@ -434,7 +428,6 @@ static EOQualifier *nonDeletedQualifier = nil; case PR_RTF_IN_SYNC: *data = MAPIBoolValue (memCtx, NO); break; - case PR_INTERNET_MESSAGE_ID: case PR_INTERNET_MESSAGE_ID_UNICODE: child = [self lookupChild: childKey]; *data = [[child messageId] asUnicodeInMemCtx: memCtx]; From 465e03ad9cbe535b5a2c37ab4d2f1810d4920020 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 9 Feb 2011 22:52:44 +0000 Subject: [PATCH 3/6] Monotone-Parent: 25c0f3afc946800f9e114cf60bf63edd828745e3 Monotone-Revision: cb733881e889b29228b9fe08863399e209c1c838 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-02-09T22:52:44 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 8 +++++++- OpenChange/MAPIStoreMailMessageTable.m | 10 +++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 33f4e95cb..dd13f3229 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,7 +2,13 @@ * OpenChange/MAPIStoreMailMessageTable.m (-getChildProperty:forKey:withTag:): removed non-unicode string - proptags. + proptags. Added support for case + PR_RCVD_REPRESENTING_ADDRTYPE_UNICODE, + PR_RECEIVED_BY_ADDRTYPE_UNICODE, PR_SENDER_ADDRTYPE_UNICODE, + PR_ORIGINAL_AUTHOR_NAME_UNICODE, PR_SENDER_NAME_UNICODE, + PR_SENDER_EMAIL_ADDRESS_UNICODE, + PR_RECEIVED_BY_EMAIL_ADDRESS_UNICODE and + PR_RCVD_REPRESENTING_EMAIL_ADDRESS_UNICODE. 2011-02-07 Wolfgang Sourdeau diff --git a/OpenChange/MAPIStoreMailMessageTable.m b/OpenChange/MAPIStoreMailMessageTable.m index f0c3b63d4..a884dde10 100644 --- a/OpenChange/MAPIStoreMailMessageTable.m +++ b/OpenChange/MAPIStoreMailMessageTable.m @@ -259,17 +259,25 @@ static EOQualifier *nonDeletedQualifier = nil; break; case PR_SENT_REPRESENTING_ADDRTYPE_UNICODE: + case PR_RCVD_REPRESENTING_ADDRTYPE_UNICODE: + case PR_RECEIVED_BY_ADDRTYPE_UNICODE: + case PR_SENDER_ADDRTYPE_UNICODE: *data = [@"SMTP" asUnicodeInMemCtx: memCtx]; break; + case PR_ORIGINAL_AUTHOR_NAME_UNICODE: + case PR_SENDER_NAME_UNICODE: + case PR_SENDER_EMAIL_ADDRESS_UNICODE: case PR_SENT_REPRESENTING_EMAIL_ADDRESS_UNICODE: case PR_SENT_REPRESENTING_NAME_UNICODE: child = [self lookupChild: childKey]; *data = [[child from] asUnicodeInMemCtx: memCtx]; break; - /* TODO: the following are supposed to be display names, separated by a semicolumn */ + /* TODO: some of the following are supposed to be display names, separated by a semicolumn */ case PR_RECEIVED_BY_NAME_UNICODE: + case PR_RECEIVED_BY_EMAIL_ADDRESS_UNICODE: case PR_RCVD_REPRESENTING_NAME_UNICODE: + case PR_RCVD_REPRESENTING_EMAIL_ADDRESS_UNICODE: case PR_DISPLAY_TO_UNICODE: case PR_ORIGINAL_DISPLAY_TO_UNICODE: child = [self lookupChild: childKey]; From 11b792969d7f6765b5ecd7e301ad3370093b03c9 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 9 Feb 2011 22:56:03 +0000 Subject: [PATCH 4/6] Monotone-Parent: cb733881e889b29228b9fe08863399e209c1c838 Monotone-Revision: 834ab880181b91930d46cc8ba5f57844160ae395 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-02-09T22:56:03 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 2 ++ OpenChange/MAPIStoreMailMessageTable.m | 32 ++++---------------------- 2 files changed, 7 insertions(+), 27 deletions(-) diff --git a/ChangeLog b/ChangeLog index dd13f3229..129457cff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,8 @@ PR_SENDER_EMAIL_ADDRESS_UNICODE, PR_RECEIVED_BY_EMAIL_ADDRESS_UNICODE and PR_RCVD_REPRESENTING_EMAIL_ADDRESS_UNICODE. + Removed code returning MAPI_E_NOT_ENOUGH_MEMORY when content + values where larger than 3999 bytes. 2011-02-07 Wolfgang Sourdeau diff --git a/OpenChange/MAPIStoreMailMessageTable.m b/OpenChange/MAPIStoreMailMessageTable.m index a884dde10..9f9c23c8b 100644 --- a/OpenChange/MAPIStoreMailMessageTable.m +++ b/OpenChange/MAPIStoreMailMessageTable.m @@ -118,7 +118,7 @@ static EOQualifier *nonDeletedQualifier = nil; withTag: (enum MAPITAGS) propTag { SOGoMailObject *child; - NSString *childURL, *subject, *stringValue; + NSString *subject, *stringValue; NSInteger colIdx; enum MAPISTATUS rc; @@ -364,21 +364,9 @@ static EOQualifier *nonDeletedQualifier = nil; result = [[result valueForKey: @"RawResponse"] objectForKey: @"fetch"]; key = [[keys objectAtIndex: 0] objectForKey: @"key"]; content = [[result objectForKey: key] objectForKey: @"data"]; - if ([content length] > 3999) - { - childURL = [NSString stringWithFormat: @"%@%@", folderURL, childKey]; - [context registerValue: content - asProperty: propTag - forURL: childURL]; - *data = NULL; - rc = MAPI_E_NOT_ENOUGH_MEMORY; - } - else - { - stringValue = [[NSString alloc] initWithData: content - encoding: NSISOLatin1StringEncoding]; - *data = [stringValue asUnicodeInMemCtx: memCtx]; - } + stringValue = [[NSString alloc] initWithData: content + encoding: NSISOLatin1StringEncoding]; + *data = [stringValue asUnicodeInMemCtx: memCtx]; } else rc = MAPI_E_NOT_FOUND; @@ -409,17 +397,7 @@ static EOQualifier *nonDeletedQualifier = nil; @"fetch"]; key = [[keys objectAtIndex: 0] objectForKey: @"key"]; content = [[result objectForKey: key] objectForKey: @"data"]; - if ([content length] > 3999) - { - childURL = [NSString stringWithFormat: @"%@%@", folderURL, childKey]; - [context registerValue: content - asProperty: propTag - forURL: childURL]; - *data = NULL; - rc = MAPI_E_NOT_ENOUGH_MEMORY; - } - else - *data = [content asBinaryInMemCtx: memCtx]; + *data = [content asBinaryInMemCtx: memCtx]; } else { From 9b2eccf4799b44ca6f15b66d67acf109070bb2f9 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 9 Feb 2011 23:01:55 +0000 Subject: [PATCH 5/6] Monotone-Parent: 834ab880181b91930d46cc8ba5f57844160ae395 Monotone-Revision: ca6c0c42d5b2cb1a04fefe5bf8aac1760a5456a4 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-02-09T23:01:55 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 2 ++ OpenChange/MAPIStoreMailMessageTable.m | 2 ++ 2 files changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index 129457cff..70085e95f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -11,6 +11,8 @@ PR_RCVD_REPRESENTING_EMAIL_ADDRESS_UNICODE. Removed code returning MAPI_E_NOT_ENOUGH_MEMORY when content values where larger than 3999 bytes. + (_sortIdentifierForProperty:): enabled sorting on + PR_CLIENT_SUBMIT_TIME. 2011-02-07 Wolfgang Sourdeau diff --git a/OpenChange/MAPIStoreMailMessageTable.m b/OpenChange/MAPIStoreMailMessageTable.m index 9f9c23c8b..26c1dcddf 100644 --- a/OpenChange/MAPIStoreMailMessageTable.m +++ b/OpenChange/MAPIStoreMailMessageTable.m @@ -663,6 +663,8 @@ static EOQualifier *nonDeletedQualifier = nil; { knownProperties = [NSMutableDictionary new]; /* ARRIVAL, CC */ + [knownProperties setObject: @"DATE" + forKey: MAPIPropertyKey (PR_CLIENT_SUBMIT_TIME)]; [knownProperties setObject: @"DATE" forKey: MAPIPropertyKey (PR_MESSAGE_DELIVERY_TIME)]; [knownProperties setObject: @"FROM" From 61ea724f60ba3ebdb90ccba117d7980332956ad6 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 9 Feb 2011 23:11:28 +0000 Subject: [PATCH 6/6] Monotone-Parent: ca6c0c42d5b2cb1a04fefe5bf8aac1760a5456a4 Monotone-Revision: 9c93be42dce13d70eb5f0bc31e7ff8fff3aa82c3 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-02-09T23:11:28 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 6 ++++++ OpenChange/MAPIStoreMailMessageTable.m | 12 ++++++++++++ OpenChange/MAPIStoreMessageTable.m | 4 ---- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 70085e95f..54264be16 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2011-02-09 Wolfgang Sourdeau + * OpenChange/MAPIStoreMessageTable.m + (-getChildProperty:forKey:withTag:): removed PR_MESSAGE_CODEPAGE + and PR_INTERNET_CPID. + * OpenChange/MAPIStoreMailMessageTable.m (-getChildProperty:forKey:withTag:): removed non-unicode string proptags. Added support for case @@ -13,6 +17,8 @@ values where larger than 3999 bytes. (_sortIdentifierForProperty:): enabled sorting on PR_CLIENT_SUBMIT_TIME. + Added support for PR_INTERNET_CPID, currently returning "utf-8" + only (65001). 2011-02-07 Wolfgang Sourdeau diff --git a/OpenChange/MAPIStoreMailMessageTable.m b/OpenChange/MAPIStoreMailMessageTable.m index 26c1dcddf..bab300c5e 100644 --- a/OpenChange/MAPIStoreMailMessageTable.m +++ b/OpenChange/MAPIStoreMailMessageTable.m @@ -374,6 +374,18 @@ static EOQualifier *nonDeletedQualifier = nil; } break; + case PR_INTERNET_CPID: + /* ref: + 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 */ + *data = MAPILongValue(memCtx, 65001); + break; + case PR_HTML: { NSMutableArray *keys; diff --git a/OpenChange/MAPIStoreMessageTable.m b/OpenChange/MAPIStoreMessageTable.m index b91d26635..b7766a795 100644 --- a/OpenChange/MAPIStoreMessageTable.m +++ b/OpenChange/MAPIStoreMessageTable.m @@ -138,10 +138,6 @@ static MAPIStoreMapping *mapping; } *data = MAPILongLongValue (memCtx, mappingId); break; - case PR_MESSAGE_CODEPAGE: - case PR_INTERNET_CPID: - *data = MAPILongValue (memCtx, 1200); - break; case PR_MESSAGE_LOCALE_ID: *data = MAPILongValue (memCtx, 0x0409); break;