int DwCteStrToEnum(const DwString& aStr) { int cte = DwMime::kCteUnknown; int ch = aStr[0]; switch (ch) { case '7': if (DwStrcasecmp(aStr, "7bit") == 0) { cte = DwMime::kCte7bit; } break; case '8': if (DwStrcasecmp(aStr, "8bit") == 0) { cte = DwMime::kCte8bit; } break; case 'B': case 'b': if (DwStrcasecmp(aStr, "base64") == 0) { cte = DwMime::kCteBase64; } else if (DwStrcasecmp(aStr, "binary") == 0) { cte = DwMime::kCteBinary; } break; case 'Q': case 'q': if (DwStrcasecmp(aStr, "quoted-printable") == 0) { cte = DwMime::kCteQuotedPrintable; } break; } return cte; }
void DwDispositionType::StrToEnum() { switch(mDispositionTypeStr[0]) { case 'i': if(DwStrcasecmp(mDispositionTypeStr, "inline") == 0) { mDispositionType = DwMime::kDispTypeInline; } else { mDispositionType = DwMime::kDispTypeUnknown; } break; case 'a': if(DwStrcasecmp(mDispositionTypeStr, "attachment") == 0) { mDispositionType = DwMime::kDispTypeAttachment; } else { mDispositionType = DwMime::kDispTypeUnknown; } break; } }
void DwHeaders::AddOrReplaceField(DwField* aField) { assert(aField != 0); if (aField == 0) return; SetModified(); const DwString& fieldName = aField->FieldNameStr(); DwField* prevField = 0; DwField* field = mFirstField; while (field) { if (DwStrcasecmp(field->FieldNameStr(), fieldName) == 0) { break; } prevField = field; field = field->Next(); } // Field was not found, so just add it if (!field) { _AddField(aField); } // Field was found. Replace the old one with the new one. else { if (prevField) { prevField->SetNext(aField); } else { mFirstField = aField; } aField->SetNext(field->Next()); delete field; } }
bool Twinamp2dspDll::isMultichannelAllowed(const char_t *compList) const { strings multichannelDlls; strtok(compList, _l(";"), multichannelDlls); for (strings::const_iterator b = multichannelDlls.begin(); b != multichannelDlls.end(); b++) if (DwStrcasecmp(*b, dllFileName) == 0) { return true; } return false; }
DwField* DwHeaders::FindField(const DwString& aFieldName) const { DwField* field = mFirstField; while (field) { if (DwStrcasecmp(field->FieldNameStr(), aFieldName) == 0) { break; } field = field->Next(); } return field; }
DwField* DwHeaders::FindField(const char* aFieldName) const { assert(aFieldName != 0); if (aFieldName == 0) return 0; DwField* field = mFirstField; while (field) { if (DwStrcasecmp(field->FieldNameStr(), aFieldName) == 0) { break; } field = field->Next(); } return field; }
void DwParameter::Parse() { mIsModified = 0; mAttribute = mValue = ""; if (mString.length() == 0) return; DwRfc1521Tokenizer tokenizer(mString); // Get attribute int found = 0; while (!found && tokenizer.Type() != eTkNull) { if (tokenizer.Type() == eTkToken) { mAttribute = tokenizer.Token(); found = 1; } ++tokenizer; } // Get '=' found = 0; while (!found && tokenizer.Type() != eTkNull) { if (tokenizer.Type() == eTkTspecial && tokenizer.Token()[0] == '=') { found = 1; } ++tokenizer; } // Get value found = 0; while (!found && tokenizer.Type() != eTkNull) { if (tokenizer.Type() == eTkToken) { mValue = tokenizer.Token(); found = 1; } else if (tokenizer.Type() == eTkQuotedString) { tokenizer.StripDelimiters(); mValue = tokenizer.Token(); found = 1; } ++tokenizer; } // Some nonstandard MIME implementations use single quotes to quote // the boundary string. This is incorrect, but we will try to detect // it and work with it. // // If the first character and last character of the boundary string // are single quote, strip them off. if (DwStrcasecmp(mAttribute, "boundary") == 0) { size_t len = mValue.length(); if (len > 2 && mValue[0] == '\'' && mValue[len-1] == '\'') { mValue = mValue.substr(1, len-2); } } }
void DwMechanism::StringToEnum() { if (mString.length() == 0) { mCteEnum = DwMime::kCteNull; return; } int ch = mString[0]; switch (ch) { case '7': if (DwStrcasecmp(mString, "7bit") == 0) { mCteEnum = DwMime::kCte7bit; } break; case '8': if (DwStrcasecmp(mString, "8bit") == 0) { mCteEnum = DwMime::kCte8bit; } break; case 'B': case 'b': if (DwStrcasecmp(mString, "base64") == 0) { mCteEnum = DwMime::kCteBase64; } else if (DwStrcasecmp(mString, "binary") == 0) { mCteEnum = DwMime::kCteBinary; } break; case 'Q': case 'q': if (DwStrcasecmp(mString, "quoted-printable") == 0) { mCteEnum = DwMime::kCteQuotedPrintable; } break; default: mCteEnum = DwMime::kCteUnknown; break; } }
int DwTypeStrToEnum(const DwString& aStr) { int type = DwMime::kTypeUnknown; int ch = aStr[0]; switch (ch) { case 'A': case 'a': if (DwStrcasecmp(aStr, "application") == 0) { type = DwMime::kTypeApplication; } else if (DwStrcasecmp(aStr, "audio") == 0) { type = DwMime::kTypeAudio; } break; case 'I': case 'i': if (DwStrcasecmp(aStr, "image") == 0) { type = DwMime::kTypeImage; } break; case 'M': case 'm': if (DwStrcasecmp(aStr, "message") == 0) { type = DwMime::kTypeMessage; } else if (DwStrcasecmp(aStr, "multipart") == 0) { type = DwMime::kTypeMultipart; } break; case 'T': case 't': if (DwStrcasecmp(aStr, "text") == 0) { type = DwMime::kTypeText; } break; case 'V': case 'v': if (DwStrcasecmp(aStr, "video") == 0) { type = DwMime::kTypeVideo; } break; case 0: type = DwMime::kTypeNull; break; } return type; }
const DwString &DwDispositionType::Filename() const { DwParameter *param = mFirstParameter; while(param) { if(DwStrcasecmp(param->Attribute(), "filename") == 0) { // Filename parameter found. Return its value. // Implementation note: this member function is const, which // forbids us from assigning to mFilenameStr. The following // trick gets around this. (ANSI implementations could use the // "mutable" declaration). DwDispositionType *_this = (DwDispositionType *) this; _this->mFilenameStr = param->Value(); break; } param = param->Next(); } return mFilenameStr; }
void DwDispositionType::SetFilename(const DwString &aStr) { mFilenameStr = aStr; // Search for filename parameter in parameter list. If found, set its // value. DwParameter *param = mFirstParameter; while(param) { if(DwStrcasecmp(param->Attribute(), "filename") == 0) { param->SetValue(mFilenameStr); return; } param = param->Next(); } // Boundary parameter not found. Add it. param = DwParameter::NewParameter("", 0); param->SetAttribute("Filename"); param->SetValue(aStr); AddParameter(param); }
int DwSubtypeStrToEnum(const DwString& aStr) { if (aStr == "") { return DwMime::kSubtypeNull; } int type = DwMime::kSubtypeUnknown; int ch = aStr[0]; switch (ch) { case 'A': case 'a': if (DwStrcasecmp(aStr, "alternative") == 0) { type = DwMime::kSubtypeAlternative; } break; case 'B': case 'b': if (DwStrcasecmp(aStr, "basic") == 0) { type = DwMime::kSubtypeBasic; } break; case 'D': case 'd': if (DwStrcasecmp(aStr, "digest") == 0) { type = DwMime::kSubtypeDigest; } break; case 'E': case 'e': if (DwStrcasecmp(aStr, "enriched") == 0) { type = DwMime::kSubtypeEnriched; } else if (DwStrcasecmp(aStr, "external-body") == 0) { type = DwMime::kSubtypeExternalBody; } break; case 'G': case 'g': if (DwStrcasecmp(aStr, "gif") == 0) { type = DwMime::kSubtypeGif; } break; case 'H': case 'h': if (DwStrcasecmp(aStr, "html") == 0) { type = DwMime::kSubtypeHtml; } break; case 'J': case 'j': if (DwStrcasecmp(aStr, "jpeg") == 0) { type = DwMime::kSubtypeJpeg; } break; case 'M': case 'm': if (DwStrcasecmp(aStr, "mixed") == 0) { type = DwMime::kSubtypeMixed; } else if (DwStrcasecmp(aStr, "mpeg") == 0) { type = DwMime::kSubtypeMpeg; } break; case 'O': case 'o': if (DwStrcasecmp(aStr, "octet-stream") == 0) { type = DwMime::kSubtypeOctetStream; } break; case 'P': case 'p': if (DwStrcasecmp(aStr, "plain") == 0) { type = DwMime::kSubtypePlain; } else if (DwStrcasecmp(aStr, "parallel") == 0) { type = DwMime::kSubtypeParallel; } else if (DwStrcasecmp(aStr, "partial") == 0) { type = DwMime::kSubtypePartial; } else if (DwStrcasecmp(aStr, "postscript") == 0) { type = DwMime::kSubtypePostscript; } break; case 'R': case 'r': if (DwStrcasecmp(aStr, "richtext") == 0) { type = DwMime::kSubtypeRichtext; } else if (DwStrcasecmp(aStr, "rfc822") == 0) { type = DwMime::kSubtypeRfc822; } break; } return type; }
int DwSubtypeStrToEnum(const DwString& aStr) { if (aStr.empty()) { return DwMime::kSubtypeNull; } int type = DwMime::kSubtypeUnknown; int ch = aStr[0]; switch (ch) { case 'A': case 'a': if (DwStrcasecmp(aStr, "alternative") == 0) { type = DwMime::kSubtypeAlternative; } break; case 'B': case 'b': if (DwStrcasecmp(aStr, "basic") == 0) { type = DwMime::kSubtypeBasic; } break; case 'C': case 'c': if (DwStrcasecmp(aStr, "calendar") == 0) { type = DwMime::kSubtypeVCal; } break; case 'D': case 'd': if (DwStrcasecmp(aStr, "digest") == 0) { type = DwMime::kSubtypeDigest; } if (DwStrcasecmp(aStr, "directory") == 0) { type = DwMime::kSubtypeDirectory; } else if (DwStrcasecmp(aStr, "disposition-notification") == 0 ) { type = DwMime::kSubtypeDispositionNotification; } break; case 'E': case 'e': if (DwStrcasecmp(aStr, "enriched") == 0) { type = DwMime::kSubtypeEnriched; } else if (DwStrcasecmp(aStr, "external-body") == 0) { type = DwMime::kSubtypeExternalBody; } else if (DwStrcasecmp(aStr, "encrypted") == 0) { type = DwMime::kSubtypeEncrypted; } break; case 'G': case 'g': if (DwStrcasecmp(aStr, "gif") == 0) { type = DwMime::kSubtypeGif; } break; case 'H': case 'h': if (DwStrcasecmp(aStr, "html") == 0) { type = DwMime::kSubtypeHtml; } break; case 'J': case 'j': if (DwStrcasecmp(aStr, "jpeg") == 0) { type = DwMime::kSubtypeJpeg; } break; case 'M': case 'm': if (DwStrcasecmp(aStr, "mixed") == 0) { type = DwMime::kSubtypeMixed; } else if (DwStrcasecmp(aStr, "mpeg") == 0) { type = DwMime::kSubtypeMpeg; } else if (DwStrcasecmp(aStr, "ms-tnef") == 0) { type = DwMime::kSubtypeMsTNEF; } break; case 'O': case 'o': if (DwStrcasecmp(aStr, "octet-stream") == 0) { type = DwMime::kSubtypeOctetStream; } break; case 'P': case 'p': if (DwStrcasecmp(aStr, "plain") == 0) { type = DwMime::kSubtypePlain; } else if (DwStrcasecmp(aStr, "parallel") == 0) { type = DwMime::kSubtypeParallel; } else if (DwStrcasecmp(aStr, "partial") == 0) { type = DwMime::kSubtypePartial; } else if (DwStrcasecmp(aStr, "postscript") == 0) { type = DwMime::kSubtypePostscript; } else if (DwStrcasecmp(aStr, "pgp-signature") == 0) { type = DwMime::kSubtypePgpSignature; } else if (DwStrcasecmp(aStr, "pgp-encrypted") == 0) { type = DwMime::kSubtypePgpEncrypted; } else if (DwStrcasecmp(aStr, "pgp") == 0) { type = DwMime::kSubtypePgpClearsigned; } else if (DwStrcasecmp(aStr, "pkcs7-signature") == 0) { type = DwMime::kSubtypePkcs7Signature; } else if (DwStrcasecmp(aStr, "pkcs7-mime") == 0) { type = DwMime::kSubtypePkcs7Mime; } break; case 'R': case 'r': if (DwStrcasecmp(aStr, "richtext") == 0) { type = DwMime::kSubtypeRichtext; } else if (DwStrcasecmp(aStr, "rfc822") == 0) { type = DwMime::kSubtypeRfc822; } else if (DwStrcasecmp(aStr, "report") == 0) { type = DwMime::kSubtypeReport; } else if (DwStrcasecmp(aStr, "rtf") == 0) { type = DwMime::kSubtypeRtf; } else if (DwStrcasecmp(aStr, "related") == 0) { type = DwMime::kSubtypeRelated; } break; case 'S': case 's': if (DwStrcasecmp(aStr, "signed") == 0) { type = DwMime::kSubtypeSigned; } break; case 'V': case 'v': if (DwStrcasecmp(aStr, "vnd.de.bund.bsi.chiasmus-text") == 0) { type = DwMime::kSubtypeChiasmusText; } break; case 'X': case 'x': if (DwStrcasecmp(aStr, "x-vcard") == 0) { type = DwMime::kSubtypeXVCard; } else if (DwStrcasecmp(aStr, "x-pkcs7-signature") == 0) { type = DwMime::kSubtypePkcs7Signature; } else if (DwStrcasecmp(aStr, "x-pkcs7-mime") == 0) { type = DwMime::kSubtypePkcs7Mime; } if (DwStrcasecmp(aStr, "x-diff") == 0) { type = DwMime::kSubtypeXDiff; } if (DwStrcasecmp(aStr, "x-vcalendar") == 0) { type = DwMime::kSubtypeVCal; } break; } return type; }
DwFieldBody* DwField::_CreateFieldBody(const DwString& aFieldName, const DwString& aFieldBody, DwMessageComponent* aParent) { enum { kAddressList, kDispositionType, kDateTime, kMailbox, kMailboxList, kMechanism, kMediaType, kMsgId, kText } fieldBodyType; // Default field type is 'text' fieldBodyType = kText; int ch = aFieldName[0]; ch = tolower(ch); switch (ch) { case 'b': if (DwStrcasecmp(aFieldName, "bcc") == 0) { fieldBodyType = kAddressList; } break; case 'c': if (DwStrcasecmp(aFieldName, "cc") == 0) { fieldBodyType = kAddressList; } else if (DwStrcasecmp(aFieldName, "content-id") == 0) { fieldBodyType = kMsgId; } else if (DwStrcasecmp(aFieldName, "content-transfer-encoding") == 0) { fieldBodyType = kMechanism; } else if (DwStrcasecmp(aFieldName, "content-type") == 0) { fieldBodyType = kMediaType; } else if (DwStrcasecmp(aFieldName, "content-disposition") == 0) { fieldBodyType = kDispositionType; } break; case 'd': if (DwStrcasecmp(aFieldName, "date") == 0) { fieldBodyType = kDateTime; } break; case 'f': if (DwStrcasecmp(aFieldName, "from") == 0) { fieldBodyType = kMailboxList; } break; case 'm': if (DwStrcasecmp(aFieldName, "message-id") == 0) { fieldBodyType = kMsgId; } break; case 'r': if (DwStrcasecmp(aFieldName, "reply-to") == 0) { fieldBodyType = kAddressList; } else if (DwStrcasecmp(aFieldName, "resent-bcc") == 0) { fieldBodyType = kAddressList; } else if (DwStrcasecmp(aFieldName, "resent-cc") == 0) { fieldBodyType = kAddressList; } else if (DwStrcasecmp(aFieldName, "resent-date") == 0) { fieldBodyType = kDateTime; } else if (DwStrcasecmp(aFieldName, "resent-from") == 0) { fieldBodyType = kMailboxList; } else if (DwStrcasecmp(aFieldName, "resent-message-id") == 0) { fieldBodyType = kMsgId; } else if (DwStrcasecmp(aFieldName, "resent-reply-to") == 0) { fieldBodyType = kAddressList; } else if (DwStrcasecmp(aFieldName, "resent-sender") == 0) { fieldBodyType = kMailbox; } else if (DwStrcasecmp(aFieldName, "return-path") == 0) { fieldBodyType = kMailbox; } break; case 's': if (DwStrcasecmp(aFieldName, "sender") == 0) { fieldBodyType = kMailbox; } break; case 't': if (DwStrcasecmp(aFieldName, "to") == 0) { fieldBodyType = kAddressList; } break; } DwFieldBody* fieldBody; switch (fieldBodyType) { case kAddressList: fieldBody = DwAddressList::NewAddressList(aFieldBody, aParent); break; case kDispositionType: fieldBody = DwDispositionType::NewDispositionType(aFieldBody, aParent); break; case kMediaType: fieldBody = DwMediaType::NewMediaType(aFieldBody, aParent); break; case kMechanism: fieldBody = DwMechanism::NewMechanism(aFieldBody, aParent); break; case kDateTime: fieldBody = DwDateTime::NewDateTime(aFieldBody, aParent); break; case kMailbox: fieldBody = DwMailbox::NewMailbox(aFieldBody, aParent); break; case kMailboxList: fieldBody = DwMailboxList::NewMailboxList(aFieldBody, aParent); break; case kMsgId: fieldBody = DwMsgId::NewMsgId(aFieldBody, aParent); break; case kText: default: fieldBody = DwText::NewText(aFieldBody, aParent); break; } return fieldBody; }