From 3b01da1b46340fd91d2dc86501570e7ec1e94772 Mon Sep 17 00:00:00 2001 From: Clemens Zeidler Date: Mon, 1 Aug 2011 02:44:22 +0000 Subject: [PATCH] Add compatibility file again. Should fix #7858. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42530 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/mail/Jamfile | 1 + src/kits/mail/b_mail_message.cpp | 138 +++++++++++++++++++++++++++++++ 2 files changed, 139 insertions(+) create mode 100644 src/kits/mail/b_mail_message.cpp diff --git a/src/kits/mail/Jamfile b/src/kits/mail/Jamfile index 7415cad7f0..bda4a2655a 100644 --- a/src/kits/mail/Jamfile +++ b/src/kits/mail/Jamfile @@ -13,6 +13,7 @@ UsePrivateHeaders textencoding ; local sources = + b_mail_message.cpp c_mail_api.cpp crypt.cpp des.c diff --git a/src/kits/mail/b_mail_message.cpp b/src/kits/mail/b_mail_message.cpp new file mode 100644 index 0000000000..89a579330e --- /dev/null +++ b/src/kits/mail/b_mail_message.cpp @@ -0,0 +1,138 @@ +/* BMailMessage - compatibility wrapper to our mail message class +** +** Copyright 2001 Dr. Zoidberg Enterprises. All rights reserved. +*/ + + +//------This entire document is a horrible, horrible hack. I apologize. +#include + +class _EXPORT BMailMessage; + +#include + +#include +#include + +#include + +struct CharsetConversionEntry +{ + const char *charset; + uint32 flavor; +}; + +extern const CharsetConversionEntry mail_charsets[]; + + +BMailMessage::BMailMessage(void) + : fFields((BList *)(new BEmailMessage())) +{ +} + +BMailMessage::~BMailMessage(void) +{ + delete ((BEmailMessage *)(fFields)); +} + +status_t BMailMessage::AddContent(const char *text, int32 length, + uint32 encoding, bool /*clobber*/) +{ + BTextMailComponent *comp = new BTextMailComponent; + BMemoryIO io(text,length); + comp->SetDecodedData(&io); + + comp->SetEncoding(quoted_printable,encoding); + + //if (clobber) + ((BEmailMessage *)(fFields))->AddComponent(comp); + + return B_OK; +} + +status_t BMailMessage::AddContent(const char *text, int32 length, + const char *encoding, bool /*clobber*/) +{ + BTextMailComponent *comp = new BTextMailComponent(); + BMemoryIO io(text,length); + comp->SetDecodedData(&io); + + uint32 encode = B_ISO1_CONVERSION; + //-----I'm assuming that encoding is one of the RFC charsets + //-----there are no docs. Am I right? + if (encoding != NULL) { + for (int32 i = 0; mail_charsets[i].charset != NULL; i++) { + if (strcasecmp(encoding,mail_charsets[i].charset) == 0) { + encode = mail_charsets[i].flavor; + break; + } + } + } + + comp->SetEncoding(quoted_printable,encode); + + //if (clobber) + ((BEmailMessage *)(fFields))->AddComponent(comp); + + return B_OK; +} + +status_t BMailMessage::AddEnclosure(entry_ref *ref, bool /*clobber*/) +{ + ((BEmailMessage *)(fFields))->Attach(ref); + return B_OK; +} + +status_t BMailMessage::AddEnclosure(const char *path, bool /*clobber*/) +{ + BEntry entry(path); + status_t status; + if ((status = entry.InitCheck()) < B_OK) + return status; + + entry_ref ref; + if ((status = entry.GetRef(&ref)) < B_OK) + return status; + + ((BEmailMessage *)(fFields))->Attach(&ref); + return B_OK; +} + +status_t BMailMessage::AddEnclosure(const char *MIME_type, void *data, int32 len, + bool /*clobber*/) +{ + BSimpleMailAttachment *attach = new BSimpleMailAttachment; + attach->SetDecodedData(data,len); + attach->SetHeaderField("Content-Type",MIME_type); + + ((BEmailMessage *)(fFields))->AddComponent(attach); + return B_OK; +} + +status_t BMailMessage::AddHeaderField(uint32 /*encoding*/, const char *field_name, const char *str, + bool /*clobber*/) +{ + //printf("First AddHeaderField. Args are %s%s\n",field_name,str); + + BString string = field_name; + string.Truncate(string.Length() - 2); //----BMailMessage includes the ": " + ((BEmailMessage *)(fFields))->SetHeaderField(string.String(),str); + return B_OK; +} + +status_t BMailMessage::AddHeaderField(const char *field_name, const char *str, + bool /*clobber*/) +{ + //printf("Second AddHeaderField. Args are %s%s\n",field_name,str); + BString string = field_name; + string.Truncate(string.Length() - 2); //----BMailMessage includes the ": " + ((BEmailMessage *)(fFields))->SetHeaderField(string.String(),str); + return B_OK; +} + +status_t BMailMessage::Send(bool send_now, + bool /*remove_when_I_have_completed_sending_this_message_to_your_preferred_SMTP_server*/) +{ + return ((BEmailMessage *)(fFields))->Send(send_now); +} +