зеркало из https://github.com/mozilla/gecko-dev.git
Changes to prepare for AppleDouble support - NO CHANGES ARE PART OF THE BUILD!
This commit is contained in:
Родитель
e3edc771e2
Коммит
02238f4bd4
|
@ -32,6 +32,7 @@
|
|||
#include "msgCore.h"
|
||||
#include "nsMsgAppleDouble.h"
|
||||
#include "nsMsgAppleCodes.h"
|
||||
#include "nsFileSpec.h"
|
||||
|
||||
#ifdef XP_MAC
|
||||
|
||||
|
@ -59,7 +60,8 @@ char* my_PathnameFromFSSpec(FSSpec* fspec)
|
|||
}
|
||||
|
||||
/* returns true if the resource fork should be sent */
|
||||
PRBool isMacFile(char* filename)
|
||||
PRBool
|
||||
nsMsgIsMacFile(char* filename)
|
||||
{
|
||||
Boolean returnValue = FALSE;
|
||||
|
||||
|
@ -104,6 +106,74 @@ PRBool isMacFile(char* filename)
|
|||
return (PRBool) returnValue;
|
||||
}
|
||||
|
||||
/* Netlib utility routine, should be ripped out */
|
||||
void MacGetFileType(nsFileSpec *path,
|
||||
PRBool *useDefault,
|
||||
char **fileType,
|
||||
char **encoding)
|
||||
{
|
||||
if ((path == NULL) || (fileType == NULL) || (encoding == NULL))
|
||||
return;
|
||||
|
||||
*useDefault = TRUE;
|
||||
*fileType = NULL;
|
||||
*encoding = NULL;
|
||||
|
||||
char *pathPart = NET_ParseURL( path, GET_PATH_PART);
|
||||
if (pathPart == NULL)
|
||||
return;
|
||||
|
||||
nsFilePath thePath(pathPart);
|
||||
nsNativeFileSpec spec(thePath);
|
||||
XP_FREE(pathPart);
|
||||
|
||||
CMimeMapper * mapper = CPrefs::sMimeTypes.FindMimeType(spec);
|
||||
if (mapper != NULL)
|
||||
{
|
||||
*useDefault = FALSE;
|
||||
*fileType = XP_STRDUP(mapper->GetMimeName());
|
||||
}
|
||||
else
|
||||
{
|
||||
FInfo fndrInfo;
|
||||
OSErr err = FSpGetFInfo( &spec, &fndrInfo );
|
||||
if ( (err != noErr) || (fndrInfo.fdType == 'TEXT') )
|
||||
*fileType = XP_STRDUP(APPLICATION_OCTET_STREAM);
|
||||
else
|
||||
{
|
||||
// Time to call IC to see if it knows anything
|
||||
ICMapEntry ICMapper;
|
||||
|
||||
ICError error = 0;
|
||||
CStr255 fileName( spec.name );
|
||||
error = CInternetConfigInterface::GetInternetConfigFileMapping(
|
||||
fndrInfo.fdType, fndrInfo.fdCreator, fileName , &ICMapper );
|
||||
if( error != icPrefNotFoundErr && StrLength(ICMapper.MIME_type) )
|
||||
{
|
||||
*useDefault = FALSE;
|
||||
CStr255 mimeName( ICMapper.MIME_type );
|
||||
*fileType = XP_STRDUP( mimeName );
|
||||
}
|
||||
else
|
||||
{
|
||||
// That failed try using the creator type
|
||||
mapper = CPrefs::sMimeTypes.FindCreator(fndrInfo.fdCreator);
|
||||
if( mapper)
|
||||
{
|
||||
*useDefault = FALSE;
|
||||
*fileType = XP_STRDUP(mapper->GetMimeName());
|
||||
}
|
||||
else
|
||||
{
|
||||
// don't have a mime mapper
|
||||
*fileType = XP_STRDUP(APPLICATION_OCTET_STREAM);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DecodingDone( appledouble_decode_object* p_ap_decode_obj )
|
||||
{
|
||||
FSSpec fspec;
|
||||
|
|
|
@ -564,8 +564,33 @@ nsMsgAttachmentHandler::SnarfAttachment(nsMsgCompFields *compFields)
|
|||
// To make this really work, we need something that will do the job of
|
||||
// the old fe_MakeAppleDoubleEncodeStream() stream in 4.x
|
||||
//
|
||||
/*********************
|
||||
ad_encode_stream = (NET_StreamClass *) fe_MakeAppleDoubleEncodeStream (FO_CACHE_AND_MAIL_TO,
|
||||
NULL,
|
||||
m_url,
|
||||
m_mime_delivery_state->GetContext(),
|
||||
src_filename,
|
||||
m_ap_filename,
|
||||
separator);
|
||||
|
||||
printf("...and then magic happens...which converts %s to appledouble encoding\n", (const char*)url_string);
|
||||
if (ad_encode_stream == NULL)
|
||||
{
|
||||
FREEIF(separator);
|
||||
return MK_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
status = (*ad_encode_stream->put_block)((NET_StreamClass *)ad_encode_stream->data_object, NULL, 1024);
|
||||
} while (status == noErr);
|
||||
|
||||
if (status >= 0)
|
||||
ad_encode_stream->complete ((NET_StreamClass *)ad_encode_stream->data_object);
|
||||
else
|
||||
ad_encode_stream->abort ((NET_StreamClass *)ad_encode_stream->data_object, status);
|
||||
|
||||
XP_FREE(ad_encode_stream);
|
||||
*****************************/
|
||||
|
||||
//
|
||||
// Now that we have morphed this file, we need to change where mURL is pointing.
|
||||
|
|
Загрузка…
Ссылка в новой задаче