|
|
@ -6,6 +6,7 @@ |
|
|
|
#define _EXPORT_PEP_ENGINE_DLL
|
|
|
|
#include <pEp/message.h>
|
|
|
|
#include "pEpMIME.hh"
|
|
|
|
#include "pEpMIME_internal.hh"
|
|
|
|
|
|
|
|
// function interface for pEp engine
|
|
|
|
// link this to use pEp MIME with C code
|
|
|
@ -43,6 +44,40 @@ extern "C" |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
DYNAMIC_API PEP_STATUS _mime_decode_message( |
|
|
|
const char *mimetext, |
|
|
|
size_t size, |
|
|
|
message **msg, |
|
|
|
bool* raise_msg_attachment |
|
|
|
) |
|
|
|
{ |
|
|
|
assert(msg); |
|
|
|
assert(mimetext); |
|
|
|
|
|
|
|
if (!(msg && mimetext)) |
|
|
|
return PEP_ILLEGAL_VALUE; |
|
|
|
|
|
|
|
PEP_STATUS status = PEP_STATUS_OK; |
|
|
|
*msg = nullptr; |
|
|
|
|
|
|
|
try{ |
|
|
|
message* m = pEpMIME::parse_message(mimetext, size); |
|
|
|
if(m) |
|
|
|
{ |
|
|
|
*msg = m; |
|
|
|
stringpair_list_t* forwarded = stringpair_list_find(m->opt_fields, pEpMIME::Pseudo_Header_Forwarded.data()); |
|
|
|
*raise_msg_attachment = (forwarded && forwarded->value && forwarded->value->value==std::string{"no"}); |
|
|
|
}else{ |
|
|
|
status = PEP_OUT_OF_MEMORY; |
|
|
|
} |
|
|
|
}catch(...) |
|
|
|
{ |
|
|
|
status = PEP_UNKNOWN_ERROR; |
|
|
|
} |
|
|
|
return status; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
PEP_STATUS _mime_encode_message_internal( |
|
|
|
const message * msg, |
|
|
|
bool omit_fields, |
|
|
|