mirror of https://github.com/tongzx/nt5src
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
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 ***********************/
|
|
|