windows-nt/Source/XPSP1/NT/inetsrv/iis/svcs/infocomm/common/mimeutil.cxx
2020-09-26 16:20:57 +08:00

178 lines
3.6 KiB
C++
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*++
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 ***********************/