Changes to prepare for AppleDouble support - NO CHANGES ARE PART OF THE BUILD!

This commit is contained in:
rhp%netscape.com 2000-02-02 00:08:12 +00:00
Родитель e3edc771e2
Коммит 02238f4bd4
2 изменённых файлов: 97 добавлений и 2 удалений

Просмотреть файл

@ -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.