[haiku-commits] r42530 - haiku/trunk/src/kits/mail

  • From: clemens.zeidler@xxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 1 Aug 2011 04:44:22 +0200 (CEST)

Author: czeidler
Date: 2011-08-01 04:44:22 +0200 (Mon, 01 Aug 2011)
New Revision: 42530
Changeset: https://dev.haiku-os.org/changeset/42530
Ticket: https://dev.haiku-os.org/ticket/7858

Added:
   haiku/trunk/src/kits/mail/b_mail_message.cpp
Modified:
   haiku/trunk/src/kits/mail/Jamfile
Log:
Add compatibility file again. Should fix #7858.



Modified: haiku/trunk/src/kits/mail/Jamfile
===================================================================
--- haiku/trunk/src/kits/mail/Jamfile   2011-08-01 01:39:39 UTC (rev 42529)
+++ haiku/trunk/src/kits/mail/Jamfile   2011-08-01 02:44:22 UTC (rev 42530)
@@ -13,6 +13,7 @@
 
 
 local sources =
+       b_mail_message.cpp
        c_mail_api.cpp
        crypt.cpp
        des.c

Added: haiku/trunk/src/kits/mail/b_mail_message.cpp
===================================================================
--- haiku/trunk/src/kits/mail/b_mail_message.cpp                                
(rev 0)
+++ haiku/trunk/src/kits/mail/b_mail_message.cpp        2011-08-01 02:44:22 UTC 
(rev 42530)
@@ -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 <Entry.h>
+
+class _EXPORT BMailMessage;
+
+#include <E-mail.h>
+
+#include <MailAttachment.h>
+#include <MailMessage.h>
+
+#include <stdio.h>
+
+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);
+}
+


Other related posts:

  • » [haiku-commits] r42530 - haiku/trunk/src/kits/mail - clemens . zeidler