diff options
author | CodaFi <devteam.codafi@gmail.com> | 2013-09-12 19:24:56 -0600 |
---|---|---|
committer | CodaFi <devteam.codafi@gmail.com> | 2013-09-12 19:24:56 -0600 |
commit | 66e1f330f5543162b1c4fbe4ce0230d62bb1dbbb (patch) | |
tree | d47c1a72579c0fb061c613e7aafa082542c1d978 | |
parent | 380228c18a95ef51fa20fe6c080994366b4f4c35 (diff) | |
parent | c21519e14b6096be73bad7641dc745789e0fd461 (diff) |
Merge remote-tracking branch 'upstream/master'
24 files changed, 93 insertions, 68 deletions
diff --git a/build-mac/mailcore2.xcodeproj/project.pbxproj b/build-mac/mailcore2.xcodeproj/project.pbxproj index 01e8175d..c34b47a1 100755 --- a/build-mac/mailcore2.xcodeproj/project.pbxproj +++ b/build-mac/mailcore2.xcodeproj/project.pbxproj @@ -262,6 +262,10 @@ C68B2AEF1778A869005E61EF /* MCConnectionLogger.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C68B2AEB1778A589005E61EF /* MCConnectionLogger.h */; }; C68B2AF717797389005E61EF /* MCConnectionLoggerUtils.cc in Sources */ = {isa = PBXBuildFile; fileRef = C68B2AF517797389005E61EF /* MCConnectionLoggerUtils.cc */; }; C68B2AF817797389005E61EF /* MCConnectionLoggerUtils.cc in Sources */ = {isa = PBXBuildFile; fileRef = C68B2AF517797389005E61EF /* MCConnectionLoggerUtils.cc */; }; + C69BA85B17DEFCCB00D601B7 /* NSIndexSet+MCO.m in Sources */ = {isa = PBXBuildFile; fileRef = C69BA85A17DEFCCB00D601B7 /* NSIndexSet+MCO.m */; }; + C69BA85C17DEFCCB00D601B7 /* NSIndexSet+MCO.m in Sources */ = {isa = PBXBuildFile; fileRef = C69BA85A17DEFCCB00D601B7 /* NSIndexSet+MCO.m */; }; + C69BA85D17DEFD9A00D601B7 /* NSIndexSet+MCO.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C69BA85917DEFCCB00D601B7 /* NSIndexSet+MCO.h */; }; + C69BA85E17DEFD9F00D601B7 /* NSIndexSet+MCO.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C69BA85917DEFCCB00D601B7 /* NSIndexSet+MCO.h */; }; C6A81B931706840C00882C15 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C6A81B921706840C00882C15 /* UIKit.framework */; }; C6A81B941706840C00882C15 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C64EA78F169F259200778456 /* Foundation.framework */; }; C6A81B961706840C00882C15 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C6A81B951706840C00882C15 /* CoreGraphics.framework */; }; @@ -756,6 +760,7 @@ 943F1AA017D9736100F0C798 /* MCIMAPConnectOperation.h in CopyFiles */, 4BE4029217B548D900ECC5E4 /* MCIMAPQuotaOperation.h in CopyFiles */, 4BE4029117B548B900ECC5E4 /* MCOIMAPQuotaOperation.h in CopyFiles */, + C69BA85E17DEFD9F00D601B7 /* NSIndexSet+MCO.h in CopyFiles */, C6E665001790963E0063F2CF /* MCIMAPMessageRenderingOperation.h in CopyFiles */, DAE42E89178F7E1800E0DB8F /* MCOIMAPMessageRenderingOperation.h in CopyFiles */, C63D316617C997B400A4D993 /* MCOIMAPIdentity.h in CopyFiles */, @@ -991,6 +996,7 @@ C6BA2B141705F4E6003F0E9E /* MCOMessagePart.h in CopyFiles */, C6D6F95C171E5D65006F5B28 /* MCJSON.h in CopyFiles */, C6BA2B151705F4E6003F0E9E /* MCOIMAPFolderInfoOperation.h in CopyFiles */, + C69BA85D17DEFD9A00D601B7 /* NSIndexSet+MCO.h in CopyFiles */, C6BA2B161705F4E6003F0E9E /* MCOIMAPFetchMessagesOperation.h in CopyFiles */, C6BA2B171705F4E6003F0E9E /* MCOIMAPCopyMessagesOperation.h in CopyFiles */, C6D6F95D171E5D67006F5B28 /* MCMD5.h in CopyFiles */, @@ -1395,6 +1401,8 @@ C68B2AEB1778A589005E61EF /* MCConnectionLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCConnectionLogger.h; sourceTree = "<group>"; }; C68B2AF517797389005E61EF /* MCConnectionLoggerUtils.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCConnectionLoggerUtils.cc; sourceTree = "<group>"; }; C68B2AF617797389005E61EF /* MCConnectionLoggerUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCConnectionLoggerUtils.h; sourceTree = "<group>"; }; + C69BA85917DEFCCB00D601B7 /* NSIndexSet+MCO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSIndexSet+MCO.h"; sourceTree = "<group>"; }; + C69BA85A17DEFCCB00D601B7 /* NSIndexSet+MCO.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSIndexSet+MCO.m"; sourceTree = "<group>"; }; C6A81B911706840C00882C15 /* test-ios.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "test-ios.app"; sourceTree = BUILT_PRODUCTS_DIR; }; C6A81B921706840C00882C15 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; C6A81B951706840C00882C15 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; @@ -2129,6 +2137,8 @@ C6F5B9F316FEAC6C00D9DABD /* MCOIndexSet.mm */, C6CCC5C616FFE5190077A5FC /* MCORange.mm */, C6CCC5C816FFE54F0077A5FC /* MCORange.h */, + C69BA85917DEFCCB00D601B7 /* NSIndexSet+MCO.h */, + C69BA85A17DEFCCB00D601B7 /* NSIndexSet+MCO.m */, ); path = utils; sourceTree = "<group>"; @@ -2531,6 +2541,7 @@ C64EA81116A299ED00778456 /* MCIMAPAppendMessageOperation.cc in Sources */, C64EA81416A29A2300778456 /* MCIMAPCopyMessagesOperation.cc in Sources */, C64EA81716A29A8700778456 /* MCIMAPExpungeOperation.cc in Sources */, + C69BA85B17DEFCCB00D601B7 /* NSIndexSet+MCO.m in Sources */, C64EA81A16A29AF200778456 /* MCIMAPFetchMessagesOperation.cc in Sources */, C64EA81D16A29DC500778456 /* MCIMAPFetchContentOperation.cc in Sources */, C64EA82016A29E4100778456 /* MCIMAPStoreFlagsOperation.cc in Sources */, @@ -2727,6 +2738,7 @@ C6BA2BCA1705F4E6003F0E9E /* MCIMAPAppendMessageOperation.cc in Sources */, C6BA2BCB1705F4E6003F0E9E /* MCIMAPCopyMessagesOperation.cc in Sources */, C6BA2BCC1705F4E6003F0E9E /* MCIMAPExpungeOperation.cc in Sources */, + C69BA85C17DEFCCB00D601B7 /* NSIndexSet+MCO.m in Sources */, C6BA2BCD1705F4E6003F0E9E /* MCIMAPFetchMessagesOperation.cc in Sources */, C6BA2BCE1705F4E6003F0E9E /* MCIMAPFetchContentOperation.cc in Sources */, C6BA2BCF1705F4E6003F0E9E /* MCIMAPStoreFlagsOperation.cc in Sources */, diff --git a/src/async/pop/MCPOPFetchHeaderOperation.cc b/src/async/pop/MCPOPFetchHeaderOperation.cc index 3c6360a8..60a0e8a6 100644 --- a/src/async/pop/MCPOPFetchHeaderOperation.cc +++ b/src/async/pop/MCPOPFetchHeaderOperation.cc @@ -44,6 +44,8 @@ void POPFetchHeaderOperation::main() { ErrorCode error; mHeader = session()->session()->fetchHeader(mMessageIndex, &error); - mHeader->retain(); + if (mHeader != NULL) { + mHeader->retain(); + } setError(error); } diff --git a/src/cmake/objc.cmake b/src/cmake/objc.cmake index e3e461c9..35dfb221 100644 --- a/src/cmake/objc.cmake +++ b/src/cmake/objc.cmake @@ -82,6 +82,7 @@ set(objc_utils_files objc/utils/NSObject+MCO.mm objc/utils/NSString+MCO.mm objc/utils/NSValue+MCO.mm + objc/utils/NSIndexSet+MCO.m ) IF(APPLE) diff --git a/src/cmake/public-headers.cmake b/src/cmake/public-headers.cmake index 8395072a..0aad67f6 100644 --- a/src/cmake/public-headers.cmake +++ b/src/cmake/public-headers.cmake @@ -113,6 +113,7 @@ objc/utils/MCOOperation.h objc/abstract/MCOConstants.h objc/utils/MCOIndexSet.h objc/utils/MCORange.h +objc/utils/NSIndexSet+MCO.h objc/abstract/MCOAbstract.h objc/abstract/MCOAbstractMessage.h objc/abstract/MCOAbstractMessagePart.h diff --git a/src/core/abstract/MCMessageHeader.cc b/src/core/abstract/MCMessageHeader.cc index 34aba8f5..a902494f 100644 --- a/src/core/abstract/MCMessageHeader.cc +++ b/src/core/abstract/MCMessageHeader.cc @@ -1122,9 +1122,6 @@ void MessageHeader::importIMAPInternalDate(struct mailimap_date_time * date) Array * MessageHeader::recipientWithReplyAll(bool replyAll, bool includeTo, bool includeCc, Array * senderEmails) { - Set * senderEmailsSet; - senderEmailsSet = Set::setWithArray(senderEmails); - bool hasCc; bool hasTo; Set * addedAddresses; diff --git a/src/core/basetypes/MCBase64.c b/src/core/basetypes/MCBase64.c index 87ee97bd..5ebe5bc9 100644 --- a/src/core/basetypes/MCBase64.c +++ b/src/core/basetypes/MCBase64.c @@ -67,10 +67,9 @@ char * MCEncodeBase64(const char * in, int len) char * MCDecodeBase64(const char * in, int len) { char * output, * out; - int i, c1, c2, c3, c4, out_len; + int i, c1, c2, c3, c4; int max_out_len; - out_len = 0; max_out_len = ((len + 3) * 4 / 3) + 1; output = malloc(max_out_len); diff --git a/src/core/basetypes/MCConnectionLoggerUtils.cc b/src/core/basetypes/MCConnectionLoggerUtils.cc index 234713e7..08ba2334 100644 --- a/src/core/basetypes/MCConnectionLoggerUtils.cc +++ b/src/core/basetypes/MCConnectionLoggerUtils.cc @@ -15,32 +15,25 @@ mailcore::ConnectionLogType mailcore::getConnectionType(int log_type) { ConnectionLogType type = (ConnectionLogType) -1; - bool isBuffer = false; switch (log_type) { case MAILSTREAM_LOG_TYPE_ERROR_PARSE: type = ConnectionLogTypeErrorParse; - isBuffer = true; break; case MAILSTREAM_LOG_TYPE_ERROR_RECEIVED: type = ConnectionLogTypeErrorReceived; - isBuffer = true; break; case MAILSTREAM_LOG_TYPE_ERROR_SENT: type = ConnectionLogTypeErrorSent; - isBuffer = true; break; case MAILSTREAM_LOG_TYPE_DATA_RECEIVED: type = ConnectionLogTypeReceived; - isBuffer = true; break; case MAILSTREAM_LOG_TYPE_DATA_SENT: type = ConnectionLogTypeSent; - isBuffer = true; break; case MAILSTREAM_LOG_TYPE_DATA_SENT_PRIVATE: type = ConnectionLogTypeSentPrivate; - isBuffer = true; break; } return type; diff --git a/src/core/basetypes/MCIndexSet.cc b/src/core/basetypes/MCIndexSet.cc index 59596dfd..db25f5eb 100644 --- a/src/core/basetypes/MCIndexSet.cc +++ b/src/core/basetypes/MCIndexSet.cc @@ -217,7 +217,9 @@ void IndexSet::addRange(Range range) if (rangeIndex > 0) { tryToMergeAdjacentRanges(rangeIndex - 1); } - tryToMergeAdjacentRanges(rangeIndex); + if (rangeIndex < mCount - 1) { + tryToMergeAdjacentRanges(rangeIndex); + } } void IndexSet::tryToMergeAdjacentRanges(unsigned int rangeIndex) diff --git a/src/core/basetypes/MCOperationQueue.cc b/src/core/basetypes/MCOperationQueue.cc index 2c00f930..c5270161 100644 --- a/src/core/basetypes/MCOperationQueue.cc +++ b/src/core/basetypes/MCOperationQueue.cc @@ -140,15 +140,12 @@ void OperationQueue::checkRunningOnMainThread(void * context) void OperationQueue::checkRunningAfterDelay(void * context) { - bool quitting = false; - pthread_mutex_lock(&mLock); if (!mQuitting) { if (mOperations->count() == 0) { MCLog("trying to quit %p", this); mailsem_up(mOperationSem); mQuitting = true; - quitting = true; } } pthread_mutex_unlock(&mLock); diff --git a/src/core/basetypes/MCString.cc b/src/core/basetypes/MCString.cc index 43c9e7ae..d8863f44 100644 --- a/src/core/basetypes/MCString.cc +++ b/src/core/basetypes/MCString.cc @@ -589,10 +589,6 @@ static char * extract_subject(char * str, int keep_bracket) */ while (len > 0) { - int chg; - - chg = 0; - /* subj-trailer = "(fwd)" / WSP */ if (subj[len - 1] == ' ') { subj[len - 1] = '\0'; @@ -655,15 +651,10 @@ static char * extract_subject(char * str, int keep_bracket) */ if (len >= 5) { - size_t saved_begin; - - saved_begin = begin; if (strncasecmp(subj + begin, "[fwd:", 5) == 0) { begin += 5; - if (subj[len - 1] != ']') - saved_begin = begin; - else { + if (subj[len - 1] == ']') { subj[len - 1] = '\0'; len --; do_repeat_6 = 1; diff --git a/src/core/imap/MCIMAPSession.cc b/src/core/imap/MCIMAPSession.cc index 31bbbc62..4d1905a9 100755 --- a/src/core/imap/MCIMAPSession.cc +++ b/src/core/imap/MCIMAPSession.cc @@ -214,17 +214,12 @@ static int compareValuesUnsignedLong(void * value1, void * value2, void * contex static struct mailimap_set * setFromArray(Array * array) { - unsigned int currentIndex; - unsigned int currentFirst; - unsigned int currentValue; - unsigned int lastValue; + unsigned int currentIndex = 0; + unsigned int currentFirst = 0; + unsigned int currentValue = 0; + unsigned int lastValue = 0; struct mailimap_set * imap_set; - currentFirst = 0; - currentValue = 0; - lastValue = 0; - currentIndex = 0; - array = array->sortedArray(compareValuesUnsignedLong, NULL); imap_set = mailimap_set_new_empty(); diff --git a/src/core/provider/MCNetService.cc b/src/core/provider/MCNetService.cc index f760dc61..77a21ce2 100644 --- a/src/core/provider/MCNetService.cc +++ b/src/core/provider/MCNetService.cc @@ -102,7 +102,7 @@ ConnectionType NetService::connectionType() String * NetService::normalizedHostnameWithEmail(String * email) { Array *components = email->componentsSeparatedByString(MCSTR("@")); - String *hostname = (String *) mHostname->copy(); + String *hostname = (String *) mHostname->copy()->autorelease(); if (components->count() != 0) { hostname->replaceOccurrencesOfString(MCSTR("{domain}"), (String *) components->lastObject()); return hostname; diff --git a/src/core/security/MCCertificateUtils.cc b/src/core/security/MCCertificateUtils.cc index f2a63907..00f4ed9e 100644 --- a/src/core/security/MCCertificateUtils.cc +++ b/src/core/security/MCCertificateUtils.cc @@ -53,6 +53,10 @@ bool mailcore::checkCertificate(mailstream * stream, String * hostname) } status = SecTrustEvaluate(trust, &trustResult); + if (status != noErr) { + goto free_certs; + } + switch (trustResult) { case kSecTrustResultUnspecified: case kSecTrustResultProceed: diff --git a/src/core/zip/MiniZip/unzip.c b/src/core/zip/MiniZip/unzip.c index a9a9b5ab..6093fb28 100644 --- a/src/core/zip/MiniZip/unzip.c +++ b/src/core/zip/MiniZip/unzip.c @@ -725,10 +725,7 @@ local int unzlocal_GetCurrentFileInfoInternal (file, if ((file_info.size_file_comment>0) && (commentBufferSize>0)) if (ZREAD(s->z_filefunc, s->filestream,szComment,uSizeRead)!=uSizeRead) err=UNZ_ERRNO; - lSeek+=file_info.size_file_comment - uSizeRead; } - else - lSeek+=file_info.size_file_comment; if ((err==UNZ_OK) && (pfile_info!=NULL)) *pfile_info=file_info; @@ -1116,10 +1113,6 @@ extern int ZEXPORT unzOpenCurrentFile3 (file, method, level, raw, password) } } - if ((s->cur_file_info.compression_method!=0) && - (s->cur_file_info.compression_method!=Z_DEFLATED)) - err=UNZ_BADZIPFILE; - pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc; pfile_in_zip_read_info->crc32=0; pfile_in_zip_read_info->compression_method = diff --git a/src/core/zip/MiniZip/zip.c b/src/core/zip/MiniZip/zip.c index 76ac9cf1..b7d2f258 100644 --- a/src/core/zip/MiniZip/zip.c +++ b/src/core/zip/MiniZip/zip.c @@ -604,6 +604,7 @@ extern zipFile ZEXPORT zipOpen2 (pathname, append, globalcomment, pzlib_filefunc if (err!=ZIP_OK) { ZCLOSE(ziinit.z_filefunc, ziinit.filestream); + TRYFREE(zi); return NULL; } @@ -1045,8 +1046,7 @@ extern int ZEXPORT zipCloseFileInZipRaw (file, uncompressed_size, crc32) uLong uTotalOutBefore; if (zi->ci.stream.avail_out == 0) { - if (zipFlushWriteBuffer(zi) == ZIP_ERRNO) - err = ZIP_ERRNO; + zipFlushWriteBuffer(zi); zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; zi->ci.stream.next_out = zi->ci.buffered_data; } diff --git a/src/objc/imap/MCOIMAPSession.h b/src/objc/imap/MCOIMAPSession.h index f4c6b85b..0759f714 100755 --- a/src/objc/imap/MCOIMAPSession.h +++ b/src/objc/imap/MCOIMAPSession.h @@ -145,16 +145,6 @@ - (MCOIMAPFolderInfoOperation *) folderInfoOperation:(NSString *)folder; /** - Returns an operation that gets the list of subscribed folders. - - MCOIMAPFetchFoldersOperation * op = [session fetchAllFoldersOperation]; - [op start:^(NSError * error, NSArray * folders) { - ... - }]; -*/ - - -/** Returns an operation that retrieves folder status (like UIDNext - Unseen -) MCOIMAPFolderStatusOperation * op = [session folderStatusOperation:@"INBOX"]; @@ -170,14 +160,12 @@ /** Returns an operation that gets the list of subscribed folders. - MCOIMAPFetchFoldersOperation * op = [session fetchAllFoldersOperation]; + MCOIMAPFetchFoldersOperation * op = [session fetchSubscribedFoldersOperation]; [op start:^(NSError * error, NSArray * folders) { ... }]; */ - - - (MCOIMAPFetchFoldersOperation *) fetchSubscribedFoldersOperation; /** diff --git a/src/objc/provider/MCOMailProvider.mm b/src/objc/provider/MCOMailProvider.mm index e35eaec5..da328dad 100644 --- a/src/objc/provider/MCOMailProvider.mm +++ b/src/objc/provider/MCOMailProvider.mm @@ -36,7 +36,7 @@ + (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object { mailcore::MailProvider * provider = (mailcore::MailProvider *) object; - return [[self alloc] initWithMCProvider:provider]; + return [[[self alloc] initWithMCProvider:provider] autorelease]; } - (id) initWithInfo:(NSDictionary *)info diff --git a/src/objc/provider/MCONetService.mm b/src/objc/provider/MCONetService.mm index 260cb45f..e24ec909 100644 --- a/src/objc/provider/MCONetService.mm +++ b/src/objc/provider/MCONetService.mm @@ -79,14 +79,6 @@ MCO_OBJC_SYNTHESIZE_SCALAR(MCOConnectionType, mailcore::ConnectionType, setConne - (NSString *) hostnameWithEmail:(NSString *)email { - NSString *result = nil; - NSArray *components = [email componentsSeparatedByString:@"@"]; - if (components.count == 0) { - return self.hostname; - } - else { - result = [self.hostname stringByReplacingOccurrencesOfString:@"{domain}" withString:[components lastObject]]; - } return [NSString mco_stringWithMCString:_netService->normalizedHostnameWithEmail(email.mco_mcString)]; } diff --git a/src/objc/utils/MCOIndexSet.h b/src/objc/utils/MCOIndexSet.h index d80aa322..2bb2684e 100644 --- a/src/objc/utils/MCOIndexSet.h +++ b/src/objc/utils/MCOIndexSet.h @@ -57,6 +57,9 @@ /** Enumerates all the indexes of the index set.*/ - (void) enumerateIndexes:(void (^)(uint64_t idx))block; +/** Returns an NSIndexSet from a MCOIndexSet */ +- (NSIndexSet *) nsIndexSet; + @end #endif diff --git a/src/objc/utils/MCOIndexSet.mm b/src/objc/utils/MCOIndexSet.mm index 628ae23f..156be13e 100644 --- a/src/objc/utils/MCOIndexSet.mm +++ b/src/objc/utils/MCOIndexSet.mm @@ -147,4 +147,14 @@ MCO_SYNTHESIZE_NSCODING } } +- (NSIndexSet *) nsIndexSet +{ + NSMutableIndexSet * result = [NSMutableIndexSet indexSet]; + MCORange * allRanges = [self allRanges]; + for(unsigned int i = 0 ; i < [self rangesCount] ; i ++) { + [result addIndexesInRange:NSMakeRange(allRanges[i].location, allRanges[i].length)]; + } + return result; +} + @end diff --git a/src/objc/utils/MCOUtils.h b/src/objc/utils/MCOUtils.h index 3a2c8d82..e2f2e69c 100644 --- a/src/objc/utils/MCOUtils.h +++ b/src/objc/utils/MCOUtils.h @@ -23,5 +23,6 @@ #import <MailCore/MCOConstants.h> #import <MailCore/MCOIndexSet.h> #import <MailCore/MCORange.h> +#import <MailCore/NSIndexSet+MCO.h> #endif diff --git a/src/objc/utils/NSError+MCO.mm b/src/objc/utils/NSError+MCO.mm index b8ab06e9..8b903043 100644 --- a/src/objc/utils/NSError+MCO.mm +++ b/src/objc/utils/NSError+MCO.mm @@ -64,6 +64,7 @@ static NSString * MCOLocalizedDescriptionTable[] = { NSError *error = [NSError errorWithDomain:MCOErrorDomain code:(int)code userInfo:userInfo]; + [userInfo release]; return error; } @end diff --git a/src/objc/utils/NSIndexSet+MCO.h b/src/objc/utils/NSIndexSet+MCO.h new file mode 100644 index 00000000..66aa5229 --- /dev/null +++ b/src/objc/utils/NSIndexSet+MCO.h @@ -0,0 +1,18 @@ +// +// NSIndexSet+MCO.h +// mailcore2 +// +// Created by Hoa V. DINH on 9/10/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import <Foundation/Foundation.h> + +@class MCOIndexSet; + +@interface NSIndexSet (MCO) + +/** Returns a MCOIndexSet from an NSIndexSet */ +- (MCOIndexSet *) mcoIndexSet; + +@end diff --git a/src/objc/utils/NSIndexSet+MCO.m b/src/objc/utils/NSIndexSet+MCO.m new file mode 100644 index 00000000..dd2b83d0 --- /dev/null +++ b/src/objc/utils/NSIndexSet+MCO.m @@ -0,0 +1,25 @@ +// +// NSIndexSet+MCO.m +// mailcore2 +// +// Created by Hoa V. DINH on 9/10/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "NSIndexSet+MCO.h" +#import "MCOIndexSet.h" + +@implementation NSIndexSet (MCO) + +- (MCOIndexSet *) mcoIndexSet +{ + MCOIndexSet * result = [MCOIndexSet indexSet];; + + [self enumerateRangesUsingBlock:^(NSRange range, BOOL * stop) { + [result addRange:MCORangeMake(range.location, range.length)]; + }]; + + return result; +} + +@end |