diff options
Diffstat (limited to 'src')
34 files changed, 35 insertions, 215 deletions
diff --git a/src/core/abstract/MCAbstractMessage.cc b/src/core/abstract/MCAbstractMessage.cc index 00a4b9b9..f1768aec 100644 --- a/src/core/abstract/MCAbstractMessage.cc +++ b/src/core/abstract/MCAbstractMessage.cc @@ -39,13 +39,6 @@ String * AbstractMessage::description() } } -#if 0 -String * AbstractMessage::className() -{ - return MCSTR("MessageHeader"); -} -#endif - Object * AbstractMessage::copy() { return new AbstractMessage(this); diff --git a/src/core/abstract/MCAbstractMessagePart.cc b/src/core/abstract/MCAbstractMessagePart.cc index 6939d060..98acec98 100644 --- a/src/core/abstract/MCAbstractMessagePart.cc +++ b/src/core/abstract/MCAbstractMessagePart.cc @@ -37,13 +37,6 @@ String * AbstractMessagePart::description() return result; } -#if 0 -String * AbstractMessagePart::className() -{ - return MCSTR("AbstractMessagePart"); -} -#endif - Object * AbstractMessagePart::copy() { return new AbstractMessagePart(this); diff --git a/src/core/abstract/MCAbstractMultipart.cc b/src/core/abstract/MCAbstractMultipart.cc index fa48d959..207b2962 100644 --- a/src/core/abstract/MCAbstractMultipart.cc +++ b/src/core/abstract/MCAbstractMultipart.cc @@ -65,13 +65,6 @@ String * AbstractMultipart::description() return result; } -#if 0 -String * AbstractMultipart::className() -{ - return MCSTR("AbstractMultipart"); -} -#endif - Object * AbstractMultipart::copy() { return new AbstractMultipart(this); diff --git a/src/core/abstract/MCAbstractPart.cc b/src/core/abstract/MCAbstractPart.cc index 30c4c8f0..b2e6281d 100644 --- a/src/core/abstract/MCAbstractPart.cc +++ b/src/core/abstract/MCAbstractPart.cc @@ -13,6 +13,7 @@ AbstractPart::AbstractPart() AbstractPart::AbstractPart(AbstractPart * other) { init(); + setUniqueID(other->mUniqueID); setFilename(other->mFilename); setMimeType(other->mMimeType); setCharset(other->mCharset); @@ -24,6 +25,7 @@ AbstractPart::AbstractPart(AbstractPart * other) void AbstractPart::init() { + mUniqueID = NULL; mFilename = NULL; mMimeType = NULL; mCharset = NULL; @@ -35,6 +37,7 @@ void AbstractPart::init() AbstractPart::~AbstractPart() { + MC_SAFE_RELEASE(mUniqueID); MC_SAFE_RELEASE(mFilename); MC_SAFE_RELEASE(mMimeType); MC_SAFE_RELEASE(mCharset); @@ -67,13 +70,6 @@ String * AbstractPart::description() return result; } -#if 0 -String * AbstractPart::className() -{ - return MCSTR("AbstractPart"); -} -#endif - Object * AbstractPart::copy() { return new AbstractPart(this); @@ -89,6 +85,16 @@ void AbstractPart::setPartType(PartType type) mPartType = type; } +String * AbstractPart::uniqueID() +{ + return mUniqueID; +} + +void AbstractPart::setUniqueID(String * uniqueID) +{ + MC_SAFE_REPLACE_COPY(String, mUniqueID, uniqueID); +} + String * AbstractPart::filename() { return mFilename; diff --git a/src/core/abstract/MCAbstractPart.h b/src/core/abstract/MCAbstractPart.h index f7b29ced..db034654 100644 --- a/src/core/abstract/MCAbstractPart.h +++ b/src/core/abstract/MCAbstractPart.h @@ -28,6 +28,9 @@ namespace mailcore { virtual String * charset(); virtual void setCharset(String * charset); + virtual String * uniqueID(); + virtual void setUniqueID(String * uniqueID); + virtual String * contentID(); virtual void setContentID(String * contentID); @@ -49,6 +52,7 @@ namespace mailcore { virtual Object * copy(); private: + String * mUniqueID; String * mFilename; String * mMimeType; String * mCharset; diff --git a/src/core/abstract/MCAddress.cc b/src/core/abstract/MCAddress.cc index 25bed974..2ef1cd2b 100644 --- a/src/core/abstract/MCAddress.cc +++ b/src/core/abstract/MCAddress.cc @@ -177,13 +177,6 @@ String * Address::description() return result; } -#if 0 -String * Address::className() -{ - return MCSTR("Address"); -} -#endif - bool Address::isEqual(Object * otherObject) { Address * otherAddress = (Address *) otherObject; diff --git a/src/core/abstract/MCMessageHeader.cc b/src/core/abstract/MCMessageHeader.cc index 765bc085..b0574293 100644 --- a/src/core/abstract/MCMessageHeader.cc +++ b/src/core/abstract/MCMessageHeader.cc @@ -154,13 +154,6 @@ String * MessageHeader::description() return result; } -#if 0 -String * MessageHeader::className() -{ - return MCSTR("MessageHeader"); -} -#endif - Object * MessageHeader::copy() { return new MessageHeader(this); diff --git a/src/core/basetypes/MCArray.cc b/src/core/basetypes/MCArray.cc index 212aa4ed..d457ece5 100644 --- a/src/core/basetypes/MCArray.cc +++ b/src/core/basetypes/MCArray.cc @@ -48,13 +48,6 @@ Array * Array::arrayWithObject(Object * obj) return (Array *) result->autorelease(); } -#if 0 -String * Array::className() -{ - return MCSTR("Array"); -} -#endif - String * Array::description() { String * result = String::string(); diff --git a/src/core/basetypes/MCData.cc b/src/core/basetypes/MCData.cc index c0f7d908..f98f57c7 100644 --- a/src/core/basetypes/MCData.cc +++ b/src/core/basetypes/MCData.cc @@ -110,13 +110,6 @@ void Data::setData(Data * otherData) appendData(otherData); } -#if 0 -String * Data::className() -{ - return MCSTR("Data"); -} -#endif - String * Data::description() { return String::stringWithUTF8Format("<%s:%p %i bytes>", MCUTF8(className()), this, length()); diff --git a/src/core/basetypes/MCHashMap.cc b/src/core/basetypes/MCHashMap.cc index 8dcf0f30..164198f5 100644 --- a/src/core/basetypes/MCHashMap.cc +++ b/src/core/basetypes/MCHashMap.cc @@ -93,13 +93,6 @@ HashMap * HashMap::hashMap() return (HashMap *) result->autorelease(); } -#if 0 -String * HashMap::className() -{ - return MCSTR("HashMap"); -} -#endif - String * HashMap::description() { String * result = String::string(); diff --git a/src/core/basetypes/MCObject.cc b/src/core/basetypes/MCObject.cc index 220a5a16..1665e1ee 100644 --- a/src/core/basetypes/MCObject.cc +++ b/src/core/basetypes/MCObject.cc @@ -11,9 +11,12 @@ #include "MCUtils.h" #include "MCAssert.h" #include "MCMainThread.h" +#include "MCLog.h" using namespace mailcore; +bool mailcore::zombieEnabled = 0; + Object::Object() { init(); @@ -55,9 +58,13 @@ void Object::release() if (mCounter == 0) { shouldRelease = true; } + if (mCounter < 0) { + MCLog("release too much %p %s", this, MCUTF8(className())); + MCAssert(0); + } pthread_mutex_unlock(&mLock); - if (shouldRelease) { + if (shouldRelease && !zombieEnabled) { //MCLog("dealloc %s", className()->description()->UTF8Characters()); delete this; } @@ -73,17 +80,9 @@ String * Object::className() { int status; char * unmangled = abi::__cxa_demangle(typeid(* this).name(), NULL, NULL, &status); - //return mailcore::String::uniquedStringWithUTF8Characters(typeid(* this).name()); return mailcore::String::uniquedStringWithUTF8Characters(unmangled); } -/* -String * Object::className() -{ - return MCSTR("Object"); -} -*/ - String * Object::description() { return String::stringWithUTF8Format("<%s:%p>", className()->UTF8Characters(), this); diff --git a/src/core/basetypes/MCObject.h b/src/core/basetypes/MCObject.h index beda7471..caeded70 100644 --- a/src/core/basetypes/MCObject.h +++ b/src/core/basetypes/MCObject.h @@ -8,6 +8,8 @@ namespace mailcore { + extern bool zombieEnabled; + class String; class Object { diff --git a/src/core/basetypes/MCSet.cc b/src/core/basetypes/MCSet.cc index fcda7f62..d3d14dc8 100644 --- a/src/core/basetypes/MCSet.cc +++ b/src/core/basetypes/MCSet.cc @@ -42,13 +42,6 @@ Set * Set::setWithArray(Array * objects) return (Set *) result->autorelease(); } -#if 0 -String * Set::className() -{ - return MCSTR("Set"); -} -#endif - String * Set::description() { String * result = String::string(); diff --git a/src/core/basetypes/MCString.cc b/src/core/basetypes/MCString.cc index c371a88b..97b6d7d4 100644 --- a/src/core/basetypes/MCString.cc +++ b/src/core/basetypes/MCString.cc @@ -953,13 +953,6 @@ void String::setCharacters(const UChar * unicodeCharacters) appendCharacters(unicodeCharacters); } -#if 0 -String * String::className() -{ - return MCSTR("String"); -} -#endif - String * String::description() { return this; diff --git a/src/core/basetypes/MCUtils.h b/src/core/basetypes/MCUtils.h index 9e3de1ac..30b0cefd 100644 --- a/src/core/basetypes/MCUtils.h +++ b/src/core/basetypes/MCUtils.h @@ -33,6 +33,8 @@ #define MMCUTF8(str) MCUTF8(str) #define MCUTF8DESC(obj) ((obj) != NULL ? (obj)->description()->UTF8Characters() : NULL ) +#define MCLOCALIZEDSTRING(key) key + #endif #endif diff --git a/src/core/basetypes/MCValue.cc b/src/core/basetypes/MCValue.cc index d275d3df..b450e3e3 100644 --- a/src/core/basetypes/MCValue.cc +++ b/src/core/basetypes/MCValue.cc @@ -94,13 +94,6 @@ String * Value::description() } } -#if 0 -String * Value::className() -{ - return MCSTR("Value"); -} -#endif - bool Value::isEqual(Object * otherObject) { Value * otherValue = (Value *) otherObject; diff --git a/src/core/imap/MCIMAPFolder.cc b/src/core/imap/MCIMAPFolder.cc index 0f1b2105..e8f31959 100644 --- a/src/core/imap/MCIMAPFolder.cc +++ b/src/core/imap/MCIMAPFolder.cc @@ -27,13 +27,6 @@ IMAPFolder::~IMAPFolder() MC_SAFE_RELEASE(mPath); } -#if 0 -String * IMAPFolder::className() -{ - return MCSTR("IMAPFolder"); -} -#endif - Object * IMAPFolder::copy() { return new IMAPFolder(this); diff --git a/src/core/imap/MCIMAPMessage.cc b/src/core/imap/MCIMAPMessage.cc index faf91c66..6d8311ed 100644 --- a/src/core/imap/MCIMAPMessage.cc +++ b/src/core/imap/MCIMAPMessage.cc @@ -34,13 +34,6 @@ IMAPMessage::~IMAPMessage() MC_SAFE_RELEASE(mLabels); } -#if 0 -String * IMAPMessage::className() -{ - return MCSTR("IMAPMessage"); -} -#endif - Object * IMAPMessage::copy() { return new IMAPMessage(this); diff --git a/src/core/imap/MCIMAPMessagePart.cc b/src/core/imap/MCIMAPMessagePart.cc index 31a6f7e5..b250ef4b 100644 --- a/src/core/imap/MCIMAPMessagePart.cc +++ b/src/core/imap/MCIMAPMessagePart.cc @@ -14,13 +14,6 @@ IMAPMessagePart::~IMAPMessagePart() { } -#if 0 -String * IMAPMessagePart::className() -{ - return MCSTR("IMAPMessagePart"); -} -#endif - Object * IMAPMessagePart::copy() { return new IMAPMessagePart(this); diff --git a/src/core/imap/MCIMAPMultipart.cc b/src/core/imap/MCIMAPMultipart.cc index a941cbc4..63a3384f 100644 --- a/src/core/imap/MCIMAPMultipart.cc +++ b/src/core/imap/MCIMAPMultipart.cc @@ -14,13 +14,6 @@ IMAPMultipart::~IMAPMultipart() { } -#if 0 -String * IMAPMultipart::className() -{ - return MCSTR("IMAPMultipart"); -} -#endif - Object * IMAPMultipart::copy() { return new IMAPMultipart(this); diff --git a/src/core/imap/MCIMAPNamespace.cc b/src/core/imap/MCIMAPNamespace.cc index b18752e4..c1c430fa 100644 --- a/src/core/imap/MCIMAPNamespace.cc +++ b/src/core/imap/MCIMAPNamespace.cc @@ -26,13 +26,6 @@ IMAPNamespace::~IMAPNamespace() MC_SAFE_RELEASE(mItems); } -#if 0 -String * IMAPNamespace::className() -{ - return MCSTR("IMAPNamespace"); -} -#endif - String * IMAPNamespace::description() { String * result = String::string(); diff --git a/src/core/imap/MCIMAPNamespaceItem.cc b/src/core/imap/MCIMAPNamespaceItem.cc index 62fca1f0..7a608d68 100644 --- a/src/core/imap/MCIMAPNamespaceItem.cc +++ b/src/core/imap/MCIMAPNamespaceItem.cc @@ -28,13 +28,6 @@ IMAPNamespaceItem::~IMAPNamespaceItem() MC_SAFE_RELEASE(mPrefix); } -#if 0 -String * IMAPNamespaceItem::className() -{ - return MCSTR("IMAPNamespaceItem"); -} -#endif - String * IMAPNamespaceItem::description() { return String::stringWithUTF8Format("<%s:%p %s %c>", diff --git a/src/core/imap/MCIMAPPart.cc b/src/core/imap/MCIMAPPart.cc index 8f7e1e0e..e8185fc3 100644 --- a/src/core/imap/MCIMAPPart.cc +++ b/src/core/imap/MCIMAPPart.cc @@ -33,13 +33,6 @@ IMAPPart::~IMAPPart() MC_SAFE_RELEASE(mPartID); } -#if 0 -String * IMAPPart::className() -{ - return MCSTR("IMAPPart"); -} -#endif - Object * IMAPPart::copy() { return new IMAPPart(this); @@ -203,7 +196,8 @@ IMAPPart * IMAPPart::attachmentWithIMAPBody1PartBasic(struct mailimap_body_type_ attachment = new IMAPPart(); attachment->importIMAPFields(basic->bd_fields, extension); - + attachment->setUniqueID(mailcore::String::uuidString()); + mimeType = NULL; switch (basic->bd_media_basic->med_type) { case MAILIMAP_MEDIA_BASIC_APPLICATION: diff --git a/src/core/imap/MCIMAPPart.h b/src/core/imap/MCIMAPPart.h index 2749a0a0..e93b644e 100644 --- a/src/core/imap/MCIMAPPart.h +++ b/src/core/imap/MCIMAPPart.h @@ -24,11 +24,11 @@ namespace mailcore { virtual void setSize(unsigned int size); virtual unsigned int size(); + virtual unsigned int decodedSize(); + virtual void setEncoding(Encoding encoding); virtual Encoding encoding(); - unsigned int decodedSize(); - static AbstractPart * attachmentWithIMAPBody(struct mailimap_body * body); virtual void importIMAPFields(struct mailimap_body_fields * fields, diff --git a/src/core/imap/MCIMAPSearchExpression.cc b/src/core/imap/MCIMAPSearchExpression.cc index 14875c43..55b0fc7f 100644 --- a/src/core/imap/MCIMAPSearchExpression.cc +++ b/src/core/imap/MCIMAPSearchExpression.cc @@ -64,13 +64,6 @@ String * IMAPSearchExpression::description() } } -#if 0 -String * IMAPSearchExpression::className() -{ - return MCSTR("IMAPSearchExpression"); -} -#endif - Object * IMAPSearchExpression::copy() { return new IMAPSearchExpression(this); diff --git a/src/core/imap/MCIMAPSession.cc b/src/core/imap/MCIMAPSession.cc index dd0b6c6c..f79ebc44 100644 --- a/src/core/imap/MCIMAPSession.cc +++ b/src/core/imap/MCIMAPSession.cc @@ -316,13 +316,6 @@ IMAPSession::~IMAPSession() pthread_mutex_destroy(&mIdleLock); } -#if 0 -String * IMAPSession::className() -{ - return MCSTR("IMAPSession"); -} -#endif - void IMAPSession::setHostname(String * hostname) { MC_SAFE_REPLACE_COPY(String, mHostname, hostname); diff --git a/src/core/pop/MCPOPMessageInfo.cc b/src/core/pop/MCPOPMessageInfo.cc index eafbda9f..a1b1dcfe 100644 --- a/src/core/pop/MCPOPMessageInfo.cc +++ b/src/core/pop/MCPOPMessageInfo.cc @@ -27,13 +27,6 @@ POPMessageInfo::~POPMessageInfo() MC_SAFE_RELEASE(mUid); } -#if 0 -String * POPMessageInfo::className() -{ - return MCSTR("POPMessageInfo"); -} -#endif - String * POPMessageInfo::description() { return String::stringWithUTF8Format("<%s:%p %u %s %u>", diff --git a/src/core/pop/MCPOPSession.cc b/src/core/pop/MCPOPSession.cc index 26a0c868..95880198 100644 --- a/src/core/pop/MCPOPSession.cc +++ b/src/core/pop/MCPOPSession.cc @@ -44,13 +44,6 @@ POPSession::~POPSession() MC_SAFE_RELEASE(mPassword); } -#if 0 -String * POPSession::className() -{ - return MCSTR("POPSession"); -} -#endif - void POPSession::setHostname(String * hostname) { MC_SAFE_REPLACE_COPY(String, mHostname, hostname); diff --git a/src/core/rfc822/MCAttachment.cc b/src/core/rfc822/MCAttachment.cc index 91b8fde3..7926baa9 100644 --- a/src/core/rfc822/MCAttachment.cc +++ b/src/core/rfc822/MCAttachment.cc @@ -231,13 +231,6 @@ String * Attachment::description() return result; } -#if 0 -String * Attachment::className() -{ - return MCSTR("Attachment"); -} -#endif - Object * Attachment::copy() { return new Attachment(this); @@ -464,6 +457,8 @@ Attachment * Attachment::attachmentWithSingleMIME(struct mailmime * mime) MCAssert(mime->mm_type == MAILMIME_SINGLE); result = new Attachment(); + result->setUniqueID(mailcore::String::uuidString()); + data = mime->mm_data.mm_single; bytes = data->dt_data.dt_text.dt_data; length = data->dt_data.dt_text.dt_length; diff --git a/src/core/rfc822/MCMessageBuilder.cc b/src/core/rfc822/MCMessageBuilder.cc index 62482564..07febfbb 100644 --- a/src/core/rfc822/MCMessageBuilder.cc +++ b/src/core/rfc822/MCMessageBuilder.cc @@ -524,13 +524,6 @@ String * MessageBuilder::description() return result; } -#if 0 -String * MessageBuilder::className() -{ - return MCSTR("MessageBuilder"); -} -#endif - Object * MessageBuilder::copy() { return new MessageBuilder(this); diff --git a/src/core/rfc822/MCMessageParser.cc b/src/core/rfc822/MCMessageParser.cc index f301ce3e..bdf2a87d 100644 --- a/src/core/rfc822/MCMessageParser.cc +++ b/src/core/rfc822/MCMessageParser.cc @@ -69,13 +69,6 @@ String * MessageParser::description() return result; } -#if 0 -String * MessageParser::className() -{ - return MCSTR("MessageParser"); -} -#endif - Object * MessageParser::copy() { return new MessageParser(this); diff --git a/src/core/rfc822/MCMessagePart.cc b/src/core/rfc822/MCMessagePart.cc index 8a2122c3..21d61181 100644 --- a/src/core/rfc822/MCMessagePart.cc +++ b/src/core/rfc822/MCMessagePart.cc @@ -14,13 +14,6 @@ MessagePart::~MessagePart() { } -#if 0 -String * MessagePart::className() -{ - return MCSTR("MessagePart"); -} -#endif - Object * MessagePart::copy() { return new MessagePart(this); diff --git a/src/core/rfc822/MCMultipart.cc b/src/core/rfc822/MCMultipart.cc index 6ab1f0db..e048669e 100644 --- a/src/core/rfc822/MCMultipart.cc +++ b/src/core/rfc822/MCMultipart.cc @@ -14,13 +14,6 @@ Multipart::~Multipart() { } -#if 0 -String * Multipart::className() -{ - return MCSTR("Multipart"); -} -#endif - Object * Multipart::copy() { return new Multipart(this); diff --git a/src/core/smtp/MCSMTPSession.cc b/src/core/smtp/MCSMTPSession.cc index 12066146..96bd9787 100644 --- a/src/core/smtp/MCSMTPSession.cc +++ b/src/core/smtp/MCSMTPSession.cc @@ -51,13 +51,6 @@ SMTPSession::~SMTPSession() MCLog("dealloc4"); } -#if 0 -String * SMTPSession::className() -{ - return MCSTR("SMTPSession"); -} -#endif - void SMTPSession::setHostname(String * hostname) { MC_SAFE_REPLACE_COPY(String, mHostname, hostname); |