diff options
Diffstat (limited to 'mailnews/mime')
-rw-r--r-- | mailnews/mime/src/mimeebod.cpp | 14 | ||||
-rw-r--r-- | mailnews/mime/src/mimemapl.cpp | 24 | ||||
-rw-r--r-- | mailnews/mime/src/mimemult.cpp | 17 |
3 files changed, 54 insertions, 1 deletions
diff --git a/mailnews/mime/src/mimeebod.cpp b/mailnews/mime/src/mimeebod.cpp index ee66c40ca2..2ca056feb8 100644 --- a/mailnews/mime/src/mimeebod.cpp +++ b/mailnews/mime/src/mimeebod.cpp @@ -21,6 +21,10 @@ MimeDefClass(MimeExternalBody, MimeExternalBodyClass, mimeExternalBodyClass, &MIME_SUPERCLASS); +#ifdef XP_MACOSX +extern MimeObjectClass mimeMultipartAppleDoubleClass; +#endif + static int MimeExternalBody_initialize (MimeObject *); static void MimeExternalBody_finalize (MimeObject *); static int MimeExternalBody_parse_line (const char *, int32_t, MimeObject *); @@ -248,6 +252,12 @@ MimeExternalBody_parse_eof (MimeObject *obj, bool abort_p) status = ((MimeObjectClass*)&MIME_SUPERCLASS)->parse_eof(obj, abort_p); if (status < 0) return status; +#ifdef XP_MACOSX + if (obj->parent && mime_typep(obj->parent, + (MimeObjectClass*) &mimeMultipartAppleDoubleClass)) + goto done; +#endif /* XP_MACOSX */ + if (!abort_p && obj->output_p && obj->options && @@ -415,6 +425,10 @@ FAIL: PR_FREEIF(subj); } +#ifdef XP_MACOSX +done: +#endif + return status; } diff --git a/mailnews/mime/src/mimemapl.cpp b/mailnews/mime/src/mimemapl.cpp index c7363ceff1..449d80ac08 100644 --- a/mailnews/mime/src/mimemapl.cpp +++ b/mailnews/mime/src/mimemapl.cpp @@ -55,6 +55,19 @@ MimeMultipartAppleDouble_parse_begin (MimeObject *obj) NS_ASSERTION(obj->options->state->first_data_written_p, "first data not written"); } +#ifdef XP_MACOSX + if (obj->options && obj->options->state) + { +// obj->options->state->separator_suppressed_p = true; + goto done; + } + /* + * It would be nice to not showing the resource fork links + * if we are displaying inline. But, there is no way we could + * know ahead of time that we could display the data fork and + * the data fork is always hidden on MAC platform. + */ +#endif /* If we're writing this object as HTML, then emit a link for the multipart/appledouble part (both links) that looks just like the links that MimeExternalObject emits for external leaf parts. @@ -143,6 +156,10 @@ GOTTA STILL DO THIS FOR QUOTING! if (status < 0) return status; } +#ifdef XP_MACOSX +done: +#endif + return 0; } @@ -159,8 +176,13 @@ MimeMultipartAppleDouble_output_child_p(MimeObject *obj, MimeObject *child) if (cont->nchildren >= 1 && cont->children[0] == child && child->content_type && !PL_strcasecmp(child->content_type, APPLICATION_APPLEFILE)) { - /* Don't emit the resources fork. */ +#ifdef XP_MACOSX + if (obj->output_p && obj->options && obj->options->write_html_p) //output HTML + return false; +#else + /* if we are not on a Macintosh, don't emitte the resources fork at all. */ return false; +#endif } return true; diff --git a/mailnews/mime/src/mimemult.cpp b/mailnews/mime/src/mimemult.cpp index c92cc44dcf..4695ba9910 100644 --- a/mailnews/mime/src/mimemult.cpp +++ b/mailnews/mime/src/mimemult.cpp @@ -16,6 +16,10 @@ #include "nsMimeTypes.h" #include <ctype.h> +#ifdef XP_MACOSX + extern MimeObjectClass mimeMultipartAppleDoubleClass; +#endif + #define MIME_SUPERCLASS mimeContainerClass MimeDefClass(MimeMultipart, MimeMultipartClass, mimeMultipartClass, &MIME_SUPERCLASS); @@ -488,6 +492,19 @@ MimeMultipart_create_child(MimeObject *obj) { status = body->clazz->parse_begin(body); +#ifdef XP_MACOSX + /* if we are saving an apple double attachment, we need to set correctly the conten type of the channel */ + if (mime_typep(obj, (MimeObjectClass *) &mimeMultipartAppleDoubleClass)) + { + mime_stream_data *msd = (mime_stream_data *)body->options->stream_closure; + if (!body->options->write_html_p && body->content_type && !PL_strcasecmp(body->content_type, APPLICATION_APPLEFILE)) + { + if (msd && msd->channel) + msd->channel->SetContentType(NS_LITERAL_CSTRING(APPLICATION_APPLEFILE)); + } + } +#endif + if (status < 0) return status; } |