Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

178 lines
3.6 KiB

/*++
Copyright (c) 1995 Microsoft Corporation
Module Name :
mimeutil.cxx
Abstract:
This module defines MIME utility functions: Initialize and Cleanup
of global MimeMap. Also provides function for obtaining the MimeType
for given file extension
Author:
Murali R. Krishnan ( MuraliK ) 23-Jan-1995
Environment:
Win32
Project:
TCP Internet services common dll
Functions Exported:
BOOL InitializeMimeMap( VOID)
BOOL CleanupMimeMap( VOID)
Revision History:
--*/
/************************************************************
* Include Headers
************************************************************/
# include <tcpdllp.hxx>
# include <tchar.h>
# include "mimemap.hxx"
# include <iistypes.hxx>
# define PSZ_MIME_MAP TEXT( "MimeMap")
PMIME_MAP g_pMimeMap = NULL;
/************************************************************
* Functions
************************************************************/
BOOL
InitializeMimeMap(
IN LPCTSTR pszRegEntry
)
/*++
Creates a new mime map object and loads the registry entries from
under this entry from \\MimeMap.
--*/
{
BOOL fReturn = FALSE;
DBG_ASSERT( g_pMimeMap == NULL);
g_pMimeMap = new MIME_MAP();
if ( g_pMimeMap != NULL) {
DWORD dwError;
dwError = g_pMimeMap->InitMimeMap( );
if ( dwError == NO_ERROR ) {
fReturn = TRUE;
} else {
DBGPRINTF((DBG_CONTEXT,"InitMimeMap failed with %d\n",
dwError));
SetLastError( dwError);
}
}
IF_DEBUG( MIME_MAP ) {
DBGPRINTF( ( DBG_CONTEXT, "InitializeMimeMap() from Reg %s. returns %d."
" Error = %d\n",
PSZ_MIME_MAP, fReturn, GetLastError()));
}
return ( fReturn);
} // InitializeMimeMap()
BOOL
CleanupMimeMap( VOID)
{
BOOL fReturn = TRUE;
if ( g_pMimeMap != NULL) {
delete g_pMimeMap;
g_pMimeMap = NULL;
}
return ( fReturn);
} // CleanupMimeMap()
BOOL
SelectMimeMappingForFileExt(
IN const PIIS_SERVICE pInetSvc,
IN const TCHAR * pchFilePath,
OUT STR * pstrMimeType, // optional
OUT STR * pstrIconFile) // optional
/*++
Locks and obtains the mime type and/or icon file
for file based on the file extension.
pTsvcInfo pointer to service's tsvcinfo object
pchFilePath pointer to path for the given file
pstrMimeType pointer to string to store the mime type on return
( if ! NULL)
pstrIconFile pointer to string to store the icon file name on return
( if ! NULL)
Returns:
TRUE on success and
FALSE if there is any error.
--*/
{
BOOL fReturn = TRUE;
if ( pstrIconFile != NULL || pstrMimeType != NULL) {
PMIME_MAP pMm;
PCMIME_MAP_ENTRY pMmeMatch;
DBG_ASSERT( pInetSvc);
pMm = pInetSvc->QueryMimeMap();
DBG_ASSERT( pMm != NULL);
pMmeMatch = pMm->LookupMimeEntryForFileExt( pchFilePath);
DBG_ASSERT( pMmeMatch != NULL);
if ( pstrIconFile != NULL) {
fReturn = fReturn &&
pstrIconFile->Copy( pMmeMatch->QueryIconFile());
}
if ( pstrMimeType != NULL) {
fReturn = fReturn &&
pstrMimeType->Copy( pMmeMatch->QueryMimeType());
}
}
return ( fReturn);
} // SelectMimeMappingForFileExt()
/************************ End of File ***********************/